02、基础函数(脚本生命周期)

  1、 Awake()

  脚本唤醒,系统执行的第一个方法,在脚本中仅执行一次。最好用来设置脚本之间的引用和初始化。

    private GameObject target;
    void Awake()//初始化操作
    {
        target = GameObject.FindWithTag("Player");
        print("awake");//在控制台输出awake
    }

 2、OnEnable()  

    void OnEnable()//每次激活脚本时调用。所以一般把协程放这里
    {
        print("OnEnable");
    }

 

3、Start()

  Update()之前执行,但必须是脚本已被启用的情况下。在脚本中仅执行一次。(注:有Start函数的在Unity引擎界面前面的脚本组件才可以打钩)

    void Start ()  //第一次调用Update之前调用一次,初始化操作
    {
        print("Start");
    }    

 

  如:一个敌人进入游戏场景,使用Awake()设置子弹数量,然后在Start()中启用敌人的射击功能,也就是脚本启用之后。注意Awake()和Start()只在脚本生命周期中调用一次。在启用脚本之前,我们可以先用Awake()进行初始化设置,这样就不需要在每个脚本中分别进行设置了

4、Update()

  使用Update这个函数的脚本每一帧都会自动进行调用,大部分需要周期性改变的内容都放在这个函数里,非物理对象的移动、计时器、输入检测、通常都放在Update()中。注意Update()并不根据正常的时间轴调用,如果某一帧花费的时间大于下一帧,那么每一帧调用的间隔将不同。

    void Update () //每帧调用一次
    {
        print("Update");
    }

 

5、LateUpdate()

  在Update()之后执行,同上,也是每一帧系统自动执行,仅顺序与Update()不同。

    void LateUpdate()//Update之后调用
    {
        print("LateUpdate");
    }

 

6、FixedUpdate()

  这个方法可以设定执行频率(Edit->Project Setting->time),如可设定0.5帧执行该方法。 他根据正常的时间轴调用,且每次调用的间隔是相同的。调用FixedUpdate()后,会进行需要的物理计算。比如有刚体的物理对象,需要放在FixedUpdate()中,而不是Update()中。FixedUpdate() 通常用于移动物理对象。

    Rigidbody rb;
    void Start()
    {
        rb = GetComponent<Rigidbody>();
    }
    void FixedUpdate()
    {
        rb.AddForce(Vector3.up * 10f);
    }

 

posted @ 2017-08-25 14:37  LiuChangwei  阅读(325)  评论(0编辑  收藏  举报