Unity 脚本生命周期

学习借鉴于:http://www.jianshu.com/p/32ce8768607f

//1. 复位,在用户点击检视面板的Reset按钮或者首次添加该组件时被调用。此函数只在编辑模式下被调用。
    void Reset(){
        Debug.Log ("Reset");
    }

//  2. 唤醒,只执行一次,在所有对象初始化之后调用,用于在游戏开始之前初始化变量或游戏状态。在脚本整个生命周期内Awake仅被调用一次。
//  每个游戏物体上的Awake以随机的顺序被调用。所以在一般时候,用Awake来设置脚本间的引用,然后用Start来传递信息。
    void Awake(){
        Debug.Log ("Awake");
    }

//  3.OnEnable:在Awake之后调用。控制脚本中组件的启动与禁用。
//  例如:this.enable=false,则会直接跳转到OnDisable方法执行一次,其它的任何方法,将不再被执行。
    void OnEnable()
    {
        Debug.Log ("OnEnable");
    }

//  4.Start函数总是在Awake函数之后调用。Start在生命周期中只被调用一次。
//  Start和Awake的不同是Start只在脚本实例被启用时调用。你可以按需调整延迟初始化代码,协调初始化顺序。
    void Start () {
        Debug.Log ("Start");
    }
    //  (每帧)固定帧(固定的时间间隔,不受帧率(FPS)影响)更新,更新频率默认为0.02s(1秒60次)。
//  FixedUpdate比较适用于物理引擎的计算,因为是跟每帧渲染有关。
    void FixedUpdate(){
        Debug.Log ("FixedUpdate");
    }
    
    //  (每帧)正常帧更新,每一帧都执行,用于更新逻辑。
//  Update比较适合做控制。如果卡帧了Update就不会再执行,而FixedUpdate则继续执行。
    void Update () {
        Debug.Log ("Update");
    }

//  (每帧)在所有Update函数调用后被调用,和fixedupdate一样都是每一帧都被调用执行。
//  LateUpdate可用于调整脚本执行顺序。如:人物执行在Update,相机跟随在LateUpdate,防止空帧。
    void LateUpdate()
    {
        Debug.Log ("LateUpdate");
    }

//  当程序暂停时调用,例如:电话、锁屏等事件触发
//  与之相关,还有OnApplicationFocus函数。当程序获得或失去焦点时调用
//  强制暂停时,先 OnApplicationPause,后 OnApplicationFocus;
//  重新“启动”手机时,先OnApplicationFocus,后 OnApplicationPause;
    void OnApplicationPause()
    {
        Debug.Log ("OnApplicationPause");
    }

//  脚本被卸载时,OnDisable将被调用(脚本不会被销毁)。OnDisable不能用于协同程序。常用于一些用于清理的事件。
    void OnDisable()
    {
        Debug.Log ("OnDisable");
    }

//  在应用退出之前发送给所有的游戏物体。
    void OnApplicationQuit()
    {
        Debug.Log ("OnApplicationQuit");
    }

//  当MonoBehaviour将被销毁时,这个函数被调用。OnDestroy只会在预先已经被激活的游戏物体上被调用。OnDestroy也不能用于协同程序。
//  注意,iOS程序通常暂停并不退出。你应该在Player settings中的iOS编译设置中选择Exit on Suspend(暂停时退出),这会使游戏退出并不会暂停,否则会看不到这个调用。
//  如果Exit on Suspend不选择,应该使用OnApplicationPause替代。
    void OnDestroy()
    {
        Debug.Log ("OnDestroy");
    }

你可能感兴趣的:(Unity 脚本生命周期)