Table of Contents

非空間オーディオ

初級 プログラマー

非空間オーディオは、エンティティ (プレイヤー カメラなど) の位置に関係なく、シーン全体で同じように聴こえます。非空間オーディオはステレオで、1 つの軸 (通常は X 軸) に沿って移動します。空間オーディオとは異なり、非空間オーディオの_ボリューム_、ピッチ (周波数)、その他のパラメーターは変化しません。背景音楽やメニューのサウンド エフェクトなどに便利です。

Non-spatialized audio

非空間オーディオでは、オーディオ エミッターまたはオーディオ リスナーは必要ありません。

1. オーディオをインポートしてビルドに含める

  1. オーディオをサウンド アセットとしてインポートします。

  2. サウンド アセットがルート アセットであることを確認します。ルート アセットとは、実行時に使用できるようにビルドに組み込まれるアセットです。

    [Asset view]で、アセットを右クリックして[Include in build as root asset]を選択します。

    Include in build as root asset

    メニュー オプションの表示が[Do not include in build as root asset]になっている場合は、オプションは既に選択されているので、変更する必要はありません。

2. オーディオを再生するスクリプトを作成する

非空間オーディオを実行時に再生するには、コードでインスタンスを作成して動作を定義します。

SoundInstance は、以下のプロパティで実行時にオーディオを制御します。

プロパティ 機能
IsLooping オーディオのループを取得または設定します。
Pan 左右のスピーカーのバランスを設定します。既定では、各スピーカーの値は 0.5 です。
Pitch オーディオのピッチ (周波数) を取得または設定します。
PlayState SoundInstance の状態を取得します。
Position オーディオの現在の再生位置を取得します。
Volume オーディオのボリュームを設定します。

詳細については、SoundInstance API のドキュメントを参照してください。

Note

サウンドが既に再生中の場合に SoundInstance.Play をさらに呼び出してもすべて無視されます。 SoundInstance.Pause (サウンドが既に一時停止されているとき) および SoundInstance.Stop (サウンドが既に停止されているとき) についても同じです。

たとえば、次に示すコードは次の処理を行います。

  • 非空間オーディオをインスタンス化します
  • ループするようにオーディオを設定します
  • ボリュームを設定します
  • オーディオを再生します
public override async Task Execute()
{
    // サウンドを読み込む
    Sound musicSound = Content.Load<Sound>("MySound");

    // サウンドのインスタンスを作成する
    SoundInstance music = musicSound.CreateInstance();

    // ループする
    music.IsLooping = true;

    // ボリュームを設定する
    music.Volume = 0.25f;

    // 音楽を再生する
    music.Play();
}

代替手段: パブリック変数でスクリプトを作成する

使用するサウンド アセットごとにパブリック変数を作成します。上に列記したものと同じプロパティを使用できます。 次に例を示します。

public class MySoundScript : SyncScript
{
    public Sound MyMusic;

    private SoundInstance musicInstance;
    public bool PlayMusic;

    public override void Start()
    {
        musicInstance = MyMusic.CreateInstance();
    }

    public override void Update()
    {
        // 音楽が再生されていなくて、再生する必要がある場合は、音楽を再生する。
        if (PlayMusic & musicInstance.PlayState != PlayState.Playing)
        {
            musicInstance.Play();
        }

        // 音楽が再生されていて、再生してはならない場合は、音楽を停止する。
        else if (!PlayMusic)
        {
            musicInstance.Stop();
        }
    }
}

スクリプトをエンティティに追加する

  1. [Scene view]で、スクリプトを追加するエンティティを選択します。

    Select an entity

  2. [Property grid]で、[Add component]をクリックして、スクリプトを選択します。

    Click Add component

    スクリプトがエンティティに追加されます。

  3. パブリック変数をスクリプトに追加した場合、パブリック変数をサウンド アセットに関連付ける必要があります。

    [Asset view]から各変数にアセットをドラッグ アンド ドロップします。

    Drag and drop a sound asset

    または、Hand icon ([Select an asset]) をクリックします。

    Pick up an asset

    次に、使用するサウンド アセットを選択します。

    Select a sound asset

関連項目