在我们的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事件处理系统的更多相关文章

  1. 3D跑酷遇到的问题

    前言 项目名称:3D跑酷项目 写作目地:使用Asset Server进行多人协作开发过程中,记录遇到的问题 问题1:UIAtlas无法自动更新 描述:NGUI的Atlas图集(图片)无法自动更新 后果 ...

  2. 基于 HTML5 的 WebGL 3D 智能楼宇监控系统

    前言 智能监控的领域已经涉及到了各大领域,工控.电信.电力.轨道交通.航天航空等等,为了减少人员的消耗,监控系统必不可少.之前我写过一篇 2D 的智能地铁监控系统广受好评,突然觉得,既然 2D 的这么 ...

  3. 【Android】事件处理系统

    linux输入子系统 Android是linux内核的,所以它的事件处理系统也在linux的基础上完成的. Linux内核提供了一个Input子系统来实现的,Input子系统会在/dev/input/ ...

  4. 3D跑酷游戏《月影忍者之疾风狂逃》

    <月影忍者之疾风狂逃>是一款3D跑酷游戏,也是我实习的时候参与的一个项目,在那个公司我学到了很多东西,谢谢他们.大家可以去玩玩这个游戏啊,还是不错的哦.

  5. [Xcode 实际操作]七、文件与数据-(23)UI Testing系统界面测试功能的使用

    目录:[Swift]Xcode实际操作 本文将演示UI Testing系统界面测试功能的使用. 如果项目中尚未引入界面测试功能,请点击项目属性面板->[General]面板左下角的[+]图标 - ...

  6. [3D跑酷] GUIManager UI管理

    UI元素更新及界面跳转 继上篇日志<Unity开发之 GUIClickEventReceiver>,再谈一下我们如何管理游戏中的UI元素更新及界面跳转 UI绑定 图一:Inspector面 ...

  7. 基于 HTML5 WebGL 的 3D 工控裙房系统

    前言 工业物联网在中国的发展如火如荼,网络基础设施建设,以及工业升级的迫切需要都为工业物联网发展提供了很大的机遇.中国工业物联网企业目前呈现两种发展形式并存状况:一方面是大型通讯.IT企业的布局:一方 ...

  8. 基于 HTML5 WebGL 的 3D 棉花加工监控系统

    前言 现在的棉花加工行业还停留在传统的反应式维护模式当中,当棉花加下厂的设备突然出现故障时,控制程序需要更换.这种情况下,首先需要客户向设备生产厂家请求派出技术人员进行维护,然后生产厂家才能根据情况再 ...

  9. 基于 HTML5 WebGL + WebVR 的 3D 虚实现实可视化系统

    前言 2019 年 VR, AR, XR, 5G, 工业互联网等名词频繁出现在我们的视野中,信息的分享与虚实的结合已经成为大势所趋,5G 是新一代信息通信技术升级的重要方向,工业互联网是制造业转型升级 ...

随机推荐

  1. 安装多JDK后,java编译环境和运行环境版本(JDK版本) 不一致解决:

    由于之前安装过JDK1.7 ,现在一个项目是JDK1.5的,那么需要更改了环境变量了,此处不再赘述如何设置JDK 的环境变量了.然后网上找来方法: 在安装多个jdk后,出现了java -version ...

  2. [js开源组件开发]图片放大镜

    图片放大镜 一般情况下,手机由于屏幕太小,会有图片上看不清的问题,所以我就做了一个放大镜的js效果,支持pc和移动端.它的原理是利用的backgroundsize来实现的,所以你的浏览器首先要支持这个 ...

  3. Web.Config的配置

    1.配置数据库连接 在<connectionStrings></connectionStrings>节中完成,配置过程需指定四个属性server(DataSource)服务器名 ...

  4. SAP debug的几种方式

         1. 直接在程序中设断点 这种方式想必大家都知道了,在se38里面打上breakpoint,程序运行到该处即进入debug模式   2.background Job的debug 进入SM37 ...

  5. idoc 和 bapi 和 rfc 之间的区别

        se37 写出来的叫function,其中可以远程调用的叫rfc,remote-enabled function,abap语法和输入输出参数就会有一些限制.bapi是sap做好的实现特定业务操 ...

  6. Python数据结构与算法--数据类型

    从数据类型开始 Python支持面向对象的编程范式,这意味着Python把数据看成解决问题的关键. 在Python中,类似其他的面向对象的编程语言, 我们定义一个类,用来描述数据是什么 (状态) 和数 ...

  7. UISlider显示进度(并且实现图片缩放)

    图片展示效果如下: 其他没什么好说的,直接上代码: RootView.h: #import <UIKit/UIKit.h> @interface RootView : UIView @pr ...

  8. JAVA基础学习day17--集合工具类-Collections

    一.Collection简述 1.1.Collection与Collections的区别 Collections是集合的静态工具类 Collection:是集合的顶级接口 二.Sort 2.1.sor ...

  9. centos性能监控系列二:Collectl初解

    对于一个 Linux 系统管理员来说确保自己管理的系统处于一个良好的状态是其首要责任. Linux 系统管理员可以找到有很多工具来帮助自己监控和显示系统中的进程,例如 top 和 htop 今天介绍一 ...

  10. 在Dynamics CRM 2015中通过3CX插件(以及3CX windows phone)拨出电话

    背景 在On-premises部署的Dynamics CRM中实现通过网页拨通客户电话的功能 要点 3CX 提供了开箱即用的Dynamics CRM Solution,只需要在Microsoft Dy ...