はじめに
膨大な数の位置情報や、ゲームのアイテム、キャラクターなどの管理はデータベースを作成し、そこから引っ張り出す形にすると便利です
今回はそんなデータベースを作成していこうと思います
データベースに入れる各データの作成
今回は、避難場所のアイコン、名前、情報、緯度、経度を格納していきます
基本的に作り方は一緒で、項目の名前や変数の種類を変えるだけですので、適宜カスタムして使用して下さい
今回はスクリプトの名前をShelterにしておきます
※このスクリプトはScriptableObjectというタイプのスクリプトで、このタイプのスクリプトはオブジェクトにつけないで使用します
作成するスクリプト
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
using System.Collections; using System.Collections.Generic; using UnityEngine; [CreateAssetMenu(fileName = "Shelter", menuName = "CreateShelter")]// CreateからCreateShelterというメニューを表示し、Shelterを作成する public class Shelter : ScriptableObject { [SerializeField] private Sprite icon;// 避難場所のアイコン [SerializeField] private string shelterName;// 避難場所の名前 [SerializeField] private string information;// 避難場所の情報 [SerializeField] private float latitude;// 避難場所の緯度 [SerializeField] private float longitude;// 避難場所の経度 public Sprite GetIcon()// アイコンを入力したら、 { return icon;// iconに返す } public string GetShelterName()// 避難場所の名前を入力したら、 { return shelterName;// shelterNameに返す } public string GetInformation()// 情報を入力したら、 { return information;// informationに返す } public float GetLatitude()// 緯度を入力したら、 { return latitude;// latitude に返す } public float GetLongitude()// 経度を入力したら、 { return longitude;// longitudeに返す } } |
作成してCreateをおすと、CreateShelterというメニューが増えているので、おします
すると、データベースに格納するデータが作成されますので、名前をつけます
作成されたデータを選択すると項目が設定できるので、各項目を入力します
同様の手順を繰り返して、必要なデータを揃えましょう
データベースの作成
ShelterDataBaseというスクリプトを作成します
こちらも、オブジェクトにつけないタイプのスクリプトになります
入力するスクリプト
|
using System.Collections; using System.Collections.Generic; using UnityEngine; [CreateAssetMenu(fileName = "ShelterDataBase", menuName = "CreateShelterDataBase")]// CreateからCreateShelterというメニューを表示し、Shelterを作成する public class ShelterDataBase : ScriptableObject { [SerializeField] private List<Shelter> shelterLists = new List<Shelter>();// Shelterのリストを新しく生成する public List<Shelter> GetShelterLists()// Shelterのリストがあったら、 { return shelterLists;// shelterListsに返す } } |
作成したら、Create → CreateShelterDataBaseをおして、データベースを作成します
データベースの名前を入力します
作成したデータベースを選択し、▶︎をおして、登録するデータの数を入力します
作成したデータをドラッグ&ドロップします
データベースを操作する
ShelterManagerというスクリプトを作成します
こちらは通常通りオブジェクトに貼り付けるタイプです
入力するスクリプト
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
|
using System.Collections; using System.Collections.Generic; using UnityEngine; public class ShelterManager : MonoBehaviour { [SerializeField] private ShelterDataBase shelterDataBase;// 使用するデータベース private Dictionary<Shelter, int> numOfShelter = new Dictionary<Shelter, int>();// ディクショナリーをShelterから作成し、numOfShelterにShelterの番号を振る // Use this for initialization void Start() { for (int i = 0; i < shelterDataBase.GetShelterLists().Count; i++)// Shelterのリストの数の分だけ繰り返す処理 { numOfShelter.Add(shelterDataBase.GetShelterLists()[i], i);// 避難場所の数を適当に設定 Debug.Log(shelterDataBase.GetShelterLists()[i].GetShelterName() + ": " + shelterDataBase.GetShelterLists()[i].GetInformation());// 確認の為のデータ出力 } Debug.Log(GetShelter("第一小学校").GetInformation());// 確認の為のデータ出力 Debug.Log(numOfShelter[GetShelter("第二体育館")]);// 確認の為のデータ出力 } public Shelter GetShelter(string searchName)// 名前で避難場所を取得 { return shelterDataBase.GetShelterLists().Find(shelterName => shelterName.GetShelterName() == searchName);// アイテムの日本語名を渡し、避難場所データベースからその名前と一致するShelterクラスを返す } } |
作成したら、Create → CreateEmptyをおし、空のオブジェクトを作成します
空のオブジェクトに作成したShelterManagerスクリプトをドラッグ&ドロップします
空のオブジェクトを選択し、データベースをドラッグ&ドロップします
テストプレイしてみると
デバッグログでデータベースの情報が出力され、データベースが出来ていることがわかります