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
### 构建任务失败解决方案 当遇到 `Execution failed for task ':app:shrinkReleaseRes'` 错误时,这通常意味着资源压缩过程中出现了问题。此错误可能由多种原因引起,包括但不限于配置不正确、依赖冲突或特定于项目的其他因素。 #### 可能的原因分析 1. **ProGuard 或 R8 配置不当** ProGuard 和 R8 是用于优化和混淆代码以及减少 APK 大小的工具。如果这些工具的配置存在问题,可能会导致资源无法正常处理[^1]。 2. **重复资源** 如果项目中有多个模块定义了相同的资源名称,可能导致冲突并引发该错误。检查是否存在重名的 drawable、string 等资源文件[^2]。 3. **第三方库兼容性** 某些第三方库可能与当前使用的 Gradle 插件版本或其他库存在兼容性问题,从而影响到资源打包过程中的行为[^3]。 4. **Gradle 缓存问题** 有时旧缓存数据会干扰新编译的结果,尝试清理本地仓库和重新同步项目可以帮助排除此类潜在障碍[^4]。 #### 推荐的操作方法 为了有效解决问题,建议按照以下步骤逐一排查: ```bash # 清理项目构建目录 ./gradlew clean # 删除 .gradle 文件夹下的所有内容以清除缓存 rm -rf ~/.gradle/caches/ ``` 调整 `build.gradle` 中的相关设置也是一个重要环节: ```groovy android { ... buildTypes { release { minifyEnabled true // 是否启用代码缩减 shrinkResources true // 是否开启资源压缩 proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' // 尝试禁用 shrinkResources 来测试是否为资源压缩引起的错误 // shrinkResources false } } } ``` 此外,在 `proguard-rules.pro` 文件内添加必要的保留规则,防止关键类被意外移除: ```text -keep class com.example.yourpackage.** { *; } # 替换为你自己的包路径 -dontwarn androidx.**,com.google.** # 忽略警告信息 ``` 最后,确保所使用的 Android Studio 版本是最新的稳定版,并且已经应用了所有的补丁更新。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值