¡¡ItemDataSO ¥¹¥¯¥ê¥×¥¿¥Ö¥ë¡¦¥ª¥Ö¥¸¥§¥¯¥È¤òÍøÍѤǤ¤ë¤è¤¦¤Ë¤¹¤ë¤¿¤á¤Ë¡¢¿·¤·¤¯ÊÑ¿ô¤òÀë¸À¤·¤Þ¤¹¡£
¤Þ¤¿¡¢¤³¤Î¥¹¥¯¥ê¥×¥¿¥Ö¥ë¡¦¥ª¥Ö¥¸¥§¥¯¥È¤Ë¤¢¤ë ItemData ¤Î¾ðÊó¤ò¸¡º÷¤·¤ÆɬÍפʾðÊó¤ò¼èÆÀ¤¹¤ë¤¿¤á¤Î¥á¥½¥Ã¥É¤ò¿·¤·¤¯£³¤ÄºîÀ®¤·¤Þ¤¹¡£
¡¡GetItemDataFromItemNo ¥á¥½¥Ã¥É¤È GetItemDataFromItemName ¥á¥½¥Ã¥É¤Ï¡¢¤½¤ì¤¾¤ì°ú¿ô¤ÇÆϤ¤¤¿¾ðÊó¤ò¸¡º÷¸µ¤È¤·¡¢
¤³¤ÎÃͤȹçÃפ¹¤ë¥Ç¡¼¥¿¤ò»ý¤Ä ItemData ¤ò¥¹¥¯¥ê¥×¥¿¥Ö¥ë¡¦¥ª¥Ö¥¸¥§¥¯¥ÈÆâ¤Ç¸¡º÷¤·¤¿¾å¤Ç£±¤Ä¤À¤±¼èÆÀ¤·¤Æ¡¢¸Æ¤Ó½Ð¤·¸µ¤Î¥¹¥¯¥ê¥×¥È¤Ø¤ÈÃͤòÌ᤹¥²¥Ã¥¿¡¼¥á¥½¥Ã¥É¤Ë¤Ê¤ê¤Þ¤¹¡£
¤³¤Î½èÍý¤ò¹Ô¤¦¤³¤È¤Ë¤è¤ê¡¢ItemNo¡¢¤¢¤ë¤¤¤Ï ItemName ¤Î¤¤¤º¤ì¤«¤Î¾ðÊó¤ò»ØÄꤹ¤ë¤³¤È¤¬½ÐÍè¤ì¤Ð¡¢¥¹¥¯¥ê¥×¥¿¥Ö¥ë¡¦¥ª¥Ö¥¸¥§¥¯¥ÈÆâ¤Î ItemData ¤Î¾ðÊó¤òÆÃÄê¤Ç¤¤ëÀ߷פˤʤäƤ¤¤Þ¤¹¡£
¡¡GetItemDataFromItemNo ¥á¥½¥Ã¥É¤È GetItemDataFromItemName ¥á¥½¥Ã¥É¤Ë¤ª¤±¤ë½èÍý¤ÎÆâÍƤǤ¹¤¬¡¢
ÊÒÊý¤Ï foreach + if ʸ¤òÁȤ߹ç¤ï¤»¤¿½èÍý¡¢¤â¤¦ÊÒÊý¤Ï FirstOrDefault ¥á¥½¥Ã¥É¤òÍøÍѤ·¤¿½èÍý¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¤¬¡¢
°ú¿ô¤Ç¸¡º÷¤·¤Æ¤¤¤ë¾ðÊ󤬰ۤʤë¤À¤±¤Ç¡¢½èÍý¤ÎÆâÍƤϤޤ俤¯Æ±¤¸¤â¤Î¤Ç¤¹¡£
¡¡GetEventDataFromEvnetTypeAndEventNo ¥á¥½¥Ã¥É¤Ï¡¢¤¹¤Ç¤Ë¤¢¤ë GetEventDataFromNPCEvnet ¥á¥½¥Ã¥É¤òÈÆÍÑŪ¤Ë¤·¤¿¥á¥½¥Ã¥É¤Ç¤¹¡£
GetEventDataFromNPCEvnet ¥á¥½¥Ã¥É¤Ï NPC ¤Î²ñÏäΥ¤¥Ù¥ó¥È¤Î¤ß¤ò¾È¹ç¤·¤Æ¼èÆÀ¤·¤Æ¤¤¤Þ¤¹¤¬¡¢¤³¤Á¤é¤Î¥á¥½¥Ã¥É¤Ç¤Ï
EventType ¤Ë¤è¤Ã¤Æ¾È¹çÀè¤òÊѹ¹¤Ç¤¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤¿¤á¡¢²ñÏÃ¥¤¥Ù¥ó¥È°Ê³°¤Î¥¤¥Ù¥ó¥È¤â¸¡º÷½ÐÍè¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£
¡¡½èÍý¤ÎÆâÍÆ¤Ï GetEventDataFromNPCEvnet ¥á¥½¥Ã¥É¤È°ú¿ô¤Î»ØÄê°Ê³°¤ÏƱ¤¸¤Î¤¿¤á¡¢¥³¥á¥ó¥È¤Ï¾Êά¤·¤Æ¤¤¤Þ¤¹¡£
¼«Ê¬¤Ç¥³¥á¥ó¥È¤òµ½Ò¤·¤Æ¡¢½èÍý¤ÎÍý²ò¤ò¿¼¤á¤Æ¤¯¤À¤µ¤¤¡£
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 ¥¹¥¯¥ê¥×¥¿¥Ö¥ë¡¦¥ª¥Ö¥¸¥§¥¯¥È¤ò¥¢¥µ¥¤¥ó¤·¤ÆÅÐÏ¿¤¹¤ë¤¿¤á¤ÎÊÑ¿ô
////* ¤³¤³¤Þ¤Ç *////
void Awake() {
if (instance == null) {
instance = this;
DontDestroyOnLoad(gameObject);
} else {
Destroy(gameObject);
}
}
/// <summary>
/// NPC ÍѤΥǡ¼¥¿¤«¤é EventData ¤ò¼èÆÀ
/// </summary>
/// <param name="npcEvent"></param>
/// <returns></returns>
public EventData GetEventDataFromNPCEvnet(int npcEventNo) {
¡¡¡¡¡¡¡¡// EventDataSO ¥¹¥¯¥ê¥×¥¿¥Ö¥ë¡¦¥ª¥Ö¥¸¥§¥¯¥È¤Î eventDatasList ¤ÎÃæ¿È(EventData)¤ò£±¤Ä¤º¤Ä½çÈ֤˼è¤ê½Ð¤·¤Æ¡¢eventData ÊÑ¿ô¤ËÂåÆþ
foreach (EventData eventData in eventDataSO.eventDatasList) {
¡¡¡¡¡¡¡¡¡¡¡¡// eventData ¤Î¾ðÊó¤òȽÄꤷ¡¢EventType ¤¬ Talk ¤«¤Ä¡¢°ú¿ô¤Ç¼èÆÀ¤·¤Æ¤¤¤ë npcEventNo ¤ÈƱ¤¸¾ì¹ç
if (eventData.eventType == EventData.EventType.Talk && eventData.no == npcEventNo) {
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡// ³ºÅö¤¹¤ë EvenData ¤Ç¤¢¤ë¤ÈȽÄꤷ¡¢¤½¤Î¾ðÊó¤òÌ᤹
return eventData;
}
}
¡¡¡¡¡¡¡¡// ¾åµ¤Î½èÍý¤Î·ë²Ì¡¢³ºÅö¤¹¤ë EvenData ¤Î¾ðÊ󤬥¹¥¯¥ê¥×¥¿¥Ö¥ë¡¦¥ª¥Ö¥¸¥§¥¯¥ÈÆâ¤Ë¤Ê¤¤¾ì¹ç¤Ë¤Ï¡¢null ¤òÌ᤹
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) {
¡¡¡¡¡¡¡¡// ItemDataSO ¥¹¥¯¥ê¥×¥¿¥Ö¥ë¡¦¥ª¥Ö¥¸¥§¥¯¥ÈÆâ¤Î ItemData ¤Î¾ðÊó¤ò£±¤Ä¤º¤Ä½çÈ֤˼è¤ê½Ð¤·¤Æ itemData ÊÑ¿ô¤ËÂåÆþ
foreach (ItemDataSO.ItemData itemData in itemDataSO.itemDataList) {
¡¡¡¡¡¡¡¡¡¡¡¡// ¸½ºß¼è¤ê½Ð¤·¤Æ¤¤¤ë ItemData ¤Î itemNo ÊÑ¿ô¤ÎÃͤȰú¿ô¤ÇÆϤ¤¤Æ¤¤¤ë itemNo ¤ÎÃͤ¬Æ±¤¸¤Ç¤¢¤ë¾ì¹ç
if (itemData.itemNo == itemNo) {
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡// ¾ò·ï¤Ë¹çÃפ·¤¿¤Î¤Ç¡¢itemData ¤ÎÃͤòÌ᤹
return itemData;
}
}
¡¡¡¡¡¡¡¡// ¾åµ¤Î¸¡º÷·ë²Ì¡¢¥¹¥¯¥ê¥×¥¿¥Ö¥ë¡¦¥ª¥Ö¥¸¥§¥¯¥ÈÆâ¤Ë³ºÅö¤¹¤ë¾ðÊ󤬤ʤ¤¾ì¹ç¡¢null ¤òÌ᤹
return null;
}
/// <summary>
/// ItemName ¤«¤é ItemData ¤ò¼èÆÀ
/// </summary>
/// <param name="itemName"></param>
/// <returns></returns>
public ItemDataSO.ItemData GetItemDataFromItemName(ItemName itemName) {
¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡// ¾åÃʤˤ¢¤ë GetItemDataFromItemNo ¥á¥½¥Ã¥É¤ÈƱ¤¸ÆâÍƤνèÍý¤ò¡¢¸¡º÷Âоݤò itemName ¤Ë¤·¤Æ¼Â¹Ô¤·¤Æ¼èÆÀ
return itemDataSO.itemDataList.FirstOrDefault(x => x.itemName == itemName);
}
/// <summary>
/// ItemData ¤Î ºÇÂçÍ×ÁÇ¿ô¤ò¼èÆÀ
/// </summary>
/// <returns></returns>
public int GetItemDataSOCount() {
return itemDataSO.itemDataList.Count;
}
////* ¤³¤³¤Þ¤Ç *////
}
¡¡¥¹¥¯¥ê¥×¥È¤ò½¤Àµ¤·¤¿¤é¥»¡¼¥Ö¤·¤Þ¤¹¡£
¡¡DataBaseManager ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤òÁªÂò¤·¤Æ¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¤ò³Îǧ¤·¤Þ¤¹¡£
¿·¤·¤¯ SerializeField °À¤ÇÀë¸À¤·¤¿³Æ List ¤ÎÊÑ¿ô¤¬É½¼¨¤µ¤ì¤Æ¤¤¤ì¤ÐÌäÂꤢ¤ê¤Þ¤»¤ó¡£
¡¡ItemDataSO ÊÑ¿ô¤Ë¡¢ItemDataSO ¥¹¥¯¥ê¥×¥¿¥Ö¥ë¡¦¥ª¥Ö¥¸¥§¥¯¥È¤ò¥É¥é¥Ã¥°¥¢¥ó¥É¥É¥í¥Ã¥×¤·¤Æ¥¢¥µ¥¤¥ó¤·¤Æ¤¯¤À¤µ¤¤¡£
¥¤¥ó¥¹¥Ú¥¯¥¿¡¼²èÁü