Cubism MotionSync Plugin for Unity 如何与 WebGL 配合使用

最終更新: 2023年11月14日

使用 Cubism MotionSync Plugin for Unity 进行 WebGL 开发时,Unity WebGL 的音频功能受到限制。
例如,Cubism MotionSync Plugin for Unity 中的麦克风示例场景无法正常工作,因为标准的 Unity 麦克风类不支持 WebGL 工作。

有关 Unity WebGL 中音频功能限制的更多信息,请参阅 Unity 官方文档。
在 WebGL 中使用音频(Unity 官方文档)

与 WebGL 配合使用的示例

Unity 的 Cubism MotionSync 插件提供了一个示例,说明如何在 Unity WebGL 音频功能的限制下实现运动同步。

WebGL MotionSync 示例场景

该示例场景可在 WebGL 中以与 MotionSync 示例场景相同的方式使用。
不过,与 MotionSync 示例场景不同的是,它使用了以下资产和脚本。

  • CubismMotionSyncCriAudioInputWebGL 类继承自 CubismMotionSyncCriAudioInput 类。
  • CubismMotionSyncAudioDataList 资产
  • CubismMotionSyncAudioData 资产

CubismMotionSyncCriAudioInputWebGL

该类扩展了 ClassCubismMotionSyncCriAudioInput 类,用作 MonoBehaviour 脚本。

它也可以像 CubismMotionSyncCriAudioInput 一样处理,但有以下扩展。

  • CubismMotionSyncAudioDataList 对资产的引用。
  • 在 Unity 标准唤醒功能中获取同一层次结构中的音频源。
  • 检查 Unity 标准更新函数中当前播放的音频剪辑名称是否与 CubismMotionSyncAudioDataDataList 资产中的音频剪辑名称相匹配,并在 CubismMotionSyncAudioData 资产中进行引用。
    • 如果找到匹配,就会以 PCM 采样单位获得当前播放时间,并将音频数据存储在缓冲器中,以便根据上一帧的差值进行运动同步处理。

CubismMotionSyncAudioDataList

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

  • 包含 CubismMotionSyncAudioData 资产和实例 ID 引用的结构数组。

CubismMotionSyncCriAudioInputWebGL 类引用该资产,以便在运行时访问 CubismMotionSyncAudioData 资产中的数据。

CubismMotionSyncAudioData

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

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

如何使用

每个 ScriptableObject 都必须事先生成,然后才能在场景中使用。

CubismMotionSyncAudioData 资产和 CubismMotionSyncAudioDataList 资产可通过右键单击 “项目 “窗口中出现的 “资产/创建 “子菜单生成。

可通过 “Create/Live2D Cubism/MotionSync/Audio Data List”菜单生成一个空的 CubismMotionSyncAudioDataList 资产。

打开 “Assets/Create “子菜单,选择AudioClip,即可生成 CubismMotionSyncAudioData 资产。

CubismMotionSyncAudioDataList 资产的检查器如图所示。
可以通过将 CubismMotionSyncAudioData 资产拖放到标有 “Drag & Drop”的区域来注册。

注册后,显示屏将如下所示

生成并配置好所需资产后,将 CubismMotionSyncCriAudioInputWebGL 类设置为场景中任何对象的组件。
配置完成后,从 “检查器 “中附加生成的 CubismMotionSyncAudioDataList 资产。

将此 CubismMotionSyncCriAudioInputWebGL 组件附加到要从检查器中使用运动同步的模型的 CubismMotionSyncCriProcessor 上,它就可以工作了。

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