はじめに
膨大な数の位置情報や、ゲームのアイテム、キャラクターなどの管理はデータベースを作成し、そこから引っ張り出す形にすると便利です
今回はそんなデータベースを作成していこうと思います
データベースに入れる各データの作成

今回は、避難場所のアイコン、名前、情報、緯度、経度を格納していきます
基本的に作り方は一緒で、項目の名前や変数の種類を変えるだけですので、適宜カスタムして使用して下さい
今回はスクリプトの名前をShelterにしておきます
※このスクリプトはScriptableObjectというタイプのスクリプトで、このタイプのスクリプトはオブジェクトにつけないで使用します
作成するスクリプト
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というスクリプトを作成します
こちらは通常通りオブジェクトに貼り付けるタイプです
入力するスクリプト
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スクリプトをドラッグ&ドロップします

空のオブジェクトを選択し、データベースをドラッグ&ドロップします
テストプレイしてみると

デバッグログでデータベースの情報が出力され、データベースが出来ていることがわかります

 
			 
			
コメント