Unity 事件函数的执行顺序

 脚本生命周期流程图

 

  • Awake:在所有 Start 函数之前,以及 prefab 实例化之后调用。(如果一个 GameObject 在启动期间处于非活动状态,则在激活之前不会调用它。)
  • OnEnable(仅在对象处于活动状态时调用):在对象启用后调用。这发生在创建 MonoBehaviour 实例时,例如加载关卡或实例化带有脚本组件的 GameObject 时。
  • OnLevelWasLoaded:执行此函数是为了通知游戏已加载新关卡。
  • Reset:当脚本的属性首次附加到对象时,以及使用 Reset 命令时,调用该函数来初始化脚本的属性。
  • Start:只有在脚本实例被启用时,才会在第一个帧更新之前调用 Start
  • OnApplicationPause:在检测到暂停的帧的末尾调用,在正常帧更新之间有效。在调用 OnApplicationPause之后,将会发出一个额外的帧,以允许游戏显示暂停状态的图形。
  • FixedUpdateFixedUpdate 通常比 Update 更频繁地被调用。如果帧率很低,它可以在每帧中调用多次;如果帧率很高,它也可能根本不会在帧之间被调用。所有物理计算和更新在 FixedUpdate 调用后立即发生。在 FixedUpdate 中应用移动计算时,不需要将值乘以 Time.deltaTime。这是因为 FixedUpdate 是在一个可靠的定时器上调用的,与帧率无关。
  • Update:每帧调用一次 Update。它是帧更新的主要主力函数。
  • LateUpdate:在 Update 调用完成后,每帧调用一次 LateUpdate。在 Update 中执行的任何计算都将在 LateUpdate 开始之前完成。LateUpdate 的一个常用功能是第三人称视角跟随相机。如果角色在 Update 中发生移动和旋转,那么相机的移动和旋转就应该在 LateUpdate 中发生。这将确保角色在摄像机跟踪其位置之前已经移动完成。
  • 渲染

  • OnPreCull:在摄像机对场景进行剔除前被调用。剔除动作决定了哪些对象对相机可见。OnPreCull 在进行剔除动作之前调用。
  • OnBecameVisible/OnBecameInvisible:当对象对任意相机可见/不可见时调用。
  • OnWillRenderObject:如果对象可见,则每个相机调用一次
  • OnPreRender:在相机开始渲染场景之前调用。
  • OnRenderObject:在所有常规场景渲染完成后调用。此时可以使用 GL 类或 Graphics.DrawMeshNow 来绘制自定义几何图形。
  • OnPostRender:在相机完成对场景的渲染后调用。
  • OnRenderImage:在场景渲染完成后调用,允许对图像进行后处理。
  • OnGUI:响应 GUI 事件,每帧调用多次。首先处理布局和重绘事件,然后为每个输入事件处理布局和键盘/鼠标事件。
  • OnDrawGizmos:用于在 scene 视图中绘制 Gizmo。
  • 协程

一般的协程更新在 Update 函数返回后运行。协程是一个函数,它可以暂停执行(yield),直到给定的 YieldInstruction 完成。协程的不同用法:

  • yield:下一帧的所有 Update 函数被调用后,协程继续。
  • yield WaitForSeconds:延时特定时间后,在当前帧所有 Update 函数被调用之后继续。
  • yield WaitForFixedUpdate:在所有脚本的 FixedUpdate 被调用后继续。
  • yield WWW:在一个 WWW 下载完成后继续。
  • yield StartCoroutine:将协程链起来,并等待 MyFunc协程首先完成。

  • OnDestroy:在对象存在的最后一帧的所有更新之后调用(对象可能在会响应 Object.Destroy 时或在场景结束时被销毁)。
  • OnApplicationQuit:在应用程序退出之前,将对所有游戏对象调用此函数。在编辑器中,当用户停止播放模式时调用它。
  • OnDisable:当行为被禁用或不活动时,将调用此函数

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

领略大数据分析的魅力:迈向FineBI的世界

