Unity事件函数的执行顺序

news2024/9/23 21:28:42

事件函数的执行顺序


脚本生命周期流程图

在这里插入图片描述

场景加载时

这些函数在场景开始时被调用(场景中的每个对象一次)
  • Awake:此函数总是在任何 Start 函数之前以及在预制件被实例化之后调用(如果 GameObject 在启动期间处于非活动状态,则在激活之前不会调用 Awake。)

  • OnEnable:(仅在对象处于活动状态时调用):此函数在对象启用后立即调用。 这在创建 MonoBehaviour 实例时发生,例如加载关卡或 GameObject的脚本组件被实例化时。


Editor

  • Reset:当脚本首次附加到对象时以及使用 Reset 命令时,都会调用 Reset 来初始化脚本的属性。

  • OnValidate:每当设置脚本的属性时调用 OnValidate,包括反序列化对象时,这可能在不同时间发生,例如在编辑器中打开场景时和域重新加载后。


Before the first frame update

  • Start:只有在启用脚本实例的情况下,才会在第一帧更新之前调用 Start。

Update Order

  • FixedUpdate:FixedUpdate 通常比 Update 更频繁地被调用。 如果帧率低,它可以每帧调用多次,如果帧率高,它可能根本不会在帧之间调用。 所有物理计算和更新都在 FixedUpdate 之后立即发生。 在 FixedUpdate 中应用移动计算时,您不需要将您的值乘以 Time.deltaTime。 这是因为 FixedUpdate 是在可靠的计时器上调用的,与帧速率无关。

  • Update:每帧调用一次。

  • LateUpdate:在Update后,每帧调用一次 LateUpdate。 在 LateUpdate 开始时,在 Update 中执行的任何计算都将完成。 LateUpdate 的一个常见用途是跟随第三人称相机。 如果您让您的角色在 Update 中移动和转动,您可以在 LateUpdate 中执行所有相机移动和旋转计算。 这将确保角色在相机跟踪其位置之前已经完全移动。


Animation update loop

  • OnStateMachineEnter:在状态机更新步骤中,当控制器的状态机进行一个流经 Entry 状态的转换时,在第一个更新帧上调用此回调。 不会调用它来转换到 StateMachine 子状态。

  • OnStateMachineExit:在状态机更新步骤中,当控制器的状态机进行流经退出状态的转换时,将在最后一个更新帧上调用此回调。 不会调用它来转换到 StateMachine 子状态。

  • Fire Animation Events:从上次更新时间和当前更新时间之间采样的所有剪辑调用所有动画事件。

  • StateMachineBehaviour (OnStateEnter/OnStateUpdate/OnStateExit):一个层最多可以有3个活动状态:当前状态、中断状态和下一状态。 使用定义 OnStateEnter、OnStateUpdate 或 OnStateExit 回调的 StateMachineBehaviour 组件为每个活动状态调用此函数。

  • OnAnimatorMove:每个更新帧,为每个 Animator 组件调用一次,修改Root Motion

  • StateMachineBehaviour(OnStateMove):在每个活动状态上使用定义此回调的 StateMachineBehaviour 调用。

  • OnAnimatorIK:设置动画 IK。 对于启用 IK 通道的每个 Animator Controller 层调用一次。

  • StateMachineBehaviour(OnStateIK):在启用 IK 通道的层上定义此回调的 StateMachineBehaviour 组件在每个活动状态上调用。

  • WriteProperties:将所有其他动画属性从主线程写入场景。


Rendering

  • OnPreCull:在相机剔除场景之前调用。剔除确定哪些对象对相机可见。 OnPreCull 在剔除发生之前被调用。

  • OnBecameVisible/OnBecameInvisible:当对象对任何相机可见/不可见时调用。

  • OnWillRenderObject:如果对象可见,则为每个摄像机调用一次。

  • OnPreRender:在相机开始渲染场景之前调用。

  • OnRenderObject:在所有常规场景渲染完成后调用。此时您可以使用 GL 类或 Graphics.DrawMeshNow 来绘制自定义几何图形。

  • OnPostRender:在相机完成渲染场景后调用。

  • OnRenderImage:场景渲染完成后调用,允许后期处理图像。

  • OnGUI:每帧调用多次以响应 GUI 事件。首先处理 Layout 和 Repaint 事件,然后是每个输入事件的 Layout 和键盘/鼠标事件。

  • OnDrawGizmos 用于绘制 Gizmos在场景视图中出于可视化目的。

