unity-----函数执行顺序

Award –> OnEnable à 返回调用函数  à  Star à 下一帧à Update à OnDisable -> OnDestory


测试:

有一个prefab 叫mono,其上帮有一个脚本 MonoTest。momo为Active,且MonoTest为enabled。现用GameObject.Instantiate来实例化此prefab。测试脚本中Awake,Start,OnEnable,Update等的调用顺序,以及调用帧。


测试代码:

using UnityEngine;
using System.Collections;

public class MonoTest: MonoBehaviour {

	void Awake()
    {
        print("Awake");
        printFrameCount();
    }

    void Start()
    {
        print("Start");
        printFrameCount();
    }

    void OnEnable()
    {
        print("OnEnable");
        printFrameCount();
    }

    void OnDisable()
    {
        print("OnDisable");
        printFrameCount();
    }

    void OnDestroy()
    {
        print("OnDestroy");
        printFrameCount();
    }

    void Update()
    {
        print("Update");
        printFrameCount();
    }

    public static void printFrameCount()
    {
        print(Time.frameCount);
    }
}
实例化prefab:

void Update () {
	    if(Input.GetKeyDown(KeyCode.A))
        {
            GameObject.Instantiate(Resources.Load<GameObject>("prefab/mono"));
            print("t1::update");
            MonoTest.printFrameCount();
        }

测试结果:


测试说明了 实例化时,首先调用 Awake, 然后是OnEnable, 紧接着就返回调用函数, 然后才是Start, 而第一次Update是在下一帧! 析构时,先调OnDisable,再调用OnDestroy


你可能感兴趣的:(顺序,unity,awake)