从脚本播放动态
最終更新: 2020年1月30日
此页面说明为Cubism模型设置MotionController的步骤。
以下内容以追加到已执行“载入SDK”的项目为前提。
概述
如果您想在不使用Unity的Mecanim的情况下从脚本播放动画,您可以使用Cubism SDK for Unity中名为“CubismMotionController”的组件进行设置。
参考“Motion”了解有关CubismMotionContoller的更多信息。
CubismMotionController需要Animator组件才能动作。
但是,CubismMotionController不能与使用Animator的AnimatorController的动态播放共存。
因此,在使用CubismMotionController播放动态时,不要将AnimatorController设置为Animator。
要为您的Cubism模型进行上述设置,请按照以下步骤操作。
- 附加CubismMotionController
- 准备一个调用播放AnimationClip指令的组件
- 创建一个播放动态的按钮
1. 附加CubismMotionController
将播放动画的“CubismMotionController”附加到作为模型根的GameObject。
CubismMotionController有一个设置项目。
– Layer Count:CubismMotionController管理的动画层总数。要设置的值的范围是1或更多。
当附加CubismMotionController时,如果Animator或CubismFadeController没有附加到该GameObject上,则会同时附加。
CubismMotionController需要Animator,因为它使用Playable来播放动态。
如果在Animator组件的Controller中设置了AnimatorController,则优先。
如果您使用CubismMotionController,请不要在此处设置任何内容。
此外,CubismFadeController是必需的,因为CubismMotionController使用MotionFade将动态与动态混合。
如果未设置CubismFadeController.CubismFadeMotionList,则请设置生成的.cadeMotionList。
.fadeMotionList的设置请参考 “在Mecanim中启用动态渐变” 。
2. 准备一个调用播放AnimationClip指令的组件
创建一个名为“MotionPlayer”的C#脚本,并重写代码如下:
这里播放了参数的AnimationClip。
using Live2D.Cubism.Framework.Motion; using UnityEngine; public class MotionPlayer : MonoBehaviour { CubismMotionController _motionController; private void Start() { _motionController = GetComponent<CubismMotionController>(); } public void PlayMotion(AnimationClip animation) { if ((_motionController == null) || (animation == null)) { return; } _motionController.PlayAnimation(animation, isLoop: false); } }
将创建的MotionPlayer附加到1中附加了CubismMotionController的GameObject中。
这样就完成了从脚本播放动态的设置。
您可以通过从外部脚本等调用MotionPlayer.PlayMotion(),并传递要播放的AnimationClip作为参数来播放动态。
这里我们通过按钮调用这个函数。
3. 创建一个播放动态的按钮
右键单击Hierarchy视窗顶部的Create按钮或Hierarchy视窗,然后单击UI> Button以在Scene中创建一个Button。
将创建的Button置入任意位置。
选中创建的Button,从Inspector视窗单击Button的“On Click()”底部的“+”。
将Hirarchy中的模型GameObject拖放到您追加的列表中,然后从右侧的下拉菜单中选择MotionPlayer/PlayMotion()。
最后,在参数中设置要播放的AnimationClip。
这样就完成了设置。 如果您在此状态下执行它,则当您在Game视图中单击按钮时将播放动态。