关于Cubism MotionSync Plugin for Unity WebGL的动作

最終更新: 2024年5月30日

5.4 alpha版现已开放体验! alpha 版相关公告页面请点击此处。

使用Cubism MotionSync Plugin for Unity进行WebGL开发时,您将受到Unity WebGL音频功能的限制。
例如,由于Unity标准的Microphone类不支持WebGL上的动作,因此Cubism MotionSync Plugin for Unity的Microphone范例场景无法正常动作。

请查看Unity官方文档,了解Unity WebGL中音频功能的限制。
使用WebGL音频(Unity官方手册)

通过WebGL使用时的范例

Cubism MotionSync Plugin for Unity提供了在Unity WebGL音频功能限制内操作动态同步的范例。

MotionSync For WebGL 范例场景

该范例场景可以像MotionSync范例场景一样在WebGL中使用。
但是,与MotionSync范例场景不同,它使用以下资产和脚本。

  • 继承CubismMotionSyncCriAudioInput类的CubismMotionSyncCriAudioInputWebGL类
  • CubismMotionSyncAudioDataList资产
  • CubismMotionSyncAudioData资产

CubismMotionSyncCriAudioInputWebGL

该类是继承CubismMotionSyncCriAudioInput类的类。将其用作MonoBehaviour脚本。

它也可以被视为CubismMotionSyncCriAudioInput,但进行了以下扩展。

  • 保存对CubismMotionSyncAudioDataList资产的参考。
  • 在Unity标准Awake函数中的同一层次结构中获取AudioSource。
  • 检查Unity标准Update函数中当前播放的AudioClip名称是否与CubismMotionSyncAudioDataList资产中参考的CubismMotionSyncAudioData资产中保存的AudioClip名称匹配。
  • 如果匹配,则以PCM范例为单位获取当前播放时间,并将与前一帧之间的差异对应的音频数据存储在缓冲器中以进行动态同步处理。

CubismMotionSyncAudioDataList

该类被定义为ScriptableObject,并且可以在内部保存以下数据。

  • 保存对CubismMotionSyncAudioData资产的参考和副本ID的结构数组

CubismMotionSyncCriAudioInputWebGL类在运行时通过参考此资产来访问CubismMotionSyncAudioData资产中保存的数据。

CubismMotionSyncAudioData

该类被定义为ScriptableObject,并且可以在内部保存以下数据。

  • 使用GetData函数从AudioClip获取的样本数据数组
  • AudioClip名称

使用方法

每个ScriptableObject必须提前生成,然后才能在场景中使用。

为了调用生成各ScriptableObject的菜单,需要提前将Platform变更为WebGL。

CubismMotionSyncAudioData资产和CubismMotionSyncAudioDataList资产可以通过在Project视窗中按右键出现的Assets/Create子菜单生成。

您可以从Create/Live2D Cubism/MotionSync/Audio Data List菜单生成一个空的CubismMotionSyncAudioDataList资产。

可以通过打开Assets/Create子菜单并选择AudioClip来选择CubismMotionSyncAudioData资产生成。

CubismMotionSyncAudioDataList资产的检查器如图像。
您可以通过将CubismMotionSyncAudioData资产拖放到标记为“Drag & Drop”的区域来注册该资产。

注册后,显示如下图所示。

生成并设置必要的资产后,将CubismMotionSyncCriAudioInputWebGL类设置为任意场景中的物体的组件。
设置后,从检查器附加生成的CubismMotionSyncAudioDataList资产。

如果您将此CubismMotionSyncCriAudioInputWebGL组件从检查器附加到要使用动态同步的模型的CubismMotionSyncCriProcessor,它将进行动作。

请问这篇文章对您有帮助吗?
关于本报道,敬请提出您的意见及要求。