Unity Live2D SDK的使用方法(二)——播放动画

播放动作动画

Step1 认识动作动画资源

保存模型动作信息的文件的后缀名为.mtn。是motion(动作)的缩写。
将.mtn文件全都导入到工程文件中。
然后如同之前加载贴图资源的操作一样,将所有的.mtn文件修改后缀名改为.bytes。
然后在脚本中获取这些资源。
暴露一个数组用于存储所有的资源

public TextAsset[] motionFiles;

在Unity中,将所有的资源拖入motionFiles下即可。
Unity Live2D SDK的使用方法(二)——播放动画_第1张图片

Step2 载入动画资源

将.mtn文件全都导入到工程文件中。
然后如同之前加载贴图资源的操作一样,将所有的.mtn文件修改后缀名改为.bytes。
然后在脚本中申明一个用于存储所有动画资源的数组变量。

private Live2DMotion[] motions;

在Start方法中将其实例化出来,并加载资源。

motions = new Live2DMotion[motionFiles.Length];
for (int i = 0; i < motions.Length; i++)
{
      motions[i] = Live2DMotion.loadMotion(motionFiles[i].bytes);
}

Step3 设置动画管理器

3.1 第一种方法

声明一个动画管理器。

private MotionQueueManager motionQueueManager;

将其实例化。

motionQueueManager = new MotionQueueManager();

然后就可以控制任意动画开始播放。

motionQueueManager.startMotion(motions[0]);

在Update方法中,必须要去更新模型,才能看见效果

motionQueueManager.updateParam(live2DModel);

3.2 第二种方法

同样也是声明一个管理器,但是是另一个管理器。

private L2DMotionManager l2DMotionManager;

该管理器所控制的动画相较于之前一种,还可以控制动画播放的优先级。
同样,将其实例化出来。

l2DMotionManager = new L2DMotionManager();

然后我们可以创建一个私有方法,用于判定动画的优先级。

private void StartMotion(int motionIndex,int priority)
{
	//判定想要播放的动画的优先级是否大于正在播放的动画的优先级
    if (l2DMotionManager.getCurrentPriority() >= priority)
    {
        return;
    }

    l2DMotionManager.startMotion(motions[motionIndex]);
}

之后,调用该方法,并在调用时写入该动画的优先级,即可进行播放。
同样,也需要在Update方法中更新模型。

l2DMotionManager.updateParam(live2DModel);

Step4 动画属性的设置

motions[0].setLoopFadeIn(false);//重复播放时是否淡入,false-不淡入
motions[0].setFadeOut(1000);//设置淡出时间,参数单位为ms,默认为1000
motions[0].setFadeIn(1000);//设置淡入时间,参数单位为ms,默认为1000
motions[0].setLoop(true);//设置动画是否循环播放

你可能感兴趣的:(Unity,Live2D)