Unity脚本事件执行的顺序

有过c#开发经验的人都知道,程序的入口是一个类似于Main的函数,其他的代码都是以Main函数为起点。了解程序的执行循顺序对理解程序结构、判断在何处设置断点是极有帮助的。

在Unity脚本中,各事件函数的功能和顺序如下所述:

1、Awake
Awake用于脚本唤醒。此方法为系统执行的第一个方法,用于脚本初始化,在脚本的生命周期中只执行一次。

2、Start
Start方法在Awake之后执行,在脚本中只执行一次。
Awake和Start函数的特性与c#中的构造函数类似,一般在Unity中都常用来初始化类的成员变量。

3、FixedUpdate
FixedUpdate用于固定频率的更新。
在Unity中依次单击菜单项Edit->Project Setting->Time,可以打开Time Manager面板,其中Fixed Timestep选项用于设置FixedUpdate的更新频率,默认为0.02秒,也就是50次/秒。

通常情况下,FixedUpdate()会比Update()更频繁地调用。

在Unity中,若设置Time Scale值为0,可以实现动力学特性的暂停,即所有的代码都不会被执行。可以用此特性实现游戏暂停的功能。

4、Update
Update用于正常更新。用于帧更新后同步场景状态。
每帧都会由系统自动调用一次。
对于一些变量,如速度、移动距离等通常需要乘以Time.deltaTime来抵消帧率带来的影响,以此使物体状态的改变起来比较均匀、正常。
而在FixedUpdate中,由于其更新频率固定,故不需要采用Time.deltaTime来修正状态改变频率。

5、LateUpdate
LateUpdate用于延迟更新,此方法在Update()之后执行,每一帧调用一次。

6、OnGUI
OnGUI用来绘制用于交互界面,在一帧中会调用多次。其中,与布局Layout和重绘Repaint相关的事件会被优先处理,然后是键盘和鼠标事件。

7、OnDestroy
OnDestroy在当前脚本销毁时调用。若脚本中动态分配了内存,可以再OnDestroy()中进行释放。

using UnityEngine;
using System.Collections;

public class methoExceOrder : MonoBehaviour {

    void Awake()
    {
        print("Awake is called");
    }
    // Use this for initialization
    void Start () {
        print("Start is called");   
    }
    void OnGUI() {
        print("OnGUI is called");   
    }

    void LateUpdate() {
        print("LateUpdate is called");  
    }
    void FixedUpdate() {
        print("FixedUpdate is called");
    }

    void OnDestroy() {
        print("OnDestroy is called");
    }
    // Update is called once per frame
    void Update () {
        print("Update is called");
    }
}

其他:
在具体的项目开发中,一个项目会含有多个脚本,在一个游戏对象上也可以绑定若干个脚本,此时如果要控制脚本的执行顺序,可以通过单击菜单项
Edit->Project Setting->Script Execution Order 打开MonoManager面板,通过单击+,-按钮和拖动操作来设置特定脚本的执行顺序。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值