注意:这些回调仅适用于内置渲染管线。


Coroutines

正常的协程更新在 Update 函数返回后运行。 协程是一个可以暂停执行(yield)直到给定的 YieldInstruction 完成的函数。
  • yield 在下一帧调用所有 Update 函数后协程将继续。
  • yield WaitForSeconds 在为帧调用所有更新函数后,在指定的时间延迟后继续。
  • yield WaitForFixedUpdate 在所有脚本上调用所有 FixedUpdate 后继续。 如果协程在 FixedUpdate 之前产生,则它在当前帧的 FixedUpdate 之后恢复。
  • yield WWW 在 WWW 下载完成后继续。
  • yield StartCoroutine 链接协程,并等待 MyFunc 协程首先完成。

When the Object is destroyed

  • OnDestroy:此函数在对象存在的最后一帧的所有帧更新之后调用(对象可能会响应 Object.Destroy 或在场景关闭时被销毁)。

When quitting

这些函数会在场景中的所有活动对象上调用:

OnApplicationQuit:此函数在应用程序退出之前在所有游戏对象上调用。 在编辑器中,当用户停止播放模式时调用它。

OnDisable:当行为被禁用或不活动时调用此函数。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/57213.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

好家伙!阿里并发核心编程宝典(2022版)一夜登顶Github热榜第三

不知道大家今年的金九银十是否有出去面试过?有出去面试的朋友肯定深有感受,像我们刚入行那会面试的加分项现在卷得已经成为了面试的基础题(手动狗头)。其中最典型的就属这个Java并发编程了。之前一般只有大厂才会有高并发编程相关…

[附源码]Python计算机毕业设计Django基于vuejs的爱宠用品销售app

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

three.js之模型

文章目录简介网格模型旋转平移缩放方法平移旋转属性缩放位置平移旋转复制与克隆复制方法克隆方法注意专栏目录请点击 简介 我们常见的模型有点模型,线模型、网格模型他们的分类如下 点模型 Points对应的材质为点材质PointsMaterial 线模型 Line 线渲染模式Line…

AIGC独角兽官宣联手,支持千亿大模型的云实例发布,“云计算春晚”比世界杯还热闹...

梦晨 发自 凹非寺量子位 | 公众号 QbitAI现在AI最火的方向是什么?那必须是AIGC(AI Generated Content,利用人工智能技术来生成内容)。AIGC最火的公司是谁?莫过于开源AI作画模型Stable Diffusion背后的StabilityAI。对于…

【数学】焦点弦定理(?)

因为和焦点弦相关的定理太多,我不会把哪一个公式叫成这样的名字,但百度搜出来就是这个名字 如图,椭圆中焦点弦 AB,∣FB∣k∣FA∣(k>0)AB, |FB|k|FA|(k>0)AB,∣FB∣k∣FA∣(k>0) ,求 ABABAB 倾斜角的余弦值 cos⁡θ\cos\t…

Anntec ZKUXFT XT2 FGPA卡DPDK使用方法

1. 建议环境 CPU Architecture x86_64、aarch64 CPU MHz: 2000以上 Memory 每个node空闲内存超过2G 硬盘 剩余空间大于100M OS Ubuntu,centos,银河麒麟,UOS等Linux …

亚马逊 CTO Werner Vogels:2023 年及未来五大技术趋势预测

近年来,几次全球性危机占据了我们的日常生活,因此看看我们是否可以利用技术来解决这些棘手的人类问题。如今,我们可以从很多互联设备获取数据,例如:可穿戴设备、医疗设备、环境传感器、视频捕捉设备等,数据…

