事件管理

看了有些文章关于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类图

最新文章

  1. TFS 2013 培训视频
  2. oracle 第一章总结
  3. bzoj 3130: [Sdoi2013]费用流
  4. [POJ] #1005# I Think I Need a Houseboat : 浮点数运算
  5. 一个有意思的js实例,你会吗??[原创]
  6. Hibernate4.x之映射文件
  7. jQuery中的模拟操作
  8. Permutation Recovery(模拟)
  9. js中函数参数基本类型和引用类型的区别
  10. Ejb in action(两)——示例入门
  11. shell实现centos7双网卡修改网卡名eth0,eth1,并设置网络
  12. Spring + Mybatis&#160;集成原理分析
  13. 初识JAVA——方法声明和调用
  14. 2018 大湾区(深圳) .NET技术分享交流会 第一期
  15. python相关资料链接
  16. Markdown 的离线编辑工具推荐:Sublime Text3 or Typora?我推荐Typora
  17. reactjs中使用高德地图计算两个经纬度之间的距离
  18. MD5解密
  19. JAVA代码模板总结
  20. [学习笔记]区间dp

热门文章

  1. 第一个 smarty 程序
  2. SpringBoot入门 (八) Cache使用
  3. 【IT笔试面试题整理】寻找二叉树两节点的最近的公共祖先
  4. (转)mybatis数据库物理分页插件PageHelper
  5. 性能提速:debounce(防抖)、throttle(节流/限频)
  6. Spring-web初始化流程简图
  7. .5-浅析express源码之Router模块(1)-默认中间件
  8. C# 字符串首字符大写
  9. js 前端分页空间控件
  10. MFC控件之Combo Box