PR

Unityダイアログボックスを使って音声を開く方法

はじめに

UnityではUnityStandaloneFileBrowserアセットを使うことによってダイアログボックスを使ってUnity側に読み込ませることができます。
ダイアログボックスとは、下の画像のようなウィンドウのことです。

今回はUnityStandaloneFileBrowserアセットを使って音声を読み込んでいきたいと思います。

その1.アセットの導入

下のボタンをクリックして、UnityStandaloneFileBrowserアセットの配布ページに行ってください。

次に配布ページから、①Download Packageをクリックしてアセットをダウンロードしてください。

次にダウンロードしたアセットファイルをUnityのProject内にドラッグアンドドロップしてください。
次にImportUnityPackageウィンドウが出てくるので右下のImportを押してください。

Importボタンを押すとアセットをプロジェクトにインストールするので少々お待ちください。
インストールが終了したらProjectのAssets内に①「StandaloneFileBrowser」フォルダが作成されていると思います。
これでアセットの導入は完了です。

その2.音声を開く準備をする

次にHierarchyを右クリックして①UI>②Legacyの順にカーソルを合わせて③Buttonをクリックしてボタンを配置してください。

次にヒエラルキー内を右クリックして①Audioをクリックして②AudioSourceをクリックしてAudioSourceオブジェを配置してください。

その3.スクリプトを書く

次にOpenDialogBoxToSoundという名前のスクリプトを作成してください。
作成したスクリプトのusing UnityEngine;の下にusing SFB;とusing System.IO;を追加してください。

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

次にダイアログボックスを開いて音声を流す関数を書いてください。

C#
    /// <summary>
    /// クリック時にダイアログボックスを開く関数
    /// </summary>
    public void ClickToOpenDialogBoxButton()
    {
        //選択できる拡張子
        var extensions = new[] { new ExtensionFilter("音声ファイル", "mp3", "ogg") };

        //左上に表示されるタイトル、最初に表示させるディレクトリ場所、拡張子フィルタ、ファイルの複数選択するか
        var paths = StandaloneFileBrowser.OpenFilePanel("音声ダイアログボックステスト", "", extensions, false);

        if(paths.Length > 0 )
        {
            Debug.Log("Paths=>" + paths[0]);
            OutputAudioSource.clip = ConvertPathToAudioClip(paths[0]);
            OutputAudioSource.Play();
        }

    }

次にパスからオーディオクリップに変換する関数を書いてください。

C#
    /// <summary>
    /// パスからオーディオクリップに変換する関数
    /// </summary>
    /// <param name="path">パス</param>
    /// <returns>変換されたオーディオクリップ</returns>
    public AudioClip ConvertPathToAudioClip(string path)
    {
        AudioClip audioclip = null;

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

            return audioclip;
        }
        return null;
    }

スクリプトの全体はこのようになります。

C#
using UnityEngine;
using SFB;
using System.IO;

public class OpenDialogBoxToSound : MonoBehaviour
{

    public AudioSource OutputAudioSource;

    /// <summary>
    /// クリック時にダイアログボックスを開く関数
    /// </summary>
    public void ClickToOpenDialogBoxButton()
    {
        //選択できる拡張子
        var extensions = new[] { new ExtensionFilter("音声ファイル", "mp3", "ogg") };

        //左上に表示されるタイトル、最初に表示させるディレクトリ場所、拡張子フィルタ、ファイルの複数選択するか
        var paths = StandaloneFileBrowser.OpenFilePanel("音声ダイアログボックステスト", "", extensions, false);

        if(paths.Length > 0 )
        {
            Debug.Log("Paths=>" + paths[0]);
            OutputAudioSource.clip = ConvertPathToAudioClip(paths[0]);
            OutputAudioSource.Play();
        }

    }

    /// <summary>
    /// パスからオーディオクリップに変換する関数
    /// </summary>
    /// <param name="path">パス</param>
    /// <returns>変換されたオーディオクリップ</returns>
    public AudioClip ConvertPathToAudioClip(string path)
    {
        AudioClip audioclip = null;

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

            return audioclip;
        }
        return null;
    }

}

その4.動作確認

まず先ほど作成したスクリプトをCanvasにアタッチしてください。
次にアタッチしたスクリプトの①Output Audio Sourceに先ほど作成したAudio Sourceをドラッグアンドドロップしてください。

次にヒエラルキーから先ほど作成したボタンオブジェを選択してください。
選択したら①On Click()部分のプラスを押してください。

None (Object)の部分にアタッチしたスクリプト(Canvas)をドラッグアンドドロップしてください。
次に①No Functionをクリックして

次に①No Functionをクリックして②OpenDialogBoxToSound(スクリプト名)をクリックして③ClickToOpenDialogBoxButtonを順にクリックしてください。

次にシーンを実行して先ほど配置したボタンをクリックしてください。
ボタンをクリックするとダイアログボックスが出てくるので、何かしらの音源ファイルを選択して、開く(O)をクリックしてください。
選択すると音声が再生されます。

最後に

今回はUnityダイアログボックスを使って音声を開く方法について紹介しました。

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