问题引入:
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 内部机制 惹的"祸"