CRIWARE Unity Plugin Manual
Last Updated: 2024-04-24
音声に同期した再生時刻を取得する
CriAtomSource::time 等で取得可能な再生時刻は、「再生開始を指示してからの経過時間」です。
このため、一時的に音声データの供給が途切れたり、システムによる割り込みにより音声再生が妨げられたりした場合に、再生される音声と取得可能な再生時刻にズレが発生してしまいます。
リズムゲームの譜面制御等、再生される音声に厳密に同期した制御を行いたい場合には、
CriWare.CriAtomExPlayback::GetTimeSyncedWithAudio
による音声同期タイマーを用いた再生時刻の取得をご利用いただけます。
CriAtomExPlayerを直接利用する場合
音声同期タイマーを有効にする場合、専用の
CriWare.CriAtomExPlayer
を作成する必要があります。
下記の要領でスクリプトから
CriWare.CriAtomExPlayer
を作成し、キューの再生と音声に同期した再生時刻の取得を行うことが可能です。
/* enableAudioSyncedTimerフラグを有効にしてプレーヤを作成 */
CriAtomExPlayer player =
new
CriAtomExPlayer(
true
);
/* 再生するキューシートとキュー名をプレーヤに設定 */
player.SetCue(CriAtom.GetAcb(
"<CueSheetName>"
),
"<CueName>"
);
/* 再生開始 */
CriAtomExPlayback playback = player.Start();
...
/* 音声に同期した再生時刻を取得 */
long playTime = playback.GetTimeSyncedWithAudio();
CriAtomSourceを利用する場合
CriWare.CriAtomSource
を継承したアプリケーション独自のクラスを定義することで、コンポーネントの機能を利用しつつ、音声に同期した再生時刻を取得することができます。
下記のように、初期化処理をオーバーライドして、専用の
CriWare.CriAtomExPlayer
を作成してください。
using
UnityEngine
;
using
System
.Collections;
public
class
MyAtomSource : CriAtomSource {
protected
override
void
InternalInitialize()
{
CriAtomPlugin.InitializeLibrary();
/* enableAudioSyncedTimerフラグを有効にしてプレーヤを作成 */
this.player =
new
CriAtomExPlayer(
true
);
this.source =
new
CriAtomEx3dSource();
}
}
Copyright (c) CRI Middleware Co., Ltd. 1.8.10