CRIWARE Unity Plugin Manual  Last Updated: 2024-07-12
获取与音频同步的播放时间
通过 CriWare.CriAtomSource::time 等获取的播放时间是“从执行开始播放以来经过的时间”。
如果音频数据的提供暂时中断,或者音频播放受系统中断影响而受阻,则播放的音频与获取的播放时间之间会存在差异。

如果要控制音乐游戏的谱面等与音频播放严格同步,可以通过 CriWare.CriAtomExPlayback::GetTimeSyncedWithAudio 使用音频同步计时器获取播放时间。

  • 直接使用 CriAtomExPlayer 时
    要启用音频同步计时器,需要创建一个专用的 CriWare.CriAtomExPlayer
    您可以按如下方式从脚本创建 CriWare.CriAtomExPlayer 来播放Cue并获得与音频同步的播放时间。

    /* 创建启用了 enableAudioSyncedTimer 的播放器 */
    CriAtomExPlayer player = new CriAtomExPlayer(true);
    /* 设置要在播放器中播放的Cue Sheet和Cue名 */
    player.SetCue(CriAtom.GetAcb("<CueSheetName>"), "<CueName>");
    /* 开始播放 */
    CriAtomExPlayback playback = player.Start();
    ...
    /* 获取与音频同步的播放时间 */
    long playTime = playback.GetTimeSyncedWithAudio();


  • 使用 CriAtomSource 时
    通过定义一个继承了 CriWare.CriAtomSource 的此应用程序专用的类,可以在使用CriAtomSource组件功能的同时获取与音频同步的播放时间。
    如下所示,您可以重载初始化过程并创建一个专用的 CriWare.CriAtomExPlayer

    using System.Collections;
    public class MyAtomSource : CriAtomSource {
    protected override void InternalInitialize()
    {
    CriAtomPlugin.InitializeLibrary();
    /* 创建启用了 enableAudioSyncedTimer 的播放器 */
    this.player = new CriAtomExPlayer(true);
    this.source = new CriAtomEx3dSource();
    }
    }