Unity-Unity脚本生命周期

这篇具有很好参考价值的文章主要介绍了Unity-Unity脚本生命周期。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、概述

Unity脚本生命周期是指在Unity游戏引擎中,脚本在运行过程中所经历的各个阶段。这些阶段包括:初始化、更新、固定更新、销毁等。下面我们来详细讲解一下Unity脚本生命周期的各个阶段。

阶段

1. Awake

Awake是脚本的初始化阶段,当脚本被实例化时,Awake函数会被调用且只执行一次。在这个阶段,脚本可以进行一些初始化操作,例如获取组件、初始化变量等。

2.OnEnable

OnEnable是脚本的启用阶段,当脚本被启用时,OnEnable函数会被调用。在这个阶段,脚本可以进行一些启用操作,例如开启协程、播放音效等。

3. Start

Start是脚本的启动阶段,当脚本被实例化后,Start函数会被调用。在这个阶段,脚本可以进行一些启动操作,例如播放动画、初始化游戏对象等。

4. FixedUpdate

FixedUpdate是脚本的固定更新阶段,每一帧都会调用一次。与Update不同的是,FixedUpdate是在固定时间间隔内调用的,因此在这个阶段,脚本可以进行一些需要在物理计算中使用的操作,例如移动刚体、检测碰撞等。

5. Update

Update是脚本的更新阶段,每一帧都会调用一次。在这个阶段,脚本可以进行一些更新操作,例如移动游戏对象、检测碰撞等。

6. LateUpdate

LateUpdate是脚本的后更新阶段,每一帧都会调用一次。在这个阶段,脚本可以进行一些后更新操作,例如相机跟随、角色动作等。

7. OnGUI

OnGUI是脚本的GUI绘制阶段,每一帧都会调用一次,执行的次数是 Update 事件的两倍。在这个阶段,脚本可以进行一些GUI绘制操作,例如绘制按钮、文本等。

8. OnDisable

OnDisable是脚本的禁用阶段,当脚本被禁用时,OnDisable函数会被调用。在这个阶段,脚本可以进行一些禁用操作,例如停止动画、停止音效等。

9. OnDestroy

OnDestroy是脚本的销毁阶段,当脚本被销毁时,OnDestroy函数会被调用。在这个阶段,脚本可以进行一些销毁操作,例如释放资源、停止协程等。

unity脚本生命周期,Unity,unity,游戏引擎,c#,Powered by 金山文档

二、Unity脚本生命周期流程图

unity脚本生命周期,Unity,unity,游戏引擎,c#,Powered by 金山文档
unity脚本生命周期,Unity,unity,游戏引擎,c#,Powered by 金山文档
unity脚本生命周期,Unity,unity,游戏引擎,c#,Powered by 金山文档
  1. 初始化阶段
    场景开始时

  1. Awake
    场景创建时或prefab实例化时,若为inactive则在active时调用,仅执行一次

  1. OnEnable
    场景加载完,GameObject实例化时,对象enabled时

  1. OnLevelWasLoaded
    场景全部加载完成后

  1. Reset Editor级别,非playmode下脚本挂载时或主动调用

  1. Start
    仅在场景中所有Awake 和 OnEnable执行后,所有场景中对象第一帧update之前,且仅执行一次

  1. 物理计算阶段

  1. fixedupdate
    每帧根据帧率高低可能多次调用也可能不调用,执行后立即开始物理计算和更新,做移动计算时无需使用Time.deltaTime

  1. 状态机周期

  1. 状态机更新

  1. OnStateMachineEnter
    挂载在一个动画图形上的状态机首次进入一个状态时的第一帧调用

  1. OnStateMachineExit
    退出状态的最后一帧调用

  1. 处理图形
    评估所有动画图形

  1. 触发动画事件
    在该时间内当前帧和最后一帧之间,触发所有动画片段的动画事件

  1. 状态周期回调(OnStateEnter/OnStateUpdate/OnStateExit) 一个状态层有最多三个活跃状态,current state, interrupted state, and next state,对应阶段周期方法顺序执行

  1. 内部物理更新

  1. 状态机周期

  1. 处理动画
    渲染动画结果图形

  1. IK动画周期
    由workthread写入Transform

  1. 写入属性
    由主线程写入场景其他动画属性

  1. 碰撞事件(Collision、Trigger)

  1. 协程(yield WaitForFixedUpdate)
    在所有脚本的FixedUpdated执行后再执行

  1. 输入事件

  1. OnMouseXXX

  1. 游戏逻辑

  1. update

  1. 协程
    除WaitForFixedUpdate和WaitForEndOfFrame其他协程时机

  1. 状态机周期
    同物理计算阶段过程,单无内部物理更新

  1. lateupdate 开始时update的计算都已完成,一普遍用法是相机跟随,update中对人物移动的计算已全部完成,此时在lateupdate中更新相机位置

  1. 场景渲染

  1. OnWillRenderObject
    若物体可见则每个相机调用一次

  1. OnPreCull
    相机剔除动作前

  1. OnBecameVisible/OnBecameInvisible
    对任何相机可见/不可见时调用

  1. OnPreRender
    相机渲染前

  1. OnRenderObject
    所有常规场景渲染完成时,可在此绘制自定义几何图形

  1. OnPostRender
    当一个相机渲染完场景后

  1. OnRenderImage
    场景渲染后,可对Image做后期处理(滤镜)

  1. Gizmo 渲染

  1. OnDrawGizmos
    仅在editor

  1. GUI渲染

  1. OnGUI 每帧多次调用

  1. 帧结束

  1. yield WaitForEndOfFrame

  1. 暂停

  1. OnApplicationPause
    一帧最后时调用,调用后会再触发一帧以刷新图像和切换暂停状态

  1. 退出/销毁

  1. OnApplicationQuit

  1. OnDisable

  1. OnDestroy
    所有帧刷新后文章来源地址https://www.toymoban.com/news/detail-628590.html

