Unity3D,NGUI,Visual Studio
首先进行场景搭建.导入NGUI资源包,创建3个按钮,分别命名为BtnClip1,BtnClip2,BtnClip3;三个按钮的label内容为Clip1,Clip2,Clip3.
在Hierarchy面板中创建空物体Gameobject,改名为'AnimationPlay',创建一个Cube,一个Sphere,一个Cylinder作为子物体,并分别赋给它们不同颜色的材质球,以示区分.
在'AnimationPlay'物体上添加Animation组件,创建三个不同的动画,分别命名为Clip1,Clip2,Clip3.
我们要实现的功能是:点击按钮后播放与按钮名字相同的动画.重点是,使用客户可以连续任意点击按钮,要求本例实现'记忆'功能,完全按照客户点击顺序依次、无遗漏的实现所有动画
先实现每个按钮点击后,可以播放与它名字相同的动画.重要技巧:1. UIEventListener.Get(objClip1).onClick = fnBtnClick;事件侦听器,获取按钮点击事件,与自定义事件 fnBtnClick相连接(委托事件)2.按钮响应函数必须包含类型为Gameobject的形参,,因本文重点不在介绍按钮响应函数,此处不再详细说明,感兴趣的朋友可以点击http://jingyan.baidu.com/article/4b07be3c4fe04448b380f3f6.html<<教你创建带有下拉菜单的按钮并消除摄像机标志>>自行了解相关知识.具体代码如图所示:
新建C#脚本,命名为Scene2Main,创建一个静态公共变量 public static BetterList
该函数,可以实现,每点击一次按钮,AnimationClip列表中就增加一个数据,增加的具体数据由点击的按钮决定,点击Clip1增加的数据为数值1,点击Clip2增加的数据为数值2,点击Clip3增加的数据为数值3
完成记忆点击步骤后,接下来实现顺序播放功能,完整代码如下.功能实现思路:每次中读取AnimationClip列表的第一个数据,,读取完毕后删除该数据,列表后面如果还有数据,会依次递进
声明并初始化: int i = 0;列表的第一个元素 int item = 0;从列表中读取的数值 item = AnimationClip[i];将列表中的第一个数据赋值给item;注意item只可能是1,2,3三个数据中的一个(在列表AnimationClip[i].size!=0时)本文重点2:AnimationClip[i]中的序列号与数组相同,以0开始,以size-1结束
本文重点3: 一旦准备相应按钮的点击事件,立即删除列表AnimationClip的数据,列表后面如果还有数据,依次递进.下次读取列表的位置依然是AnimationClip[0].AnimationClip.RemoveAt(i);至此读者可以运行一下检测效果了,无论点击按钮多少次,顺序如何,改程序均能准确'记忆'顺序,完美实现每一个动画
如果喜欢本文可以点击下方的“收藏”和“关注”,也可以给作者投上宝贵的一票,您的支持将给作者莫大的动力 如果喜欢可以点击右边的两个箭头图标分享给好友
如果喜欢可以点击右边的两个箭头图标分享给好友