databaseとは
たくさんの同じ属性をもつ物を管理する方法
やり方
databaseはScriptableObjectを利用します。ScriptableObjectについては詳しくは別の記事を参照。
まずはスクリプトを2つ作る。
同じ属性を表すスクリプトと
それを格納するデータベース用のスクリプト
using UnityEngine;
//やさい
[CreateAssetMenu(fileName = "NewVegetable", menuName = "Vegetable Database/Vegetable", order = 1)]
public class Vegetable : ScriptableObject
{
public int id;
public string vegetableName;
public float price;
}
using System.Collections.Generic;
using UnityEngine;
//やさい入れ
[CreateAssetMenu(fileName = "VegetableDatabase", menuName = "Vegetable Database/Database", order = 2)]
public class VegetableDatabase : ScriptableObject
{
public List<Vegetable> vegetables;
public Vegetable GetVegetableById(int id)
{
foreach (Vegetable vegetable in vegetables)
{
if (vegetable.id == id)
{
return vegetable;
}
}
Debug.LogWarning("Vegetable with ID " + id + " not found.");
return null;
}
}
やさい入れにはidで検索できるメソッドも追加。
これで準備OK
ScritableObjectを右クリックから作成
野菜入れにトマトを格納。
トマトの値を設定
追加でリンゴも設定
使用方法
using UnityEngine;
public class VegetableManager : MonoBehaviour
{
public VegetableDatabase vegetableDatabase;
void Start()
{
int searchId = 1; // 検索するIDを指定
Vegetable foundVegetable = vegetableDatabase.GetVegetableById(searchId);
if (foundVegetable != null)
{
Debug.Log("Vegetable Name: " + foundVegetable.vegetableName);
Debug.Log("Price: " + foundVegetable.price);
}
}
}
空のオブジェクト作成
VegetableManagerをアタッチ
野菜入れも追加
検索するidをもとにListを検索、出力できる。
参考サイト