版权声明:本文为 小异常 原创文章,非商用自由转载-保持署名-注明出处,谢谢! 本文网址:https://sunkuan.blog.csdn.net/article/details/131698171 文章目录 一、FineBI介绍(6.0版本)1、使用人群…

深入理解网络通信和TCP、IP协议-01

1、网络协议 计算机网络是什么? 随着计算机技术发展,计算机的体积和价格都在下降,之前计算机多用于研究机构,现 阶段逐步进入一般的公司用于办公。原来计算机之间传输数据需要通过软盘等第三方存储介 质进行转存,人们…

TCP/IP基础知识笔记

应用层:为用户提供应用功能,比如 HTTP、FTP、Telnet、DNS、SMTP等。 应用层是工作在操作系统中的用户态,传输层及以下则工作在内核态。 传输层:为应用层提供网络支持。 *TCP包含众多特性比如流量控制、超时重传、拥塞控制等因此可…

Java多线程下的单例模式参考

Java多线程下的单例模式参考 单例有多种的写法,本例是懒汉式单例的一种写法。在高并发环境下需要注意的是: 1.单例在并发访问并调用其相应的getInstance方法的时候也会造成创建多个实例对象,加锁是必要的。 2.使用synchronized是比较好的解…

【SpringBoot】SpringBoot-Admin 服务监控 + 告警通知

简单介绍 Spring Boot Actuator 是 Spring Boot 自带的一个功能模块, 提供了一组已经开箱即用的生产环境下常用的特性和服务,比如应用程序的健康检查、信息暴露、度量收集、日志记录等。 在实际项目中,Actuator 可以帮助我们快速了解应用程序…

使用dhtmlx-gantt甘特图插件定制预约表【实战】

示例传送门 定制预约表展示 一、安装 npm i dhtmlx-gantt二、配置解释与汇总 //自定义表头列 gantt.config.columns = [{name: "

想学会ai绘画软件生成?告诉你ai绘画图片生成有什么软件

小铭和晓虹是两位对艺术和创造有浓厚兴趣的大学生。他们一直梦想能够创作出独特而令人惊叹的绘画作品。然而,他们也意识到绘画是一项需要长时间学习和实践的技能。幸运的是,他们在寻找ai绘画图片生成有什么软件的时候,认识到了很多新的软件&a…

SpringBoot 项目使用 Redis 对用户IP进行接口限流

本文主要参考了该篇文章:https://www.zhihu.com/question/586213782/answer/3038040317?utm_id0 文章目录 一、思路1.1 固定时间段(旧思路)1.1.1 思路描述1.1.2 思路缺陷 1.2 滑动窗口(新思路)1.2.1 思路描述1.2.2 Re…

2023年Java最新面试题

由【后端面试题宝典】提供 和 equals 的区别是什么? 对于基本类型,比较的是值;对于引用类型,比较的是地址;equals不能用于基本类型的比较;如果没有重写equals,equals就相当于;如果重…

ES6基础语法

目录 解构 数组解构 对象解构 基本数据解构 对象 对象简写 箭头函数 扩展运算符 函数参数解构 对象API拓展 Object.is() Object.assign() Object.getPrototypeOf() Object.setPrototypeOf() Object.keys() Object.values() Object.entries() Object.fromEntries(…

学习PostgreSQL的优势

学习 PostgreSQL 可以为您打开许多就业机会。 PostgreSQL 是一种强大的关系型数据库管理系统,被广泛用于企业和组织中的数据管理和应用程序开发。 以下是一些学习 PostgreSQL 可能帮助您找到的工作领域: **1.数据库管理员:**作为 PostgreSQ…

rocketmq使用mqtt协议

文章目录 前言一、安装rocketmq二、打包rocketmq-mqtt三、配置rocketmq-mqtt四、初始化操作五、启动六、测试 前言 rocketmq从4.9.3开始,可以兼容mqtt协议,需要安装编译一个rocketmq-mqtt工程,参考:https://rocketmq.apache.org/…