【Unity3d】UGUI 之 Animator, Animation 动画系统学习笔记

这几天体验了一把UGUI,用起来感觉棒棒哒。直接进入正题吧,如果要写一个全面的教程,估计还是要花点精

力,如果要写好,就更不容易。那么,我还是以给自己做笔记为目的来写这篇文章吧,还是比较适合我这种小菜的哈

哈。


本文链接: http://blog.csdn.net/a237653639/article/details/48577143

作者: 小明    邮箱: [email protected]

 


下面真的进入正题了^^


1.Animation


Animation是以前的系统遗留下来的,而在我开始学习Unity的时候已经基本上很少用这个系统了,但是现在要做UI

而且是UGUI,那我就要重新学过。

注意:在调整曲线之前,如果你设置的是位置动画,那么请务必先设置好锚点自适应。不然在你设置锚点后,动画播

放的还是设置之前的位置。(这是比NGUI坑的地方,不过注意下就好了)

 

下面说说Animation的一些常用操作吧:


1)曲线


说到曲线,不得不说这一点还是NGUI的方便一点,有模板。UGUI得自己调,还总调不好。不过在充分利用一些功能

后,也基本能够达到要求,不过稍费时一点。还是直接进入正题吧。


比如我要改变ImageColora通道,也就是透明度。在选好Color后,会出现如图:

【Unity3d】UGUI 之 Animator, Animation 动画系统学习笔记_第1张图片


在上图中,标记的序号是选中的游戏物体。是我们不需要的,要删掉它们,但是在改变比如scale的时候就不能删

除不需要的属性了。是我们要改变的属性。我们选中它,编辑曲线。



比如我们需要编辑一个呼吸动画(也就是NGUI里的PingPong)可以这样:


1.调整最后的keytime,比如我调整为2秒一个周期。


2.增加一个key,设置值为value=0time=1如图:

【Unity3d】UGUI 之 Animator, Animation 动画系统学习笔记_第2张图片

 


3.这个时候回出现如下图的情况,我原来就不之所措,但是后面才知道 只要拉伸右边与下边的滚动条就可以再次让

整个曲线出现在我们面前。如图:

【Unity3d】UGUI 之 Animator, Animation 动画系统学习笔记_第3张图片


4.这个时候两边的曲线是弯曲的,但是我们想要把它们变直(让动画的变化率不变),右键中间的key,选择

Left Tangent里的Linear就能让左边曲线变直线,同样的方法使右边曲线也变直。如图:

【Unity3d】UGUI 之 Animator, Animation 动画系统学习笔记_第4张图片


如果想要更复杂的效果,也是增加key,然后调整(通过其他的一些选项)

 

最后,该动画默认是循环播放的,如果你不需要就在Project面板中找到该动画把Loop Time勾掉就ok

 

2.Animator


通过上面的操作,我们有了一个Animator Controller,并且自动挂在Image上了。下面我们打开AnimatorWindow-

>Animator


我们会看到如图:

【Unity3d】UGUI 之 Animator, Animation 动画系统学习笔记_第5张图片


意思就是自动播放。但是我们经常不希望自动播放,那么可以右键新建一个空的状态,并设为默认。

【Unity3d】UGUI 之 Animator, Animation 动画系统学习笔记_第6张图片

 

下面该涉及到代码了!!


我根据需求来阐述:


需求1:>_<我不想再设置参数播放动画了


我们想再代码中调用播放动画,怎么做呢?一般来说,会想到用参数,然后用SetBoolSetTrigger等,这样也行。不

过还有更简单的,就是anim.Play函数,直接可以播放指定动画名,这样就不需要设置管参数什么的之类的多余的操

作了。


好,接着说。如果你在播放一个动画后,再次播放时发现,诶?怎么不动了?那是因为该动画没有退出播放,你再播

放就不起作用了。解决办法是,在该动画上右键选择Make Transition连接到我们最开始新建的默认State(橘色的那

个),这样在动画播放完后,就过渡到了橘色的默认状态了,当你再播放的时候也没有问题了。

 

需求2:O(∩_∩)我想让不同的状态在同一个状态机中同时播放 


这时我们就可以发挥层的作用了(当然层的作用不止这个)。首先选中Layers(在左上角),会看到默认的

Base Layer。我们新建一个My Layer,有什么不同??答:1.名字不同 2.weight 不同 3.状态机不同。如图:

【Unity3d】UGUI 之 Animator, Animation 动画系统学习笔记_第7张图片


我们应该注意到,红线的地方Base Layer是实心的,表示权重(weight)1,而My Layer是空心的,表示权重为0。这

weight的意思就是执行百分之几的意思,如果为0,就是不执行,为1就是执行完整,为0.5,就是执行一半。现在

我们想要完整执行,那么我们点击设设置按钮,设置weight1


那么下面我们可以自行按照以上所述添加要重复播放的动画到新的My Layer层中就可以了。而调用的函数还

anim.Play,不过这次需要两个参数anim.Play(动画名,层的索引),层的索引通过anim.GetLayerIndex(层名)得到。


有个问题是这么多字符串不好管理呀,那么可以建一个AnimatorConfig类来管理字符串,如图:

【Unity3d】UGUI 之 Animator, Animation 动画系统学习笔记_第8张图片

 

总结

个人还是比较喜欢UGUI,毕竟是unity亲生的,相信后面会越来越好的

  

 

 

你可能感兴趣的:(【Unity3D】)