UI动画

区分UI动画和UI特效

我们经常看到的UI都是金光闪闪或者星星点点,UI动画的目的是为了让UI能够动起来,它的原理是通过每隔一定的时间来修改UI的某个参数实现的动画效果,例如每隔0.5s就让UI的沿着其x轴方向移动1个单位,持续5s,那么这个就构成了一个UI朝X轴移动的动画了,UI动画的目的是修改UI组件的参数,让UI实实在在的动起来。

而UI特效的话,虽然看上去是UI特别绚丽的动态效果,但是,它的本质是叠加了一个特效在UI上,UI本身是没有发生任何变化的。例如我们经常在游戏中看到领取奖励的按钮,会闪一些特殊的星光,这个其实是在领奖按钮上跌加了一层闪烁发光的特效,当可以领奖的时候,这个特效就激活了。

所以UI动画和特效是两个概念,UI特效和UI动画是需要区分开的,UI动画不需要额外的资源来制作了,直接就可以,而UI特效还需要导入一些特效的素材资源来实现。

Tween动画

在NGUI中,它自带了一套Tween动画库,这个动画库虽然不能支持强大的Tween动画效果,但是,在UI的动画表现上已经非常的实用了,我们利用Tween动画可以做出很多UI效果,比如点击按钮的时候,按钮会弹动一下,按钮会以某种特殊的方式出现等等。

三、Animation动画

Animation动画就是Unity自带的动画系统,它就很强大了,哪怕是角色那么复杂的动画都能实现何况UI呢,不过这个需要专业的美术的同学来进行K帧来调试,它和Tween的原理基本上是一样的,都是通过插值去平滑地过度每一个关键帧。一般我们都是使用Tween动画就足够了,如果使用Animation的话一般都是用于处理一些复杂的动画效果,因为Tween简单,利于操作和维护,碰到特殊情况我们再使用Animation动画系统。接下来的几节课我们就来实现Tween中一些常用的动画效果吧。

四、若隐若现动画 通过修改组件的透明度,就是组件的Alpha值,通过控制它来实现该效果。例如我们需要某个组件是从无到显示出来就可以使用透明度动画。TweenAlpha,我们需要为某个UI增加透明度动画的时候就可以给他添加一个这个组件,大家可以注意一下,自带的Tween动画都是以它名字就是Tween开头的。

接下来就给大家详细讲解一下TweenAlpha动画,其实动画的参数都大同小异。

(1)From to,这个就是Tween动画的核心设置了,就是从什么值变为什么值的一个设置,后面的大小,缩放,旋转这个都是核心的参数。z这个地方就是我们的Alpha的参数值了。 (2)Play Style 这个就是播放动画的类型,有三种模式,once,只播放一次;Loop,循环播放,播放完了之后马上又从头开始播放,我们可以在Unity中看到效果;PingPong,乒乓模式,就是来回播放,例如我们的动画值是从0到1,来回播放的结果就是,从0到1,然后从1到0,再从0到1. (3)Animation Curve 动画曲线,可以编辑一些动画的节奏,有一些预设好的动画可以基本满足我们的需要,不过大家需要了解一下的就是水平方向代表的是时间流动方向,垂直方向代表的是数值增加变化,这个数值都是一,只是代表了一个动画的一个变化过程并不代表具体的数值,可以算作一个比例。 (4)Duration,持续时间,单位是秒,就是动画持续的时间,也可以是浮点数 (5)Start Delay,播放延迟时间,单位也是秒,默认是0,就是表示游戏运行过后多久开始播放动画 (6)Tween Group,动画所属的组,默认是0,这个设置后面我们的UIPlayTween时会讲到,主要作用就是用来通过分组来整体控制多个Tween动画。 (7)Igonre TimeScale,表示是否忽略时间缩放,默认为是,这个表示游戏中如果直接使用TimeScale=0这种方式来让游戏时间停下来的时候以达到游戏暂停的效果,而这里的是否忽略时间缩放,就是指TimeScale改变的时候,这个动画是否收到这个的影响。 (8)OnFinished在动画播放完毕的时候触发的函数,这里的设置和之前UI控件的回调函数设置方法一样

注意一下动画相关的内容: (1)如果我们选择的动画模式是loop或者pingpong,那么动画事件永远不会结束 (2)透明度动画会实实在在的修改透明度值,如果再0-1的过程中变为0.5的时候我们结束了动画的话,那么这个透明度值就会一直停留在0.5 (3)如果有自定义的动画曲线,那么一定要检查曲线定义出来的效果是否和自己设想的一致 (4)如果设定的播放模式为once的话,那么动画播放一次之后,就会自动关闭该组件。

五、怎么触发Tween动画

为按钮ScaleButton添加UIPlay Tween脚本:NGUI——Attach——Play Tween Script,Tween Target设为1步骤中创建的按钮:

UIPlay Tween的设置:

Target:被控制的物体,默认是自己。

Include Chilren:是否带着子对象一起变换

Tween Group:控制的动画组 (比如,某物体有2个Tween动画,A动画的TweenGroup是1,B动画的TweenGroup是2,我们的PlayTween组件的TweenGroup如果是1那么这指挥播放这个物体的A动画。)。

Trigger condition:触发此脚本的事件;(只有鼠标和触屏事件,键盘按键事件可以自己加。)

Play Direction:触发的事件

  • Toggle:开/关 功能 (类似PingPang的效果)
  • Forward:开 功能 (从From到To)
  • reverse:关 功能 (从To到From)

If target is disabled :如果被控制的物体是没有激活的

  • DoNothing:什么都不做
  • EnableThenPlay:为了播放而激活它!

When Finished:

  • Do Not Disable:什么都不干
  • Disable After Reverse:执行完后隐藏(隐藏不掉的原因:物体内组件的执行顺序 由上而下执行 如 :- A物体有两个UIButtonTween组件,一个隐藏A物体,一个隐藏B物体。脚本在A物体上,隐藏A物体的UIButtonTween组件要在最后添加。
  • Disable After Forward:如果是倒着播,就是倒播完的时候隐藏。   OnFinished:这里用来设置回调函数,当动画播放完成后触发。

Notify:回调方法所在的组件。 Method:回调的方法,必须是public。   

  • 设置完就可以点击按钮,执行相应动画,但是如果初始时不播放动画需要把Tween Scale脚本选择不勾选,勾选的话初始时会自动播放一遍,即使没有点击事件。

results matching ""

    No results matching ""