动画制作流程:
1:如何搭配环境
a:导入NGUI包后,按Ctrl+S保存场景,在菜单栏显示NGUI菜单;
b:选择NGUI——Create——Sprite后,在场景中创建NGUI界面,并在上面出现一个Sprite组件;
c:选择Sprite,选择图集(Atlas)后,在上面添加一张图片,
4:设置Sprite中Size的宽度与Game视图分辨率的宽度相同:(可根据需求自行设置)
如:Game视图的分辨率为1024x768,设置Size的宽度为1024
则场景界面如图所示:
2:如何制作Animation动画
Unity提供了Animation编辑器,它可以为我们编辑所需的动画。
(1):首先在Hierarchy视图中选中刚才创建的Sprite,然后在Unity导航菜单栏中选择Window->Animation将呼出动画编辑窗口,
(2):如下图所示,Animation窗口弹出后,点击左上角那个“小红点”按钮。因为默认新建的Sprite对象是没有动画的,所以这里将弹出创建动画窗口。在窗口中点击Save,此时一个名叫New Animation的动画文件将被保存在Project视图中。
(3):如下图所示,此时动画将处于编辑中模式, 在右上方的时间线栏点击鼠标左键,就会出现一道竖向的红线,上面对应着Frame的时间,这时候在右侧Transform中可以修改每一帧模型的位置,或者在编辑器中也可以修改,数值同样会被保存在每一帧的Transform中。
(4):点击Animation 面板下的Curves,进入动画曲线编辑面板,可进行动画曲线的编辑;右键点击曲线上的关键帧的小方块,可以弹出曲线调整菜单,可以调整关键点左右两边的曲线变化情况。
动画窗口曲线调整的一些快捷方法:
a:按住Alt+鼠标左键可以拖动坐标系。
b:按住Shift+鼠标滚轮来调整Y轴单位大小,按住Ctrl+鼠标滚轮来调整X轴大小,直接滚轮则同时调整。
(5):当你的帧编辑完成后,点击上图左上角那个运行的按钮。你可以在游戏视图中看到这个Sprite对象已经按照我们设定的每帧的位置在播放动画了。
动画编辑完成后,点击图中左上角“小红点”按钮 退出动画编辑模式。至此,Animation动画的制作已经完成了。
3:如何挂载动画脚本
(1):在退出编辑模式后,我们发现,在Sprite下多出的组件不是Animation,而是一个Animator,我们需要把Animator组件移除,在Sprite上添加一个Animation组件;
首先在Hierarchy视图中选中刚才创建的Sprite,然后在Unity导航菜单栏中选择Component->MisceMiscellaneous ->Animation将在Sprite下添加一个Animation组件。
(2):如下图所示,将刚刚编辑完的动画剪辑拖拽至Sprite对象的Animation中,勾选Play Automatically自动播放。此时运行游戏你会发现Sprite对象已经按照之前编辑的方式播放动画。
注意:因Unity版本的不同,可能会出现如下警告:
解决方法:
1. 点击“New Animation”,在Inspector视图中点击右上角小锁旁的图标,选择“Debug”
2. 在“Debug”中将“Legacy”选项勾选
3.按同样的操作方法,切换成“Normal”选项,会观察到“Inspector”中的变化
4.警告提示消息消失,问题解决(可通过选择Wrap Mode来指定动画的播放模式)
4:如何保存Animation动画
可建立一个文件夹,将生成的Animation动画文件放在一起,统一进行管理;
5:如何复用:
如图所示,在Animation组件的Animations属性下,可指定多个Animation文件,可通过名字来调用不同的动画
(注:每个Animation动画中变化的transform是相对于自身的变化,对于只改变rotation和scale属性的动画,当赋给其他对象时,可以复用;但对于改变了position属性的动画,不可以直接赋给其他对象使用)
四:程序
如何控制动画
1: 何时播放动画
根据策划的规划,在适当的时候通过以下方法播放动画;
(1):获得动画所在的Animation组件
(2):通过调用animation.Play(“动画名”);函数来播放指定动画;
2:如何停止动画的播放:
(1):获得动画所在的Animation组件
(2):通过调用animation.Stop(“动画名”);函数来停止播放指定动画;
3:如何得知动画播放结束:
(1):获得动画所在的Animation组件
(2):通过调用animation.IsPlaying(“动画名”);函数来判断指定动画是否播放结束;
Animation组件中常用的函数及其含义:
Functions函数
1:Stop 停止所有当前Animation正在播放的动画。
2:Rewind 倒播名称为name的动画。
3:IsPlaying 名为name的动画正在播放吗?
4:Play 没有任何混合的播放动画。
5: CrossFade 在一定时间内淡入名称为name的动画并且淡出其他动画。
6: CrossFadeQueued 在前一个动画播放完成之后淡入淡出下一个动画。
7: PlayQueued 在前一个动画播放完成之后直接播放下一个动画。
8:AddClip 给动画添加一个名称为newName的动画剪辑。
9: RemoveClip 从动画列表移除剪辑。
10: GetClipCount 取得当前动画的动画剪辑数量。
Animation动画中常用的变量及其含义:
Variables变量
1:clip 默认的动画剪辑。
2:playAutomatically 是否在开始的时候自动播放默认的动画
3:wrapMode 动画剪辑播放完成之后,应该如何操作
4:isPlaying 是否在播放任何动画?
5:this [string name] 返回名称为name的动画状态。