[3D跑酷] UI事件处理系统
本文为作者原创,转载请注明出处:https://www.cnblogs.com/zhaoqingqing/p/3398791.html
在我们的Unity游戏项目中,GUI的表现采用NGUI。记录一下我们的处理方式:
需要解决的问题#
1、需要处理大量按钮的点击事件
2、需要处理界面跳转事件
3、需要处理界面元素更新事件
解决方案#
GUIClickEventReceiver#
解决按钮点击事件
GUIManager#
管理GUI的跳转与更新
具体实现#
Inspector选择事件#
在编辑器中为按钮选择点击事件
事件代码结构#
主要逻辑#
public void OnClick () { bool playSoundEffect = true; switch (clickType) { case ClickType.StartGame: GameManager.instance.startGame (); break; case ClickType.Store: GUIManager.instance.showGUI (GUIState.Store); break; case ClickType.Stats: GUIManager.instance.showGUI (GUIState.Stats); break; case ClickType.DoubleCoinUpgrade: GameManager.instance.upgradePowerUp (PowerUpTypes.DoubleCoin); break; case ClickType.CoinMagnetUpgrade: GameManager.instance.upgradePowerUp (PowerUpTypes.CoinMagnet); break; case ClickType.InvincibilityUpgrade: GameManager.instance.upgradePowerUp (PowerUpTypes.Invincibility); break; case ClickType.AddSpeedUpgrade: GameManager.instance.upgradePowerUp (PowerUpTypes.AddSpeed); break; case ClickType.ProtectionCoverUpgrade: GameManager.instance.upgradePowerUp(PowerUpTypes.ProtectionCover); break; case ClickType.AttackGunUpgrade: GameManager.instance.upgradePowerUp(PowerUpTypes.AttackGun); break; case ClickType.EndGame: GUIManager.instance.showGUI (GUIState.EndGame); break; case ClickType.Restart: GameManager.instance.restartGame (true); break; case ClickType.MainMenu: GameManager.instance.backToMainMenu (false); break; case ClickType.MainMenuRestart: GameManager.instance.backToMainMenu (true); break; case ClickType.Pause: GameManager.instance.pauseGame (true); playSoundEffect = false; break; case ClickType.Resume: GameManager.instance.pauseGame (false); break; case ClickType.ToggleTutorial: GameManager.instance.toggleTutorial (); break; case ClickType.Missions: GUIManager.instance.showGUI (GUIState.Missions); break; } if (playSoundEffect) AudioManager.instance.playSoundEffect (SoundEffects.GUITapSoundEffect); }
作者:赵青青 一名在【网易游戏】做游戏开发的程序员,擅长Unity3D,游戏开发,.NET等领域。
本文版权归作者和博客园共有,欢迎转载,转载之后请务必在文章明显位置标出原文链接和作者,谢谢。
如果本文对您有帮助,请点击【推荐】您的赞赏将鼓励我继续创作!想跟我一起进步么?那就【关注】我吧。
本文版权归作者和博客园共有,欢迎转载,转载之后请务必在文章明显位置标出原文链接和作者,谢谢。
如果本文对您有帮助,请点击【推荐】您的赞赏将鼓励我继续创作!想跟我一起进步么?那就【关注】我吧。
分类:
Unity项目开发日志
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 2 本地部署DeepSeek模型构建本地知识库+联网搜索详细步骤