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 上,它就可以工作了。