多语言展示
当前在线:1388今日阅读:2今日分享:38

深入理解NGUI:BetterList的灵活应用

这里并不比较Unity3D自带的List类与NGUI提供的BetterList类性能上的优劣,从NGUI给出的名字来看,至少在NGUI的所有应用中,灵活使用BetterList类的确能得到更Better的效果.本文以实例阐述如何巧妙应用BetterList类,省时省力得到理想的体验效果.
工具/原料

Unity3D,NGUI,Visual Studio

方法/步骤
1

首先进行场景搭建.导入NGUI资源包,创建3个按钮,分别命名为BtnClip1,BtnClip2,BtnClip3;三个按钮的label内容为Clip1,Clip2,Clip3.

2

在Hierarchy面板中创建空物体Gameobject,改名为'AnimationPlay',创建一个Cube,一个Sphere,一个Cylinder作为子物体,并分别赋给它们不同颜色的材质球,以示区分.

3

在'AnimationPlay'物体上添加Animation组件,创建三个不同的动画,分别命名为Clip1,Clip2,Clip3.

4

我们要实现的功能是:点击按钮后播放与按钮名字相同的动画.重点是,使用客户可以连续任意点击按钮,要求本例实现'记忆'功能,完全按照客户点击顺序依次、无遗漏的实现所有动画

5

先实现每个按钮点击后,可以播放与它名字相同的动画.重要技巧:1.  UIEventListener.Get(objClip1).onClick = fnBtnClick;事件侦听器,获取按钮点击事件,与自定义事件 fnBtnClick相连接(委托事件)2.按钮响应函数必须包含类型为Gameobject的形参,,因本文重点不在介绍按钮响应函数,此处不再详细说明,感兴趣的朋友可以点击http://jingyan.baidu.com/article/4b07be3c4fe04448b380f3f6.html<<教你创建带有下拉菜单的按钮并消除摄像机标志>>自行了解相关知识.具体代码如图所示:

6

新建C#脚本,命名为Scene2Main,创建一个静态公共变量 public static BetterList AnimationClip = new BetterList();便于上述脚本运行正常.声明一个BetterList类型的变量,该类型为列表,那么列表中的所有资源是什么类型呢,本文选择int类型,即AnimationClip是一个包含了未知个数个int类型数据的列表.本文重点一:AnimationClip.add()使列表增加一个数据的函数

7

该函数,可以实现,每点击一次按钮,AnimationClip列表中就增加一个数据,增加的具体数据由点击的按钮决定,点击Clip1增加的数据为数值1,点击Clip2增加的数据为数值2,点击Clip3增加的数据为数值3

8

完成记忆点击步骤后,接下来实现顺序播放功能,完整代码如下.功能实现思路:每次中读取AnimationClip列表的第一个数据,,读取完毕后删除该数据,列表后面如果还有数据,会依次递进

9

声明并初始化: int i = 0;列表的第一个元素 int item = 0;从列表中读取的数值  item = AnimationClip[i];将列表中的第一个数据赋值给item;注意item只可能是1,2,3三个数据中的一个(在列表AnimationClip[i].size!=0时)本文重点2:AnimationClip[i]中的序列号与数组相同,以0开始,以size-1结束

10

本文重点3: 一旦准备相应按钮的点击事件,立即删除列表AnimationClip的数据,列表后面如果还有数据,依次递进.下次读取列表的位置依然是AnimationClip[0].AnimationClip.RemoveAt(i);至此读者可以运行一下检测效果了,无论点击按钮多少次,顺序如何,改程序均能准确'记忆'顺序,完美实现每一个动画

注意事项
1

如果喜欢本文可以点击下方的“收藏”和“关注”,也可以给作者投上宝贵的一票,您的支持将给作者莫大的动力 如果喜欢可以点击右边的两个箭头图标分享给好友

2

如果喜欢可以点击右边的两个箭头图标分享给好友

推荐信息