到了这里,关于Unity-Unity脚本生命周期的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Unity学习笔记】生命周期

    官方文档:事件函数的执行顺序 如图: 脚本的生命周期主要经历以下几个阶段: 初始化阶段,(包括初始化Awake,OnEnable,然后Editor的Reset被穿插在着初始化过程之间,因此我们可以在脚本里重写Reset方法,这将在编辑器中的game的start之前执行。最后Start),当我们开始游戏的

    2024年02月14日
    浏览(40)
  • Unity-生命周期

    Unity 中,有一个特别重要的知识点,生命周期函数。这些东西全部都是系统定义好的,运行时自动调用,但需要继承 MonoBehaviour 类才能使用。这个类是从 Unity 中创建脚本就自动继承了。 正是因为继承了 MonoBehaviour 这个类,Unity 才能依次调用我们的脚本代码,执行游戏逻辑。

    2024年02月03日
    浏览(37)
  • unity生命周期简单叙述

    1Awake(),2 OnEnable(), 3 Start(), 4 FixedUpdate(), 5 Update(), 6 LateUpdate(), 7 OnGUI(), 8 OnDisable(), 9 OnDestroy(). 特殊一点的方法Reset() Reset 方法是在编辑器中调用的,并且仅在以下情况下执行: 脚本组件被添加到 GameObject 上: 当你将一个脚本组件添加到一个 GameObject 上时,如果该脚本包含 Re

    2024年02月04日
    浏览(40)
  • 【Unity】一文了解生命周期

    又新开一个坑,这个系列主要是记录Unity的干货,就不像之前那几个有点口水话了233 当然我会改正 时隔半个月 经历了开学 换教室等等一系列杂七杂八的事情也算步入正轨了~ 没杂七杂八的介绍什么,不水字数,直接开干!(暴论) 编写顺序会严格按照真实的生命周期顺序

    2023年04月22日
    浏览(34)
  • Unity之组件的生命周期

    PS:第二天,依旧在摸鱼学unity 我本身是由Web后端转到了游戏后端,最近因为工作原因在学ET框架。学到了 ECS 编程模式开发(E —— Entity,C —— Component , S —— System)实体、组件、逻辑开发。 我是这么理解的:组件是挂载到实体上的,组件中记录了实体所需要的数据,然

    2024年02月02日
    浏览(38)
  • Unity MonoBehaviour事件函数的生命周期

    Unity运行时候的默认的几个函数的执行顺序: 首先是Awake,OnEnable,Start等,后面是FixUpdate Update 最后是OnDisable、OnDestroy

    2024年02月10日
    浏览(44)
  • unity的函数生命周期以及静态生成方法

    前段时间毕业了,到处跑着玩,玩傻了之后入职了又摸了一个多月鱼~收收心了,近期的学习计划是下半年入门图形学,九月中旬把线性代数学完,所以unity和游戏开发的文章还是很少更新了,等后期学习图形学再慢慢更新和学习记录吧,中间工作中遇到的一些问题还是会记录

    2024年02月03日
    浏览(41)
  • Unity 关于生命周期函数的一些认识

    Unity 生命周期函数主要有以下一些: Awake() : 在脚本被加载时调用。用于初始化对象的状态和引用。 OnEnable() : 在脚本组件被启用时调用。在脚本组件被激活时执行一次,以及在脚本组件被重新激活时执行。 Reset() : 在脚本组件被重置时调用。用于重置脚本的初始状态。 Start

    2024年01月21日
    浏览(54)
  • 【Unity】认识常用的生命周期函数(Awake、Start、Update...)

    游戏的本质就是一个死循环 每一次循环都会处理游戏逻辑 并 更新一次游戏画面 之所以能看到画面在动 是因为 切换画面速度达到一定速度时 人眼就会认为画面是动态且流畅的 一帧就是执行了一次循环 Unity底层已经封装好了这个死循环 我们只需要利用Unity的生命周期函数的

    2024年02月02日
    浏览(34)
  • unity-unity2d基础操作笔记(三)0.5.3204

    目标是:牢记以下137条操作,越级上升到中级阶段 当一个人物由多个部分的动画组成,可以将动画的多个部分都放入一个数组中,当需要执行某个动作时,循环数组执行某一个动画就可以了 float h = Input.GetAxis(“Horizontal”); rd.velocity = new Vector2(h \\\" speed * Time.fixedDeltaTime, rd.velo

    2024年04月09日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包