はじめに
膨大な数の位置情報や、ゲームのアイテム、キャラクターなどの管理はデータベースを作成し、そこから引っ張り出す形にすると便利です
今回はそんなデータベースを作成していこうと思います
データベースに入れる各データの作成
今回は、避難場所のアイコン、名前、情報、緯度、経度を格納していきます
基本的に作り方は一緒で、項目の名前や変数の種類を変えるだけですので、適宜カスタムして使用して下さい
今回はスクリプトの名前を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スクリプトをドラッグ&ドロップします
空のオブジェクトを選択し、データベースをドラッグ&ドロップします
テストプレイしてみると
デバッグログでデータベースの情報が出力され、データベースが出来ていることがわかります
コメント