理解Unity脚本的生命周期对游戏开发很重要,这篇文章对生命周期做一个记录和总结。Unity的脚本生命周期(消息),也就是在脚本运行时,自动并且按顺序执行的一系列函数。在unity官网中有对生命周期详细的介绍https://docs.unity3d.com/cn/current/Manual/ExecutionOrder.html

场景开始阶段

Awake:在游戏物体加载时执行一次,(在物体启用的状态下)。如果游戏物体未启用,则会在启用后调用Awake;

onEnable:物体每次启用时调用OnEnable;

Start:物体加载之后,脚本启用之后执行一次Start。

onlevelwasloaded:关卡场景加载完成后会调用此函数。只有通过SceneManager.LoadScene()加载的场景会调用此函数。

gameObject.SetActive(true);//代码启用物体方法
this.enabled = true;//代码启用脚本方法

总结:Awake和Start方法都是加载场景后只执行一次,因此作用都是充当构造函数,初始化数据成员。在执行顺序上Awake在Start前面调用。可以通过onlevelwasloaded告知游戏已加载新关卡。

物理阶段

FixedUpdate:脚本启用后,固定时间执行,适用于物理的计算和更新,不会受到渲染的影响;默认是0.02s,可以通过Edit/Project Setting设置

OnCollisionXXX:碰撞事件,满足碰撞条件时调用;

OnTriggerXXX:触发,当满足触发条件时调用

逻辑阶段

Update:渲染帧,脚本启用后,每次渲染场景调用一次。帧率快慢与设备性能和渲染量有关。

LateUpdate:在update后调用。LateUpdate 开始时,在 Update 中执行的所有计算便已完成。LateUpdate 的常见用途是跟随第三人称摄像机。如果在 Update 内让角色移动和转向,可以在 LateUpdate 中执行所有摄像机移动和旋转计算。这样可以确保角色在摄像机跟踪其位置之前已完全移动。

场景渲染

OnBecameVisible:当当前Mesh Renderer在任意相机上可见时调用;

OnBecameInvisible:当当前Mesh Renderer在任意相机上不可见时调用;

结束阶段

OnDisable:对象被禁用或处于非活动状态时,调用此函数。

OnDestroy:脚本被销毁或游戏对象被销毁时调用

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

鼠标输入事件

OnMouseDown:鼠标按下当前Collider时调用;

OnMouseEnter:鼠标进入当前Collider时调用;

OnMouseExit:鼠标离开当前Collider时调用;

OnMouseUp:鼠标抬起当前Collider时调用;

OnMouseOver:鼠标经过当前Collider时调用;

Unity基础-脚本生命周期的更多相关文章

  1. Unity学习疑问记录之脚本生命周期

    总的来说unity的脚本生命周期分几个部分:编辑→初始化→游戏逻辑→渲染→GUI→Teardown首先是Reset,顾名思义:重置.在什么情况下调用呢?1.用户第一次添加组件时.2用户点击见组件面板上 ...

  2. Unity脚本生命周期

    前言 说到生命周期,影响最深刻的是,在接触Java的JSF组件时,JSF组件的五大生命周期,全要默写出来,嘿嘿…… 总结这两天在写小怪和掉落的糖葫芦时,老是遇到GameObject未销毁,一直存在场景 ...

  3. Unity脚本生命周期与执行顺序

    文章目录 脚本生命周期 MonoBehavior生命周期图 脚本执行顺序 自定义执行顺序 在Unity中,脚本可以理解为附加在游戏对象上的用于定义游戏对象行为的指令代码.必须绑定在游戏对象上才能开始它 ...

  4. Unity3D热更新之LuaFramework篇[06]--Lua中是怎么实现脚本生命周期的

    前言 用c#开发的时候,新建的脚本都默认继承自Monobehaviour, 因此脚本才有了自己的生命周期函数,如Awake,Start, Update, OnDestroy等. 在相应的方法中实现游戏 ...

  5. (转)unity3d中脚本生命周期(MonoBehaviour lifecycle)

    自:http://blog.csdn.net/qitian67/article/details/18516503 最近在做一个小示例,发现类继承于MonoBehaviour的类,有很多个方法,于是乎必 ...

  6. Java基础知识笔记(四:多线程基础及生命周期)

    一.多线程基础 编写线程程序主要是构造线程类.构造线程类的方式主要有两种,一种是通过构造类java.lang.Thread的子类,另一种是通过构造方法实现接口java.lang.Runnable的类. ...

  7. [Unity3D]脚本生命周期学习

    脚本的生命周期 继承于MonoBehaviour的类对象无需手动实例化,由引擎来决定实例化的时机 Awake:每当脚本被加载的时候调用一次,就是说即使脚本没有被勾选,也会调用一次,主要用来做一些初始化 ...

  8. unity3d中脚本生命周期(MonoBehaviour lifecycle)

    最近在做一个小示例,发现类继承于MonoBehaviour的类,有很多个方法,于是乎必然要问出一个问题:这么多个方法,执行先后顺序是如何的呢?内部是如何进行管理的呢?于是在网上找了许多资料,发现了Ri ...

  9. 小抄:选择 Unity 的对象生命周期管理员

    Unity 框架提供了数种生命周期管理员,各有相同和相异之处.刚开始接触时,难免头昏. 制作这张小抄,只是为了要帮助自己理解和记忆.如果你也用 Untiy,或可参考看看. 文字說明: Transien ...

