在使用NGUI制作UI时,通常一个场景都会有非常多的子类向下延伸,看上去十分混乱,而且要在某个UIGamObject上挂Script,当下次修改要找出来的时候,犹如大海捞针。
所以我自己总结了些经验,跟大家分享。
一、UI的命名
建议命名规则为场景名称_序号_UI类型(或功能、属性),建议同一类型或同一模块的,用一个空的gameObject装起来,如图:(虽然看起来也是..............)
二、脚本的控制
我自己处理UI的逻辑时(或者用脚本控制ui)通常是这样的,一共有三个类,如下:
1.UIControl类是总控制类,所有涉及UI的逻辑都是在这个类里进行。其中有一个onClickTo方法,用来响应按钮按下时该执行什么逻辑。
2.UIManager类是管理当前UI界面,例如上图的结算界面,我会将它挂在Panel处,该类只有一个功能,就是作为中间层,传递下面需要控制的子UI,例如上图
子UI---Result_01_Reward,这是用来显示奖励情况的Label,这个Lable我不会直接在UI这里做逻辑处理,而是用UIManager中间层传递到LevelManager(关卡控制类),通过传参来获得这个Lable,然后对它控制。
3.ClickTo类通常是挂在Button上的,里面有一个EventEnum,一个OnClick()方法(有需要的话可以加一些变量用来区别相同功能的不同Button),用来标识该按钮的用途,例如该按钮是返回菜单的,当挂上该Script后,enum选择返回菜单的类型,然后在OnClick()中执行UIControl.onClickTo(),将enum传过去。
我这样做的目的是希望,所有的UI逻辑都不要在单个UI上执行,而是通过一个总控制,或者传参来控制。
三、图片的尺寸与合拼
在制作UI时,程序一定要和美术、策划沟通好,包括图片的尺寸、命名,每个UI的布局,还有什么图片该整合成一个材质球,特别是尺寸和合拼材质的问题,尺寸的大小是关系到你生成Atlas的大小的,而合拼材质尽量要统一,同一个UI界面的尽量合并成一张,因为同一个UI界面,不同材质球,对UI的层级关系影响十分大的,调整起来十分麻烦。