≡articles //snippets ./categories $uses ~about /search

Awake、Start、Update、FixedUpdate、LateUpdate 执行顺序

Awake

void Awake(){
    //初始化函数,在游戏开始时系统自动调用,一般用来创建变量。
    //在继承自MonoBehavior后即刻调用,整个脚本生命周期内,Awake函数仅执行一次。
    //GameObject的初始状态为disable时,在脚本运行时,Awake函数不会执行。
    //GameObject的初始状态为OnEnable时,在脚本运行时,Awake函数会被执行。
    //Awake函数的执行仅仅与脚本实例所绑定的游戏对象的开关状态有关。
    //如果重新加载场景,那么场景内Awake函数的执行情况重新遵循上述两点。
    //一般在Awake函数中获取游戏对象或者脚本实例的信息。
}

Start

void Start(){
    //初始化函数,在Awake函数后执行,整个脚本周期内,仅被调用一次,一般用来给变量赋值。
    //在MonoBehavior创建后在该帧Update()第一次执行前被调用;
    //Start()函数只在脚本实例被启用时才会执行。
    //如果游戏对象开启了,对象上绑定的脚本实例被禁用了,那么Start函数不会执行。
    //Start在对象OnEnable后,Update前被调用。
    //只有对象在OnEnable状态时才会调用Start函数。
    //一般在Start函数中进行一些获取之后的初始化设置
}

Update

void Update(){
    //每帧被执行一次。
    //Update帧数根据系统性能不定,与设备的性能相关,在新的一帧被渲染出的时候才会被调用。
}

FixedUpdate

void FixedUpdate(){
    //FixedUpdate在固定的时间间隔内执行,与程序运行帧率无关,与设备性能无关。
    //涉及到物理组件,比如说物体添加某个方向的力,使用FixedUpdate会使效果更顺滑。
}

LateUpdate

void LateUpdate(){
    //每帧被执行一次。
    //LateUpdate在所有Update函数被执行完毕之后才会被调用。
    //比如说脚本一中有一个Update函数,一个LateUpdate函数,脚本二中有一个Update函数,脚本三中有一个Update函数,那么执行顺序是:脚本一Update函数、脚本二Update函数、脚本三Update函数、脚本一LateUpdate函数。
}

这里一张图总结执行顺序。
2023-11-19T10:39:23.png

Unity中函数执行顺序。

© 2021 本文由 Charlie 原创撰写,发布于 sodebug.com。未经授权禁止转载、洗稿、机器抓取。AI 训练数据使用需获得书面授权。

独立开发者,在 WordPress、Nginx 和各种 API 之间切换。不写没用的东西。

相关文章

Unity 数据持久化完全指南:从 PlayerPrefs 到 SQLite18 minRectTransform(位置,大小)方法详解3 minUnity 3D 使用 HighlightingSystem 插件实现游戏物体高亮/闪烁1 minC# 处理字符串——String.Substring 的用法4 min
$ echo "less bullshit, more debugging" | send-to-inbox
新文章直接发到邮箱,一个月 2-4 封。
订阅