Unity¤Ë´ØÏ¢¤¹¤ëµ­»ö¤Ç¤¹

¡ß

¤Ï¤¸¤á¤Ë


¡¡¥²¡¼¥à³«È¯¤ò¤·¤Æ¤¤¤ë¤È¡¢¥­¥ã¥é¥¯¥¿¡¼¥Ç¡¼¥¿¡¢¥¢¥¤¥Æ¥à¥Ç¡¼¥¿¡¢¥¹¥­¥ë¥Ç¡¼¥¿¤Ê¤É¡¢ËÄÂç¤Ê¡Ö¥Þ¥¹¥¿¡¼¥Ç¡¼¥¿¡×¤ò¡Ö¥Æ¡¼¥Ö¥ë¡×¤È¤·¤Æ°·¤¦É¬Íפ¬¤¢¤ê¤Þ¤¹¡£
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 / ³°Éô¥µ¡¼¥Ð¡¼¤È¤Î¿ÆÏÂÀ­¤¬¹â¤¤

¡¡Playfab ¤Ç¤¢¤ì¤Ð¡¢TitleData ¤Ë Json ¥Õ¥¡¥¤¥ë¤ÎÆâÍÆ¤ò¤½¤Î¤Þ¤ÞÇÛÃÖ²Äǽ¤Ç¤¹¤Î¤Ç¡¢¥Þ¥¹¥¿¡¼¥Ç¡¼¥¿¤ÎÄɲä佤Àµ¤¬ÍưפˤǤ­¤Þ¤¹¡£


¡¡°Ê¾å¤Î¤è¤¦¤Ê¥á¥ê¥Ã¥È¤¬¤¢¤²¤é¤ì¤Þ¤¹¡£


¼ÂÁõ¼ê½ç

£±¡¥ ¥¹¥×¥ì¥Ã¥É¥·¡¼¥È¤Ç¥Þ¥¹¥¿¡¼¥Ç¡¼¥¿¤òºîÀ®¤·¡¢Json ·Á¼°¤Ç¥Õ¥¡¥¤¥ë½ÐÎϤ¹¤ë


¡¡¤Þ¤º¤Ï Google ¥¹¥×¥ì¥Ã¥É¥·¡¼¥È¤ä Excel ¤Ç¥Ç¡¼¥¿¤òºîÀ®¤·¤Þ¤¹¡£
Îó¤òÊÑ¿ô̾¡¢¹Ô¤ò¥Ç¡¼¥¿¥ì¥³¡¼¥É¤È¤·¤ÆÆþÎϤ·¤Æ¤¯¤À¤µ¤¤¡£


»²¹Í²èÁü




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


»²¹Í²èÁü




¡¡¤½¤Î¸å¡¢³Æ¥·¡¼¥È¤ò Json ·Á¼°¤Î¥Õ¥¡¥¤¥ë¤È¤·¤Æ½ÐÎϤ·¤Æ¤¯¤À¤µ¤¤¡£
PlayFab ¤Î TitleData ¤Ë¤Ï Json ·Á¼°¤ÇÅÐÏ¿¤¹¤ëɬÍפ¬¤¢¤ë¤¿¤á¤Ç¤¹¡£

¡¡¥¹¥×¥ì¥Ã¥É¥·¡¼¥È¤òÍøÍѤ·¤Æ¤¤¤ë¾ì¹ç¤Ë¤Ï¡¢²¼µ­¤Îµ­»ö¤ò»²¹Í¤·¤Æ¤¤¤¿¤À¤¯¤È Json ¥Õ¥¡¥¤¥ë¤ò½ñ¤­½Ð¤¹¤³¤È¤¬²Äǽ¤Ç¤¹¡£

¡¡¡¡=>¡¡¥¹¥×¥ì¥Ã¥É¥·¡¼¥È¤ÎÆâÍÆ¤ò Json ·Á¼°¤Ç½ñ¤­½Ð¤¹(ÇÛÎóÂбþ)


£²¡¥PlayFab ¤Î TitleData ¤Ë Json ¥Ç¡¼¥¿¤òÅÐÏ¿


