序列化自定义类的构造函数被调用2次
问题引入:
using UnityEngine; using System.Collections; [System.Serializable] public class Data { public int x = 4; public void pri() { Debug.Log(" value is " + x.ToString()); } public Data() { Debug.Log("Data()"); } } public class Library_NewBehaviourScript : MonoBehaviour { public Library_NewBehaviourScript() { Debug.Log("Library_NewBehaviourScript()"); } public int x; [SerializeField] private int y; private Data data; void Start() { data.pri(); } void Update() { } }
运行结果显示Data 构造函数被调用了2次 但是data.pri() 却报错data为 空引用,
问题:我并没有new Data 对象 但是构造器为什么会被调用了2次,并且data 是空,
问题的原因可能是unity内部做了很多工作, 不止我写的代码那么点工作, data为空也正常,因为
[SerializeField] private Data data=new Data(); 也是 调用了2次
release模式下得到了验证,如图:

结果是 unity Editor 内部机制 惹的”祸”