Unity

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スクリプトをドラッグ&ドロップします

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

テストプレイしてみると

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

このサイトについて

ここには、自己紹介やサイトの紹介、あるいはクレジットの類を書くと良いでしょう。

検索

このサイトについて

ここには、自己紹介やサイトの紹介、あるいはクレジットの類を書くと良いでしょう。

検索

-Unity

執筆者:


comment

メールアドレスが公開されることはありません。

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

関連記事

no image

UnityRemoteで起動するスマホを指定する

スマホをPCに接続します Edit → ProjectSettings をおします Editor → Noneをおして、 iPhoneならiPhoneの機種、 androidなら Any androi …

no image

ランダムな場所にクローン生成

using System.Collections; using System.Collections.Generic; using UnityEngine; public class Clone : …

Unityの便利機能を使いこなそう #3 AnimatorControllerでキャラをヌルヌル動かそう

AnimatorControllerの説明 名前の通りキャラクターのアニメーションを切り替えます 例えば何もしてない時は、待機アニメーションにしたり、移動キーがおされたら、走るアニメーションに切り替え …

ブラウブリッツ秋田のブラウゴン応援ゲーム

操作説明 マウスでひたすらクリックするだけです 100回クリックすると…!?

no image

衝突判定のまとめ

入力する箇所 衝突するオブジェクトがすり抜けない場合 void OnCollisionEnter (Collision col) { if(col.gameObject.tag == “getabak …

ゲタバコ倶楽部へようこそ

  • 318852総閲覧数:
  • 121今日の閲覧数:
  • 246609総訪問者数:
  • 106今日の訪問者数:

住所
Akita,Japan

営業時間
月~日: 10:00 AM – 10:00 PM

このページはゲタバコ先生の日々思うことや活動、プログラミングの習得方法を発信するページです。
仕事のご依頼、メッセージ等、サービス概要をご覧の上で、お気軽にご連絡ください。

getabakosensei@gmail.com