¡¡¥¹¥×¥ì¥Ã¥É¥·¡¼¥È¤Ê¤É¤Î³Æ¥Þ¥¹¥¿¡¼¥Ç¡¼¥¿¤ò Json ¥Õ¥¡¥¤¥ë¤ËÊÑ´¹¤·¤¿¤é¡¢PlayFab ¤Î TitleData ¤ËÅÐÏ¿¤·¤Þ¤¹¡£

¡¡PlayFab ¤Î GameManager ²èÌ̤«¤é ¥³¥ó¥Æ¥ó¥Ä ¢ª ¥¿¥¤¥È¥ë¥Ç¡¼¥¿¤òÁªÂò¤·¡¢¿·¤·¤¤¥¿¥¤¥È¥ë¥Ç¡¼¥¿¤òºîÀ®¤·¤Þ¤¹¡£
Key ¤Ë¤Ï ¥Þ¥¹¥¿¡¼¥Ç¡¼¥¿¤Î̾¾Î(SkillMaster ¤ä CharaMasterData ¤Ê¤É)¤ÈÅÐÏ¿¤·¡¢Value ¤Ë¤ÏÁ°²ó¤Î¼ê½ç¤Ç Json ·Á¼°¤Ç½ñ¤­½Ð¤·¤Æ¤¤¤ë¥Õ¥¡¥¤¥ë¤ÎÆâÍÆ¤ò¤½¤Î¤Þ¤ÞޤêÉÕ¤±¤Þ¤¹¡£
¥·¡¼¥È¤Î̾¾Î¤ÈƱ¤¸¤ËÀßÄꤷ¤Æ¤ª¤¯¤È¤è¤¤¤Ç¤·¤ç¤¦¡£


ÅÐÏ¿Îã
SkillMaster ¢ª [{ "id": 1, "name": "Fire", ... }, ...]

CharaMaster ¢ª [ ... ]


»²¹Í²èÁü



£³¡¥MasterTableBase ¥¯¥é¥¹¤òºîÀ®


¡¡¶¦Ä̲½¤µ¤ì¤¿´ðÄ쥯¥é¥¹¤òºîÀ®¤·¤Þ¤¹¡£
¥¯¥é¥¹Æâ¤Ë¤Ï List<T> ¤òÍѰդ·¤Æ¡¢¥Þ¥¹¥¿¡¼¥Ç¡¼¥¿¤ò¥Æ¡¼¥Ö¥ë¤È¤·¤Æ´ÉÍý¤Ç¤­¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£

¡¡Set(), GetData(), TryGetData() ¤Ê¤ÉÈÆÍÑŪ¤Ê¥á¥½¥Ã¥É¤òÍѰդ·¤Æ¤ª¤¯¤³¤È¤Ç¡¢¶¦Ä̽èÍý¤Î¼ÂÁõ¤ò´Êά²½¤·¤Þ¤¹¡£


MasterTableBase.cs



£´¡¥³Æ¥Þ¥¹¥¿¡¼¥Ç¡¼¥¿¥¯¥é¥¹¡¢¥Æ¡¼¥Ö¥ë¥¯¥é¥¹¤òºîÀ®

¡¡
¡¡¥¹¥×¥ì¥Ã¥É¥·¡¼¥È¤ÇºîÀ®¤·¤¿¥Þ¥¹¥¿¡¼¥Ç¡¼¥¿¤ò¼è¤ê¹þ¤à¤¿¤á¤Î¡¢¥Þ¥¹¥¿¡¼¥Ç¡¼¥¿ÍÑ¥¯¥é¥¹¤òºîÀ®¤·¤Þ¤¹¡£
¥¹¥×¥ì¥Ã¥É¥·¡¼¥È¤ÈƱ¤¸¥×¥í¥Ñ¥Æ¥£Ì¾¤ò public ¤ÎÊÑ¿ô¤È¤·¤ÆÍѰդ·¤Æ¤¯¤À¤µ¤¤¡£

¡¡¥µ¥ó¥×¥ë¤Ç¤¹¡£

¡ã¥Þ¥¹¥¿¡¼¥Ç¡¼¥¿ÍÑ¥¯¥é¥¹¡ä
[System.Serializable]
public class ActiveSkillMaster : IMasterData {
    public int Id;
    public string effect;
    public int priority;
    // ÄɲäΥե£¡¼¥ë¥É...
}



