Unityでオーディオを管理する その3 〜DBからリストを作成する〜

記事一覧

  1. Unityでオーディオを管理する その1 〜SQLの導入〜
  2. Unityでオーディオを管理する その2 〜スクリプト作成〜
  3. Unityでオーディオを管理する その3 〜DBからリストを作成する〜

←前回

前回までで必要なスクリプトは一通り完成しました。
今回は実装するための準備です。

現在の状態で音を再生させようとすると、

AudioManager.Instance.PlaySound("再生させるクリップにつけた名前");

と、クリップの名前をコードに直接書かなければならず、非常に手間なので、手間を減らす
ための作業をしていきます。

ファイルをリストから選択出来るようにする

図のように一覧で出てきて、選択すればそれが再生できるスクリプトをオブジェクトに貼り付けていければとても楽です。
リストを作成するにはEnumというものを利用します。

Enumとは

enumを作成するエディタ拡張【Unity】【エディタ拡張】 - (:3[kanのメモ帳]
エディタ拡張とは この記事でのバージョン Unity 5.4.0f3 はじめに 以前、定数を管理するクラスを作成するエディタ拡張という記事を書きました。 これはいわゆる定数クラスと呼ばれるクラスを生成するためのエディタ拡張です。 これ単体だとあまり意味はありませんが、何かしらのファイルを監視し、変更があった時に定数を更...

正直よく分かっていないのですが、要はインデックス番号付きの定数のようなものみたいです。

スクリプトファイル内に記述をしないといけないため、本来はスクリプトファイルに直接値を書き込まなければなりません。

ですがこちらのサイトのEnumCreatorを使えば、スクリプトファイル自体を自動生成してくれるので、結果的にリストを更新することができます。

EnumCreatorとSQLiteを連携させる

SQLと連携させて完全自動にしてしまいましょう。

サイトを参考にしてEnumCreatorというスクリプトファイルを作成します。
作成できたら使い方で紹介されているコードに以下のようなスクリプトを追加します。

SqliteDatabase sqlDB = new SqliteDatabase("db.db");
string query = "select name,clip from sound";
DataTable dataTable = sqlDB.ExecuteQuery(query);

foreach (DataRow dr in dataTable.Rows){
    audio_lists.Add((string)dr["name"]);
}

データベースにアクセスして、nameフィールドの値を全てListに放り込みます。あとはEnumCreatorのitemNameListにaudio_listsを渡してあげるだけです。

これをなんでもいいのでGameObjectにアタッチして実行してあげれば、指定した場所にファイルができています。

中身を見てみるとリストが作成されていることが確認出来ます。

データベースのテーブルを書き換えたら、このスクリプトを実行すればリストを最新の状態にできます。

スクリプトで使用する

リストとして使う時には

public AudioLists audiolists;
///または
[SerializeField]
AudioLists AudioLists;

のように宣言してあげます。値を取り出すには

audiolists.ToString()

で文字列として取り出すことができます。

実際のスクリプトがこちら

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class AudioPlayer : MonoBehaviour {

    [SerializeField]
    AudioLists AudioLists;
    
    // Use this for initialization
    void Start () {
        AudioManager.Instance.PlaySound(AudioLists.ToString());
	}
}

 

実際に使うと、リストが表示されることが確認できます。

これで管理・編集が格段に楽になりました。

 

記事一覧

  1. Unityでオーディオを管理する その1 〜SQLの導入〜
  2. Unityでオーディオを管理する その2 〜スクリプト作成〜
  3. Unityでオーディオを管理する その3 〜DBからリストを作成する〜