PR

Unityのパスから音声を取得する方法

はじめに

UnityはSystem.IOのFileReadAllBytesを使用することによって、パスから音声が取得できます。
今回はFile.ReadAllBytesを使用して、パスから音声を読み込む方法について解説していきます。

その1.スクリプトを記述

まずスクリプトを作成して、using UnityEngine;の下にusing System.IO;を追加してください。

C#
using UnityEngine;
using System.IO;//これを追加してください

次にパスから音声を読み込むためのコードを入力してください。

C#
    public AudioClip ConvertPathToAudioClip(string path)
    {
        AudioClip audioclip = null;

        if (File.Exists(path))
        {
            WWW request = new WWW(path);
            audioclip = request.GetAudioClip(false, true);

            return audioclip;
        }
        return null;
    }

その2.動作確認

次にパスから音が読み取れるか試していきましょう。
音を流すためにヒエラルキーを右クリックして①Audioをクリックして②AudioSourceをクリックしてAudioSourceオブジェを配置してください。

先ほどのスクリプトに戻ってください。
次に出力先のAudioSource用のメンバーを記述してください。

C#
    /// <summary>
    /// 読み取り先のパス
    /// </summary>
    public string TestPath;

    /// <summary>
    /// 読み取られた音声の出力先
    /// </summary>
    public AudioSource TestAudioSource;

スタート関数に下のスクリプトを記述してください。
このスクリプトは先ほど記述したパスから音声を読み取る関数を呼び出しAudioSourceで再生するスクリプトです。

C#
    void Start()
    {
        TestAudioSource.clip = ConvertPathToAudioClip(TestPath);
        TestAudioSource.Play();
    }

スクリプト全体は以下の通りです。

C#
using UnityEngine;
using System.IO;

public class ConvertPathtoAudioClip : MonoBehaviour
{

    /// <summary>
    /// 読み取り先のパス
    /// </summary>
    public string TestPath;

    /// <summary>
    /// 読み取られた音声の出力先
    /// </summary>
    public AudioSource TestAudioSource;

    // Start is called before the first frame update
    void Start()
    {
        TestAudioSource.clip = ConvertPathToAudioClip(TestPath);
        TestAudioSource.Play();
    }

    public AudioClip ConvertPathToAudioClip(string path)
    {
        AudioClip audioclip = null;

        if (File.Exists(path))
        {
            WWW request = new WWW(path);
            audioclip = request.GetAudioClip(false, true);

            return audioclip;
        }
        return null;
    }

}

先ほど配置したAudioSourceオブジェにスクリプトをドラッグアンドドロップしてください。
スクリプトの項目に①TestPathとあるので、ここに読み込みたい音声のパスを入力してください。
パスの最後は必ず読み込む音声ファイルの拡張子を入れてください(.mp3)など。

次に①TestAudioSourceの項目に読み込まれた後に再生させるAudioSourceコンポーネントをアタッチしてください。

最後に実行をしてみてください。
実行すると音声が再生されていると思います。
もし読み込まれていない場合はパスが間違っている可能性があるので、確認をお願いします。

最後に

今回はUnityのパスから音声を取得する方法について紹介しました。

ここまで読んでいただいてありがとうございました。
私たちはプペポタイピングという自由に問題やテーマを作ったり遊んだりできるゲームを
開発しています!
もし興味を持って頂けたのであれば遊んで頂けるとありがたいです