博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[3D跑酷] UI事件处理系统
阅读量:6943 次
发布时间:2019-06-27

本文共 2457 字,大约阅读时间需要 8 分钟。

在我们的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);    }

转载于:https://www.cnblogs.com/zhaoqingqing/p/3398791.html

你可能感兴趣的文章
ng-options 如何实现其中一项option禁选
查看>>
from语法导入
查看>>
linux 下的emoji在MariaDB中的字符集修改
查看>>
RMQ算法
查看>>
python连续爬取多个网页的图片分别保存到不同的文件夹
查看>>
了解url
查看>>
时间记录日志
查看>>
Node.js
查看>>
进程 线程通信方式(转载)
查看>>
在ios上,fixed定位因为input导致手机下面出现空白,视图变小
查看>>
hdu 1695(欧拉函数 容斥定理)
查看>>
mysql在表的某一位置增加一列、删除一列、修改列名
查看>>
计算机基础知识
查看>>
SpringMVC系列(九)自定义视图、重定向、转发
查看>>
PAT 1029 Median
查看>>
需要总结的知道
查看>>
python 从小白开始 - 字符串操作(不可修改)
查看>>
管理现有数据库-web系统
查看>>
无缝滚动
查看>>
JVM(四)垃圾收集器_分代收集器
查看>>