Unity3d 面向对象设计思想(二)(动态UI的分配与调度)

昨天写了一个UI弹窗,功能是可以实现,但是使用起来不是很方便,如果需要代码动态指定

静态弹窗无法满足项目的需求,比如服务器断开连接,诸如此类的UI,需要代码来动态实现,这样才可以使用起来

项目化,可以封装到弹窗的类型,弹窗显示的内容,包括弹窗显示一些游戏奖品道具这类物品

 

个人觉得弹窗最好还是能用来Unity3d中的实例化功能,这样即可以节省一定的内存空间,也能够让项目规格化

具体在NGUI里的做法,我的思想是:

a.写一个msg接收类,里面封装了所有有关接收消息的类型,以及需要显示的内容

b.在需要显示弹窗的地使用UIRoot.BroadCast(methodname, params)

c.实例化后能够自己释放克隆对象,这样可以达到一个程序的循环

 

代码实例:

a.绑定实例到UIRoot脚本,指定要实例化的对象,多对象使用数组即可


b.消息实例,可以加入id,对象消息等

void broadCast (string details/*,int id, */) {
	//switch(id)
	Instantiate(obj, transform.position, Quaternion.identity);
	UILabel lbl = GameObject.FindGameObjectWithTag("labeldesc").GetComponent ();
	lbl.text = details;
}


c.消息发送方

UIRoot.Broadcast("broadCast", "params");

d.在消息响应后实时销毁,销毁事件可以实时响应到按钮上
e.将销毁事件可指定到NGUI的事件分发系统

 

你可能感兴趣的:(Unity3d)