播放动态时执行动态同步(Unity)
最終更新: 2024年11月28日
从Cubism 5 SDK MotionSync Plugin for Unity R2开始可以在播放动态时使用与.model3.json上关联的音频相同的动态同步设置来执行动态同步。
前提
要在播放动态时应用动态同步,需在输出到.model3.json的动态信息中正确设置了音频和动态同步设置。
具体设置方法请参考Editor手册“动态设置”。
机制
Cubism 5 SDK MotionSync Plugin for Unity R2及更高版本中追加了以下内容。
CubismMotionSyncLinkData- 载入时关联动态、音频和动态同步设置的资源
 
CubismMotionSyncLinkList- 参考
CubismMotionSyncLinkData的资产 
- 参考
 CubismMotionSyncLinkController- 播放与所播放的动态关联的音频并应用动态同步设置的组件。
 
CubismMotionSyncLinkData及拥有其参考的列表的CubismMotionSyncLinkList资产在载入及重新载入时生成。
如果将此次追加的CubismMotionSyncLinkController组件应用到模型中,则可以通过使用CubismMotionController.AnimationBeginHandler检测动态播放并播放关联的音频来使用动态同步。
使用CubismMotionController组件播放动态。
关于使用CubismMotionController组件进行动态播放的更多信息,请参考SDK手册“Motion”。
使用已载入的模型时
如果将已设置的模型载入到使用了Cubism 5 SDK MotionSync Plugin for Unity R1或更早版本的项目中,则更新到Cubism 5 SDK MotionSync Plugin for Unity R2或更高版本,并重新载入模型后,将生成CubismMotionSyncLinkData和CubismMotionSyncLinkList资产。
创建动作场景
1. 准备已使用Editor手册“动态设置”完成设置的模型。
2. 将模型置入场景,按照SDK手册“场景中的使用(Unity)”中的说明进行除追加音频之外的设置。
3. 将CubismMotionSyncLinkController组件附加到模型的根。此时,CubismMotionController组件也会自动附加。
4. 将要使用的AudioSource组件链接到CubismMotionSyncLinkController组件的AudioSource,将要使用的模型的CubismMotionSyncLinkList 资产链接到MotionSyncLinkList。 

5. 这次,创建以下脚本。
using UnityEngine;
using Live2D.Cubism.Framework.Motion;
public class MotionLinkTest : MonoBehaviour
{
    private CubismMotionController _motionController;
    public AnimationClip Clip;
    // Start is called before the first frame update
    private void Start()
    {
        _motionController = GetComponent<CubismMotionController>();
    }
    // Update is called once per frame
    private void Update()
    {
        if (_motionController.IsPlayingAnimation())
        {
            return;
        }
        if (Input.GetKeyDown(KeyCode.F))
        {
            _motionController.PlayAnimation(Clip, isLoop: false);
        }
    }
}
6. 将创建的脚本附加到模型,并将已关联音频和动态同步的动态设置到Clip中。

7. 播放场景并按下键盘上的F键后,将播放动态,进行音频播放和动态同步。