====== VCIで音楽を再生する ======
VCIでは[[https://docs.unity3d.com/ja/current/Manual/class-AudioClip.html | AudioClip]]をVCIスクリプト(Lua)から制御できます。\\
ここでは、[[https://developer.virtualcast.jp/vci-docs/api/classes/ExportAudioSource/index.html|ExportAudioSource]]を使用した最もシンプルなAudioClipの使用方法について説明します。
=== サンプルデータ ===
{{ :vci:sample:audio:tutorial_audio.zip |}}
=== 音源 ===
{{ vci:sample:sample_advanced:clipname.wav |}}\\
音源は44.1kHz 16bit のWAVEファイル推奨です。\\
ファイルフォーマットによってはUnity上で再生できても、VCIをエクスポートした際に鳴らなくなることがあります。
===== Unityで音声ファイルの組み込み =====
{{vci:sample:sample_advanced:tutorial_sound.png?600|}}
音声ファイル(.wav等)はUnityのassetにドラック&ドロップすれば\\
コンポーネントをアタッチする場所はサブオブジェクトでも孫オブジェクトでも問題ありません。
複数の音声ファイルを組み込むこともできますが、音声ファイルを指定する時にファイル名で判別しますので、同じ名前の音声ファイルにならないように組み込んでください。
===== VCIスクリプト =====
ExportAudioSource._ALL_Play は、オブジェクトのExportTransform の取得を行い、AudioSource のアタッチ順を指定して再生できます。\\
今回はCube にアタッチされている1番目のAudioSourceを再生するスクリプトです。
-- 対象の ExportTransform を取得する
local cube = vci.assets.GetTransform("Cube")
-- Cube にアタッチされているすべての AudioSource を取得する
local audioSources = cube.GetAudioSources()
-- アイテムを持った状態で使った時にオーディオを再生する
function onUse(item)
-- Audio1 を再生する
audioSources[1]._ALL_Play(1.0, false)
end
Useしたアイテムによって再生するオーディオファイルを分けたい場合、以下のようになります。\\
onUse(item)の引数であるitemには、subitemの名前がstringで格納されています。\\
itemをif文で比較する事で、再生するオーディオクリップを分岐する事ができます。\\
-- 対象の ExportTransform を取得する
local cube = vci.assets.GetTransform("Cube")
-- Cube にアタッチされているすべての AudioSource を取得する
local audioSources = cube.GetAudioSources()
-- アイテムを持った状態で使った時にオーディオを再生する
function onUse(item)
if item == "Cube" then
-- Audio1 を再生する
audioSources[1]._ALL_Play(1.0, false)
end
end