DiffKit -- 世上最牛且开源的表数据对比工具

DiffKit -- 世上最牛且开源的表数据对比工具1. DiffKit Introduction1.1 Introduction1.2 Compatibility1.3 Download2. Quick Start3. User Guide4. Code5. Waken1. DiffKit Introduction 1.1 Introduction DiffKit Website: http://www.diffkit.org/index.html. 1.2 Compati…

excel数据分析

目录1. 对比分析2. 结构分析3. 分布分析3.1 VLooKup模糊匹配功能进行分组3.2 数据透视表进行数值型数据分组1. 对比分析 2. 结构分析 3. 分布分析 定义:根据分析目的,将数值型数据进行等距或不等距的分组 消费分布分析收入分布分析年龄分布分析 定量…

[附源码]Python计算机毕业设计Django交通事故档案管理系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

思派健康通过上市聆讯:半年亏损约35亿元,马旭广为董事长

12月2日,思派健康科技有限公司(下称“思派健康”)在港交所递交了聆讯后资料集。这代表着,思派健康已经通过港交所上市聆讯,将很快发行并在港交所IPO。 招股书显示,思派健康目前经营三条业务线,…

[附源码]JAVA毕业设计家庭理财管理系统(系统+LW)

[附源码]JAVA毕业设计家庭理财管理系统(系统LW) 目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术…

RTK-RTD-SBAS-WAAS-PPP-PPK-WADGPS

1. RTD:英文全称Real Time Differential,中文意思是实时动态码相位差分技术。工作方法是基准站将伪距(或者坐标)修正值(差分值)发给用户接收机,用户接收机根据差分值与本身的观测值算出精确位置…

事业编招聘:共青团市委所属事业单位2022年公开招聘公告

杭州青少年活动中心为共青团杭州市委所属财政适当补助事业单位,因工作需要,公开招聘事业编制工作人员3名。根据《关于贯彻落实国家人事部〈事业单位公开招聘人员暂行规定〉的实施办法》(杭人政〔2006〕5号)和《杭州市事业单位公开…

计网个人作业03

R14. True or false? a a. Suppose Host A is sending a large file to Host B over a TCP connection. If the sequence number for a segment of this connection is m, then the sequence number for the subsequent segment will necessarily be m 1. 假设主机A通过一…

厉害了!阿里内部都用的Spring+MyBatis源码手册,实战理论两不误

目前大部分的 Java 互联网项目,都是用 Spring MVC Spring MyBatis 搭建平台的。 使用 Spring IoC 可以有效的管理各类的 Java 资源,达到即插即拔的功能;通过 Spring AOP 框架,数据库事务可以委托给 Spring 管理,消除…

slam学习 - 基本VO代码学习

本打算学习 orb -slam3 源码,但还是先把《slam 14》上的代码看完再说,至少把整个流程走一遍。 相关参考 https://blog.csdn.net/weixin_44684139/article/details/105305564 https://blog.csdn.net/qq_35590091/article/details/97111744 代码需求分析…

蚁群算法(ant system,AS)

蚁群算法蚂蚁系统(ant system,AS)由Dorigo于1996年发表,文章题目为[《The Ant System : optimization by a colony of cooperating agents》](https://www.docin.com/p-1565494487.html)。在耳熟能详的TSP旅行商问题上AS算法有着不错的效果,这也是被大多…

Dynamsoft Barcode Reader C, C++, .NET, Java SDK

Dynamsoft Barcode Reader 9.6.0 支持 win/mac/linux,没有Python版本提供 Adds support for handling barcode image orientation. November 30, 2022 - 16:06 New Version Features C, C, .NET, Java and Python SDK Added support for handling image orientation. With …

为什么数据库不应该使用外键

当我们想要持久化地存储数据时,使用关系型数据库往往都是最稳妥的选择,这不仅因为今天的关系型数据库种类非常丰富并且稳定,还因为不同社区对关系型数据库的支持都非常完备。我们在前面的文章中曾经分析过 为什么 MySQL 的自增主键不单调也不…