unity学习笔记之—— 脚本的生命周期

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ScriptLifeTest : MonoBehaviour
{
    /* 不同的脚本挂载在同一个游戏对象时,
     * 脚本的顺序:后挂载的脚本先执行。(尽量避免这样记忆)
     * 想要更改脚本的使用顺序: 
     * 单击脚本 -> Inspector -> 点击ExecutionOrder -> Default Time -> + 选择脚本
          (添加后,脚本后会有个数字,数字越大,优先级越高)
     */

     /* 不同的脚本挂载在不同的游戏对象时,
      * 在相同场景中,游戏对象的顺序,决定了脚本的优先级,越往上优先级越高。
      */ 


    /// <summary>
    /// 复位,发生在编辑器中,当第一次挂载脚本或者按Reset按钮的时候回调用
    /// 在未运行的时候或运行过程中亦或者游戏对象未被使用时,游戏对象第一次挂载脚本时,也会被调用。
    /// </summary>
    private void Reset()
    {
        print("Reset");
    }


    /// <summary>
    ///唤醒方法,在开始运行的时候执行一次,并且在脚本的整个生命周期当中也只会执行一次
    ///此方法通常用来给对象进行初始化(实例化对象)
    ///当一个脚本实例被载入时调用一次
    ///(运行过程中,挂载脚本就会被调用,不论有没有被启用该脚本都会被调用)
    /// </summary>
    private void Awake()
    {
        print("Awake");
    }


    /// <summary>
    /// 当启用该脚本组件的时候调用通常用来注册事件
    /// 在整个脚本生命周期当中会执行多次。
    /// </summary>
    private void OnEnable()
    {
        print("OnEnable");
    }


    /// <summary>
    /// 脚本组件启动的情况下 。
    /// 固定更新方法(固定更新函数)默认每0.02 S(秒)【时间步调】执行一次。
    ///【时间步调—>更改的方法:Unity->Edit->Project Settings->Time->Inspector->Fixed Timestep (更改数值即可)】    
    /// 当Time.timeScale = 0;(时间流速)时,此函数不会执行(调用)。
    ///它的调用与时间有关,与帧率无关。
    /// 此方法通常用作物理计算和更新(通常会把物理的计算和操作放在此方法当中)
    ///因此,此方法也被称为物理更新方法(函数)
    /// </summary>
    private void FixedUpdate()
    {
        
        print("FixedUpdate");
    }


    /// <summary>
    /// 仅在UpDate函数第一次调用之前调用,在整个脚本的生命周期当中只执行一次。
    ///通常用作数值的初始化。(视情况而使用awake还是start)
    /// </summary>
    void Start()
    {
        print("Start");
    }


    /// <summary>
    /// 脚本组件启动的情况下 。
    /// 更新函数(方法),每帧执行一次,与帧率有关,与时间无关。
    ///Time.timeScale不会影响此方法。此方法用于处理游戏逻辑。
    /// </summary>
    void Update()
    {
        print("Update");
    }


    /// <summary>
    /// 在update之后执行,每帧执行一次,此方法通常用来处理摄像机的移动。
    ///防止出现摄像机到了指定的位置,而角色没有到达的空帧。
    /// </summary>
    private void LateUpdate()
    {
        print("LateUpdate");
    }


    /// <summary>
    /// 每帧调用多次,用来绘制GUI。(看不到,UGUI可以看到)
    /// </summary>
    private void OnGUI()
    {
        print("OnGUI");
    }

 
    /// <summary>
    /// 跟OnEnable对应,当关闭此脚本组件的时候调用,通常用来注销事件
    /// 在整个脚本生命周期当中会执行多次。
    /// </summary>
    private void OnDisable()
    {
        print("OnDisable");
    }


    /// <summary>
    /// 销毁函数,当此脚本的实例被销毁的时候调用。
    ///(1.删除此脚本组件 2.删除它所挂载的游戏对象 3.结束游戏或切换场景)
    ///(隐藏此脚本组件不会被调用)
    /// 一般处理一些善后的工作。(回收垃圾,清空内存,存储某些东西等等)
    /// </summary>
    private void OnDestroy()
    {
        print("OnDestroy");
    }
}

  

posted @ 2017-12-21 19:02  初心易得始难终  阅读(238)  评论(0)    收藏  举报