Unity3D时间顺序与功能

Unity3D中所有控制脚本的基类MonoBehaviour有一些虚函数用于绘制中事件的回调,也可以直接理解为事件函数,例如大家都很清楚的Start,Update等函数,以下做个总结。

Awake

当前控制脚本实例被装载的时候调用。一般用于初始化整个实例使用。

Start

当前控制脚本第一次执行Update之前调用。

Update

每帧都执行一次。这是最常用的事件函数。

FixedUpdate

每固定帧绘制时执行一次,和update不同的是FixedUpdate是渲染帧执行,如果你的渲染效率低下的时候FixedUpdate调用次数就会跟 着下降。FixedUpdate比较适用于物理引擎的计算,因为是跟每帧渲染有关。Update就比较适合做控制。

LateUpdate

在每帧执行完毕调用,他是在所有update结束后才掉,比较适合用于命令脚本的执行。官网上例子是摄像机的跟随,都是在所有update操作完才跟进摄像机,不然就有可能出现摄像机已经推进了,但是视角里还未有角色的空帧出现。

Reset

这个是编辑器模式情况下你点击reset按钮(如果有的话)调用的,你可以在这里做调试的初始化工作。

OnApplicationFocus

OnApplicationPause

OnApplicationQuit

应用程序失去焦点,应用程序暂停,应用程序退出时候发送这些消息。

OnBecameInvisible

OnBecameVisible

当脚本宿主(不)被任何摄像机显示时候发送此消息。

OnCollisionEnter

OnCollisionExit

OnCollisionStay

当其他碰撞或者刚体(collider/rigidbody )和参数的碰撞或者刚体(collider/rigidbody )重叠、退出时发送前两个。而当他们保持重叠状态时每帧都会发送一个Stay消息。

OnConnectedToServer

OnDisconnectedFromServer

OnFailedToConnect

OnFailedToConnectToMasterServer

前两个 当客户端成功连接到服务器或者断开服务器时发送此消息。

后两个 当连接失败时候触发

OnMasterServerEvent

当Master服务器发送报告时候触发。

OnNetworkInstantiate

当物体被Network.Instantiate时触发。(还没研究到)

OnPlayerConnected

OnPlayerDisconnected

在服务端当玩家成功连接/离线时候触发。

OnControllerColliderHit

当控制者和参数ControllerColliderHit碰撞时候触发此消息。官方举例可以用于角色移动一个物体,当角色碰到这个参数物体时候,你可以在这函数里操作移动此物体的动作,等等。

OnParticleCollision

当粒子撞到碰撞体(collider)时触发。

OnDisable

OnEnable

当脚本宿主被启用或者禁用时候触发。

OnDrawGizmos

OnDrawGizmosSelected

编辑器状态时绘制Gizmos和Gizmos被选取时候触发。

注:Gizmos参见我另一篇blog,他是用与做自己的组件时候用的,比如路径点绘制之类的。

OnGUI

绘制GUI时候触发。一般在这个函数里绘制GUI菜单。

OnJointBreak

(还没研究到)

OnLevelWasLoaded

当新的level(unity包)读取完毕时候触发。

OnMouseDown

OnMouseDrag

OnMouseEnter

OnMouseExit

OnMouseOver

OnMouseUp

鼠标事件,都是当鼠标和gui或者碰撞体(Collider)交互时候触发。需要说明的是drag其实就是鼠标down后up之前持续每帧都会发送此消息。

OnPostRender

这个函数仅用于宿主为摄像机的脚本。当此摄像机范围内所有渲染都完成时候触发此消息。

OnPreCull

这个函数仅用于宿主为摄像机的脚本。当此摄像机剔除了某个渲染场景时候触发此消息。(未验证)

OnPreRender

这个函数仅用于宿主为摄像机的脚本。当此摄像机开始渲染某个场景时候触发此消息。

OnRenderImage

当所有渲染完成image的postprocessing effects(只有pro版支持)后触发。

OnRenderObject

这个函数仅用于宿主为摄像机的脚本。当使用Graphics.DrawMeshNow 或者其他函数绘制自己建立的物体渲染完毕时触发。

OnSerializeNetworkView

OnServerInitialized

当 Network.InitializeServer完成时触发。

OnTriggerEnter

OnTriggerExit

OnTriggerStay

当碰撞体(collier)接触触发区域(trigger)时候的一系列消息。

OnWillRenderObject

时间: 2024-12-22 16:47:19

Unity3D时间顺序与功能的相关文章

如何使用『启用上网时间控制』功能限制上网时间

A.依次点击『开始』-『所有程序』-『瑞星全功能安全软件』或『瑞星个人防火墙』,启动『瑞星全功能安全软件』或『瑞星个人防火墙』. B.点击『瑞星全功能安全软件』或『瑞星个人防火墙』主界面『设置』菜单-切换到『网络监控』选项卡,如下图,勾选"开机启用"『恶意网址拦截』功能. C.切换至『恶意网址拦截』选项卡,如下图,勾选『启用家长保护』功能. D.点击『高级』按钮,弹出高级功能设置界面,如下图,勾选『启用上网时间控制』功能. E.在上图中点击『设置上网时间』按钮,弹出如下界面: F.在上

