[cb]NGUI事件及复杂UI管理

事件管理

看了有些文章关于NGUI的事件管理,许多人的做法的是封装一个事件处理层,避免在每个UI控件上都绑定事件处理脚本。本文说说我们项目中的UI事件管理吧。

UIEventListener

我们项目的做法是:在每一个需要进行事件处理的控件上绑定UIEventListener脚本

示例代码

void Init()
{
    //方式一
    var PausePanel = GetControl<Gameobject>("PausePanel");
    PausePanel.GetComponent<UIEventListener>().onClick = new UIEventListener.VoidDelegate((obj) => PausePanel.gameObject.SetActive(false));
    方式二
    var GMBtn = GetControl<Gameobject>(GMBtn);
    UIEventListener.get(GMbtn).onClick = GMBtnClick;
}

UI面板管理

在我们的项目中,每一个UI面板都是一个单独的Scene而不是prefab,每一个UI面板都有一个对应的Class管理类

实际使用

在cb-Art工程/Product/UI/Battle.unity [战斗界面UI],使用导出功能把UI场景打包成一个单独的Assetbundle。

在cb-Clien工程需要用到的地方 动态加载进来

在cb-Client/Code/UI/CUIBattle.cs [战斗界面UI处理],通过一个Class单独处理这个Assetbunld中加载出来的UI面板

注:每一个UI都有一个和自己名字对应的Class来处理。[eg:Home.unity->CUIHome]

优缺点

这种做法代码文件量比较大,但代码文件按面板独立便于管理,查错也更方便

UI类图

CUIBase

相关文章

前言 本文所指的google类vr设备是指: 谷歌的Cardboard、三星Gear VR、暴风魔镜等这样的手机VR盒子,而...
ImageTarget 前言 ImageTarget 顾名思义,就是图像识别,本文记录下作者最近学习vuforia中的imageTarge...
前言 关于google vr sdk的具体使用,传送门 Gvr SDK for Unity 分析(一) Google Daydream平台已经整合进...
VuMark 准备知识 Vumark的说明: https://library.vuforia.com/articles/Training/VuMark https://libr...
环境 引擎: Unity 5.3.6f1 SDK: Vuforia 6.0.112 测试系统:Android 4.2/4.3 6.0 Android 6出错 在Andr...
前言 最近VR如火如茶,就学习就落伍啦,所以有空闲时间研究下相关知识。 本文介绍了两种方法来制作VR场...