一个游戏物体通过脚本添加了另一个脚本,那新添加的脚本的执行顺序是怎么样的呢?
笔者做了以下的实验,在场景中添加了一个空的游戏物体,新建两个脚本:FirstScript.cs和SecondScript.cs,代码如下:
FirstScript.cs:
using UnityEngine; using System.Collections; public class FirstScript : MonoBehaviour { // Use this for initialization void Start () { FirstPrint(); test(); } void FirstPrint() { Debug.Log("FristPrintFun"); gameObject.AddComponent(); } void test() { Debug.Log("TestFun"); } // Update is called once per frame void Update () { Debug.Log("FirstScript Update"); } }
SecondScript.cs: using UnityEngine; using System.Collections; public class SecondScript : MonoBehaviour { void Awake() { Debug.Log("SecondScriptAwake"); } // Use this for initialization void Start () { Debug.Log("SecondScript"); } // Update is called once per frame void Update () { Debug.Log("SecondScript Update"); } } 然后把FirstScript挂到前面新建的游戏对象上,运行之后,Console打印的结果如下
通过打印可知,新添加的脚本SecondScript.cs会立即执行它Awake函数,然后等FirstScript.cs的Start函数执行完之后,就执行SecondScript.cs的Start函数,接着执行FirstScript.cs的Update函数,接着就是SecondScript.cs的Update函数 ————————————————
引用:https://blog.csdn.net/HJS852275113/article/details/46441159