java 执行外部命令,想要得到按时间顺序正确的完整的打印信息,并且能阻塞,有什么办法呢?

问题描述 java 执行外部命令,想要得到按时间顺序正确的完整的打印信息,并且能阻塞,有什么办法呢? Process p = Runtime.getRuntime().exec(commands); 打印信息是分开普通信息缓冲区和错误信息缓冲区的,2者分开后,就体现不了顺序关系了,比如第一行错误信息,是在哪个普通信息之后打印的,第二行错误信息是在第几行普通信息之后打印的,如果使用 > xx.log的方式,可以得到顺序正确的打印文件,但是就不能用java.lang.Process阻塞了,会直接往下

wordpress实现评论翻页、评论按时间顺序方法

因为本博客的留言板用的是文章模版,那么留言自然也就是评论系统了,今天偶然发现评论这块特难看还不是按时间顺序走的,那么简单的倒腾了下,现在拿出来给大家分享下!是网上不少办法的集合体!具体效果如下图: 一.让评论按时间顺序排列,最新评论在最前面 1.在后台-设置-讨论里 按下图设置: 2.到程序的/wp-includes/下找到comment-template.php文件做以下修改 用ctrl+F查找  代码如下 复制代码 ORDER BY comment_date_gmt 将其改为  代码如下 复

社交工具集体变革:不再按时间顺序呈现海量动态

移动互联网的快速发展,导致了传统社交网络好友动态信息"泛滥",而简单的时间顺序显示,让大量内容被好友错过.据"连线"等多家美国科技新闻网站报道,从Facebook到Twitter,再到Instagram,社交网络行业正在出现一个新的变化,就是按照个性化定义的重要性.兴趣显示好友的帖子,不再单一根据时间.厂商希望此举能够让用户在有限的登陆时间,看到好友发布的更加重要的内容. 众所周知的是,智能手机已经成为重要的社交工具,而众多好友发布的海量动态信息,已经让现代人有了&

动态设置执行顺序和功能的问题

问题描述 要插入一条数据,但插入之前需要做一系列的条件判断,现有条件判断1,条件判断2,条件判断3,每次条件判断都要结合DAO,PO来操作,需要通过全部的判断才能最后写入数据,解决方案一:用存储过程封装将全部的条件判断,调用存储来返回结果解决方案二:封装每个条件判断,顺序的执行这些判断,解决方案三:直接使用ifelse来实现逻辑变化一:调整判断的先后顺序,在某些状态下,在不插入数据的前提下,调整条件判断的顺序可以很大程度减少总的判断次数,变化二:需要动态添加,修改,删除某些条件判断问题:以上的三

基于javascript显示当前时间以及倒计时功能_javascript技巧

自我练习,顺便分享给大家的一段js原生代码. Date 对象用于处理日期和时间. Date()  返回当日的日期和时间. getDate()  从 Date 对象返回一个月中的某一天 (1 ~ 31). getDay()  从 Date 对象返回一周中的某一天 (0 ~ 6). getMonth()  从 Date 对象返回月份 (0 ~ 11). getFullYear()  从 Date 对象以四位数字返回年份. getYear()  请使用 getFullYear() 方法代替. getH

两个线程按特定时间顺序交替执行

1.用到setitimer()函数,设定定时器 2.boost库用于创建两个线程 3.signal()用于将定时信号与响应函数绑定 源码如下: #include<iostream> #include<csignal> #include<sys/time.h> #include<boost/thread/thread.hpp> using namespace std; bool en_transmit=false,en_receive=false; void

Infinidat第三次重要升级:加速数据处理、内嵌iSCSI支持

阵列厂商Infinidat公布了第三次重大的软件升级,增加了压缩.内嵌iSCSI支持以及增强的阵列分析. Infinidat第三次重要升级:加速数据处理.内嵌iSCSI支持 Infinidat的架构有3个控制器节点,每个节点都可以看到所有驱动器,避开了全闪存的设计,而是依赖于1.2TB-3.2TB的DRAM缓存,24TB-210TB的NAND缓存,最多480个7200转的硬盘.该系统提供了7个9个正常运转时间,也就是99.99999%的可靠性. 下面就是该系列的4款Infinidat阵列: F1

内存管理-一道编程题用c语言实现这些功能时间有限1天时间求大神解答

问题描述 一道编程题用c语言实现这些功能时间有限1天时间求大神解答 有用户空间100kb,并规定作业的相应程序浇入内存连续区域,并不能被移动.作业与进程均采用sjf算法.输入为一组作业的进入时间,需要的内存容量(不超过100k)和运行时间. 要求: (1)按时间顺序给出每个作业的执行顺序,开始时间和结束时间,以及发生调度时内存各分区的状态: (2)计算这组作业的平均周转时间和平均带权周转时间: (3)实现作业一级调度和进程一级调度,包括调度算法和数据结构: (4)实现动态分区内存管理,包括内存分