¡¡¥·¥Ê¥ê¥ª¥Ç¡¼¥¿¤òUnity¤ËÆɤ߹þ¤ó¤Ç´ÉÍý¤µ¤»¤ë¤¿¤á¤Ë¡¢GameData¥¯¥é¥¹¤òºîÀ®¤·¤Þ¤·¤ç¤¦¡£
¥·¥Ê¥ê¥ª¥Ç¡¼¥¿¤ÏÊ£¿ô¤Î¥·¡¼¥ó¤Ë¤ª¤¤¤Æ»È¤ï¤ì¤ë¤Ç¤¢¤í¤¦¤³¤È¤òÁÛÄꤷ¡¢GameData¤ò¤É¤Î¥¯¥é¥¹¤«¤é¤Ç¤â»²¾È¤Ç¤¤ë¤è¤¦¤Ë
¥·¥ó¥°¥ë¥È¥ó¥Ñ¥¿¡¼¥ó¤È¤¤¤¦¥Ç¥¶¥¤¥ó¥Ñ¥¿¡¼¥ó¤òÍøÍѤ·¤ÆºîÀ®¤·¤Þ¤¹¡£
¡¡¤Þ¤¿½èÍý¤Î°ìÉô¤Ë¤Ï¡¢Linq¡Ê¥ê¥ó¥¯¡Ë¤È¤¤¤¦µ¡Ç½¤òÍøÍѤ·¤Æ¤¤¤Þ¤¹¡£¤³¤ì¤ÏÅý¹ç¸À¸ì¥¯¥¨¥ê¤È¸Æ¤Ð¤ì¤ëµ¡Ç½¤Î£±¤Ä¤Ç
List¤Î¤è¤¦¤Ê¥Ç¡¼¥¿¤Î½¸¤Þ¤ê¤ËÂФ·¤Æ²¿¤é¤«¤Î½èÍý¤ò¹Ô¤¦¤³¤È¤¬¤Ç¤¤ëµ¡Ç½¤Ç¤¹¡£¤³¤³¤Ç¤ÏSelect¤È¤¤¤¦¥á¥½¥Ã¥É¤ò»È¤Ã¤Æ¤¤¤Þ¤¹¡£
¤Þ¤¿¤½¤ÎºÝ¤Ë¤Ï¹½Ê¸¤òû¤¯¤Þ¤È¤á¤Æ´Ê·é¤Ë½ñ¤¯¤³¤È¤¬½ÐÍè¤ë¤â¤Î¤Ç¤¹¡£
¡¡Linq¤Î¾Ü¤·¤¤»È¤¤Êý¤Ë¤Ä¤¤¤Æ¤Ï¸å½Ò¤·¤Þ¤¹¤¬¡¢Â¿¤¯¤Îµ»ö¤¬¤¢¤ê¤Þ¤¹¤Î¤Ç¸¡º÷¤·¤ÆÄ´¤Ù¤Æ¤ß¤Þ¤·¤ç¤¦¡£
¡¡Scripts¥Õ¥©¥ë¥ÀÆâ¤Ç¥á¥Ë¥å¡¼¤òɽ¼¨¤·¡¢Create => C# Script ¤òÁªÂò¤·¡¢Ì¾Á°¤òGameData¤Ë¤·¤Þ¤¹¡£
¡¡¢¨¡¡Json¥Õ¥¡¥¤¥ë¤Ç¤Ï¤Ê¤¯¡¢XLS Import Setting¤ò»È¤Ã¤ÆExcel¥Õ¥¡¥¤¥ë¤«¤é¥¹¥¯¥ê¥×¥¿¥Ö¥ë¡¦¥ª¥Ö¥¸¥§¥¯¥È¤òºîÀ®¤·¤¿¾ì¹ç¤Ë¤Ï¡¢
¡¡¡¡¡¡²¼Ãʤˤ¢¤ëÊ̼ê½ç¤ÇGameData¥¹¥¯¥ê¥×¥È¤òºîÀ®¤·¤Æ¤¯¤À¤µ¤¤¡£
GameData.cs
¡¡<=¡¡¥¯¥ê¥Ã¥¯¤¹¤ë¤È³«¤¤Þ¤¹¡£
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
using System.Linq; // <= Linq¤ò»ÈÍѤ¹¤ë¾ì¹ç¤Ë¤ÏÀë¸À¤¬É¬Í×
public class GameData : MonoBehaviour
{
public static GameData instance; // ¼«Ê¬¼«¿È¡ÊGameData¥¯¥é¥¹¡Ë¤òÂåÆþ¤¹¤ëÊÑ¿ô
public ScenarioSO scenarioSO; // ¥¹¥¯¥ê¥×¥¿¥Ö¥ë¡¦¥ª¥Ö¥¸¥§¥¯¥È¤òÂåÆþ¤¹¤ëÊÑ¿ô
void Awake() {
// ¥·¥ó¥°¥ë¥È¥ó¤Ë¤¹¤ë
if (instance == null) {
// instance¤ÎÃͤ¬null¤Î¾ì¹ç¤Ë¤Ï¡¢ÊÑ¿ô¤Ë¼«Ê¬¼«¿È¡ÊGameData¥¯¥é¥¹¡Ë¤òÆþ¤ì¤ë
instance = this;
// ¥·¡¼¥óÁ«°Ü¤ò¤·¤Æ¤âÇË´þ¤µ¤ì¤Ê¤¤¥á¥½¥Ã¥É¤ò¼Â¹Ô¤¹¤ë¡ÊÂоݤȤʤë¤Î¤Ï°ú¿ô¤Ë»ØÄꤷ¤¿¤â¤Î¡£¤³¤³¤Ç¤ÏGameData¤Î¥¢¥¿¥Ã¥Á¤µ¤ì¤Æ¤¤¤ë¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¡Ë
DontDestroyOnLoad(this.gameObject);
} else {
// instance¤¬null¤Ç¤Ï¤Ê¤¤¾ì¹ç¤Ë¤Ï¥Ò¥¨¥é¥ë¥¡¼¾å¤Ë¤¹¤Ç¤ËGameData¥¯¥é¥¹¤¬Â¸ºß¤·¤Æ¤¤¤ë¤Î¤Ç¡¢½ÅÊ£¤¹¤ëGameData¤òÇË´þ¤¹¤ë
Destroy(this.gameObject);
}
// ScenarioData¤Î¥ê¥¹¥È¤òºîÀ®
CreateScenarioDataList();
}
/// <summary>
/// ScenarioData¤Î¥ê¥¹¥È¤òºîÀ®
/// </summary>
private void CreateScenarioDataList() {
// ¥¹¥¯¥ê¥×¥¿¥Ö¥ë¡¦¥ª¥Ö¥¸¥§¥¯¥È¤ò½é´ü²½
scenarioSO.scenarioMasterData = new ScenarioMasterData();
// Json¥Õ¥¡¥¤¥ë¤ò¸µ¤ËSenarioData¤òºîÀ®¤·¤Æ¡¢Ìá¤êÃͤò¼õ¤±¼è¤ë
scenarioSO.scenarioMasterData = LoadMasterDataFromJson.LoadScenarioMasterDataFromJson();
// ʸ»úÎó¤òŬµ¹¤Ê·¿¤ËÊÑ´¹¤·¤ÆÇÛÎó¤ËÂåÆþ
foreach (ScenarioMasterData.ScenarioData scenarioData in scenarioSO.scenarioMasterData.scenario) {
// 1¹Ô¤Ë¤Þ¤È¤á¤é¤ì¤Æ¤¤¤ë¥á¥Ã¥»¡¼¥¸¤ò¥«¥ó¥Þ¤Î°ÌÃ֤ǶèÀڤäÆÇÛÎó¤Ë½çÈÖ¤ËÆþ¤ì¤ë
scenarioData.messages = scenarioData.messageString.Split(',').ToArray();
¡¡¡¡¡¡¡¡¡¡¡¡
// ɽ¼¨¤¹¤ë¥¥ã¥é¤¬¤¤¤ë¾ì¹ç
if (!string.IsNullOrEmpty(senarioData.charaNoString)) {
¡¡¡¡¡¡¡¡¡¡¡¡// 1¹Ô¤Ë¤Þ¤È¤á¤é¤ì¤Æ¤¤¤ë¥¥ã¥é̾¤ò¥«¥ó¥Þ¤Î°ÌÃ֤ǶèÀڤäơ¢Select¤ò»È¤¤¡¢Ê¸»úÎó¤òEnum¤ÇÍÑ°Õ¤·¤¿¥¥ã¥é¤Î̾Á°¤Ë·¿ÊÑ´¹¡Ê¥¥ã¥¹¥È¡Ë¤·¤ÆÇÛÎó¤Ë½çÈÖ¤ËÆþ¤ì¤ë
senarioData.charaTypes = senarioData.charaNoString.Split(',').Select(x => (CHARA_NAME_TYPE)Enum.Parse(typeof(CHARA_NAME_TYPE), x)).ToArray();
}
¡¡¡¡¡¡¡¡¡¡¡¡// 1¹Ô¤Ë¤Þ¤È¤á¤é¤ì¤Æ¤¤¤ëʬ´ô¤ÎÈÖ¹æ¤ò¥«¥ó¥Þ¤Î°ÌÃ֤ǶèÀڤäơ¢Select¤ò»È¤¤¡¢Ê¸»úÎ󤫤éint·¿¤Ë·¿ÊÑ´¹¤·¤ÆÇÛÎó¤ËÆþ¤ì¤ë
scenarioData.branchs = scenarioData.branchString.Split(',').Select(x => int.Parse(x)).ToArray();
// ɽ¼¨¤¹¤ë¥¥ã¥é¤¬¤¤¤ë¾ì¹ç
if (!string.IsNullOrEmpty(senarioData.displayCharaString)) {
¡¡¡¡ // 1¹Ô¤Ë¤Þ¤È¤á¤é¤ì¤Æ¤¤¤ë¥á¥Ã¥»¡¼¥¸É½¼¨¤Ë¹ç¤ï¤»¤Æɽ¼¨¤¹¤ë¥¥ã¥é¤Î̾Á°¤òȾ³Ñ¥¹¥é¥Ã¥·¥å¤Î°ÌÃ֤ǶèÀڤäƥꥹ¥È¤ËÆþ¤ì¤ë
¡¡¡¡ List<string> strList = scenarioData.displayCharaString.Split('/').ToList();
¡¡¡¡ int i = 0;
¡¡¡¡// Dictinary¤ò½é´ü²½
¡¡¡¡scenarioData.displayCharas = new Dictionary<int, CHARA_NAME_TYPE[]>();
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡// foreach¤ò»È¤¤¥ê¥¹¥È¤ÎÃæ¿È¤ò£±¤Ä¤º¤Ä¼è¤ê½Ð¤·¤ÆstrÊÑ¿ô¤ËÂåÆþ
¡¡¡¡foreach (string str in strList) {
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡// 1¹Ô¤Ë¤Þ¤È¤á¤é¤Æ¤¤¤ë¥á¥Ã¥»¡¼¥¸É½¼¨¤Ë¹ç¤ï¤»¤Æɽ¼¨¤¹¤ë¥¥ã¥é¤Î̾Á°¤ò¥«¥ó¥Þ¤Ç¶èÀڤäơ¢Select¤ò»È¤¤¡¢Ê¸»úÎó¤òEnum¤ÇÍÑ°Õ¤·¤¿¥¥ã¥é¤Î̾Á°¤Ë·¿ÊÑ´¹¡Ê¥¥ã¥¹¥È¡Ë¤·¤ÆÇÛÎó¤Ë½çÈÖ¤ËÆþ¤ì¤ë
¡¡¡¡ CHARA_NAME_TYPE[] displayChara = str.Split(',').Select(x => (CHARA_NAME_TYPE)Enum.Parse(typeof(CHARA_NAME_TYPE), x)).ToArray();
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡// Dictinary¤ËÄɲÃ
¡¡¡¡ scenarioData.displayCharas.Add(i, displayChara);
¡¡¡¡ i++;
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡}
}
}
Debug.Log("Create ScenarioDataList");
}
}
¡¡Á°²óÍÑ°Õ¤·¤¿Json¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤à¥á¥½¥Ã¥É¡ÊLoadMasterDataFromJson.LoadScenarioMasterDataFromJson¡Ë¤ò
GameData¤ÎCreateScenarioDataList¥á¥½¥Ã¥É¤Ç¸Æ¤Ó½Ð¤·¡¢ScenerioData¤òUnity¤ËÅÐÏ¿¤·¤Þ¤¹¡£
¡¡¥Ò¥¨¥é¥ë¥¡¼¾å¤Ç¥á¥Ë¥å¡¼¤òɽ¼¨¤·¡¢Create Empty¤òÁªÂò¤·¤Æ¡¢Ì¾Á°¤òGameData¤ËÊѹ¹¤·¤Þ¤¹¡£
¤³¤ì¤Ï¥Ò¥¨¥é¥ë¥¡¼¾å¤Ë¤¢¤ì¤Ð¤è¤¤¤Î¤Ç¡¢CanvasÆâ¤Ç¤Ê¤¯¤Æ¤âÌäÂꤢ¤ê¤Þ¤»¤ó¡£
¡¡ºîÀ®¤·¤¿GameData¥¹¥¯¥ê¥×¥È¤ò¡¢¤³¤ÎGameData¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë¥¢¥¿¥Ã¥Á¤·¤Þ¤¹¡£ScenarioSO¤È¤¤¤¦¡¢¥¹¥¯¥ê¥×¥¿¥Ö¥ë¡¦¥ª¥Ö¥¸¥§¥¯¥È¤ò¥¢¥µ¥¤¥ó¤Ç¤¤ëÊÑ¿ô¤¬
¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¾å¤Ëɽ¼¨¤µ¤ì¤Þ¤¹¤Î¤Ç¡¢¤³¤Á¤é¤ËProjectÆâ¤ËÍÑ°Õ¤·¤Æ¤¢¤ëScenarioSO¥¹¥¯¥ê¥×¥¿¥Ö¥ë¡¦¥ª¥Ö¥¸¥§¥¯¥È¤ò¥É¥é¥Ã¥°¥¢¥ó¥É¥É¥í¥Ã¥×¤Ç¥¢¥µ¥¤¥ó¤·¤Þ¤¹¡£
¥¹¥¯¥ê¥×¥¿¥Ö¥ë¡¦¥ª¥Ö¥¸¥§¥¯¥È¤òGameData¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ÎGameData¥¯¥é¥¹¤Ë¥¢¥µ¥¤¥ó¤¹¤ëÊýË¡
https://gyazo.com/71170e7ba7501d07eebdcce20268d699
¡¡¼Â¹Ô¤·¤Æ¤ß¤Þ¤·¤ç¤¦¡£
¡¡À®¸ù¤¹¤ì¤ÐScenarioData¤ËJson¤ÇÍÑ°Õ¤·¤¿¥·¥Ê¥ê¥ª¥Ç¡¼¥¿¤¬³Æ¹àÌܤ´¤È¤Ë¼«Æ°Åª¤ËʬÎव¤ì¤ÆÆɤ߹þ¤Þ¤ì¤ÆÅÐÏ¿¤µ¤ì¤Þ¤¹¡£
Æ°²è¤Ç¤¹¡£
https://gyazo.com/22e854dec7086100c9f0a44997bec29d
¡¡¤³¤ì¤ÇExcel¤ÇºîÀ®¤·¤¿¥·¥Ê¥ê¥ª¥Ç¡¼¥¿¤¬Unity¤ËÅÐÏ¿¤µ¤ì¤Æ¡¢¥²¡¼¥àÆâ¤ÇÍøÍѤ¹¤ë½àÈ÷¤¬¤¹¤Ù¤ÆÀ°¤¤¤Þ¤·¤¿¡£