Unity中,我们知道同一个脚本的Awake,OnEnable,Start和Update是按照先后顺序运行的。
有如下疑问:
- 多个脚本在一个GameObject上的时候,每个Awake一定会比所有脚本的Start要早吗?每个Awake一定会比所有脚本的OnEnable要早吗?
- 当GameObject是通过代码Instantiate或者AddComponent的时候这些方法的先后顺序到底是怎样的呢?一个物体在一帧中instantiate的时候,他们的脚本是在同一帧进行Update,还是在下一帧呢?
下面,我们就进行实验。
问题一:同一个GameObject上的不同脚本之间是什么顺序
一个基类代码如下:
public class ScriptBase : MonoBehaviour {
protected virtual string ScriptName
{
get
{
return "ScriptBase";
}
}
protected virtual void Awake()
{
LogMessage ("Awake");
}
protected virtual void OnEnable()
{
LogMessage ("OnEnable");
}
protected void Start ()
{
LogMessage ("Start");
}
protected void Update ()
{