Unityでデータベースを作成する

目次

はじめに

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

データベースに入れる各データの作成

今回は、避難場所のアイコン、名前、情報、緯度、経度を格納していきます
基本的に作り方は一緒で、項目の名前や変数の種類を変えるだけですので、適宜カスタムして使用して下さい
今回はスクリプトの名前を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スクリプトをドラッグ&ドロップします

空のオブジェクトを選択し、データベースをドラッグ&ドロップします

テストプレイしてみると

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

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次