码迷,mamicode.com
首页 > 其他好文 > 详细

[3D跑酷] GUIClickEventReceiver

时间:2015-03-08 23:01:24      阅读:339      评论:0      收藏:0      [点我收藏+]

标签:3d游戏开发   unity3d培训   unity3d游戏   unity培训   unity3d学习   


欢迎来到unity学习unity培训unity企业培训教育专区,这里有很多U3D资源U3D培训视频U3D教程U3D常见问题U3D项目源码,【狗刨学习网】unity极致学院,致力于打造业内unity3d培训、学习第一品牌。


在我们的Unity手机游戏项目中,GUI的表现采用NGUI。记录一下我们的处理方式:

问题:1、需要处理大量按钮的点击事件

        2、需要处理界面跳转事件

        3、需要处理界面元素更新事件

解决方案:

      GUIClickEventReceiver.cs

      GUIManager.cs

思路:

      GUIClickEventReceiver 解决按钮点击事件

      GUIManager 管理GUI的跳转与更新

实现:

技术分享技术分享

图一:Editor 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);
    }

更多内容,请访问【狗刨学习网】unity极致学院 http://edu.gopedu.com  




声明:此篇文档时来自于【狗刨学习网】社区-unity极致学院,是网友自行发布的Unity3D学习文章,如果有什么内容侵犯了你的相关权益,请与官方沟通,我们会即时处理。

[3D跑酷] GUIClickEventReceiver

标签:3d游戏开发   unity3d培训   unity3d游戏   unity培训   unity3d学习   

原文地址:http://blog.csdn.net/book_longssl/article/details/44139395

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!