UI框架学习笔记
2017-08-22 17:15
351 查看
本文是根据学习SiKi学院上的UI框架总结得来的,仅仅是作为学习过程的记录,便于以后回顾。首先看下UI框架总体的设计思路:
一.UIPanelType:枚举类型,为了存储UI界面有哪几种类型。
二.UIPanelType.json:json文件,为了保存UI界面的Prefab存储路径。
三.UIManager:
(1)解析json并存储在Dictionary中,用于实例化UI界面;
(2)保存所有实例化的面板,避免重复加载UI界面;
(3)用Stack保存所有显示的页面,避免跨界面操作;
四.界面都有四种状态:显示,暂停,恢复,关闭。因此可以设计为对应四种状态函数,分别为:OnEnter(),OnPause(),OnResume(),OnExit(),四种状态函数关系如上。且将它们写在BasePanel中,每个UI界面再分别继承与BasePanel类,这样便于维护。
(1)OnEnter():UI界面被显示的时候调用,因此可以在此处插入声音、动画等;
(2)OnPause():UI界面跳转到新界面时被被调用;
(3)OnResume():UI界面从新界面跳转回来被调用;
(4)OnExit():当前UI界面被关闭时调用;
五.进行UI框架设计时,遇到的问题:
(1)JsonUtility无法解析数组类型
解决方案:JsonUtility仅仅只支持对象解析,而不支持数组与List解析。如果要解析List或数组,需要将该json文件List或数组属性转换成对象对象。
(2)扩展方法的使用
扩展方法无法访问被扩展类的私有数据,增加的被扩展类的安全性。
特点:
1.静态类
2.静态方法
3.第一个参数为扩展类型,需要将其用this修饰,表示被扩展类型
(3)GetComponent方法:获取组件会优先子类对象,而不是父类对象
(4)CanvasGroup组件的使用
alpha属性:UI是否可以显示
blocksRaycasts属性:控制UI上的按钮事件是否可以触发
六.源码链接
链接: https://pan.baidu.com/s/1slCxTBR 密码: bft9
一.UIPanelType:枚举类型,为了存储UI界面有哪几种类型。
二.UIPanelType.json:json文件,为了保存UI界面的Prefab存储路径。
三.UIManager:
(1)解析json并存储在Dictionary中,用于实例化UI界面;
(2)保存所有实例化的面板,避免重复加载UI界面;
(3)用Stack保存所有显示的页面,避免跨界面操作;
四.界面都有四种状态:显示,暂停,恢复,关闭。因此可以设计为对应四种状态函数,分别为:OnEnter(),OnPause(),OnResume(),OnExit(),四种状态函数关系如上。且将它们写在BasePanel中,每个UI界面再分别继承与BasePanel类,这样便于维护。
(1)OnEnter():UI界面被显示的时候调用,因此可以在此处插入声音、动画等;
(2)OnPause():UI界面跳转到新界面时被被调用;
(3)OnResume():UI界面从新界面跳转回来被调用;
(4)OnExit():当前UI界面被关闭时调用;
五.进行UI框架设计时,遇到的问题:
(1)JsonUtility无法解析数组类型
解决方案:JsonUtility仅仅只支持对象解析,而不支持数组与List解析。如果要解析List或数组,需要将该json文件List或数组属性转换成对象对象。
(2)扩展方法的使用
扩展方法无法访问被扩展类的私有数据,增加的被扩展类的安全性。
特点:
1.静态类
2.静态方法
3.第一个参数为扩展类型,需要将其用this修饰,表示被扩展类型
eg: public static class MyExtensions { public static int WordCount(this String str) { return str.Split(new char[] { ' ', '.', '?' }, StringSplitOptions.RemoveEmptyEntries).Length; } } string s = "Hello Extension Methods"; int i = s.WordCount();
(3)GetComponent方法:获取组件会优先子类对象,而不是父类对象
Class ATest{ } Class BTest:ATest{ } Class C: MonoBehaviour { private ATest aTest; void Start () { aTest = this.GetComponent<ATest>(); Debug.Log(aTest.GetType());//输出为BTest } }
(4)CanvasGroup组件的使用
alpha属性:UI是否可以显示
blocksRaycasts属性:控制UI上的按钮事件是否可以触发
六.源码链接
链接: https://pan.baidu.com/s/1slCxTBR 密码: bft9
相关文章推荐
- Angular学习笔记之集成三方UI框架、控件的示例
- H-ui框架学习笔记
- 学习笔记 Bootstrap 第一天--UI框架
- UI简易框架的学习笔记
- Volley网络通信框架学习笔记(一)
- Struts2 框架学习第三天笔记
- 【学习笔记】Silverlight框架:Jounce(4)——事件通信
- 框架学习笔记
- 学习ASP.NET MVC5框架揭秘笔记-ASP.NET MVC路由(四)
- iOS-学习笔记-UI-第十二天
- 分布式任务框架elastic-job 学习笔记
- Unity框架学习笔记(一) 什么是MVC
- windows下scrapy框架学习笔记—'scrapy' 不是内部或外部命令
- Hadoop学习笔记:MapReduce框架详解
- Django框架学习笔记(29.kindeditor插件使用)
- 深度学习框架Caffe学习笔记(1)-Caffe环境搭建
- 学习ASP.NET MVC5框架揭秘笔记-ASP.NET MVC是如何运行的(二)
- Hadoop学习笔记—19.Flume框架学习
- ci框架2.2版本学习笔记(一)
- yii框架学习笔记