我有一个 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# 很一般,如果问题有点奇怪,我很抱歉。如果有什么不清楚的,请告诉我,以便我澄清:)
2 回答
暮色呼如
TA贡献1853条经验 获得超9个赞
如果您不对其进行任何显式调用,则更新将在场景层次结构中每个启用的游戏对象的每个启用的组件/单一行为上每帧调用一次。
在您的情况下,您只是在做一个引用,而不是创建 Main 组件的新实例。因此,这里不会再调用一次。
一只斗牛犬
TA贡献1784条经验 获得超2个赞
将对象作为参数传递给方法不是继承。
在: MonoBehaviour
旁边Main
的指定它继承自MonoBehaviour
。没有任何东西继承自Main
.
如果您拥有OtherClass : Main
并OtherClass
拥有一个Update
方法,Unity 将调用该方法来更新它,而不是Update
从其父类调用该方法。
如果您希望两者都被调用,则Main.Update
应该protected virtual
并且OtherClass.Update
应该protected override
并且还需要显式调用base.Update()
.
- 2 回答
- 0 关注
- 145 浏览
添加回答
举报
0/150
提交
取消