【发布时间】:2017-09-26 10:47:12
【问题描述】:
我已将脚本附加到 Unity 游戏对象。该脚本包含各种公共属性,包括我自己的一些类。就像下面的简化代码一样,TestMonoBehaviorClass 附加到游戏对象,TestClass'TestString 显示在检查器中。
public class TestMonoBehaviorClass : MonoBehaviour
{
public TestClass Test;
}
[System.Serializable]
public class TestClass
{
public string TestString;
public TestClass ()
{
Debug.Log ("TestClass creator called.");
this.TestString = "Reset String";
}
}
我希望 TestClass 的构造函数(编辑:不是从 MonoBehavior 派生的构造函数)在我将脚本附加到游戏对象时被调用一次。但是如果我在 Unity 编辑器中运行程序然后停止程序,它会被调用四次。如果我将脚本附加到两个游戏对象,则七次。至少我在控制台中多次看到 Debug.Log 的输出。
不过,如果我在编辑器中更改TestString 属性的内容,我手动输入的内容不会被覆盖!
为什么经常调用构造函数? Unity 的执行顺序(Unity's execution order of event functions)何时调用它? 我可以忽略调用,还是必须在构造函数中添加特殊处理?到目前为止,我没有看到任何实际问题或副作用。
编辑: 似乎只调用了没有参数的构造函数。如果我只有带参数的构造函数,则不会调用任何构造函数。
【问题讨论】:
标签: c# unity3d constructor execution inspector