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

我有一个 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 一样访问 Monobehaviour 类。

这个类看起来像这样:


public class OtherClass

{

    private Main M;


    public OtherClass(Main m)

    {

        M = m;

    }  

    private void SomeMethod()

    {

        m.SomeFunctionThatNeedsMToRun();

    }

}

这是否意味着UpdateMain中的Method 被调用了两次?因为OtherClass采用Main的参数?因为如果是这样的话,这对性能来说会很糟糕..


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

如果有什么不清楚的,请告诉我,以便我澄清:)


尚方宝剑之说
浏览 146回答 2
2回答

暮色呼如

如果您不对其进行任何显式调用,则更新将在场景层次结构中每个启用的游戏对象的每个启用的组件/单一行为上每帧调用一次。在您的情况下,您只是在做一个引用,而不是创建 Main 组件的新实例。因此,这里不会再调用一次。

一只斗牛犬

将对象作为参数传递给方法不是继承。在: MonoBehaviour旁边Main的指定它继承自MonoBehaviour。没有任何东西继承自Main.如果您拥有OtherClass : Main并OtherClass拥有一个Update方法,Unity 将调用该方法来更新它,而不是Update从其父类调用该方法。如果您希望两者都被调用,则Main.Update应该protected virtual并且OtherClass.Update应该protected override并且还需要显式调用base.Update().
打开App,查看更多内容
随时随地看视频慕课网APP