Unity事件

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-11-25 20:13:55

Unity事件的相关文章

一键展开关闭unity的 Inspector面板上的所有组件

孙广东  2015.12.11 using UnityEngine; using System.Collections.Generic; using System.Collections; using UnityEditor; using System.Reflection; using System; /// <summary> /// 描述:全部 展开/收起 Inspector面板的所有组件. /// author: 孙广东 /// todo 还可以深度定制,添加两个按钮切换 /// &l

【总结】游戏框架与架构设计(Unity为例)

使用框架开发游戏 优点:耦合性低,重用性高,部署快,可维护性高,方便管理.提高开发效率,降低开发难度 缺点:增加了系统结构和实现的复杂性,需要额外花费精力维护,不适合小型程序,易影响运行效率   常见框架 MVC  表现层(View):游戏画面.UI 逻辑层(Controller):数据接口,操作控制,AI 数据层(Model):数据保存,图片.声音等资源 我的SFramework中,View层是单独的,Model我放在基类中,Controller则在派生类,实现了MVC的分离(如果要重构的话我

做好Unity4.x开发项目规划

1. 是否要用lua 2. (对于需操作的游戏)客户端游戏如何做战斗验证 下面列举小坑吧.不建议都绕开,毕竟没有那么多时间做前期调研的. 对应版本Unity4.x 1. 客户端程序层面 总的来说C#超级给力的,不过别玩脱了 1) mono虚拟机gc Unity的mono虚拟机使用不分代的gc算法,临时对象积攒起来,导致重量级GC游戏频繁卡顿. Unity官方:认真review每帧20B以上,以及一次2K以上的GC Alloc的行为.传闻:Unity5会改进. 推荐阅读:Gamasutra: We

gameUnity 网络游戏框架

常常在想,有没有好的方式,让开发变得简单,让团队合作更加容易. 于是,某一天 动手写一个 架构, 目前版本 暂定 0.1 版本.(unity5.0.0f4 版本以上) 我打算 开源出来 0.1有什么功能? 首先类结构图 前台包括:事件类,视图逻辑类,单例数据类 后台包括:私聊,公聊,人机通信 如何二次开发? 参考view 文件夹. 举例 FamilyView.cs FamilyCommand.cs using UnityEngine; using System.Collections; usin

unityevent与持续按键触发

上一篇中提到一种鼠标按下时的事件触发,即采用eventtrigger设定pointerdown和pointerup并绑定相应事件.但是若要实现持续按键则需要对绑定的每个方法都添加实现持续按键方法.所以在此通过unityevent来简化过程. (一)unityevent unityevent为unity自定义的unity事件,需要与委托unityaction(它需要添加到event的监听中使用). 以下为例: using System.Collections; using System.Colle

(七)Unity5.0新特性------介绍IL2CPP内部构建

?? 孙广东  2015.5.20 介绍IL2CPP内部构建 将近一年以前的事了,Unity开始谈论未来在Unity中的脚本.新的 IL2CPP 脚本后端答应(highly-portable)给Unity带来了高性能. 高便携式虚拟机.今年 1 月,Unity使用 IL2CPP,尝试的第一平台是iOS 64-bit.Unity5 发布带来了另一种平台:WebGL.由于从我们拥有的强大的社区,用户的输入,我们已经为 IL2CPP发运许多版本更新修补程序,稳步提高其编译和运行时. 我们没有计划去制止

Unity3D热更新之LuaFramework篇[05]--Lua脚本调用c#以及如何在Lua中使用Dotween

在上一篇文章 Unity3D热更新之LuaFramework篇[04]--自定义UI监听方法 中,我对LuaBehaviour脚本进行了扩展,添加了两个新的UI监听方法,也提到最好能单写一个脚本处理此事.本篇文章就来继续这个工作. 从Lua中调用C#代码 1.创建UI监听脚本 打开之前的工程,在Assets/LuaFrameworks/Scripts/Common下,创建一个UIEventEx.cs脚本,将LuaBehaviour.cs中的AddButtonClick以及AddInputFiel

在Unity中使用事件/委托机制(event/delegate)进行GameObject之

欢迎来到unity学习.unity培训.unity企业培训教育专区,这里有很多U3D资源.U3D培训视频.U3D教程.U3D常见问题.U3D项目源码,[狗刨学习网]unity极致学院,致力于打造业内unity3d培训.学习第一品牌. 一对多的观察者模式机制有什么缺点? 如果你对如何在Unity中使用事件/委托机制还不太了解,建议您查看我的前一篇文章:[Unity3D技巧]在Unity中使用事件/委托机制(event/delegate)进行GameObject之间的通信 在前一篇博客里面,我们写到

Unity游戏开发——自动为动画剪辑添加事件 之 最后几帧的事件不能被调用的问题

最近在做一个根据配置表自动生成动画剪辑clip以及controller的功能.做法是根据配置表配置的动作以及每个动作的关键帧,自动为每个clip添加事件.这样做可以把动画的事件处理在游戏运行之前就计算好然后存到动画文件.anim中,可以提高游戏的运行效率,如果做的再细点,还可以自定义动画事件的传入的参数.比如act游戏中的多段攻击,这些数据一定是配到表中的,我们可以把表中的数据导入成Unity的ScriptableObject类型,然后打成.asset文件,在把他指定给AnimationEven