写一段小代码来实测变量的初始化顺序。
public int _int;
void Awake()
{
print(_int);
_int = 2;
print(_int);
}
// Use this for initialization
void Start ()
{
print(_int);
_int = 3;
print(_int);
}
测试结果:_int 变量在 Inspector 面板中的赋值,发生在 Awake 之前,也就是说 Inspector 的初始化早于 Awake。
整体顺序为:定义时赋值 > 构造器 > Inspector > Awake > Start。
另外要特别注意,千万不要在构造器里写代码。因为没法确定构造器什么时候被调用,测试中甚至出现过构造器被调用两次的情况,所以请严格遵循 MonoBehaviour 的生命周期。