【Unity 6】Audio Sourceの「Audio Generator」って何?昔の「AudioClip」「Audio Resource」との違い

広告

はじめに

Unity 6の新しいバージョンでAudio Sourceコンポーネントを追加すると、効果音を入れる欄の名前が「Audio Generator」になっています。

Unity 6 Audio SourceのインスペクターでAudio Generatorにcar_seを設定した画面

古い教材や参考書では、この欄は「AudioClip」や「Audio Resource」と書かれています。本と画面の表示が違うので、「別の欄を探さないといけないのかな?」と戸惑った人もいると思います。

結論から言うと、3つとも同じ欄です。音声ファイルをドラッグ&ドロップする操作も、今までとまったく同じで大丈夫です。

名前の移り変わり

Unityのバージョンインスペクターでの表示名
Unity 2023.1 以前(Unity 2022 など)AudioClip
Unity 2023.2 〜 Unity 6.2 頃Audio Resource
Unity 6.4 頃 〜 現在Audio Generator

なぜ名前が変わったの?

もともとこの欄には、1つの音声ファイル(AudioClip)しか入れられませんでした。

Unity 2023.2でAudio Random Containerという機能が追加されます。複数の音をランダムに鳴らす機能で、足音を毎回少しずつ変えたいときなどに便利です。このコンテナも同じ欄に入れられるようになったので、欄の名前が「Clip」から、もっと広い意味の「Resource」に変わりました。

さらに最近のUnity 6では、スクリプトで音を生成する仕組みが追加されています。これに合わせて「音を生み出すもの=Generator」という呼び方に変わりました。

欄に入れられるものが増えるたびに、名前もそれに合わせて広い意味になってきた、と考えるとわかりやすいです。

設定のしかたは今までと同じ

  1. Projectウィンドウに音声ファイル(.wav / .mp3 / .ogg など)をドラッグしてインポートする
  2. 音を鳴らしたいGameObjectにAudio Sourceコンポーネントを追加する
  3. Audio Generatorの欄に音声ファイルをドラッグ&ドロップする
  4. 効果音のように、決まったタイミングで鳴らしたいときはPlay On Awakeのチェックを外す

スクリプトは書き換えなくてOK

変わったのはインスペクターの表示名だけです。スクリプトで使うクラス名やプロパティ名はそのままなので、これまでのコードはそのまま動きます。

using UnityEngine;

public class CarSound : MonoBehaviour
{
    AudioSource audioSource;

    void Start()
    {
        audioSource = GetComponent<AudioSource>();
    }

    // 車の効果音を鳴らす
    public void PlayCarSE()
    {
        audioSource.Play();
    }
}

スクリプトから鳴らす音を差し替えたいときも、これまでどおりclipが使えます。

public AudioClip hornClip;

void ChangeSound()
{
    audioSource.clip = hornClip;   // 従来どおりの書き方
    audioSource.Play();
}

Audio Random Containerなども入れたい場合は、resourceプロパティを使います。型はAudioResourceで、using UnityEngine.Audio;が必要です。

using UnityEngine;
using UnityEngine.Audio;

public class RandomSound : MonoBehaviour
{
    public AudioResource footsteps;   // AudioClip も Audio Random Container も入る

    void PlayFootsteps()
    {
        AudioSource audioSource = GetComponent<AudioSource>();
        audioSource.resource = footsteps;
        audioSource.Play();
    }
}

まとめ

  • 「AudioClip」「Audio Resource」「Audio Generator」は、どれもAudio Sourceの同じ欄です
  • 名前が変わったのは、入れられるものの種類が増えたためです
  • ドラッグ&ドロップで設定する方法も、clipやPlay()を使うスクリプトも、今までどおり使えます

古い教材で「AudioClipの欄に〜」と書かれていたら、「Audio Generatorの欄のことだな」と読み替えてください。

訪問数 3 回, 今日の訪問数 3回

広告

Audio,C#,Unity,Unity6

Posted by hidepon