C# 是否为新类C的每个继承执行更新#
我有一个Unity脚本,它有一个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
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的引用,它不会创建新实例。就像一个人有两个电话号码。