¡¡¤³¤ÎÊý¼°¤Ë§¤ê¡¢DataBaseManager ¥¹¥¯¥ê¥×¥È¤Ë¤Ï¡¢³Æ¥¢¥¤¥Æ¥à¤Î¼ïÎà¤Ë±þ¤¸¤¿¥Ç¡¼¥¿¤¬Æþ¤ë¤¿¤á¤Î List ¤ò£´¼ïÎàÍÑ°Õ¤·¤Þ¤¹¡£¤³¤ì¤Ï¡¢¥¢¥¤¥Æ¥à¤Î¼ïÎब£´¼ïÎà¤Ç¤¢¤ë¤¿¤á¤Ç¤¹¡£
Ʊ¤¸¤è¤¦¤Ë¡¢¥¢¥¤¥Æ¥à¤Î̾Á°¤Ë¤Ä¤¤¤Æ¤â¡¢¥¢¥¤¥Æ¥à¤Î¼ïÎà¤Ë±þ¤¸¤Æ£´¼ïÎà¤Î List ¤ËʬÎह¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£¤½¤Î¤¿¤á¡¢¤¯¤µ¤ê¤«¤¿¤Ó¤é¡¢¤È¤¤¤¦Ì¾Á°¤Ï Equip ¤ËʬÎव¤ì¤ë¡¢¤È¤¤¤¦¤è¤¦¤ËʬÎष¤Æ¤ª¤¤Þ¤¹¡£
¡¡
¡¡Æ±¤¸¤è¤¦¤Ëʸ»úÎó¤Î List ¤â£´¼ïÎàÍÑ°Õ¤·¡¢¹ç·×¤Ç£¸¼ïÎà¤Î List ¤òºîÀ®¤·¡¢¥¢¥¤¥Æ¥à¤Î¼ïÎऴ¤È¤ËʬÎष¤ÆºîÀ®¤ò¹Ô¤¦¤è¤¦¤Ë¤·¤Þ¤¹¡£
¥¢¥¤¥Æ¥à¤Î¾ðÊó¤ò¸¡º÷¤¹¤ë¾ì¹ç¤Ë¤Ï¡¢¤³¤ì¤é¤Î List ¤ò³èÍѤ·¡¢ItemDataSO ¥¹¥¯¥ê¥×¥¿¥Ö¥ë¡¦¥ª¥Ö¥¸¥§¥¯¥È¤òľÀܤÏÍøÍѤ·¤Ê¤¤¤ÇºÑ¤à¤è¤¦¤ÊÀ߷פˤ·¤Æ¤ª¤¤Þ¤¹¡£
¡¡¥á¥½¥Ã¥É¤Ï Create ¡Á ¤È¤¤¤¦Ì¾¾Î¤Ç»Ï¤Þ¤ë¥á¥½¥Ã¥É¤¬£²¤Ä¡¢Get ¡Á ¤È¤¤¤¦Ì¾¾Î¤Ç»Ï¤Þ¤ë¥á¥½¥Ã¥É¤¬£³¤ÄºîÀ®¤·¤Þ¤¹¡£
¡¡Create ¡Á ¤Î¥á¥½¥Ã¥É¤Ï¡¢DataBaseManager ¥¹¥¯¥ê¥×¥È¤Î Awake ¥á¥½¥Ã¥ÉÆâ¤Ç¼Â¹Ô¤µ¤ì¤Æ¡¢¥¢¥¤¥Æ¥à¤Î¼ïÎàËè¤Î List ¤È¡¢
¥¢¥¤¥Æ¥à¤Î¼ïÎफ¤é¥¢¥¤¥Æ¥à¤Î̾Á°¤ò»²¾È¤·¤¿ List ¤ò¤½¤ì¤¾¤ìºîÀ®¤¹¤ë½èÍý¤ò¼Â¹Ô¤·¤Þ¤¹¡£¡¡
¡¡Get ¡Á ¤Î¥á¥½¥Ã¥É¤Ï³°Éô¤Î¥¹¥¯¥ê¥×¥È¤«¤é¼Â¹Ô¤µ¤ì¤ë¥á¥½¥Ã¥É¤Ç¤¹¡£
¤³¤ì¤é¤Ï°ú¿ô¤Ç¼õ¤±¼è¤Ã¤¿¾ðÊó¤ò¸µ¤Ë List Æâ¤ò¸¡º÷¤·¤ÆɬÍפʾðÊó¤ò¼èÆÀ¤·¤ÆÌ᤹¥²¥Ã¥¿¡¼¥á¥½¥Ã¥É¤Ë¤Ê¤ê¤Þ¤¹¡£
¡¡¤³¤Î½èÍý¤Ë¤Ï
Ê£¿ô¤Î¥á¥½¥Ã¥É¤òÊ£¹çŪ¤ËÍøÍѤ·¤Æ½èÍý¤ò¼ÂÁõ¤·¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢¤·¤Ã¤«¤ê¤È½èÍý¤òÆɤ߲ò¤¤¤Æ¤¤¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¡£
DataBaseManager.cs
<= ¥¯¥ê¥Ã¥¯¤¹¤ë¤È³«¤¤Þ¤¹
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Linq;
using System;
public class DataBaseManager : MonoBehaviour
{
public static DataBaseManager instance;
[SerializeField]
private EventDataSO eventDataSO;
[SerializeField]
private ItemDataSO itemDataSO;¡¡¡¡¡¡¡¡//¡¡<=¡¡ItemDataSO ¥¹¥¯¥ê¥×¥¿¥Ö¥ë¡¦¥ª¥Ö¥¸¥§¥¯¥È¤ò¥¢¥µ¥¤¥ó¤·¤ÆÅÐÏ¿¤¹¤ë¤¿¤á¤ÎÊÑ¿ô
////* ¤³¤³¤«¤éÊÑ¿ô¤ÎÀë¸À¤òÄɲà *////
¡¡¡¡// ItemType ¤´¤È¤ËʬÎष¤¿ List
[SerializeField]
private List<ItemDataSO.ItemData> equipItemDatasList = new List<ItemDataSO.ItemData>();¡¡¡¡¡¡//¡¡<=¡¡ItemType ¤¬ Equip ¤Ç¤¢¤ë ItemData ¥¯¥é¥¹¤À¤±¤ò´ÉÍý¤¹¤ë List
[SerializeField]
private List<ItemDataSO.ItemData> saleItemDatasList = new List<ItemDataSO.ItemData>();
[SerializeField]
private List<ItemDataSO.ItemData> valuablesItemDatasList = new List<ItemDataSO.ItemData>();
[SerializeField]
private List<ItemDataSO.ItemData> useItemDatasList = new List<ItemDataSO.ItemData>();
¡¡¡¡// ItemType ¤´¤È¤ËʬÎष¤¿¥¢¥¤¥Æ¥à¤Î̾Á°¤Î List
[SerializeField]
private List<string> equipItemNamesList = new List<string>();¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//¡¡<=¡¡ItemType ¤¬ Equip ¤Ç¤¢¤ëʸ»úÎó¤À¤±¤ò´ÉÍý¤¹¤ë List
[SerializeField]
private List<string> saleItemNamesList = new List<string>();
[SerializeField]
private List<string> valuablesItemNamesList = new List<string>();
[SerializeField]
private List<string> useItemNamesList = new List<string>();
////* ¤³¤³¤Þ¤Ç *////
void Awake() {
if (instance == null) {
instance = this;
DontDestroyOnLoad(gameObject);
} else {
Destroy(gameObject);
}
////* ¤³¤³¤«¤é½èÍý¤òÄɲà *////
// ¥¢¥¤¥Æ¥à¤Î¼ïÎàÊ̤ΠList ¤òºîÀ®
CreateItemTypeLists();
// ¥¢¥¤¥Æ¥à¤Î̾Á°¤ò¥¢¥¤¥Æ¥à¤Î¼ïÎऴ¤È¤ËʬÎष¤Æ List ¤òºîÀ®
CreateItemNamesListsFromItemData();
////* ¤³¤³¤Þ¤Ç *////
}
/// <summary>
/// NPC ÍѤΥǡ¼¥¿¤«¤é EventData ¤ò¼èÆÀ
/// </summary>
/// <param name="npcEvent"></param>
/// <returns></returns>
public EventData GetEventDataFromNPCEvnet(EventData.EventType npcEventType, int npcEventNo) {
foreach (EventData eventData in eventDataSO.eventDatasList) {
if (eventData.eventType == npcEventType && eventData.no == npcEventNo) {
return eventData;
}
}
return null;
}
¡¡¡¡/// <summary>
/// EventDataSO ¤«¤é»ØÄꤷ¤¿ EventType ¤È EventNo ¤Î EventData ¤ò¾È¹ç¤·¤Æ¼èÆÀ
/// </summary>
/// <param name="searchEventType"></param>
/// <param name="searchEventNo"></param>
/// <returns></returns>
public EventData GetEventDataFromEvnetTypeAndEventNo(EventData.EventType searchEventType, int searchEventNo) {
foreach (EventData eventData in eventDataSO.eventDatasList) {
if (eventData.eventType == searchEventType && eventData.no == searchEventNo) {
return eventData;
}
}
return null;
}
/// <summary>
/// ItemNo ¤«¤é ItemData ¤ò¼èÆÀ
/// </summary>
/// <param name="itemNo"></param>
/// <returns></returns>
public ItemDataSO.ItemData GetItemDataFromItemNo(int itemNo) {
foreach (ItemDataSO.ItemData itemData in itemDataSO.itemDataList) {
if (itemData.itemNo == itemNo) {
return itemData;
}
}
return null;
}
/// <summary>
/// ItemName ¤«¤é ItemData ¤ò¼èÆÀ
/// </summary>
/// <param name="itemName"></param>
/// <returns></returns>
public ItemDataSO.ItemData GetItemDataFromItemName(ItemName itemName) {
return itemDataSO.itemDataList.FirstOrDefault(x => x.itemName == itemName);
}
/// <summary>
/// ItemData ¤Î ºÇÂçÍ×ÁÇ¿ô¤ò¼èÆÀ
/// </summary>
/// <returns></returns>
public int GetItemDataSOCount() {
return itemDataSO.itemDataList.Count;
}
////* ¤³¤³¤«¤é¥á¥½¥Ã¥É¤ò£²¤ÄÄɲà *////
/// <summary>
/// ¥¢¥¤¥Æ¥à¤Î¼ïÎàÊ̤ΠList ¤òºîÀ®
/// </summary>
private void CreateItemTypeLists() {
¡¡¡¡¡¡¡¡// ItemDataSO ¥¹¥¯¥ê¥×¥¿¥Ö¥ë¡¦¥ª¥Ö¥¸¥§¥¯¥ÈÆâ¤Î ItemData ¤Î¾ðÊó¤ò£±¤Ä¤º¤Ä½çÈ֤˼è¤ê½Ð¤·¤Æ itemData ÊÑ¿ô¤ËÂåÆþ
foreach (ItemDataSO.ItemData itemData in itemDataSO.itemDataList) {
¡¡¡¡¡¡¡¡¡¡¡¡// ¸½ºß¼è¤ê½Ð¤·¤Æ¤¤¤ë itemData ÊÑ¿ô¤Î ItemType ¤ÎÃͤ¬¤É¤Î case ¤È¹çÃפ¹¤ë¤«¤òȽÄê
switch (itemData.itemType) {
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡// itemData.itemType == ItemType.Equip ¤Î¾ì¹ç¤Ë¤Ï¡¢equipItemDatasList ÊÑ¿ô¤Ë itemData ÊÑ¿ô¤ÎÃͤòÄɲ乤ë
case ItemType.Equip:
equipItemDatasList.Add(itemData);
break;
case ItemType.Sele:
saleItemDatasList.Add(itemData);
break;
case ItemType.Valuables:
valuablesItemDatasList.Add(itemData);
break;
case ItemType.Use:
useItemDatasList.Add(itemData);
break;
}
}
}
/// <summary>
/// ¥¢¥¤¥Æ¥à¤Î̾Á°¤ò¥¢¥¤¥Æ¥à¤Î¼ïÎऴ¤È¤ËʬÎष¤Æ List ¤òºîÀ®
/// </summary>
private void CreateItemNamesListsFromItemData() {
¡¡¡¡¡¡¡¡// ItemName ·¿¤Î enum ¤ËÅÐÏ¿¤µ¤ì¤Æ¤¤¤ëÎóµó»Ò¤ò¤¹¤Ù¤Æ¼è¤ê½Ð¤·¤Æʸ»úÎó¤ÎÇÛÎó¤Ë¤·¤Æ¼èÆÀ¤·¡¢values ÊÑ¿ô¤ËÂåÆþ
string[] values = Enum.GetNames(typeof(ItemName));
¡¡¡¡¡¡¡¡// ItemDataSO ¥¹¥¯¥ê¥×¥¿¥Ö¥ë¡¦¥ª¥Ö¥¸¥§¥¯¥ÈÆâ¤Î ItemData ¤Î¾ðÊó¤ò£±¤Ä¤º¤Ä½çÈ֤˼è¤ê½Ð¤·¤Æ itemData ÊÑ¿ô¤ËÂåÆþ
foreach (ItemDataSO.ItemData itemData in itemDataSO.itemDataList) {
¡¡¡¡¡¡¡¡¡¡¡¡// values ÇÛÎóÊÑ¿ô¤ÎÃæ¤òÀèƬ¤«¤é½çÈ֤˸¡º÷¤·¡¢¸½ºß¼è¤ê½Ð¤·¤Æ¤¤¤ë itemData ÊÑ¿ô¤Î itemName ¤È¹çÃפ·¤¿Ãͤ¬¤¢¤ì¤Ð
if (!string.IsNullOrEmpty(values.FirstOrDefault(x => x == itemData.itemName.ToString()))) {
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡// ºÇ½é¤Ë¹çÃפ·¤¿Ãͤòʸ»úÎó¤È¤·¤ÆÂåÆþ
string itemName = itemData.itemName.ToString();
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡// ¸½ºß¼è¤ê½Ð¤·¤Æ¤¤¤ë itemData ÊÑ¿ô¤Î ItemType ¤ÎÃͤ¬¤É¤Î case ¤È¹çÃפ¹¤ë¤«¤òȽÄê(¤³¤³¤Ï¾å¤Î¥á¥½¥Ã¥É¤Î switch ʸ¤ÈƱ¤¸Ê¬´ô¤Ë¤·¤Æ¤â¼ÂÁõ¤Ç¤¤Þ¤¹¡£³Ø½¬¤Î¤¿¤á¤Ë¥¥ã¥¹¥È½èÍý¤òÆþ¤ì¤Æ¤¤¤Þ¤¹)
switch ((int)itemData.itemType) {
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡// itemData.itemType == 0(ItemType ·¿¤ÎÎóµó»Ò¤ÎºÇ½é¤Î¤â¤Î)
case 0:
equipItemNamesList.Add(itemName);
break;
case 1:
saleItemNamesList.Add(itemName);
break;
case 2:
valuablesItemNamesList.Add(itemName);
break;
case 3:
useItemNamesList.Add(itemName);
break;
}
}
}
}
////* ¤³¤³¤Þ¤Ç *////
}
¡¡¥¹¥¯¥ê¥×¥È¤ò½¤Àµ¤·¤¿¤é¥»¡¼¥Ö¤·¤Þ¤¹¡£
¡¡DataBaseManager ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤òÁªÂò¤·¤Æ¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¤ò³Îǧ¤·¤Þ¤¹¡£
¿·¤·¤¯ SerializeField °À¤ÇÀë¸À¤·¤¿³Æ List ¤ÎÊÑ¿ô¤¬É½¼¨¤µ¤ì¤Æ¤¤¤ì¤ÐÌäÂꤢ¤ê¤Þ¤»¤ó¡£
¥¤¥ó¥¹¥Ú¥¯¥¿¡¼²èÁü