Unity3d 面向对象设计思想(二)(动态UI的分配与调度)
2014-06-25 14:09
357 查看
昨天写了一个UI弹窗,功能是可以实现,但是使用起来不是很方便,如果需要代码动态指定
静态弹窗无法满足项目的需求,比如服务器断开连接,诸如此类的UI,需要代码来动态实现,这样才可以使用起来
项目化,可以封装到弹窗的类型,弹窗显示的内容,包括弹窗显示一些游戏奖品道具这类物品
个人觉得弹窗最好还是能用来Unity3d中的实例化功能,这样即可以节省一定的内存空间,也能够让项目规格化
具体在NGUI里的做法,我的思想是:
a.写一个msg接收类,里面封装了所有有关接收消息的类型,以及需要显示的内容
b.在需要显示弹窗的地使用UIRoot.BroadCast(methodname, params)
c.实例化后能够自己释放克隆对象,这样可以达到一个程序的循环
代码实例:
a.绑定实例到UIRoot脚本,指定要实例化的对象,多对象使用数组即可
b.消息实例,可以加入id,对象消息等
[csharp] view
plaincopy
void broadCast (string details/*,int id, */) {
//switch(id)
Instantiate(obj, transform.position, Quaternion.identity);
UILabel lbl = GameObject.FindGameObjectWithTag("labeldesc").GetComponent<UILabel> ();
lbl.text = details;
}
c.消息发送方
[csharp] view
plaincopy
UIRoot.Broadcast("broadCast", "params");
d.在消息响应后实时销毁,销毁事件可以实时响应到按钮上
e.将销毁事件可指定到NGUI的事件分发系统
静态弹窗无法满足项目的需求,比如服务器断开连接,诸如此类的UI,需要代码来动态实现,这样才可以使用起来
项目化,可以封装到弹窗的类型,弹窗显示的内容,包括弹窗显示一些游戏奖品道具这类物品
个人觉得弹窗最好还是能用来Unity3d中的实例化功能,这样即可以节省一定的内存空间,也能够让项目规格化
具体在NGUI里的做法,我的思想是:
a.写一个msg接收类,里面封装了所有有关接收消息的类型,以及需要显示的内容
b.在需要显示弹窗的地使用UIRoot.BroadCast(methodname, params)
c.实例化后能够自己释放克隆对象,这样可以达到一个程序的循环
代码实例:
a.绑定实例到UIRoot脚本,指定要实例化的对象,多对象使用数组即可
b.消息实例,可以加入id,对象消息等
[csharp] view
plaincopy
void broadCast (string details/*,int id, */) {
//switch(id)
Instantiate(obj, transform.position, Quaternion.identity);
UILabel lbl = GameObject.FindGameObjectWithTag("labeldesc").GetComponent<UILabel> ();
lbl.text = details;
}
c.消息发送方
[csharp] view
plaincopy
UIRoot.Broadcast("broadCast", "params");
d.在消息响应后实时销毁,销毁事件可以实时响应到按钮上
e.将销毁事件可指定到NGUI的事件分发系统
相关文章推荐
- Unity3d 面向对象设计思想(二)(动态UI的分配与调度)
- UIRoot.BroadCast(methodname, params) Unity3d 面向对象设计思想(二)(动态UI的分配与调度)
- Unity3d 面向对象设计思想(一)(UI的分配与调用)
- Unity3d 面向对象设计思想(一)(UI的分配与调用)
- Unity3d 面向对象设计思想(三)(对象的拆分)
- Unity3d 面向对象设计思想(六)(Unity3d网络异步数据)
- Unity3d 面向对象设计思想(四)(游戏背包的处理i)
- Unity3D NGUI UIPlayTween控件(一)动态打开关闭窗口
- Unity3d 面向对象设计思想(四)(游戏背包的处理i)
- Unity3d 面向对象设计思想(五)(游戏背包的处理ii)
- Unity3d 面向对象设计思想(三)(对象的拆分)
- Unity3d 面向对象设计思想(六)(Unity3d网络异步数据)
- Unity3D 使用 RenderTexture 做 UI 特效、动态阴影
- Unity3d 面向对象设计思想(五)(游戏背包的处理ii)
- unity基础开发----Unity3D的uniSWF插件动态加载SWF UI资源
- Unity3d 面向对象设计思想(六)(Unity3d网络异步数据)
- 动态规划思想之最小硬币分配数
- 深入理解动态规划思想——装配线调度、矩阵链乘法、最长公共子序列、最优二叉查找树
- 【Unity3d开发记录】Unity动态画曲线、弧线(GL画线)在UI上的显示
- 动态分配内存 and malloc&new and 数组的动态分配、初始化(memset)和撤销(delete)