播放动态时执行动态同步(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
组件播放动态,使用CubismMotionController.AnimationBeginHandler
检测动态播放,并通过播放关联的音频来使用动态同步。
如果将此次追加的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键后,将播放动态,进行音频播放和动态同步。