¡¡Â³¤¤¤Æ¡¢´ðÄ쥯¥é¥¹(MasterTableBase)¤ò·Ñ¾µ¤·¤Æ¡¢Àè¤Û¤ÉºîÀ®¤·¤¿¥Þ¥¹¥¿¡¼¥Ç¡¼¥¿¤ò¥Æ¡¼¥Ö¥ë¤È¤·¤Æ´ÉÍý¤¹¤ë¤¿¤á¤Î¥¯¥é¥¹¤òÍѰդ·¤Æ¤¤¤­¤Þ¤¹¡£
£±¤Ä¤Î¥Þ¥¹¥¿¡¼¥Ç¡¼¥¿¤Î¥Æ¡¼¥Ö¥ë¤Ë¤Ä¤­¡¢´ðÄ쥯¥é¥¹¤ò·Ñ¾µ¤·¤¿£±¤Ä¤Î»Ò¥¯¥é¥¹¤òºîÀ®¤·¤Æ¤¯¤À¤µ¤¤¡£

¡¡¿·¤·¤¤¥Þ¥¹¥¿¡¼¥Ç¡¼¥¿¤ò¥Æ¡¼¥Ö¥ë¤È¤·¤ÆÄɲä·¤¿¤¤¾ì¹ç¤Ë¤Ï¡¢¥¯¥é¥¹¤ò 1 ¹Ô¤ÇÄêµÁ¤Ç¤­¤Þ¤¹¡£
ÆÃ¤Ë¿·¤·¤¤ÊÑ¿ô¤ä¥á¥½¥Ã¥É¤ÎÅÐÏ¿¤âÉÔÍפǤ¹¡£¤½¤Î¥Æ¡¼¥Ö¥ë¤ËɬÍפʾðÊó¤À¤±¤òÄɵ­¤·¤Æ¤¯¤À¤µ¤¤¡£

¡ã¥Æ¡¼¥Ö¥ëÍѻҥ¯¥é¥¹¡ä
public class ActiveSkillMasterTable : MasterTableBase<ActiveSkillMaster, ActiveSkillMasterTable> {}


£µ¡¥TitleDataManager ¥¯¥é¥¹¤òºîÀ®¤·¤Æ¡¢PlayFab ¤Î TitleData ¤«¤é°ì³ç¥í¡¼¥É


¡¡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 ¤è¤ê³Æ¥Þ¥¹¥¿¡¼¥Ç¡¼¥¿¤¬¥í¡¼¥É¤µ¤ì¤Æ¤¤¤ë¤³¤È¤ò³Îǧ¤·¤Æ¤¯¤À¤µ¤¤¡£









³èÍÑ»öÎã

£±¡¥IMasterData ¤ò³èÍѤ·¤ÆÈÆÍÑŪ¤Ë¥Ç¡¼¥¿¸¡º÷


¡¡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 ¤ò³èÍѤ·¤Æ¥¢¥¤¥³¥ó¼èÆÀ¤òÈÆÍѲ½


¡¡Ê£¿ô¤Î¥Þ¥¹¥¿¡¼¥Ç¡¼¥¿¤¬ 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 ¥­¡¼¥ï¡¼¥É¤Ç¥¯¥é¥¹Ê̽èÍý¤ò¼«Æ°²½


¡¡¥Þ¥¹¥¿¡¼¥Ç¡¼¥¿¤Î¼ïÎà¤Ë¤è¤Ã¤Æ½èÍý¤òÀÚ¤êÂØ¤¨¤¿¤¤¾ì¹ç¡¢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 ¤Ç°ì³ç¥í¡¼¥É¤Ç¤­¤ë¤Î¤Ç¥á¥ó¥Æ¥Ê¥ó¥¹¤â³Ú¤Ë¤Ê¤ê¤Þ¤¹¡£
¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¤Ç¥Ç¡¼¥¿¤ò³Îǧ²Äǽ¤Ê¤Î¤Ç¡¢¥Ç¥Ð¥Ã¥°¸úΨ¤â¸þ¾å¤·¤Þ¤¹¡£

¡¡¤³¤Î¥Ñ¥¿¡¼¥ó¤òƳÆþ¤¹¤ì¤Ð¡¢¿·¤·¤¤¥Þ¥¹¥¿¡¼¥Ç¡¼¥¿Äɲäâ¿ôʬ¤Ç´°Î»¤Ç¤­¤Þ¤¹¤Î¤Ç¡¢
±¿ÍÑ¥³¥¹¥È¤òÍÞ¤¨¤Ê¤¬¤é¥Ç¡¼¥¿¤ò³ÈÄ¥¤Ç¤­¤Þ¤¹¤·¡¢º£¸å¡¢¥Ç¡¼¥¿¹¹¿·¤äº¹Ê¬ÇÛ¿®µ¡Ç½¤òÄɲ乤ëºÝ¤Ë¤â¡¢Æ±¤¸¹½Â¤¤òήÍѤǤ­¤Þ¤¹¡£

¡¡°Ê¾å¤Ë¤Ê¤ê¤Þ¤¹¡£

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


¡Öhttp://¡×¤ò´Þ¤àÅê¹Æ¤Ï¶Ø»ß¤µ¤ì¤Æ¤¤¤Þ¤¹¡£

ÍøÍѵ¬Ìó¤ò¤´³Îǧ¤Î¤¦¤¨¤´µ­Æþ²¼¤µ¤¤

Menu



´ðÁÃ

µ»½Ñ/Ãμ±(¼ÂÁõÎã)

3D¥¢¥¯¥·¥ç¥ó¥²¡¼¥à

2D¤ª¤Ï¤¸¤­¥²¡¼¥à(ȯŸÊÔ)

2D¶¯À©²£¥¹¥¯¥í¡¼¥ë¥¢¥¯¥·¥ç¥ó(ȯŸÊÔ)

2D¥¿¥Ã¥×¥·¥å¡¼¥Æ¥£¥ó¥°(³ÈÄ¥ÊÔ)

¥ì¡¼¥¹¥²¡¼¥à(È´¿è)

2DÊüÃÖ¥²¡¼¥à(ȯŸÊÔ)

3D¥ì¡¼¥ë¥¬¥ó¥·¥å¡¼¥Æ¥£¥ó¥°(±þÍÑÊÔ)

3Dæ½Ð¥²¡¼¥à(È´¿è)

2D¥ê¥¢¥ë¥¿¥¤¥à¥¹¥È¥é¥Æ¥¸¡¼

3D¥¿¥Ã¥×¥¢¥¯¥·¥ç¥ó(NavMeshAgent »ÈÍÑ)

2D¥È¥Ã¥×¥Ó¥å¡¼¥¢¥¯¥·¥ç¥ó(¥«¥¨¥ë¤Î°Ù¤Ë¡Á¡¢¥Ü¥³¥¹¥«¥¦¥©¡¼¥ºÉ÷)

VideoPlayer ¥¤¥Ù¥ó¥ÈϢư¤Î¼ÂÁõÎã

VideoPlayer ¥ê¥¹¥ÈÆâ¤«¤é¥à¡¼¥Ó¡¼ºÆÀ¸¤Î¼ÂÁõÎã(ȯŸ)

AR ²èÁüÉÕ¤­¥ª¥Ö¥¸¥§¥¯¥ÈÀ¸À®¤Î¼ÂÁõÎã

AR ¥ê¥¹¥ÈÆâ¤«¤éÀ¸À®¤Î¼ÂÁõÎã(ȯŸ)

2D¥È¥Ã¥×¥Ó¥å¡¼¥¢¥¯¥·¥ç¥ó(¥µ¥Ð¥¤¥Ð¡¼É÷)

private



¤³¤Î¥µ¥¤¥ÈÆâ¤ÎºîÉʤϥæ¥Ë¥Æ¥£¤Á¤ã¤ó¥é¥¤¥»¥ó¥¹¾ò¹à¤Î¸µ¤ËÄ󶡤µ¤ì¤Æ¤¤¤Þ¤¹¡£

´ÉÍý¿Í/Éû´ÉÍý¿Í¤Î¤ßÊÔ½¸¤Ç¤­¤Þ¤¹

¹­¹ðÊç½¸Ãæ