C# 是否为新类C的每个继承执行更新#

C# 是否为新类C的每个继承执行更新#,c#,class,oop,unity3d,C#,Class,Oop,Unity3d,我有一个Unity脚本,它有一个Main类,所有游戏的逻辑都在这个类中计算和执行 此类具有以下结构: public class Main : MonoBehaviour { private OtherClass OtherGameLogic = new OtherClass(this); private void Update () { // all complex frame to frame calculations are do

我有一个Unity脚本,它有一个
Main
类,所有游戏的逻辑都在这个类中计算和执行

此类具有以下结构:

public class Main : MonoBehaviour 
{
    private OtherClass OtherGameLogic = new OtherClass(this);        

    private void Update () 
    {
        // all complex frame to frame calculations are done here. 
        // this is gpu and cpu intensive code...
    }
}
现在我想用另一个类来处理游戏中的其他逻辑。。该类需要在Main类中初始化,但也需要像Main一样访问MonoBehavior类。
该类如下所示:

public class OtherClass
{
    private Main M;

    public OtherClass(Main m)
    {
        M = m;
    }  
    private void SomeMethod()
    {
        m.SomeFunctionThatNeedsMToRun();
    }
}
这是否意味着Main中的
Update
方法被调用了两次?既然
OtherClass
Main
作为参数?因为如果是这样的话,这将对性能造成严重影响

我对OOP非常陌生,C#很一般,如果这个问题有点奇怪,我很抱歉。

如果有不清楚的地方,请告诉我,以便我可以澄清:)

如果您没有对其进行任何显式调用,则在场景层次结构中每个启用的游戏对象的每个启用组件/单行为上,每帧将调用一次更新


在您的例子中,您只是在做一个引用,而不是创建一个主组件的新实例。因此,这里不会再调用它一次。

如果您不显式调用它,则在场景层次结构中每个启用的游戏对象的每个启用组件/单行为上,每帧都会调用一次Update


在您的例子中,您只是在做一个引用,而不是创建一个主组件的新实例。因此,这里不再调用它。

将对象作为参数传递给方法不是继承

Main
旁边的
:monobhavior
指定它继承自
monobhavior
。没有从
Main
继承任何内容

如果您有
OtherClass:Main
OtherClass
Update
方法,Unity将调用该方法来更新它,而不是从其父类调用
Update
方法


如果您想同时调用这两个类,
Main.Update
应该是
protectedvirtual
OtherClass.Update
应该是
protectedoverride
,并且还需要显式调用
base.Update()
将对象作为参数传递到方法中不是继承

Main
旁边的
:monobhavior
指定它继承自
monobhavior
。没有从
Main
继承任何内容

如果您有
OtherClass:Main
OtherClass
Update
方法,Unity将调用该方法来更新它,而不是从其父类调用
Update
方法


如果您希望调用这两个类,
Main.Update
应该是
protected virtual
OtherClass.Update
应该是
protected override
,并且还需要显式调用
base.Update()

不,它不被调用两次,那么这样做时会发生什么呢?它是否只继承其函数和数据?但是它没有正确执行它们?它不会执行两次,因为您没有在
OtherClass
中调用
m.Update()
。需要调用它。不,传递给
OtherClass
的构造函数的
Main
只是对Main的引用,它不会创建新实例。这就像一个人有两个电话号码。不,这不是twiceso,那么当你这么做的时候会发生什么?它是否只继承其函数和数据?但是它没有正确执行它们?它不会执行两次,因为您没有在
OtherClass
中调用
m.Update()
。需要调用它。不,传递给
OtherClass
的构造函数的
Main
只是对Main的引用,它不会创建新实例。就像一个人有两个电话号码。