~~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