[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 是新一代信息通信技术升级的重要方向,工业互联网是制造业转型升级 ...
随机推荐
- html,xhtml和xml
html,xhtml和xml的定义: 1.html即是超文本标记语言(Hyper Text Markup Language),是最早写网页的语言,但是由于时间早,规范不是很好,大小写混写且编码不规范: ...
- SMW0上传EXCEL模板时报错无分配给对象***的MIME类型
在使用SMW0上传照片.声音文件.EXCEL模板等文件时,遇到报错提示,如下图所示: 解决办法:需要先维护 .XLS 文件的MIME TYPE,SMW0 打开如下图所示 选择上图红色框中“WebRFC ...
- Atitit. Xss 漏洞的原理and应用xss木马
Atitit. Xss 漏洞的原理and应用xss木马 1. XSS漏洞1 2. XSS的用途2 2.1. 盗取cookie2 2.2. 刷新流量 刷分3 2.3. DOS 窃取隐私”.“假冒身份”. ...
- SQL2012 提示评估已过期 解决方案- sql server问题
SQL2012 提示评估已过期 解决方案提示评估已过期的解决方法和 sql2008一样 第1步:进入SQL2012配置工具中的安装中心第2步:再进入维护界面,选择版本升级第3步:进入产品密钥,输入密钥 ...
- 通过sftp实现文件分发功能
1 环境: 分发服务器:ubuntu server 64bit,192.168.56.22 接受服务器:windows server 2008,192.168.56.102 2 ...
- 换iphone5屏幕你花了多少钱?不防我们看下市场的批发价格
看来人家批发价也不便宜啊,你修一块花了多少米 免费b2b平台 US $1 - 79.99 / Piece Factory Price for iphone 5" lcd alibaba ...
- 关于const和define的内存分配问题的总结
关于const和define的内存分配问题 const与#define宏定义的区别----C语言深度剖析 1, const定义的只读变量在程序运行过程中只有一份拷贝(因为它是全局的只读变量,存放在静 ...
- Objective-C之Category的使用
*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...
- java基础--温故而知新 (01)
1 myeclipse是一个eclipse插件.使用java语言开发.进程是javaw.exe--非命令行方式启动. 2 考这些术语的公司,往往都是世界一流的好公司.(技术广度+英语) java ...
- MySQL 如何修改字符集 utf8 改为 utf8mb4
在实行sql server 向 mysql 迁移数据时,报错: Incorrect string value: '\xF0\x9F\x98\x8A' 原因是mysql 采用的是 utf8 的字符集,而 ...