您的位置:首页 > 移动开发 > Unity3D

UIRoot.BroadCast(methodname, params) Unity3d 面向对象设计思想(二)(动态UI的分配与调度)

2015-01-12 17:14 447 查看
原文地址:http://blog.csdn.net/unity3d_xyz/article/details/23267747

昨天写了一个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的事件分发系统
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: