ºÇ½ª¹¹¿·¡§
orika_ex_miyako 2025ǯ09·î24Æü(¿å) 14:33:07ÍúÎò
¡¡¥²¡¼¥à³«È¯¤ò¤·¤Æ¤¤¤ë¤È¡¢¥¥ã¥é¥¯¥¿¡¼¥Ç¡¼¥¿¡¢¥¢¥¤¥Æ¥à¥Ç¡¼¥¿¡¢¥¹¥¥ë¥Ç¡¼¥¿¤Ê¤É¡¢ËÄÂç¤Ê¡Ö¥Þ¥¹¥¿¡¼¥Ç¡¼¥¿¡×¤ò¡Ö¥Æ¡¼¥Ö¥ë¡×¤È¤·¤Æ°·¤¦É¬Íפ¬¤¢¤ê¤Þ¤¹¡£
Unity ¤Ç¤Ï¥¹¥¯¥ê¥×¥¿¥Ö¥ë¥ª¥Ö¥¸¥§¥¯¥È¤òÍøÍѤ·¤¿¥Æ¡¼¥Ö¥ë´ÉÍý¤ÎÊýË¡¤¬¤¢¤ê¤Þ¤¹¡£
¡¡¤³¤Á¤é¤Îµ»ö¤Ç¤Ï¡Ö¥¹¥×¥ì¥Ã¥É¥·¡¼¥È ¢ª Json ¢ª PlayFab TitleData ¢ª ¥²¡¼¥àÆâ¥Æ¡¼¥Ö¥ë¡×¤È¤¤¤¦°ìÏ¢¤Î¥Ç¡¼¥¿¥Õ¥í¡¼¤ò¡¢¥¸¥§¥Í¥ê¥Ã¥¯·¿¤È¥·¥ó¥°¥ë¥È¥ó¥Ñ¥¿¡¼¥ó¤ò»È¤Ã¤Æ¥·¥ó¥×¥ë¤Ë´ÉÍý¤¹¤ëÊýË¡¤È³èÍÑ»öÎã¤ò¾Ò²ð¤·¤Þ¤¹¡£
¡¡º£²ó¤ÎÀ߷פǤϡ¢¥Þ¥¹¥¿¡¼¥Ç¡¼¥¿´ÉÍý¤ÎÃæ³Ë¤È¤Ê¤ë¥¯¥é¥¹¤È¤·¤Æ MasterTableBase ¥¯¥é¥¹¤È TitleDataManager ¥¯¥é¥¹¤òÍѰդ·¤Þ¤¹¡£
¡¡MasterTableBase ¥¯¥é¥¹¤Ï MasterTableBase<T, U> ¤È¤·¤Æ¥¸¥§¥Í¥ê¥Ã¥¯·¿¤ÇÄêµÁ¤ò¹Ô¤¤¡¢¥Æ¡¼¥Ö¥ëÍÑ¥¯¥é¥¹¤Î¿Æ¥¯¥é¥¹¤È¤·¤ÆÍøÍѤ¹¤ëÌÜŪ¤ÇºîÀ®¤·¤Þ¤¹¡£
³Æ¥Þ¥¹¥¿¡¼¥Ç¡¼¥¿¤Î¥Æ¡¼¥Ö¥ëÍÑ¥¯¥é¥¹¤Ï MasterTableBase<T, U> ¤ò·Ñ¾µ¤·¤¿¥¯¥é¥¹¤È¤Ê¤ê¡¢¤³¤Á¤é¤Ç¥Þ¥¹¥¿¡¼¥Ç¡¼¥¿¤ò¥ê¥¹¥È¤È¤·¤ÆÊÝ»ý¤¹¤ë¤³¤È¤Ç¥Æ¡¼¥Ö¥ë¤È¤·¤Æ¤Îµ¡Ç½¤ò»ý¤Á¤Þ¤¹¡£
¡¡TitleDataManager ¥¯¥é¥¹¤Ï¡¢PlayFab ¤«¤é¼èÆÀ¤·¤¿ TitleData ¤ò³Æ¥Æ¡¼¥Ö¥ë¤Ë¿¶¤êʬ¤±¤ëÌò³ä¤òô¤¤¤Þ¤¹¡£
¤½¤·¤Æ³Æ¥Æ¡¼¥Ö¥ë¤ò¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¤Ç²Ä»ë²½¤¹¤ëÌÜŪ¤ÇºîÀ®¤·¤Þ¤¹¡£
¡¡¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¤Ç¤Î²Ä»ë²½¤âÌÜŪ¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤¿¤á¡¢¥Ò¥¨¥é¥ë¥¡¼¾å¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î¹½Â¤¤Ï²¼µ¤Î¤è¤¦¤Ê·Á¤Ë¤Ê¤ê¤Þ¤¹¡£
¡¡¥ª¥Ö¥¸¥§¥¯¥È¤Î̾¾Î¤Ë¤Ä¤¤¤Æ¤Ï¡¢¡Á Master¡¢¡Á MasterTable ¤Î¤¤¤º¤ì¤Ç¤âÌäÂê¤Ê¤¤¤Ç¤¹¡£
¤³¤³¤Ç¤ÏÎã¤È¤·¤ÆÊ¬¤±¤ÆµºÜ¤·¤Æ¤¤¤Þ¤¹¤¬¡¢¤´¼«Ê¬¤Î¥×¥í¥¸¥§¥¯¥È¤Ë±þ¤¸¤Æ¡¢¤¤¤º¤ì¤«¤Ë̾¾Î¤òÅý°ì¤·¤ÆÍøÍѤ¹¤ë¤È¤è¤¤¤Ç¤·¤ç¤¦¡£
¡ã¥Ò¥¨¥é¥ë¥¡¼¹½Â¤Îã¡ä
TitleDataManager (GameObject) ¡¡¨§¨¡ ActiveSkillMasterTable (GameObject) ¡¡¨§¨¡ CharaMasterTable (GameObject) ¡¡¨§¨¡ ItemMasterTable (GameObject) ¡¡¨¦¨¡ ...¡Ê¾¤Î¥Æ¡¼¥Ö¥ë¤â¤³¤³¤ËÄɲáË
¥µ¥ó¥×¥ë²èÁü(¤³¤Á¤é¤Ç¤Ï¥µ¥ó¥×¥ë¤Î¤¿¤á¡¢Ì¾¾Î¤òξÊý¤ÇÍѰդ·¤Æ¤¤¤Þ¤¹)

¡¡¥¸¥§¥Í¥ê¥Ã¥¯·¿¤Î¥¯¥é¥¹ MasterTableBase<T, U> ¤ò»È¤¦¤³¤È¤Ç¡¢¤É¤Î¥Þ¥¹¥¿¡¼¥Ç¡¼¥¿¤âƱ¤¸»ÅÁȤߤǡ¢°Û¤Ê¤ë¥Þ¥¹¥¿¡¼¥Æ¡¼¥Ö¥ë¤ò£±¹Ô¡Á¿ô¹Ô¤Ç¼ÂÁõ¤Ç¤¤Þ¤¹¡£
¡¡MasterTableBase ¥¯¥é¥¹¤Ë¤Ï¡¢»ØÄꤷ¤¿ ID ¤Ç¸¡º÷¤ò¹Ô¤¦¥á¥½¥Ã¥É¤Ê¤É¤¬¼ÂÁõ¤µ¤ì¤Æ¤¤¤ë¤Î¤Ç¡¢¤ï¤¶¤ï¤¶Æ±¤¸¤è¤¦¤Ê¥á¥½¥Ã¥É¤òÊ£¿ô¤Î¥¯¥é¥¹¤ËµºÜ¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤»¤ó¡£
¤½¤Î¤¿¤á¡¢¤½¤Î¥Þ¥¹¥¿¡¼¥Æ¡¼¥Ö¥ë¤ÇÍøÍѤ·¤¿¤¤¥á¥½¥Ã¥É¤Î¤ß¤òÄɲ乤뤳¤È¤Ç¼ÂÁõ¤¬ºÑ¤ß¤Þ¤¹¡£
¡¡¥·¥ó¥°¥ë¥È¥ó²½¤µ¤ì¤Æ¤¤¤ë¤¿¤á CharaMasterTable.instance.GetData(id) ¤Î¤è¤¦¤Ë¡¢¥Þ¥¹¥¿¡¼¥Æ¡¼¥Ö¥ëÍѤΥ¯¥é¥¹¤ò»ØÄꤷ¡¢¶¦Ä̤Υ᥽¥Ã¥É¤Ç´Êñ¤Ë¥¢¥¯¥»¥¹¤Ç¤¤Þ¤¹¡£
´·¤ì¤Æ¤¤¿¤é DI ¥³¥ó¥Æ¥Ê²½¤â»ëÌî¤ËÆþ¤ì¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£
¡¡¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¤è¤ê³Æ¥Þ¥¹¥¿¡¼¥Ç¡¼¥¿¤ò³Îǧ¤Ç¤¤ë¤¿¤á¡¢Æ°ºî³Îǧ¡¢¥Ç¡¼¥¿¤ÎÉÔÀ°¹ç¡¢ÉÔ¶ñ¹ç¤ÎÄ´ºº¤¬Íưפˤʤê¤Þ¤¹¡£
¡¡¿·¤·¤¤¥Þ¥¹¥¿¡¼¥Ç¡¼¥¿¤òÄɲ乤ë¤È¤¤Ï¡¢¥Þ¥¹¥¿¡¼¥Ç¡¼¥¿¤Î¹½Â¤¤ò»ý¤Ä¥¯¥é¥¹¡¢¥Æ¡¼¥Ö¥ëÍѤλҥ¯¥é¥¹(MasterTableBase ¤ò·Ñ¾µ)¤Î£²¤Ä¤Î¥¯¥é¥¹¤òÍѰդ·¡¢
¤¢¤È¤Ï TitleDataManager ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î»Ò¥ª¥Ö¥¸¥§¥¯¥È¤ò 1 ¤ÄÄɲ乤ë¤À¤±¤ÇÂбþ²Äǽ¤Ç¤¹¡£
¡¡Playfab ¤Ç¤¢¤ì¤Ð¡¢TitleData ¤Ë Json ¥Õ¥¡¥¤¥ë¤ÎÆâÍÆ¤ò¤½¤Î¤Þ¤ÞÇÛÃÖ²Äǽ¤Ç¤¹¤Î¤Ç¡¢¥Þ¥¹¥¿¡¼¥Ç¡¼¥¿¤ÎÄɲä佤Àµ¤¬ÍưפˤǤ¤Þ¤¹¡£
¡¡°Ê¾å¤Î¤è¤¦¤Ê¥á¥ê¥Ã¥È¤¬¤¢¤²¤é¤ì¤Þ¤¹¡£
¡¡¤Þ¤º¤Ï Google ¥¹¥×¥ì¥Ã¥É¥·¡¼¥È¤ä Excel ¤Ç¥Ç¡¼¥¿¤òºîÀ®¤·¤Þ¤¹¡£
Îó¤òÊÑ¿ô̾¡¢¹Ô¤ò¥Ç¡¼¥¿¥ì¥³¡¼¥É¤È¤·¤ÆÆþÎϤ·¤Æ¤¯¤À¤µ¤¤¡£
»²¹Í²èÁü

¡¡£±¤Ä¤Î¥·¡¼¥È¤Ë¤Ä¤¡¢£±¤Ä¤Î¼ïÎà¤Î¥Þ¥¹¥¿¡¼¥Ç¡¼¥¿¤Ë¤Ê¤ê¤Þ¤¹(¥¹¥×¥ì¥Ã¥É¥·¡¼¥È¤Ï£±¤Ä¤Ç¤¹)¡£
Î㤨¤Ð¡¢Å¨¤Î¥Þ¥¹¥¿¡¼¥Ç¡¼¥¿¡¢¥¹¥¥ë¤Î¥Þ¥¹¥¿¡¼¥Ç¡¼¥¿¤Î£²¤Ä¤òºîÀ®¤·¤¿¤¤¤Î¤Ç¤¢¤ì¤Ð¡¢£±¤Ä¤Î¥¹¥×¥ì¥Ã¥É¥·¡¼¥ÈÆâ¤Ë¡¢£²¤Ä¤Î¥·¡¼¥È¤Ëʬ¤±¤ÆºîÀ®¤·¤Þ¤¹¡£
»²¹Í²èÁü

¡¡¤½¤Î¸å¡¢³Æ¥·¡¼¥È¤ò Json ·Á¼°¤Î¥Õ¥¡¥¤¥ë¤È¤·¤Æ½ÐÎϤ·¤Æ¤¯¤À¤µ¤¤¡£
PlayFab ¤Î TitleData ¤Ë¤Ï Json ·Á¼°¤ÇÅÐÏ¿¤¹¤ëɬÍפ¬¤¢¤ë¤¿¤á¤Ç¤¹¡£
¡¡¥¹¥×¥ì¥Ã¥É¥·¡¼¥È¤òÍøÍѤ·¤Æ¤¤¤ë¾ì¹ç¤Ë¤Ï¡¢²¼µ¤Îµ»ö¤ò»²¹Í¤·¤Æ¤¤¤¿¤À¤¯¤È Json ¥Õ¥¡¥¤¥ë¤ò½ñ¤½Ð¤¹¤³¤È¤¬²Äǽ¤Ç¤¹¡£
¡¡¡¡=>¡¡¥¹¥×¥ì¥Ã¥É¥·¡¼¥È¤ÎÆâÍÆ¤ò Json ·Á¼°¤Ç½ñ¤½Ð¤¹(ÇÛÎóÂбþ)
¡¡¥¹¥×¥ì¥Ã¥É¥·¡¼¥È¤Ê¤É¤Î³Æ¥Þ¥¹¥¿¡¼¥Ç¡¼¥¿¤ò Json ¥Õ¥¡¥¤¥ë¤ËÊÑ´¹¤·¤¿¤é¡¢PlayFab ¤Î TitleData ¤ËÅÐÏ¿¤·¤Þ¤¹¡£
¡¡PlayFab ¤Î GameManager ²èÌ̤«¤é ¥³¥ó¥Æ¥ó¥Ä ¢ª ¥¿¥¤¥È¥ë¥Ç¡¼¥¿¤òÁªÂò¤·¡¢¿·¤·¤¤¥¿¥¤¥È¥ë¥Ç¡¼¥¿¤òºîÀ®¤·¤Þ¤¹¡£
Key ¤Ë¤Ï ¥Þ¥¹¥¿¡¼¥Ç¡¼¥¿¤Î̾¾Î(SkillMaster ¤ä CharaMasterData ¤Ê¤É)¤ÈÅÐÏ¿¤·¡¢Value ¤Ë¤ÏÁ°²ó¤Î¼ê½ç¤Ç Json ·Á¼°¤Ç½ñ¤½Ð¤·¤Æ¤¤¤ë¥Õ¥¡¥¤¥ë¤ÎÆâÍÆ¤ò¤½¤Î¤Þ¤ÞޤêÉÕ¤±¤Þ¤¹¡£
¥·¡¼¥È¤Î̾¾Î¤ÈƱ¤¸¤ËÀßÄꤷ¤Æ¤ª¤¯¤È¤è¤¤¤Ç¤·¤ç¤¦¡£
ÅÐÏ¿Îã
SkillMaster ¢ª [{ "id": 1, "name": "Fire", ... }, ...]
CharaMaster ¢ª [ ... ]
»²¹Í²èÁü

¡¡¥¹¥×¥ì¥Ã¥É¥·¡¼¥È¤ÇºîÀ®¤·¤¿¥Þ¥¹¥¿¡¼¥Ç¡¼¥¿¤ò¼è¤ê¹þ¤à¤¿¤á¤Î¡¢¥Þ¥¹¥¿¡¼¥Ç¡¼¥¿ÍÑ¥¯¥é¥¹¤òºîÀ®¤·¤Þ¤¹¡£
¥¹¥×¥ì¥Ã¥É¥·¡¼¥È¤ÈƱ¤¸¥×¥í¥Ñ¥Æ¥£Ì¾¤ò public ¤ÎÊÑ¿ô¤È¤·¤ÆÍѰդ·¤Æ¤¯¤À¤µ¤¤¡£
¡¡¥µ¥ó¥×¥ë¤Ç¤¹¡£
¡ã¥Þ¥¹¥¿¡¼¥Ç¡¼¥¿ÍÑ¥¯¥é¥¹¡ä
[System.Serializable]
public class ActiveSkillMaster : IMasterData {
public int Id;
public string effect;
public int priority;
// ÄɲäΥե£¡¼¥ë¥É...
}
¡¡Â³¤¤¤Æ¡¢´ðÄ쥯¥é¥¹(MasterTableBase)¤ò·Ñ¾µ¤·¤Æ¡¢Àè¤Û¤ÉºîÀ®¤·¤¿¥Þ¥¹¥¿¡¼¥Ç¡¼¥¿¤ò¥Æ¡¼¥Ö¥ë¤È¤·¤Æ´ÉÍý¤¹¤ë¤¿¤á¤Î¥¯¥é¥¹¤òÍѰդ·¤Æ¤¤¤¤Þ¤¹¡£
£±¤Ä¤Î¥Þ¥¹¥¿¡¼¥Ç¡¼¥¿¤Î¥Æ¡¼¥Ö¥ë¤Ë¤Ä¤¡¢´ðÄ쥯¥é¥¹¤ò·Ñ¾µ¤·¤¿£±¤Ä¤Î»Ò¥¯¥é¥¹¤òºîÀ®¤·¤Æ¤¯¤À¤µ¤¤¡£
¡¡¿·¤·¤¤¥Þ¥¹¥¿¡¼¥Ç¡¼¥¿¤ò¥Æ¡¼¥Ö¥ë¤È¤·¤ÆÄɲä·¤¿¤¤¾ì¹ç¤Ë¤Ï¡¢¥¯¥é¥¹¤ò 1 ¹Ô¤ÇÄêµÁ¤Ç¤¤Þ¤¹¡£
ÆÃ¤Ë¿·¤·¤¤ÊÑ¿ô¤ä¥á¥½¥Ã¥É¤ÎÅÐÏ¿¤âÉÔÍפǤ¹¡£¤½¤Î¥Æ¡¼¥Ö¥ë¤ËɬÍפʾðÊó¤À¤±¤òÄɵ¤·¤Æ¤¯¤À¤µ¤¤¡£
¡ã¥Æ¡¼¥Ö¥ëÍѻҥ¯¥é¥¹¡ä
public class ActiveSkillMasterTable : MasterTableBase<ActiveSkillMaster, ActiveSkillMasterTable> {}
¡¡PlayFab ¤Ë¥í¥°¥¤¥ó¤·¡¢LoginResult ¤Ç¼èÆÀ¤·¤¿ TitleData ¤è¤ê¡¢¥Þ¥¹¥¿¡¼¥Ç¡¼¥¿¤ò¤Þ¤È¤á¤Æ¥¥ã¥Ã¥·¥å¤·¤Þ¤¹¡£
PlayFab ¤Ø¤Î¥í¥°¥¤¥óÊýË¡¤Ë¤Ä¤¤¤Æ¤Ï³ä°¦¤·¤Þ¤¹¡£µ»ö¤¬¤¿¤¯¤µ¤ó¤¢¤ê¤Þ¤¹¤Î¤Ç¡¢¤´¼«Ê¬¤Î´Ä¶¤Ë¹ç¤ï¤»¤Æ¡¢¤½¤ì¤é¤ò»²¹Í¤Ë¤·¤Æ¼ÂÁõ¤·¤Æ¤¯¤À¤µ¤¤¡£
(async/await ¤ÇÈ󯱴ü½èÍý¤¬¤«¤±¤ë¤Î¤Ç¡¢PlayFab C# SDK ¤òÍøÍѤ·¤¿¼ÂÁõ¤¬¤ª¤¹¤¹¤á¤Ç¤¹¡£)
¡¡³Æ¥Æ¡¼¥Ö¥ë¥¯¥é¥¹¤Ë¥Ç¡¼¥¿¤òÅϤ·¤Æ Set() ¥á¥½¥Ã¥É¤ò¼Â¹Ô¤¹¤ë¤³¤È¤Ç¥Æ¡¼¥Ö¥ë¤È¤·¤Æ¼è¤ê¹þ¤ß¤Þ¤¹¡£
¡¡¤³¤³¤Ç¤Ï JsonHelper ¥¯¥é¥¹¤È AbstractSingleton ¥¯¥é¥¹¤òÍøÍѤ·¤Þ¤¹¡£
¡¡¤³¤Á¤é¤ò»²¹Í¤Ë¤·¤ÆºîÀ®¤·¤Æ¤«¤é¡¢¤³¤Á¤é¤Î½èÍý¤ò¼ÂÁõ¤·¤Æ¤¯¤À¤µ¤¤¡£
JsonHelper ¥¯¥é¥¹
¡¡¡¡¢ª¡¡¥í¡¼¥«¥é¥¤¥ºÂбþ¤Î¼ÂÁõÎã¢
AbstractSingleton ¥¯¥é¥¹
¡¡¡¡¢ª¡¡¥¢¥¤¥Æ¥à³ÍÆÀ»þ¤Î¥í¥°É½¼¨µ¡Ç½¤Î¼ÂÁõÎã£
¡¡¡¡¥µ¥ó¥×¥ë¤Ç¤¹¡£
using System.Collections.Generic;
public class TitleDataManager : AbstractSingleton<TitleDataManager> {
public ActiveSkillMasterTable activeSkillMasterTable;
public CharaMasterTable charaMasterTable;
// ¾¤Î¥Þ¥¹¥¿¡¼¥Æ¡¼¥Ö¥ë¤â¤³¤³¤ËÄɲÃ
/// <summary>
/// PlayFab ¤«¤é¼èÆÀ¤·¤¿¥Ç¡¼¥¿·²¤ò¥í¡¼¥«¥ë(üËö)¤Î¥Æ¡¼¥Ö¥ë¤Ë¥¥ã¥Ã¥·¥å
/// </summary>
/// <param name="loginResult"></param>
/// <returns></returns>
public void CacheTilteData(Dictionary<string, string> titleData) {
activeSkillMasterTable.Set(JsonHelper.ListFromJson<ActiveSkillMaster>(titleData["ActiveSkillMaster"]));
charaMasterTable.Set(JsonHelper.ListFromJson<CharaMaster>(titleData["CharaMaster"]));
// ¾¤Î¥Þ¥¹¥¿¡¼¥Æ¡¼¥Ö¥ë¤âƱÍͤËÄɲÃ
}
}
¡¡¥Ò¥¨¥é¥ë¥¡¼¤Ë¤Æ Create Empty ¤ò¹Ô¤¤¿·¤·¤¤¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤òºîÀ®¤·¡¢Ì¾Á°¤ò TitleDataManager ¤ËÊѹ¹¤·¤Þ¤¹¡£
¡¡TitleDataManager ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î»Ò¥ª¥Ö¥¸¥§¥¯¥È¤È¤·¤Æ³Æ¥Æ¡¼¥Ö¥ë¤òÄɲ䷤Ƥ¤¤¤Þ¤¹¡£
¤Ê¤ª»Ò¥ª¥Ö¥¸¥§¥¯¥È¤Ï¡¢¥Æ¡¼¥Ö¥ë̾¤ò¥¢¥ë¥Õ¥¡¥Ù¥Ã¥È½ç¤Ëʤ٤ÆÃÖ¤¯¤È¡¢»ØÄê¤Î¥Þ¥¹¥¿¡¼¥Æ¡¼¥Ö¥ë¤ò¸«¤Ä¤±¤ä¤¹¤¤¤Ç¤¹¡£


¡¡³Æ¥Þ¥¹¥¿¡¼¥Ç¡¼¥¿¤Î List(¥Ç¡¼¥¿¤ÎÃæ¿È)¤Ï 0 ¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£


¡¡¥²¡¼¥àµ¯Æ°¸å¡¢¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¤«¤é PlayFab ¤Î TitleData ¤è¤ê³Æ¥Þ¥¹¥¿¡¼¥Ç¡¼¥¿¤¬¥í¡¼¥É¤µ¤ì¤Æ¤¤¤ë¤³¤È¤ò³Îǧ¤·¤Æ¤¯¤À¤µ¤¤¡£


¡¡MasterTableBase ¤Ï T : IMasterData À©Ìó¤ò»ý¤Ã¤Æ¤¤¤ë¤Î¤Ç¡¢²¼µ¤Î¤è¤¦¤Ê¥á¥½¥Ã¥É¤òÍѰդ¹¤ë¤³¤È¤Ë¤è¤ê¡¢ID ¥Ù¡¼¥¹¤Î¸¡º÷½èÍý¤òÈÆÍѲ½¤Ç¤¤Þ¤¹¡£
¥á¥½¥Ã¥É¤òµºÜ¤¹¤ë¥¯¥é¥¹¤Ï TitleDataManager ¤Ê¤É¤Î¥·¥ó¥°¥ë¥È¥ó¥¯¥é¥¹¡¢¤Ê¤¤¤·¤Ï¥æ¡¼¥Æ¥£¥ê¥Æ¥£ÍѤΠstatic ¥¯¥é¥¹¤¬¤¤¤¤¤Ç¤·¤ç¤¦¡£
¡¡¤³¤Î¾ì¹ç¡¢AbstractSingleton ¥¯¥é¥¹¤¬ public ¤Î instance ÊÑ¿ô¤«»²¾È²Äǽ¤Ê¥×¥í¥Ñ¥Æ¥£¤òÊÝ»ý¤·¤Æ¤¤¤ëÁ°Äó¤Ç¤¹¡£
public T FindById<T, U>(int id) where T : IMasterData where U : MasterTableBase<T, U> { // static ¥¯¥é¥¹¤Î¾ì¹ç¤Ë¤Ï static ¤òÄɲ乤ë
return AbstractSingleton<U>.instance.GetData(id);
}
var chara = FindById<CharaMaster, CharaMasterTable>(1001);
Debug.Log($"¥¥ã¥é̾: {chara.name}");
¡¡¤É¤Î¥Þ¥¹¥¿¡¼¥Æ¡¼¥Ö¥ë¤Ç¤â¡¢Æ±¤¸¸Æ¤Ó½Ð¤·Êý¤Ç ID ¸¡º÷¤¬²Äǽ¤Ë¤Ê¤ê¤Þ¤¹¡£
¡¡Ê£¿ô¤Î¥Þ¥¹¥¿¡¼¥Ç¡¼¥¿¤¬ IHasIcon ¤ò¼ÂÁõ¤·¤Æ¤¤¤ì¤Ð¡¢¥¢¥¤¥³¥ó¼èÆÀ½èÍý¤ò¤Ò¤È¤Ä¤Ë¤Þ¤È¤á¤é¤ì¤Þ¤¹¡£
public Sprite GetIcon<T>(T data) where T : IHasIcon {
string iconId = data.IconId;
return IconLoader.Load(iconId); // Ǥ°Õ¤Î¥¢¥¤¥³¥óÆÉ¤ß¹þ¤ß½èÍý
}
var item = ItemMasterTable.instance.GetData(2001); var icon = GetIcon(item);
¡¡¤â¤· IHasIcon ¤ò»ý¤¿¤Ê¤¤¥Ç¡¼¥¿¤¬Íè¤Æ¤â°ÂÁ´¤Ë¥Ï¥ó¥É¥ê¥ó¥°²Äǽ¤Ç¤¹¡£
public Sprite TryGetIcon(object data) {
if (data is IHasIcon iconHolder) {
return IconLoader.Load(iconHolder.IconId);
}
Debug.Log($"{data.GetType().Name} ¤Ï¥¢¥¤¥³¥ó¤ò»ý¤Á¤Þ¤»¤ó");
return null;
}
¡¡¥Þ¥¹¥¿¡¼¥Ç¡¼¥¿¤Î¼ïÎà¤Ë¤è¤Ã¤Æ½èÍý¤òÀÚ¤êÂØ¤¨¤¿¤¤¾ì¹ç¡¢is ¤ò»È¤Ã¤¿Ê¬´ô¤¬ÊØÍø¤Ç¤¹¡£
public void PrintMasterInfo(IMasterData data) {
if (data is ActiveSkillMaster skill) {
Debug.Log($"¥¹¥¥ë̾: {skill.Id}, ¸ú²Ì: {skill.effect}");
}
else if (data is CharaMaster chara) {
Debug.Log($"¥¥ã¥é̾: {chara.name}, ¥ì¥¢¥ê¥Æ¥£: {chara.rarity}");
}
else {
Debug.Log($"ÈÆÍÑ¥Þ¥¹¥¿¡¼¥Ç¡¼¥¿: {data.Id}");
}
}
¡¡¤³¤Î»ÅÁȤߤò»È¤¨¤Ð¡¢¥Þ¥¹¥¿¡¼¥Ç¡¼¥¿¤ò°ì³ç¤Ç¥ë¡¼¥×¤·¤Æ¼ïÎऴ¤È¤Ë½èÍý¤¹¤ë¤³¤È¤â²Äǽ¤Ç¤¹¡£
¡¡IMasterTable ¤È¤¤¤¦¶õ¤Î¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤òºî¤Ã¤Æ¡¢¤¹¤Ù¤Æ¤Î¥Æ¡¼¥Ö¥ë¤Ë¼ÂÁõ¤µ¤»¤ë¤È¡¢¥Ò¥¨¥é¥ë¥¡¼¤Î»Ò¥ª¥Ö¥¸¥§¥¯¥È¤Ë¥¢¥¿¥Ã¥Á¤µ¤ì¤¿¥Æ¡¼¥Ö¥ë¤ò°ì³ç¤Ç½èÍý¤Ç¤¤Þ¤¹¡£
using System.Linq;
/// <summary>
/// ³Æ¥Þ¥¹¥¿¡¼¥Æ¡¼¥Ö¥ë¥¯¥é¥¹¤Ë¼ÂÁõ¤¹¤ë
/// </summary>
public interface IMasterTable {
// Ãæ¿È¤Ï¶õ¤Ç¤è¤¤
}
public void LogAllMasterCounts() {
var tables = GetComponentsInChildren<Component>()
.Where(c => c is IMasterTable) // ¥Þ¡¼¥«¡¼ÍÑ¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤òÉÕÍ¿¤·¤Æ¤ª¤¯
.Cast<IMasterTable>();
foreach (var table in tables) {
Debug.Log($"{table.GetType().Name}: {table.Count} ·ï");
}
}
¡¡¤³¤ì¤Ë¤è¤ê¡¢¿·¤·¤¤¥Þ¥¹¥¿¡¼¥Ç¡¼¥¿¤¬Áý¤¨¤Æ¤â¡¢¤Û¤Ü¥Î¡¼¥³¥¹¥È¤Ç´û¸¤Î»ÅÁȤߤ˾褻¤é¤ì¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
¡¡¤³¤ÎÀß·×(MasterTableBase ¥¯¥é¥¹)¤Ë¤è¤ê¡¢¶¦Ä̲½¤µ¤ì¤¿¥Þ¥¹¥¿¡¼¥Ç¡¼¥¿´ÉÍý¤¬²Äǽ¤Ë¤Ê¤ê¤Þ¤¹¡£
¥³¡¼¥ÉÎ̤òÂçÉýºï¸º¤Ç¤¤Þ¤¹¤Î¤Ç¡¢¥Þ¥¹¥¿¡¼¥Ç¡¼¥¿¤ÎÄɲá¦Êѹ¹¤¬ÍưפˤʤꡢÊݼ饳¥¹¥È¤âºï¸º¤µ¤ì¤Þ¤¹¡£
¡¡PlayFab ¤è¤ê¥Þ¥¹¥¿¡¼¥Ç¡¼¥¿¤ò¥Æ¡¼¥Ö¥ë¤È¤·¤Æ TitleDataManager ¤Ç°ì³ç¥í¡¼¥É¤Ç¤¤ë¤Î¤Ç¥á¥ó¥Æ¥Ê¥ó¥¹¤â³Ú¤Ë¤Ê¤ê¤Þ¤¹¡£
¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¤Ç¥Ç¡¼¥¿¤ò³Îǧ²Äǽ¤Ê¤Î¤Ç¡¢¥Ç¥Ð¥Ã¥°¸úΨ¤â¸þ¾å¤·¤Þ¤¹¡£
¡¡¤³¤Î¥Ñ¥¿¡¼¥ó¤òƳÆþ¤¹¤ì¤Ð¡¢¿·¤·¤¤¥Þ¥¹¥¿¡¼¥Ç¡¼¥¿Äɲäâ¿ôʬ¤Ç´°Î»¤Ç¤¤Þ¤¹¤Î¤Ç¡¢
±¿ÍÑ¥³¥¹¥È¤òÍÞ¤¨¤Ê¤¬¤é¥Ç¡¼¥¿¤ò³ÈÄ¥¤Ç¤¤Þ¤¹¤·¡¢º£¸å¡¢¥Ç¡¼¥¿¹¹¿·¤äº¹Ê¬ÇÛ¿®µ¡Ç½¤òÄɲ乤ëºÝ¤Ë¤â¡¢Æ±¤¸¹½Â¤¤òήÍѤǤ¤Þ¤¹¡£
¡¡°Ê¾å¤Ë¤Ê¤ê¤Þ¤¹¡£
- ¥«¥Æ¥´¥ê¡§
- ¿Ê³Ø/¥¹¥¯¡¼¥ë
- ¥×¥í¥°¥é¥ß¥ó¥°




¥³¥á¥ó¥È¤ò¤«¤¯