随机推荐

  1. MySQL--WHERE专题

    MySQL进阶----过滤条件 select * from ... where ...; 通常我们并不需要查看一个表的所有行,我们需要查看的是具备某种条件的行.前面MySQL使用的基础学习中,就使用过 ...

  2. Linux Kernel 0.12 启动简介,调试记录(Ubuntu1804, Bochs, gdb)

    PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明   本文作为本人csdn blog的主站的备份.(Bl ...

  3. 不一样的软件们——GitHub 热点速览 v.21.10

    作者:HelloGitHub-小鱼干 创意,是程序员的一个身份代名词,一样的软件有不一样的玩法.比如,你可以像用 git 一样操作一个 SQL 数据库,dolt 就是这样的数据库.又比如,你可以只写文 ...

  4. Everything is Serverless,从开源框架对比说起

    摘要:Everything is Serverless. 在众多云计算解决方案中,Serverless 逐渐崭露头角,受到了很多关注并且发展迅猛,今天就关于serverless 开源框架细说二三. 什 ...

  5. MediaCodec编码结合FFmpeg封装流

    在Android平台上合成视频一般使用MediaCodec进行硬编码,使用MediaMuxer进行封装,但是因为MediaMuxer在某些机型上合成的视频在其他手机上播放会出现问题,而且只支持一个音频 ...

  6. Java 并发编程之 Condition 接口

    本文部分摘自<Java 并发编程的艺术> 概述 任意一个 Java 对象,都拥有一个监视器方法,主要包括 wait().wait(long timeout).notify() 以及 not ...

  7. js 算数组平均值、最大值、最小值、偏差、标准差、中位数、数组从小打大排序、上四分位数、下四分位数

    要算的数组命名为data var sum = function(x,y){ return x+y;}; //求和函数 var square = function(x){ return x*x;}; / ...

  8. 使用oracle序列+oracle定时任务获取每月从1开始的流水码

    --创建序列 --入库create sequence rk_seq;--出库create sequence ck_seq;--移库create sequence yk_seq; --创建存储过程 cr ...

  9. Topshelf一个用于使用.NET构建Windows服务框架

    1 Topshelf是什么? Topshelf是用于托管使用.NET框架编写的Windows服务的框架.服务的创建得到简化,从而使开发人员可以创建一个简单的控制台应用程序,可以使用Topshelf将其 ...

  10. (原创)高DPI适配经验系列:(一)缩放比例与DPI对应关系

    一.前言 当下,2K分辨率已成为主流标配,3K.4K也已经广泛应用. 在屏幕尺寸不变的情况下,高分辨率也就意味着高DPI,对于桌面程序而言,除了先天就支持高DPI的框架外(如UWP.Electron等 ...