~~NOTOC~~ ====== ExportAudioSource(オーディオソース) ======= このページは過去の情報となります。\\ 新しいスクリプトリファレンスは**[[https://developer.virtualcast.jp/vci-docs/api/|こちら]]**になります。 VCIにアタッチされている**オーディオソース(AudioSource)**の再生/停止などを行うクラスです。\\ * **UniVCI v0.32** 以降でExportされたVCI * **バーチャルキャスト v2.0.3b**以降 で使用可能です。\\ ^ExportTransform^^^ ^ 名前 ^ 説明 ^ バージョン ^ | GetAudioSources | VCI内のAudioSourceを取得 | | ^ExportAudioSource^^^ ^ 名前 ^ 説明 ^ バージョン ^ | [[vci/script/reference/exportaudiosource#ClipName]] | AudioClipの名前を取得 | v2.0.3b 以降 | | [[vci/script/reference/exportaudiosource#Play]] | AudioClipを再生 | v2.0.3b 以降 | | [[vci/script/reference/exportaudiosource#PlayOneShot]] | AudioClipを一度だけ再生 | v2.0.3b 以降 | | [[vci/script/reference/exportaudiosource#Stop]] | AudioClipの再生を停止 | v2.0.3b 以降 | | [[vci/script/reference/exportaudiosource#Pause]] | AudioClipの再生を一時停止/再開 | v2.0.3b 以降 | | [[vci/script/reference/exportaudiosource#PlayScheduled]] | 指定したタイミングで音声を再生 | v2.3.9a 以降 | | [[vci/script/reference/exportaudiosource#SetTime]] | 再生時間を設定 | v2.3.9a 以降 | | [[vci/script/reference/exportaudiosource#SetPitch]] | ピッチを設定 | v2.3.9a 以降 | | [[vci/script/reference/exportaudiosource#GetDuration]] | audioClip の長さを返却 | v2.3.9a 以降 | | [[vci/script/reference/exportaudiosource#GetCurrentTime]] | 現在の再生時間を返却 | v2.3.9a 以降 | | [[vci/script/reference/exportaudiosource#IsPlaying]] | 現在再生中かどうかを返却 | v2.3.9a 以降 | ''_ALL_'' を含む関数は、他のクライアントでも実行され同期します。\\ 全てのクライアントで同じ結果になってほしい場合は ''_ALL_'' を含む関数を使用してください。 Play _ALL_Play ===== ClipName ===== **ClipName string** AudioSourceに紐づいているAudioClipの名前を取得します。 === 戻り値 === string * AudioClipの名前 === サンプル === -- ExportAudioSource.ClipName -- -- root -- -> Cube -- -> AudioSource(Audio1というAudioClipが紐づいている) -- -> AudioSource(Audio2というAudioClipが紐づいている) -- 対象のExportTransformを取得する local cube = vci.assets.GetTransform("Cube") -- CubeにアタッチされているすべてのAudioSourceを取得する local audioSources = cube.GetAudioSources() -- VCI生成時に実行 -- それぞれのAudioSourceに紐づいているAudioClipの名前を出力する print(audioSources[1].ClipName) print(audioSources[2].ClipName) -- <出力結果> -- Audio1 -- Audio2 ===== Play ===== **Play fun(volumeScale: number, isLoop: boolean):**\\ **_ALL_Play fun(volumeScale: number, isLoop: boolean):** AudioSourceに紐づいているAudioClipを再生します。 * 同AudioSourceでAudioClipを''Play''中である場合、''Play''中のAudioClipの再生は中断されます * ''PlayOneShot''されている場合は中断されません ===引数=== ''volumeScale'': float\\ 再生音量 * 0 ~ 1 の範囲で指定できます * 1を超える値を指定した場合、1として扱われます **''isLoop''**: bool 再生音声をループさせるかどうかを表すフラグ === サンプル === -- ExportAudioSource.Play -- -- root -- -> Cube -- -> AudioSource(Audio1というAudioClipが紐づいている) -- -> AudioSource(Audio2というAudioClipが紐づいている) -- 対象のExportTransformを取得する local cube = vci.assets.GetTransform("Cube") -- CubeにアタッチされているすべてのAudioSourceを取得する local audioSources = cube.GetAudioSources() -- VCI生成時に実行 -- Audio1を再生する audioSources[1].Play(1.0, false) -- Audio2をループ再生する(停止するためにStopを呼ぶ必要がある) audioSources[2].Play(1.0, true) ===== PlayOneShot ===== **PlayOneShot fun(volumeScale: number):**\\ **_ALL_PlayOneShot fun(volumeScale: number):** AudioSourceに紐づいているAudioClipを一度のみ再生します。 * ''PlayOneShot''は同AudioSourceで''Play''中のAudioClipの再生を中断しません * ''PlayOneShot''によって再生されたAudioClipは''Stop'', ''Pause''することができません ===引数=== ''volumeScale'': float\\ 再生音量 * 0 ~ 1 の範囲で指定できます * 1を超える値を指定した場合、1として扱われます === サンプル === -- ExportAudioSource.PlayOneShot -- -- root -- -> Cube -- -> AudioSource(Audio1というAudioClipが紐づいている) -- -> AudioSource(Audio2というAudioClipが紐づいている) -- 対象のExportTransformを取得する local cube = vci.assets.GetTransform("Cube") -- CubeにアタッチされているすべてのAudioSourceを取得する local audioSources = cube.GetAudioSources() -- VCI生成時に実行 -- Audio1を一度のみ再生する audioSources[1].PlayOneShot(1.0) -- PlayOneShotした音はStopしても止まらない -- audioSources[1].Stop() ===== Stop ===== **Stop fun(): void**\\ **_ALL_Stop fun(): void** AudioSourceから''Play''されているAudioClipの再生を停止します。 * Stopで再生を停止した後に再度Playした場合、対象のAudioClipの初めから再生されます * ''PlayOneShot''されている音声は停止することはできません === サンプル === -- ExportAudioSource.Stop -- -- root -- -> Cube(SubItem) -- -> AudioSource(Audio1というAudioClipが紐づいている) -- -> AudioSource(Audio2というAudioClipが紐づいている) -- 対象のExportTransformを取得する local cube = vci.assets.GetTransform("Cube") -- CubeにアタッチされているすべてのAudioSourceを取得する local audioSources = cube.GetAudioSources() -- VCIをuseしている間のみAudio1を再生し続ける function onUse(usedItem) audioSources[1].Play(1.0, true) end function onUnuse(unusedItem) audioSources[1].Stop() end ===== Pause ===== **Pause fun(isPause: boolean):**\\ **_ALL_Pause fun(isPause: boolean):** AudioSourceから''Play''されているAudioSourceの再生を一時停止/再開します。 * ''PlayOneShot''されている音声は一時停止/再開することができません === 引数 === ''isPaused'': bool\\ 再生を一時停止/再開するかどうかを表すフラグ * trueの場合、再生を一時停止します * falseの場合、一時停止した箇所から再生を再開します === サンプル === -- ExportAudioSource.Pause -- -- root -- -> Cube(SubItem) -- -> AudioSource(Audio1というAudioClipが紐づいている) -- -> AudioSource(Audio2というAudioClipが紐づいている) -- 対象のExportTransformを取得する local cube = vci.assets.GetTransform("Cube") -- CubeにアタッチされているすべてのAudioSourceを取得する local audioSources = cube.GetAudioSources() -- VCI生成時に実行 -- Audio1のループ再生を開始する audioSources[1].Play(1.0, true) -- VCIをuseしたときにAudio1を再生を再開/一時停止する -- Audio1が再生中かどうかを表すフラグ local isAudioPlaying = true function onUse(usedItem) -- フラグを反転させて再生状態を切り替える isAudioPlaying = not(isAudioPlaying) audioSources[1].Pause(isAudioPlaying) end ===== PlayScheduled ===== **PlayScheduled fun(dspTime: number):** 引数で指定したオーディオシステム上の時刻に音声を再生します。 * ''PlayScheduled'' による音声再生の予約は、一つの ''ExportAudioSource'' 上で同時に一つしかできません。 * ''PlayScheduled'' の呼び出しから実際に音声が再生されるまでの間に ''PlayScheduled'' を再度別の時刻を指定して呼び出した場合、前の ''PlayScheduled'' による再生予約は後の ''PlayScheduled'' による再生予約に上書きされます。 * ''PlayScheduled'' の呼び出しから実際に音声が再生されるまでの間、[[vci/script/reference/exportaudiosource#IsPlaying]] は ''true'' になります。 === 引数 === ''dspTime'': number\\ 音声を再生するオーディオシステム上の時刻 * 現在のオーディオシステム上の時刻は、[[vci/script/reference/exportme#GetDspTime]] から取得できます * 単位は「秒」です === サンプル === -- ExportAudioSource.PlayScheduled -- -- root -- -> Cube(SubItem) -- -> AudioSource(Audio1というAudioClipが紐づいている) -- 対象のExportTransformを取得する local cube = vci.assets.GetTransform("Cube") -- CubeにアタッチされているすべてのAudioSourceを取得する local audioSources = cube.GetAudioSources() -- VCI生成時に実行 -- 現在のオーディオシステム上の時刻を取得する local dspTime = vci.me.GetDspTime() -- VCIを生成した3秒後に音声を再生する audioSources[1].PlayScheduled(dspTime + 3) ===== SetTime ===== **SetTime fun(time: number): void**\\ 再生時間を指定します。 **サンプル**\\ local cube = vci.assets.GetTransform("Cube") local audioSources = cube.GetAudioSources() function onUse(use) -- 5秒マークから再生する audioSources[1].Play(1, false) audioSources[1].SetTime(5) end ===== SetPitch ===== **SetPitch fun(pitch: number): void**\\ 音声のピッチを設定します。 **サンプル**\\ local cube = vci.assets.GetTransform("Cube") local audioSources = cube.GetAudioSources() function onUse(use) -- 2倍速で再生する audioSources[1].Play(1, false) audioSources[1].SetPitch(2) end ===== GetDuration ===== **GetDuration fun(): number**\\ 設定された AudioClip の長さを返します。 **サンプル**\\ local cube = vci.assets.GetTransform("Cube") local audioSources = cube.GetAudioSources() function onUse(use) -- 掴んだら AudioClip の長さをログに出力 print("Duration: " .. audioSources[1].GetDuration()) end ===== GetCurrentTime ===== **GetCurrentTime fun(): number**\\ 現在の再生時間を返します。 **サンプル**\\ local cube = vci.assets.GetTransform("Cube") local audioSources = cube.GetAudioSources() audioSources[1].Play(1, false) function onUse(use) -- 掴んだら現在の再生時間をログに出力 print("currentTime: " .. audioSources[1].GetCurrentTime()) end ===== IsPlaying ===== **IsPlaying fun(): boolean**\\ 現在再生中かどうかを返します。 **サンプル**\\ local cube = vci.assets.GetTransform("Cube") local audioSources = cube.GetAudioSources() audioSources[1].Play(1, false) function onUse(use) -- 掴んだら現在の再生中かどうかをログに出力 print("IsPlaying: " .. audioSources[1].IsPlaying()) end