查看: 2194|回复: 2
打印 上一主题 下一主题

[其他] 可重载虚函数总结(事件,回调函数,消息处理)

[复制链接]

2722

主题

42

听众

3万

积分

资深设计师

Rank: 7Rank: 7Rank: 7

纳金币
38268
精华
111

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

跳转到指定楼层
楼主
发表于 2014-9-30 23:15:00 |只看该作者 |倒序浏览

重载虚函数

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版支持)后触发。

详情请查看image 特效:The image effects in Unity Pro.

OnRenderObject

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

OnSerializeNetworkView  

OnServerInitialized  

当 Network.InitializeServer完成时触发。

OnTriggerEnter  

OnTriggerExit  

OnTriggerStay  

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

OnWillRenderObject

分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

hyui    

1

主题

2

听众

6671

积分

高级设计师

Rank: 6Rank: 6

纳金币
2715
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

沙发
发表于 2014-10-1 16:10:03 |只看该作者
Thanks for this share !
回复

使用道具 举报

0

主题

2

听众

1346

积分

助理设计师

Rank: 4

纳金币
505
精华
0
板凳
发表于 2014-10-1 22:36:14 |只看该作者
谢谢详细的解释 给掌声顶顶
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2024-11-23 17:25 , Processed in 3.432423 second(s), 31 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部