[3D跑酷] UI事件处理系统
在我们的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);
}
[3D跑酷] UI事件处理系统的更多相关文章
- 3D跑酷遇到的问题
前言 项目名称:3D跑酷项目 写作目地:使用Asset Server进行多人协作开发过程中,记录遇到的问题 问题1:UIAtlas无法自动更新 描述:NGUI的Atlas图集(图片)无法自动更新 后果 ...
- 基于 HTML5 的 WebGL 3D 智能楼宇监控系统
前言 智能监控的领域已经涉及到了各大领域,工控.电信.电力.轨道交通.航天航空等等,为了减少人员的消耗,监控系统必不可少.之前我写过一篇 2D 的智能地铁监控系统广受好评,突然觉得,既然 2D 的这么 ...
- 【Android】事件处理系统
linux输入子系统 Android是linux内核的,所以它的事件处理系统也在linux的基础上完成的. Linux内核提供了一个Input子系统来实现的,Input子系统会在/dev/input/ ...
- 3D跑酷游戏《月影忍者之疾风狂逃》
<月影忍者之疾风狂逃>是一款3D跑酷游戏,也是我实习的时候参与的一个项目,在那个公司我学到了很多东西,谢谢他们.大家可以去玩玩这个游戏啊,还是不错的哦.
- [Xcode 实际操作]七、文件与数据-(23)UI Testing系统界面测试功能的使用
目录:[Swift]Xcode实际操作 本文将演示UI Testing系统界面测试功能的使用. 如果项目中尚未引入界面测试功能,请点击项目属性面板->[General]面板左下角的[+]图标 - ...
- [3D跑酷] GUIManager UI管理
UI元素更新及界面跳转 继上篇日志<Unity开发之 GUIClickEventReceiver>,再谈一下我们如何管理游戏中的UI元素更新及界面跳转 UI绑定 图一:Inspector面 ...
- 基于 HTML5 WebGL 的 3D 工控裙房系统
前言 工业物联网在中国的发展如火如荼,网络基础设施建设,以及工业升级的迫切需要都为工业物联网发展提供了很大的机遇.中国工业物联网企业目前呈现两种发展形式并存状况:一方面是大型通讯.IT企业的布局:一方 ...
- 基于 HTML5 WebGL 的 3D 棉花加工监控系统
前言 现在的棉花加工行业还停留在传统的反应式维护模式当中,当棉花加下厂的设备突然出现故障时,控制程序需要更换.这种情况下,首先需要客户向设备生产厂家请求派出技术人员进行维护,然后生产厂家才能根据情况再 ...
- 基于 HTML5 WebGL + WebVR 的 3D 虚实现实可视化系统
前言 2019 年 VR, AR, XR, 5G, 工业互联网等名词频繁出现在我们的视野中,信息的分享与虚实的结合已经成为大势所趋,5G 是新一代信息通信技术升级的重要方向,工业互联网是制造业转型升级 ...
随机推荐
- 布局文件预览:Rendering Problems Exception raised during rendering: Unable to find the layout for Action Bar.的解决
在android studio或者eclipse中打开layout文件,发现不能预览布局,提示以下错误: Rendering Problems Exception raised during rend ...
- Android SDK Tools和Android SDK Platform-tools
SDK Platform 可以理解为版本,因此有 SDK Platform 7,SDK Platform 8等等Android SDK Tools 是各个版本都可通用的工具文件夹,里面有draw9pa ...
- django配置fcgi参数解释
manage.py runfcgi minspare=50 maxspare=200 maxchildren=1000 maxrequests=99999 host=127.0.0.1 port=80 ...
- SharePoint 2013 - REST API about Content
1. 获取所有子站点信息(Sub Site): var subSitesInfo = "{0}/_api/Web/WebInfos?$orderby=Title desc"; // ...
- Sharepoint学习笔记—习题系列--70-573习题解析 -(Q22-Q24)
Question22You create a Feature.You need to remove the link to the Site Content Type page from the Si ...
- HDFS主要特性和体系结构
引言 Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统.它和现有的分布式文件系统有很多共同点.但同时,它和其他的分布式文件系统 ...
- Android SDK Manager 在win8.1上的闪退问题
全新安装的Windows 8.1的系统,Android SDK,JDK都是最新的版本,但是SDK Manager打开是命令行窗口一闪而过,就再没反映了. 通过搜索,确定了一个问题就是SDK目录tool ...
- OC中NSArray
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { ...
- iOS之 PJSIP静态库编译(三)
dada哪个所有静态库编译完成后还是不能运行那个demo,提示你找不到arm**.a 你lipo后要记得吧合并成.a 名字更改成你最后编译版本生成的.a名字....... 或者吧所有库add到你的工 ...
- FQ技术
什么是技术,就是翻_墙技术啦~ 关于GoogleFQ的网页,点击图片就能进入该网页浏览相关的FQ的设置 hosts所在文件夹: Windows 系统hosts位于 C:\Windows\System3 ...