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

¡¡°ú¤­Â³¤­¡¢Mediator ¥Ñ¥¿¡¼¥ó¤ÈÃê¾Ý²½¤Ë¤è¤ë¥Ý¥Ã¥×¥¢¥Ã¥×´ÉÍý¤Î¼ÂÁõÎã¤Ç¤¹¡£

¡¡Ê£¿ô¤Î¥Ý¥Ã¥×¥¢¥Ã¥×¤ò£±¤Ä¤Î¥¯¥é¥¹¤Ç´ÉÍý¤·¤Æ¿·¤·¤¤¥Ý¥Ã¥×¥¢¥Ã¥×¤Îɽ¼¨¡¦Á°¤Î¥Ý¥Ã¥×¥¢¥Ã¥×¤ÎÈóɽ¼¨¤ÎÀ©¸æ¤Î¼«Æ°²½¤ò¹Ô¤¤¤Þ¤¹¡£


¡ã´°À®Æ°²è¡ä



¡¡Á°²ó¤Ï¤³¤Á¤é¤Ë¤Ê¤ê¤Þ¤¹¡£

¡¡¡¡=>¡¡Mediator ¥Ñ¥¿¡¼¥ó¤ÈÃê¾Ý²½¤Ë¤è¤ë¥Ý¥Ã¥×¥¢¥Ã¥×´ÉÍý¤Î¼ÂÁõÎã



Madiator ¥Ñ¥¿¡¼¥ó¤Ë¤è¤ë¥Ý¥Ã¥×¥¢¥Ã¥×´ÉÍý¥¯¥é¥¹¡¡¡¼PopupManager ¥¯¥é¥¹¡¼


¡¡Àè¤Û¤ÉºîÀ®¤·¤¿ AbstractSingleton ¥¯¥é¥¹¤ò·Ñ¾µ¤·¡¢¥·¥ó¥°¥ë¥È¥ó¥¯¥é¥¹¤È¤·¤ÆºîÀ®¤·¤Þ¤¹¡£
·¿°ú¿ô¤Ë¤Ï PopupManager ¥¯¥é¥¹¤ò»ØÄꤷ¡¢PopupManager ¥¯¥é¥¹¤ò¥·¥ó¥°¥ë¥È¥ó¥¯¥é¥¹²½¤·¤Æ¤¤¤Þ¤¹¡£
¤³¤ì¤Ë¤è¤ê¡¢¤¤¤º¤ì¤«¤Î¥¯¥é¥¹¤«¤é¤Ç¤â PopupManager ¥¯¥é¥¹¤ËÍưפ˥¢¥¯¥»¥¹¤Ç¤­¤ë¾õÂ֤ˤʤꡢ¥Ý¥Ã¥×¥¢¥Ã¥×¤Ø¤ÎÀ©¸æÌ¿Î᤬²Äǽ¤Ë¤Ê¤ê¤Þ¤¹¡£

¡¡¥¯¥é¥¹¤Î·Ñ¾µ¤ò¹Ô¤¤¡¢¥Ý¥Ã¥×¥¢¥Ã¥×¤Ë¥¢¥¿¥Ã¥Á¤·¤Æ¤¤¤ë¥¯¥é¥¹¤ÎÃê¾Ý²½¤ò¤·¤Æ¤¤¤ë¤³¤È¤Ë¤è¤ê¡¢List ¤Î´ÉÍý¤âÃê¾Ý²½¤Ç¤­¤Þ¤¹¡£
¤³¤ì¤Ë¤è¤ê¡¢´ðÄ쥯¥é¥¹¤Ç¤¢¤ë PopupBase ¤ò·Ñ¾µ¤·¤Æ¤¤¤ëÇÉÀ¸¥¯¥é¥¹¤Ç¤¢¤ì¤Ð¡¢
Ê£¿ô¤Î¥Ý¥Ã¥×¥¢¥Ã¥×¤ò PopupManager ¤¬¤Þ¤È¤á¤Æ´ÉÍý¤¹¤ë¤³¤È¤¬²Äǽ¤Ç¤¹¡£



¡¡½èÍý¤Î¥Ý¥¤¥ó¥È¤È¤·¤Æ¤Ï¡¢List Æâ¤Ë¤¢¤ë»ØÄꤵ¤ì¤¿¥Ý¥Ã¥×¥¢¥Ã¥×¤òɽ¼¨¤·¡¢¤«¤Ä¡¢°ÊÁ°¤Ë³«¤¤¤Æ¤¤¤¿¥Ý¥Ã¥×¥¢¥Ã¥×¤òÊĤ¸¤ëÆ°ºî¤ò¹Ô¤¤¤Þ¤¹¡£
»ØÄꤵ¤ì¤¿¥Ý¥Ã¥×¥¢¥Ã¥×¤Ç¤¢¤ì¤Ð¤É¤ì¤Ç¤â³«¤¯¤³¤È¤¬²Äǽ¤È¤Ê¤ê¡¢²Ã¤¨¤Æ¡¢°ÊÁ°¤Î¥Ý¥Ã¥×¥¢¥Ã¥×¤â¼«Æ°Åª¤ËÈóɽ¼¨¤Ë¤Ê¤ê¤Þ¤¹¡£

¡¡¤Þ¤¿¥ª¥×¥·¥ç¥ó¤È¤·¤Æ¡¢Stack ¤òÍøÍѤ·¡¢°ÊÁ°É½¼¨¤µ¤ì¤Æ¤¤¤¿¥Ý¥Ã¥×¥¢¥Ã¥×¤ËÌá¤ë¥Ò¥¹¥È¥ê¡¼µ¡Ç½¤¬Äɲ䵤ì¤Þ¤¹¡£

¡¡¤³¤Î¤è¤¦¤Ë¥Ý¥Ã¥×¥¢¥Ã¥×¤Îɽ¼¨À©¸æ¤ò¹Ô¤¦¤¿¤á¤ËÍøÍѤ·¤Æ¤¤¤ë¤¬ Mediator ¥Ç¥¶¥¤¥ó¥Ñ¥¿¡¼¥ó¤òºÎÍѤ·¤Æ¤¤¤ëÌÜŪ¤Ë¤Ê¤ê¤Þ¤¹¡£



PopupManager.cs

¡¡<=¡¡¥¯¥ê¥Ã¥¯¤¹¤ë¤È³«¤­¤Þ¤¹¡£



¡ã½èÍý¤Î¥Ý¥¤¥ó¥È¡ä


¡¡Mediator¥Ñ¥¿¡¼¥ó¤Î°ì¤Ä¤Î¼çÍפÊÍøÅÀ¤Ï¡¢°Û¤Ê¤ë¥³¥ó¥Ý¡¼¥Í¥ó¥È¡Ê¤³¤Î¾ì¹ç¤Ï¥Ý¥Ã¥×¥¢¥Ã¥×¡Ë¤¬Ä¾ÀÜŪ¤ËÄÌ¿®¤»¤º¡¢
Ãæ±û¤ÎMediator¡ÊPopupManager ¤È¤·¤Æ¼ÂÁõ¤µ¤ì¤Æ¤¤¤Þ¤¹¡Ë¤ò²ð¤·¤Æ¥³¥ß¥å¥Ë¥±¡¼¥·¥ç¥ó¤¬¹Ô¤ï¤ì¤ë¤³¤È¤Ç¤¹¡£
¤³¤ì¤Ë¤è¤ê¡¢³Æ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Ï¤ª¸ß¤¤¤Î¾ÜºÙ¤òÃΤëɬÍפ¬¤Ê¤¯¡¢¤è¤êÁ·ë¹ç¤Ç½ÀÆð¤ÇÊݼ餷¤ä¤¹¤¤¥³¡¼¥É¤ò¼Â¸½¤Ç¤­¤Þ¤¹¡£

¡¡PopupManager ¤Î Show ¥á¥½¥Ã¥É¤¬Mediator¤È¤·¤Æµ¡Ç½¤·¡¢
°Û¤Ê¤ë¥Ý¥Ã¥×¥¢¥Ã¥×¤Îɽ¼¨¤ÈÈóɽ¼¨¤¬¤³¤Î£±¤Ä¤Î¥á¥½¥Ã¥É¤ÇÀ©¸æ¤µ¤ì¤ë¤³¤È¤Ç¡¢°Ê²¼¤ÎÍøÅÀ¤¬¤¢¤ê¤Þ¤¹¡£


£±¡¥Ã±°ìÀÕǤ¤Î¸¶Â§ (Single Responsibility Principle)

¡¡³Æ¥Ý¥Ã¥×¥¢¥Ã¥×¤Ïɽ¼¨¼«ÂΤÎÀÕǤ¤·¤«»ý¤Ã¤Æ¤ª¤é¤º¡¢Â¾¤Î¥Ý¥Ã¥×¥¢¥Ã¥×¤È¤ÎÏ¢·È¤äɽ¼¨½ç½ø¤Ë¤Ä¤¤¤Æ¿´ÇÛ¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤»¤ó¡£
Show ¥á¥½¥Ã¥É¤¬¤½¤ì¤é¤ÎÏ¢·È¤òÃæ±û¤ÇÀ©¸æ¤¹¤ë¤³¤È¤Ç¡¢³Æ¥Ý¥Ã¥×¥¢¥Ã¥×¤Ï¥·¥ó¥×¥ë¤ÇÆÈΩ¤·¤¿·Á¤òÊݤÁ¤Þ¤¹¡£

¡¡¤³¤ì¤Ë¤è¤ê¡¢Á°¤Ë³«¤¤¤Æ¤¤¤¿¥Ý¥Ã¥×¥¢¥Ã¥×¤ÎÈóɽ¼¨¤Ë¤Ä¤¤¤Æ¡¢³Æ¥Ý¥Ã¥×¥¢¥Ã¥×¤Ï¿´ÇÛ¤¹¤ëɬÍפ⤢¤ê¤Þ¤»¤ó¡£


£²¡¥½ÀÆðÀ­¤È³ÈÄ¥À­(Flexibility and Scalability)

¡¡Êѹ¹¤Ø¤Î½ÀÆðÀ­¤Ï¡¢¼ç¤Ë¥µ¥Ö¥¯¥é¥¹¤ÎÆâÉô¼ÂÁõ¤ÎÊѹ¹¤¬È¯À¸¤·¤¿¾ì¹ç¤Ë¡¢Â¾¤Î¥¯¥é¥¹¤Ë±Æ¶Á¤òÍ¿¤¨¤º¤ËÊѹ¹¤Ç¤­¤ëǽÎϤò»Ø¤·¤Æ¤¤¤Þ¤¹¡£

¡¡Mediator¥Ñ¥¿¡¼¥ó¤Ç¤Ï¡¢³Æ¥¯¥é¥¹¤¬Mediator¤ò²ð¤·¤ÆÄÌ¿®¤·¡¢¶ñÂÎŪ¤Ê¼ÂÁõ¤Î¾ÜºÙ¤òÃΤé¤Ê¤¤¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
Î㤨¤Ð¡¢A ¤È¤¤¤¦¥µ¥Ö¥¯¥é¥¹¤ò½¤Àµ¤·¤Æ¤â¡¢¤½¤Î½¤Àµ¤Ï¡¢B ¤È¤¤¤¦¥µ¥Ö¥¯¥é¥¹¤ä C ¤È¤¤¤¦¥µ¥Ö¥¯¥é¥¹¤Ë¤Ï±Æ¶Á¤¬¤¢¤ê¤Þ¤»¤ó¡£

¡¡¤³¤Î¤¿¤á¡¢¤¢¤ë¥¯¥é¥¹¤ÎÆâÉô¼ÂÁõ¤¬Êѹ¹¤µ¤ì¤¿¾ì¹ç¤Ç¤â¡¢Â¾¤Î¥¯¥é¥¹¤ÏÊѹ¹¤Ëµ¤¤Å¤«¤º¤Ë¤½¤Î¤Þ¤ÞÆ°ºî¤Ç¤­¤Þ¤¹¡£
¥µ¥Ö¥¯¥é¥¹¤¬ÆâÉô¼ÂÁõ¤ÎÊѹ¹¤ËÂФ·¤Æ³«¤«¤ì¡¢Â¾¤Î¥³¥ó¥Ý¡¼¥Í¥ó¥È¤«¤é¤Ï³ÖÎ¥¤µ¤ì¤Æ¤¤¤ë¤³¤È¤¬½ÀÆðÀ­¤ò¤â¤¿¤é¤·¤Þ¤¹¡£



¡¡Êѹ¹¤Ø¤Î³ÈÄ¥À­¤âƱÍͤǡ¢¿·¤·¤¤¥µ¥Ö¥¯¥é¥¹¤¬Äɲ䵤줿¤È¤­¡¢¤½¤ì¤¬Â¾¤Î¥¯¥é¥¹¤Ë±Æ¶Á¤òÍ¿¤¨¤º¤ËÊѹ¹¤Ç¤­¤ëǽÎϤò»Ø¤·¤Æ¤¤¤Þ¤¹¡£
¡¡
¡¡Mediator¥Ñ¥¿¡¼¥ó¤Ç¤Ï¡¢¿·¤·¤¤¥Ý¥Ã¥×¥¢¥Ã¥×¤¬Äɲ䵤줿¾ì¹ç¤Ç¤â¡¢¤½¤ì¤¬Â¾¤Î¥Ý¥Ã¥×¥¢¥Ã¥×¤È¤É¤Î¤è¤¦¤ËÏ¢·È¤¹¤ë¤«¤Ë¤Ä¤¤¤Æ¹Í¤¨¤ëɬÍפ¬¤¢¤ê¤Þ¤»¤ó¡£

¡¡PopupManager ¤Î Show ¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤¹¤À¤±¤Ç¡¢¿·¤·¤¤¥Ý¥Ã¥×¥¢¥Ã¥×¤òɽ¼¨¤·¡¢Á°¤Î¥Ý¥Ã¥×¥¢¥Ã¥×¤òÊĤ¸¤ë¥»¥Ã¥È¤Î½èÍý¤¬¹Ô¤ï¤ì¤Þ¤¹¡£
¤³¤Î´Ê·é¤Ê½èÍý¤Ï¡¢³«È¯¼Ô¤¬¼êÆ°¤ÇÊ£»¨¤Ê¾õÂÖ´ÉÍý¤ò¹Ô¤¦É¬Íפ¬¤Ê¤¯¤Ê¤ê¡¢Ä¾´¶Åª¤Ç»È¤¤¤ä¤¹¤¯¤Ê¤ê¤Þ¤¹¡£

¡¡¤½¤Î¤¿¤á¡¢´û¸¤Î Show ¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤¹¤À¤±¤ÇºÑ¤à¤¿¤á¡¢³«È¯¼Ô¤¬³Ð¤¨¤ä¤¹¤¯(Íý²ò¤·¤ä¤¹¤¯)¡¢¥³¡¼¥É¤¬¥·¥ó¥×¥ë¤«¤Ä¡¢Æɤߤ䤹¤µ¤â¸þ¾å¤·¤Þ¤¹¡£

¡¡¤³¤ì¤Ï Mediator ¥Ñ¥¿¡¼¥ó¤Ë²Ã¤¨¤Æ¡¢¥Ý¥Ã¥×¥¢¥Ã¥×¤¬ PopupBase ¥¯¥é¥¹¤ò¥Ù¡¼¥¹¤ËÃê¾Ý²½¤µ¤ì¤Æµ¡Ç½¤·¤Æ¤¤¤ë¤¿¤á¼Â¸½¤Ç¤­¤Æ¤¤¤Þ¤¹¡£


£³¡¥Á·ë¹çÀ­ (Loose Coupling)

¡¡³Æ¥Ý¥Ã¥×¥¢¥Ã¥×¤Ï PopupManager ¤ËÂФ·¤ÆÁ·ë¹ç¤Ç¤¹¡£
PopupManager ¤Ï³Æ¥Ý¥Ã¥×¥¢¥Ã¥×¤òÃΤäƤ¤¤ë(List ¤Ç´ÉÍý¤·¤Æ¤¤¤ë)¤¬¡¢
³Æ¥Ý¥Ã¥×¥¢¥Ã¥×¤Ë¤Ï PopupManager ¤ÎÊÑ¿ô¤¬¤¢¤ê¤Þ¤»¤ó¤Î¤Ç¡¢PopupManager ¤òÃΤé¤Ê¤¤¾õÂ֤Ǥ¹¡£
ƱÍͤˡ¢³Æ¥Ý¥Ã¥×¥¢¥Ã¥×Ʊ»Î¤â¥Ý¥Ã¥×¥¢¥Ã¥×¤Ø¤ÎÊÑ¿ô¤ò»ý¤Á¤Þ¤»¤ó¤Î¤Ç¡¢¤½¤ì¤¾¤ì¤Î¥Ý¥Ã¥×¥¢¥Ã¥×Ʊ»Î¤âÃΤé¤Ê¤¤¾õÂ֤Ǥ¹¡£

¡¡¤Ä¤Þ¤ê¡¢¤½¤ì¤¾¤ì¤Î¥Ý¥Ã¥×¥¢¥Ã¥×¤Ï¾¤Î¥Ý¥Ã¥×¥¢¥Ã¥×¤ÎÆâÉô¼ÂÁõ¤äµ¡Ç½¤Ë¤Ä¤¤¤ÆÃΤëɬÍפ¬¤¢¤ê¤Þ¤»¤ó¡£
³Æ¥Ý¥Ã¥×¥¢¥Ã¥×Æâ¤ËÊѹ¹¤¬È¯À¸¤·¤¿¾ì¹ç¤ä¡¢¿·¤·¤¤¥Ý¥Ã¥×¥¢¥Ã¥×¤¬Äɲ䵤ì¤Æ¤â¡¢
Mediator¥Ñ¥¿¡¼¥ó¤Ë¤è¤ê¡¢´û¸¤Î¥³¡¼¥É¤ËÂФ¹¤ë±Æ¶Á¤¬ºÇ¾®¸Â¤ËÍÞ¤¨¤é¤ì¤Þ¤¹¡£


£´¡¥´ÉÍý¤¬ÍÆ°×

¡¡PopupManager ¤¬°Û¤Ê¤ë¥Ý¥Ã¥×¥¢¥Ã¥×¤ò´ÉÍý¤·¡¢É½¼¨½ç½ø¤äÏ¢·È¤òÀ©¸æ¤·¤Æ¤¤¤ë¤¿¤á¡¢¥³¡¼¥ÉÁ´ÂΤβÄÆÉÀ­¤¬¸þ¾å¤·¡¢¥Ý¥Ã¥×¥¢¥Ã¥×¤Î´ÉÍý¤¬Íưפˤʤê¤Þ¤¹¡£


£µ¡¥¥¨¥é¡¼¤Î¸º¾¯

¡¡¼êÆ°¤Ç¥Ý¥Ã¥×¥¢¥Ã¥×¤Îɽ¼¨¤ÈÈóɽ¼¨¤ò´ÉÍý¤¹¤ë¾ì¹ç¡¢³«È¯¼Ô¤¬¤¦¤Ã¤«¤ê½èÍý¤Î½ç½ø¤ò´Ö°ã¤¨¤ë²ÄǽÀ­¤¬¤¢¤ê¤Þ¤¹¡£
Mediator¥Ñ¥¿¡¼¥ó¤Ë¤è¤ê¡¢Àµ¤·¤¤½ç½ø¤Ç¥Ý¥Ã¥×¥¢¥Ã¥×¤¬½èÍý¤µ¤ì¤ë¤³¤È¤¬Êݾڤµ¤ì¡¢¥¨¥é¡¼¤Î²ÄǽÀ­¤¬¸º¾¯¤·¤Þ¤¹¡£
°ÊÁ°³«¤¤¤Æ¤¤¤¿¥Ý¥Ã¥×¥¢¥Ã¥×¤Î¥±¥¢¤âÉÔÍפˤʤ뤿¤á¡¢½ÅÊ£¤·¤Æ¥Ý¥Ã¥×¥¢¥Ã¥×¤¬³«¤¤¤Æ¤·¤Þ¤¦¥±¡¼¥¹¤âÍÞÀ©¤µ¤ì¤Þ¤¹¡£



¡¡¤³¤Î¤è¤¦¤Ê Mediator¥Ñ¥¿¡¼¥ó¤Ë´ð¤Å¤¤¤¿À߷פϡ¢³«È¯¼Ô¤Ï¥Ý¥Ã¥×¥¢¥Ã¥×¤Îɽ¼¨¤ÈÈóɽ¼¨¤Ë´ØÏ¢¤¹¤ëÊ£»¨¤Ê¾õÂÖÁ«°Ü¤òµ¤¤Ë¤»¤º¡¢
¥·¥ó¥×¥ë¤Ç°ì´ÓÀ­¤Î¤¢¤ë½èÍý¤ò»ÈÍѤǤ­¤Þ¤¹(Ëè²ó Show ¥á¥½¥Ã¥É¤ò»È¤¦¤À¤±¤ÇºÑ¤ß¤Þ¤¹)¡£
¤³¤ì¤Ë¤è¤ê¡¢¥³¡¼¥É¤ÎÊݼéÀ­¤¬¸þ¾å¤·¡¢¥Ð¥°¤ÎȯÀ¸¥ê¥¹¥¯¤¬Ä㸺¤·¤Þ¤¹¡£Ã¯¤Ë¤È¤Ã¤Æ¤â¡¢Íý²ò¤·¤ä¤¹¤¯¡¢°ÂÁ´¤Ë¥Ý¥Ã¥×¥¢¥Ã¥×¤ò´ÉÍý¤Ç¤­¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
¡¡
¡¡²Ã¤¨¤Æ¡¢Ãê¾Ý²½¤Ë¤è¤Ã¤Æ¡¢¥³¡¼¥É¤¬¤è¤êÍý²ò¤·¤ä¤¹¤¯¡¢Êѹ¹¤ËÂФ¹¤ë½ÀÆðÀ­¤¬¸þ¾å¤·¡¢ºÆÍøÍÑÀ­¤È³ÈÄ¥À­¤â¸þ¾å¤·¤Þ¤¹¡£

¡¡¤³¤ì¤¬¡¢Mediator¥Ñ¥¿¡¼¥ó¤ÈÃê¾Ý²½¤¬¡¢À߷פäÊݼéÀ­¸þ¾å¤Ë´óÍ¿¤¹¤ë¼ç¤Ê¥á¥ê¥Ã¥È¤Î°ì¤Ä¤Ç¤¹¡£


¥Æ¥¹¥ÈÍÑ¥¯¥é¥¹¡¡¡¼PopupChangeTester ¥¯¥é¥¹¡¼


¡¡¥Ý¥Ã¥×¥¢¥Ã¥×¤ÎÀÚ¤êÂؤ¨À©¸æ¤Î³ÎǧÍѤΥƥ¹¥È¥¯¥é¥¹¤òºîÀ®¤·¤Æ¤ª¤­¤Þ¤¹¡£
ÆÃÄê¤Î¥Ü¥¿¥ó¤ò²¡¤·¤¿ºÝ¤Ë¥Ý¥Ã¥×¥¢¥Ã¥×¤¬ÀÚ¤êÂؤï¤ëÀ߷פǤ¹¡£

¡¡¥Ü¥¿¥ó¤ÏǤ°Õ¤ËÀßÄꤷ¤Æ¤¯¤À¤µ¤¤¡£

¡¡UpdateAsObservable ¥á¥½¥Ã¥É¤òÍøÍѤ¹¤ë¤¿¤á

using UniRx;
using UniRx.Triggers;

¡¡¤Î£²¤Ä¤òÄɲ䷤Ƥ¤¤Þ¤¹¡£



PopupChangeTester.cs

¡¡<=¡¡¥¯¥ê¥Ã¥¯¤¹¤ë¤È³«¤­¤Þ¤¹¡£




¡¡Ï¢ÂÇËɻߵ¡Ç½¤ÏÆþ¤Ã¤Æ¤¤¤Þ¤»¤ó¡£
Äɲ乤ë¾ì¹ç¤Ë¤Ï ThrottleFirst ¥ª¥Ú¥ì¡¼¥¿¡¼¤ò³èÍѤ·¤Æ¤¯¤À¤µ¤¤¡£


¡¡¡¡¡¡¡¡// ¥­¡¼¥Ü¡¼¥É¤Î P ¥Ü¥¿¥ó¤ò²¡¤·¤¿¤é StoreGoodsPop ¤òɽ¼¨¤¹¤ë
        this.UpdateAsObservable()
            .Where(_ => Input.GetKeyDown(KeyCode.P))
            .ThrottleFirst(System.TimeSpan.FromSeconds(1.0f))    // ¢«¡¡Ï¢ÂÇËɻߵ¡Ç½ÍѤËÄɲä·¤Þ¤¹
            .Subscribe(_ => PopupManager.instance.Show<StoreGoodsPop>());


PopupManager ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤òºîÀ®¤·¡¢PopupManager ¥¹¥¯¥ê¥×¥È¤È PopupChangeTester ¥¹¥¯¥ê¥×¥È¤ò¥¢¥¿¥Ã¥Á¤·¡¢ÀßÄê¤ò¹Ô¤¦


¡¡¥Ò¥¨¥é¥ë¥­¡¼Æâ¤Î¶õ¤¤¤Æ¤¤¤ë¾ì½ê¤Ç±¦¥¯¥ê¥Ã¥¯¤·¤Æ¥á¥Ë¥å¡¼¤ò³«¤­¡¢Create Empty ¤Ç¿·¤·¤¤¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤òºîÀ®¤·¤Þ¤¹¡£
̾Á°¤ò PopupManager ¤ËÊѹ¹¤·¡¢Àè¤Û¤ÉºîÀ®¤·¤¿ PopupManager ¥¹¥¯¥ê¥×¥È¤ò¥¢¥¿¥Ã¥Á¤·¤Þ¤¹¡£


¡ã¥¤¥ó¥¹¥Ú¥¯¥¿¡¼²èÁü¡ä



¡ã¥¤¥ó¥¹¥Ú¥¯¥¿¡¼²èÁü¡ä




¡¡PopupList ÊÑ¿ô¤Î¥µ¥¤¥º¤¬ 0 ¤Ç¤¹¤Î¤Ç¡¢¤³¤Á¤é¤ò 3 ¤ËÊѹ¹¤·¤Þ¤¹¡£
¥¢¥µ¥¤¥ó²Äǽ¤Ê¥¯¥é¥¹¤¬ PopupBase ¤Ç¤¢¤ë¤³¤È¤ò³Îǧ¤·¤Æ¤ª¤­¤Þ¤·¤ç¤¦¡£

¡¡¥¢¥µ¥¤¥ó»þ¤Ë³Îǧ¤·¤Æ¤¤¤ë¤Î¤Ï¡¢´ðÄ쥯¥é¥¹(PopupBase)¤Ç¤¹¡£
¤½¤Î¤¿¤á¡¢´ðÄ쥯¥é¥¹¤ò·Ñ¾µ¤·¤Æ¤¤¤ëÇÉÀ¸¥¯¥é¥¹¤Ï¡¢¤É¤ì¤Ç¤¢¤Ã¤Æ¤â¥¢¥µ¥¤¥ó²Äǽ¤Ê¾õÂ֤ˤʤäƤ¤¤Þ¤¹¡£

¡¡¤³¤ì¤ÏÃê¾Ý²½¤Î²¸·Ã¤Î£±¤Ä¤Ç¤¹¡£


¡ã¥¤¥ó¥¹¥Ú¥¯¥¿¡¼²èÁü¡ä



¡¡¤É¤Î½çÈ֤Ǥâ¤è¤¤¤Î¤Ç¡¢¥Ò¥¨¥é¥ë¥­¡¼¤Ë¤¢¤ë³Æ¥Ý¥Ã¥×¥¢¥Ã¥×¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ò¥É¥é¥Ã¥°¥¢¥ó¥É¥É¥í¥Ã¥×¤·¤Æ¥¢¥µ¥¤¥ó¤·¤Þ¤¹¡£
¥¢¥µ¥¤¥ó¤Ï¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤·¤«½ÐÍè¤Þ¤»¤ó¡£(¥¹¥¯¥ê¥×¥È¤ò¤½¤Î¤Þ¤Þ¥¢¥µ¥¤¥ó¤¹¤ë¤³¤È¤Ï½ÐÍè¤Þ¤»¤ó¡£)


¡ã¥¤¥ó¥¹¥Ú¥¯¥¿¡¼²èÁü¡ä



PopupManager ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë PopupChangeTester ¥¹¥¯¥ê¥×¥È¤ò¥¢¥¿¥Ã¥Á¤¹¤ë


¡¡¥¹¥¯¥ê¥×¥È¤ò¥¢¥¿¥Ã¥Á¤¹¤ë¤Î¤ß¤Ç¡¢ÀßÄê¤ÏÉÔÍפǤ¹¡£


¡ã¥¤¥ó¥¹¥Ú¥¯¥¿¡¼²èÁü¡ä


¡¡°Ê¾å¤Ç´°À®¤Ç¤¹¡£


¥²¡¼¥à¤ò¼Â¹Ô¤·¤ÆÆ°ºî¤ò³Îǧ¤¹¤ë


¡¡PopupManager ¤Ë¤è¤ë¥Ý¥Ã¥×¥¢¥Ã¥×¤ÎÀ©¸æ¤¬¹Ô¤ï¤ì¤ë¤«¡¢¥²¡¼¥à¤ò¼Â¹Ô¤·¤Æ³Îǧ¤·¤Þ¤¹¡£
¤É¤Î¤è¤¦¤ÊÀ©¸æ¤¬¹Ô¤ï¤ì¤Æ¤¤¤ë¤«¡¢ÁÛÄêÄ̤ê¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤«¤ò¥¤¥á¡¼¥¸¤·¤ÆÆ°ºî³Îǧ¤ò¹Ô¤Ã¤Æ¤¯¤À¤µ¤¤¡£
ÇùÁ³¤È¥²¡¼¥à¤ò¼Â¹Ô¤·¤Æ¡¢Æ°ºî³Îǧ¤ò¤·¤Ê¤¤¤è¤¦¤Ë¤·¤Þ¤·¤ç¤¦¡£

¡¡¥Æ¥¹¥È¥¯¥é¥¹¤Ë¥Ü¥¿¥ó²¡²¼»þ¤Î½èÍý¤¬½ñ¤¤¤Æ¤¢¤ê¤Þ¤¹¤Î¤Ç¡¢
³ºÅö¤¹¤ë¤¤¤º¤ì¤«¤Î¥Ü¥¿¥ó¤ò²¡¤·¤Æ¡¢¥Ý¥Ã¥×¥¢¥Ã¥×¤¬É½¼¨¤µ¤ì¤ë¤«³Îǧ¤ò¹Ô¤¤¤Þ¤¹¡£

¡¡¤½¤Î¸å¡¢Ê̤Υܥ¿¥ó¤ò²¡¤·¡¢¥Ý¥Ã¥×¥¢¥Ã¥×¤¬ÀÚ¤êÂؤï¤ë¤³¤È¤ò³Îǧ¤·¤Þ¤¹¡£

¡¡Æ±Íͤˡ¢Æ±¤¸¥Ü¥¿¥ó¤ò²¡¤·¤¿ºÝ¤Ë¡¢½ÅÊ£¤·¤Æ¥Ý¥Ã¥×¥¢¥Ã¥×¤¬³«¤«¤Ê¤¤¤³¤È¤â³Îǧ¤·¤Þ¤¹¡£
¤³¤Î¾ì¹ç¡¢Console ¥Ó¥å¡¼¤Ë¥í¥°¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£


¡ã³Îǧư²è¡ä



¡¡¤¹¤Ù¤ÆÁÛÄêÄ̤ê¤ÎµóÆ°¤Ë¤Ê¤Ã¤Æ¤¤¤ì¤ÐÀ©¸æÀ®¸ù¤Ç¤¹¡£


¤Þ¤È¤á


¡¡Ä̾ï¤Î¼ÂÁõ¤Ç¤Ï¡¢¡Ö£±¡¥¿·¤·¤¤¥Ý¥Ã¥×¥¢¥Ã¥×¤ò³«¤¯¡×¤È¡Ö£²¡¥Á°¤Î¥Ý¥Ã¥×¥¢¥Ã¥×¤òÊĤ¸¤ë¡×¤¬¥»¥Ã¥È¤Ç¤¢¤ê¡¢
¤³¤Î²áÄø¤òÀµ¤·¤¯´ÉÍý¤·¤Ê¤¤¤È¡¢¥Ý¥Ã¥×¥¢¥Ã¥×¤Îɽ¼¨¾õÂÖ¤¬ÉÔÀµ³Î¤Ë¤Ê¤ê¡¢Í½Â¬¤Ç¤­¤Ê¤¤µóÆ°¤¬È¯À¸¤¹¤ë²ÄǽÀ­¤¬¤¢¤ê¤Þ¤¹¡£
¤½¤Î¤¿¤á¡Ö£²¡×¤ÎÉôʬ¤ò¼êÆ°¤Ç¥±¥¢¤·¤¿¤ê¡¢ÊĤ¸¤¿¤¤¥Ý¥Ã¥×¥¢¥Ã¥×¤Î´ÉÍý¤ò¤·¤Ê¤±¤ì¤ÐÀµ¾ï¤ÊÆ°ºî¤¬Êݾڤµ¤ì¤Þ¤»¤ó¡£
¤è¤Ã¤Æ¡¢£²¤Ä¤ÎÌ¿Î᤬¾ï¤Ë¥»¥Ã¥È¤ÇɬÍפˤʤê¤Þ¤¹¡£

¡¡º£²ó¤Î¾ì¹ç¡¢¥Æ¥¹¥È¥¯¥é¥¹¤Î¥½¡¼¥¹¥³¡¼¥É¤ò¸«¤ë¤Èʬ¤«¤ê¤Þ¤¹¤¬¡¢¡Ö£±¡¥¿·¤·¤¤¥Ý¥Ã¥×¥¢¥Ã¥×¤ò³«¤¯¡×Æ°ºî¤·¤«½ñ¤¤¤Æ¤¤¤Þ¤»¤ó¡£

        this.UpdateAsObservable()
            .Where(_ => Input.GetKeyDown(KeyCode.O))
            .Subscribe(_ => PopupManager.instance.Show<TitlePop>());

¡¡º£²óºÎÍѤ·¤Æ¤¤¤ë¼ÂÁõ¤Ç¤Ï¡¢¤³¤Î¡Ö£²¡×¤ÎÉôʬ¤òµ¤¤Ë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤»¤ó¡£
¤Ê¤¼¤Ê¤é¡¢PopupManager ¥¯¥é¥¹¤Î¼ÂÁõ¤¬¡Ö£±¡¥¿·¤·¤¤¥Ý¥Ã¥×¥¢¥Ã¥×¤ò³«¤¯¡×Ì¿Îá¤À¤±¤ò¹Ô¤¨¤Ð¡¢¼«Æ°Åª¤Ë¡Ö£²¡¥Á°¤Î¥Ý¥Ã¥×¥¢¥Ã¥×¤òÊĤ¸¤ë¡×¤ò¹Ô¤¦¤è¤¦¤Ë½èÍý¤¬ºî¤é¤ì¤Æ¤¤¤ë¤Î¤Ç¡¢
¡Ö£²¡¥Á°¤Î¥Ý¥Ã¥×¥¢¥Ã¥×¤òÊĤ¸¤ë¡×¤ò½ñ¤­Ëº¤ì¤·¤Þ¤¦¤³¤È¤â¤Ê¤¯¡¢°ÂÁ´¤Ë¡Ö£²¡¥Á°¤Î¥Ý¥Ã¥×¥¢¥Ã¥×¤òÊĤ¸¤¿¡×¾å¤Ç¡Ö£±¡¥¿·¤·¤¤¥Ý¥Ã¥×¥¢¥Ã¥×¤ò³«¤¯¡×¤³¤È¤¬½ÐÍè¤Æ¤¤¤Þ¤¹¡£

¡¡Ä̾ï¤Ç¤¢¤ì¤ÐÁ°¤Î¥Ý¥Ã¥×¥¢¥Ã¥×¤òÊĤ¸Ëº¤ì¤Æ¤·¤Þ¤¦¤È¡¢Àµ¤·¤¤Æ°ºî¤Ë¤Ê¤ê¤Þ¤»¤ó¤¬¡¢ÊĤ¸¤ë¤¿¤á¤Ë´ÉÍý¤·¤Æ(³Ð¤¨¤Æ)¤ª¤¯É¬Íפâ¤Ê¤±¤ì¤Ð¡¢ÊĤ¸¤ëÌ¿Îá½èÍý¤âɬÍפ¢¤ê¤Þ¤»¤ó¡£

¡¡°Ê¾å¤Î¤³¤È¤«¤é¡¢Mediator ¥Ç¥¶¥¤¥ó¥Ñ¥¿¡¼¥ó¤òƳÆþ¤¹¤ë¤³¤È¤Ç¡¢¤³¤ÎÌäÂê¤ò¸ú²ÌŪ¤Ë²ò·è¤Ç¤­¤Æ¤¤¤ë¤³¤È¤¬Ê¬¤«¤ê¤Þ¤¹¡£



¡¡¤Þ¤¿¡¢Mediator ¥Ç¥¶¥¤¥ó¥Ñ¥¿¡¼¥ó¤ÈÃê¾Ý²½¤ò³èÍѤ·¤¿À߷פò¹Ô¤Ã¤Æ¼ÂÁõ¤·¤Æ¤ª¤¯¤³¤È¤Ë¤è¤ê¡¢
¿·¤·¤¤¥Ý¥Ã¥×¥¢¥Ã¥×¤òÄɲä·¤¿¾ì¹ç¤Ç¤¢¤Ã¤Æ¤â¡¢Ì¿ÎáÀè¤òÀÚ¤êÂؤ¨¤ë¤À¤±¤ÇºÑ¤ß¤Þ¤¹¡£

PopupManager.instance.Show<TitlePop>();

PopupManager.instance.Show<¿·¤·¤¤¥Ý¥Ã¥×¥¢¥Ã¥×¤Î¥¯¥é¥¹Ì¾>();  // ¡¡¢« <·¿°ú¿ô>¤Î»ØÄê¤òÊѤ¨¤ë¤À¤±¡£
¤½¤Î¤¿¤á¡¢¥Ý¥Ã¥×¥¢¥Ã¥×¤¬Áý¤¨¤¿¤È¤·¤Æ¤â¡¢¿·¤¿¤Ë PopupManager ¤ÎÃæ¿È¤ò½ñ¤­´¹¤¨¤ëɬÍפ⤢¤ê¤Þ¤»¤ó¡£

¡¡¤³¤ì¤Ï Show ¥á¥½¥Ã¥É¤¬¥¸¥§¥Í¥ê¥Ã¥¯·¿¤Î·¿°ú¿ô¤ò¼õ¤±¼è¤Ã¤Æ¼Â¹Ô¤Ç¤­¤ë»ÅÁȤߤˤʤäƤª¤ê¡¢
¤«¤Ä¡¢¤½¤Î·¿¤¬ PopupBase ¤ò·Ñ¾µ¤·¤Æ¤¤¤ë¤â¤Î¤À¤±¤Ë¸ÂÄꤷ¤Æ¤¤¤ë¤³¤È¤Ç¼Â¸½¤·¤Æ¤¤¤Þ¤¹¡£

public void Show<T>(bool keepInHistory = true) where T : PopupBase {¡¡¡¡// ¢« where ¶ç¤Ë¤è¤ê¡¢T ·¿¤Ç¼Â¹Ô²Äǽ¤Ê·¿°ú¿ô¤Î·¿¤ò PopupBase ¤«¡¢¤½¤ì¤ò·Ñ¾µ¤·¤Æ¤¤¤ë¥¯¥é¥¹¤Ë¸ÂÄꤷ¤Æ¤¤¤ë


¡¡½èÍý¤ÎÃê¾Ý²½¤ò¤¹¤ë¤³¤È¤Ë¤è¤ê¡¢½ÀÆ𤫤ġ¢ÈÆÍÑŪ¤Ê½èÍý¤ò¹½ÃÛ¤¹¤ë¤³¤È¤¬²Äǽ¤Ë¤Ê¤ê¤Þ¤¹¡£

¡¡¤³¤Î¤è¤¦¤ÊÀ߷פǥݥåץ¢¥Ã¥×¤ÎÀ©¸æ¤Î¥µ¥¤¥¯¥ë²½¤ò¹Ô¤¦¤³¤È¤Ë¤è¤ê¡¢
¿·¤·¤¤¥Ý¥Ã¥×¥¢¥Ã¥×¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤òºîÀ®¤·¤¿¾ì¹ç¤Ë¤Ï¡¢PopupBase ¥¯¥é¥¹¤ò·Ñ¾µ¤·¤¿ÇÉÀ¸¥¯¥é¥¹¤òºîÀ®¤¹¤ì¤Ð
¤½¤Î¿·¤·¤¤¥Ý¥Ã¥×¥¢¥Ã¥×¤â PopupManager ¤Ë¤è¤ëɽ¼¨¤Î´ÉÍý¤¬²Äǽ¤Ë¤Ê¤ê¤Þ¤¹¡£


À߷ץǥ¶¥¤¥ó¤Î¥Ý¥¤¥ó¥È


¡¡Ê£¿ô¤Î¥×¥í¥°¥é¥à¾å¤Î¹Í¤¨Êý(³µÇ°)¤ò¾å¼ê¤¯ÁȤ߹ç¤ï¤»¤ë¤³¤È¤Ç¡¢º£²ó¤Î¥Ý¥Ã¥×¥¢¥Ã¥×¤Î´ÉÍýµ¡Ç½¤ò¹½ÃÛ¤·¤Æ¤¤¤Þ¤¹¡£


£±¡¥¥·¥ó¥°¥ë¥È¥ó (Singleton)¥Ç¥¶¥¤¥ó¥Ñ¥¿¡¼¥ó


¡¡PopupManager ¥¯¥é¥¹¤¬ AbstractSingleton<T> ¥¯¥é¥¹¤ò·Ñ¾µ¤·¤Æ¤ª¤ê¡¢¤³¤ì¤Ë¤è¤ê¥·¥ó¥°¥ë¥È¥ó¥Ñ¥¿¡¼¥ó¤¬¼ÂÁõ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
¥·¥ó¥°¥ë¥È¥ó¤Ï¡¢ÆÃÄê¤Î¥¯¥é¥¹¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤¬¥×¥í¥°¥é¥àÆâ¤ÇÍ£°ì¤Ç¤¢¤ë¤³¤È¤òÊݾڤ·¡¢¥°¥í¡¼¥Ð¥ë¤Ë¥¢¥¯¥»¥¹²Äǽ¤Ê´ÉÍý¼Ô¥¯¥é¥¹¤Î¤è¤¦¤Ê¤â¤Î¤òÄ󶡤·¤Þ¤¹¡£
¤³¤ì¤Ë¤è¤ê¡¢¤¤¤º¤ì¤«¤Î¥¯¥é¥¹¤Ç¤â´Êñ¤Ë¥Ý¥Ã¥×¥¢¥Ã¥×¤ÎÀ©¸æÌ¿Îá¤ò½Ð¤¹¤³¤È¤¬²Äǽ¤Ê¾õÂ֤ˤʤê¤Þ¤¹¡£


£²¡¥Ãê¾Ý²½(Abstraction)¤È¥Ý¥ê¥â¡¼¥Õ¥£¥º¥à(¿ÂÖÀ­)


¡¡Ãê¾Ý²½¤Ï¡¢¥×¥í¥°¥é¥àÆâ¤Ç¤Î¶¦Ä̤Υѥ¿¡¼¥ó¤ä³µÇ°¤òÃê½Ð¤·¡¢¤½¤ì¤ËÂФ¹¤ë¶¦Ä̤Υ¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤ä´ðÄ쥯¥é¥¹¤òÄêµÁ¤¹¤ë¥×¥í¥»¥¹¤Ç¤¹¡£
º£²ó¤Ï PopupBase¥¯¥é¥¹¤ä AbstractSingleton ¥¯¥é¥¹¤¬¤½¤Î°ìÎã¤Ç¤¹¡£
PopupBase ¤Ë¤ª¤¤¤Æ¤Ï¡¢°Û¤Ê¤ë¥Ý¥Ã¥×¥¢¥Ã¥×¤¬¶¦Ä̤δðÄ쥯¥é¥¹¤ò¶¦Í­¤¹¤ë¤³¤È¤Ç¡¢PopupManager¤Ï°Û¤Ê¤ë¥Ý¥Ã¥×¥¢¥Ã¥×¤òÅý°ìŪ¤Ë°·¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

¡¡¤Þ¤¿¡¢¶¦Ä̤ÎÁàºî¤äµóÆ°¤Ë´Ø¤¹¤ë¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤òÄêµÁ¤¹¤ë¤³¤È¤âÃê¾Ý²½¤Î°ì´Ä¤Ç¤¹¡£
PopupBase¥¯¥é¥¹¤¬¥Ü¥¿¥ó¤Î¥¯¥ê¥Ã¥¯¤äɽ¼¨¡¦Èóɽ¼¨¤Ê¤É¤Î¶¦Ä̤ÎÁàºî¤òÄêµÁ¤·¤Æ¤ª¤ê¡¢¤³¤ì¤¬Ãê¾ÝŪ¤Ê¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤È¤Ê¤ê¤Þ¤¹¡£

¡¡Ãê¾Ý²½¤Ë¤è¤ê¡¢¿·¤·¤¤¼ïÎà¤Î¥Ý¥Ã¥×¥¢¥Ã¥×¤òÄɲ乤ëºÝ¤Ë¤â¡¢PopupBase¥¯¥é¥¹¤ò·Ñ¾µ¤¹¤ë¤À¤±¤Ç¡¢´û¸¤Î´ðËÜŪ¤ÊµóÆ°¤òÍøÍѤǤ­¤Þ¤¹¡£
¤³¤ì¤¬Êѹ¹¤Ø¤Î½ÀÆðÀ­¤È³ÈÄ¥À­¤òÄ󶡤·¤Þ¤¹¡£

¡¡¤½¤·¤ÆƱ¤¸´ðÄ쥯¥é¥¹¤ò·Ñ¾µ¤¹¤ë¤³¤È¤Ç¡¢¶¦Ä̤εóÆ°¤ä¥×¥í¥Ñ¥Æ¥£¤òºÆÍøÍѤǤ­¤Þ¤¹¡£
¤³¤ì¤Ë¤è¤ê¡¢¥³¡¼¥É¤Î¾éĹÀ­(Ʊ¤¸ÆâÍƤò¿§¡¹¤Ê¾ì½ê¤Ë½ñ¤¯)¤¬¸º¾¯¤·¡¢ÊݼéÀ­¤¬¸þ¾å¤·¤Þ¤¹¡£

¡¡¤³¤¦¤¤¤Ã¤¿Éôʬ¤¬Ãê¾Ý²½¤Î²¸·Ã¤Ë¤Ê¤ê¤Þ¤¹¡£



¡¡¥Ý¥ê¥â¡¼¥Õ¥£¥º¥à¤Ï¡¢¥ª¥Ö¥¸¥§¥¯¥È»Ø¸þ·¿¥×¥í¥°¥é¥ß¥ó¥°¤Ë¤ª¤±¤ë¡¢£³¤Ä¤¢¤ë³µÇ°¤Î£±¤Ä¤Ç¤¹¡£

¡¡Ãê¾Ý²½¤Ë¤è¤ê¡¢°Û¤Ê¤ë¥Ý¥Ã¥×¥¢¥Ã¥×¤¬ PopupBase ¥¯¥é¥¹¤ò¶¦Ä̤δðÄ쥯¥é¥¹¤È¤·¤Æ·Ñ¾µ¤¹¤ë¤³¤È¤Ç¡¢¥Ý¥ê¥â¡¼¥Õ¥£¥º¥à¤¬¼Â¸½¤µ¤ì¤Þ¤¹¡£

¡¡PopupManager¤ÏPopupBase·¿¤ò°·¤¦¤³¤È¤Ç¡¢°Û¤Ê¤ë¥Ý¥Ã¥×¥¢¥Ã¥×¤Î¼ÂÂΤòµ¤¤Ë¤»¤º¤Ë¡¢¶¦Ä̤δðÄ쥯¥é¥¹¤ÇÅý°ìŪ¤ËÁàºî¡¦´ÉÍý¤Ç¤­¤Þ¤¹¡£
¤³¤ì¤Ë¤è¤ê¡¢PopupManager ¤Ï°Û¤Ê¤ë¥Ý¥Ã¥×¥¢¥Ã¥×¤ÎÇÉÀ¸¥¯¥é¥¹¤ò List ¤ËÆþ¤ì¤Æ¡¢°ì¸µ´ÉÍý¤Ç¤­¤ë¾õÂ֤ˤʤê¤Þ¤¹¡£


£³¡¥¥ª¥Ö¥¶¡¼¥Ð¡¼(Observer)¥Ç¥¶¥¤¥ó¥Ñ¥¿¡¼¥ó


¡¡UniRx¤ò»ÈÍѤ·¤Æ PopupBase ¥¯¥é¥¹ ¤Î btnClose ¤Î¥¯¥ê¥Ã¥¯¥¤¥Ù¥ó¥È¤ò´Ñ»¡¤·¡¢¥¯¥ê¥Ã¥¯¤¬¸¡½Ð¤µ¤ì¤ë¤È»ØÄê¤Î½èÍý¤¬¼Â¹Ô¤µ¤ì¤Þ¤¹¡£
¤³¤ì¤ÏObserver¥Ç¥¶¥¤¥ó¥Ñ¥¿¡¼¥ó¤Î°ì·ÁÂ֤ǡ¢¥Ü¥¿¥ó¤Î¥¯¥ê¥Ã¥¯¤È¤¤¤Ã¤¿¥¤¥Ù¥ó¥È¤ËÂФ·¤Æ½ÀÆð¤ÇÈ¿±þÀ­¤Î¹â¤¤½èÍý¤òÄ󶡤·¤Þ¤¹¡£


£´¡¥¥á¥Ç¥£¥¨¡¼¥¿¡¼(Mediator)¥Ç¥¶¥¤¥ó¥Ñ¥¿¡¼¥ó


¡¡PopupManager ¤¬°Û¤Ê¤ë¥Ý¥Ã¥×¥¢¥Ã¥×´Ö¤Î¥³¥ß¥å¥Ë¥±¡¼¥·¥ç¥ó¤òÄ´À°¤·¤Æ¤¤¤Þ¤¹¡£
Show ¥á¥½¥Ã¥É¤òÄ̤¸¤Æ¡¢°Û¤Ê¤ë¥Ý¥Ã¥×¥¢¥Ã¥×¤¬Áê¸ß¤ËÄÌ¿®¤·¡¢É½¼¨¤äÈóɽ¼¨¤ÎÀ©¸æ¤ò¹Ô¤Ã¤Æ¤¤¤Þ¤¹¡£
¤³¤ì¤ÏMediator¥Ç¥¶¥¤¥ó¥Ñ¥¿¡¼¥ó¤Ë¶á¤¤¥¢¥×¥í¡¼¥Á¤Ç¤¹¡£


£µ¡¥¥¹¥¿¥Ã¥¯¥Ç¡¼¥¿¹½Â¤¤ÎÍøÍÑ


¡¡ÍúÎò¥¹¥¿¥Ã¥¯ (history) ¤ò»ÈÍѤ·¤Æ¡¢¥Ý¥Ã¥×¥¢¥Ã¥×¤Îɽ¼¨ÍúÎò¤òÊÝ»ý¤·¤Æ¤¤¤Þ¤¹¡£
¤³¤ì¤Ë¤è¤ê¡¢¥æ¡¼¥¶¡¼¤¬Á°¤Ëɽ¼¨¤µ¤ì¤Æ¤¤¤¿¥Ý¥Ã¥×¥¢¥Ã¥×¤ËÌá¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£


£¶¡¥LINQ¤ÎÍøÍÑ


¡¡¸µ¤È¤Ê¤ë½èÍý¤â°ì½ï¤Ëµ­½Ò¤µ¤ì¤Æ¤¤¤Þ¤¹¤¬¡¢LINQ¤ò»ÈÍѤ·¤Æ¥³¡¼¥É¤ò´Ê·é¤Ë¤·¤Æ¤¤¤Þ¤¹¡£
ÆÃ¤Ë OfType ¥á¥½¥Ã¥É¤ò»ÈÍѤ·¤Æ»ØÄꤵ¤ì¤¿·¿¤Î¥Ý¥Ã¥×¥¢¥Ã¥×¤òÃê½Ð¤¹¤ëºÝ¤Ë¸ú²ÌŪ¤ËÍøÍѤµ¤ì¤Æ¤¤¤Þ¤¹¡£


£·¡¥¥¸¥§¥Í¥ê¥Ã¥¯(T)·¿¤È·¿°ú¿ô¤ÎÍøÍÑ


¡¡PopupManager ¤Î Show ¥á¥½¥Ã¥É¤Ë·¿°ú¿ô¤òÀßÄꤷ¡¢where ¶ç¤Ç PopupBase ¤Î¤ß¤ò¼õ¤±¼è¤ê²Äǽ¤Ë¤¹¤ë¤³¤È¤Ë¤è¤ê¡¢
PopupBase ¤ò·Ñ¾µ¤·¤Æ¤¤¤ëÇÉÀ¸¥¯¥é¥¹¤Î·¿¤Î¤ß¤ò¼õ¤±¼è¤ê¡¢¥Ý¥Ã¥×¥¢¥Ã¥×¤ò°ÂÁ´¤Ëɽ¼¨¤µ¤»¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£

¡¡AbstractSingleton ¤Ç¤Ï·¿°ú¿ô¤Ë where ¶ç¤Ç Component ¤ò»ØÄꤷ¤Æ¤¤¤ë¤¿¤á¡¢Unity ¤Î Component ·¿¤ËÀ©¸Â¤·¤Æ¤¤¤Þ¤¹¡£
Component ·¿¤Ï¤¹¤Ù¤Æ¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë¥¢¥¿¥Ã¥Á¤µ¤ì¤ë¥Ù¡¼¥¹¤È¤Ê¤ë¥¯¥é¥¹¤Ç¤¹¡£
¼«ºî¤·¤¿Ç¤°Õ¤Î¥¯¥é¥¹¤ä Unity ¤Î¥³¥ó¥Ý¡¼¥Í¥ó¥È̾¤ò»ØÄꤹ¤ë¤³¤È¤Ç¡¢¥·¥ó¥°¥ë¥È¥ó¥¯¥é¥¹¤È¤·¤Æ¼ÂÁõ¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£



¡¡Áí¤¸¤Æ¡¢¤³¤ÎÀ߷ץǥ¶¥¤¥ó¤Ï¥Ý¥Ã¥×¥¢¥Ã¥×¤Î°ì¸µ´ÉÍý¡¢¾õÂÖ´ÉÍý¡¢¥¤¥Ù¥ó¥È½èÍý¤ò¸ú²ÌŪ¤Ë¹Ô¤¦¤¿¤á¤Î¥Ñ¥¿¡¼¥ó¤òÁȤ߹ç¤ï¤»¤Æ¤¤¤Þ¤¹¡£
¤³¤ì¤Ë¤è¤ê¡¢½ÀÆðÀ­¤¬¤¢¤ê¡¢¿·¤·¤¤¥Ý¥Ã¥×¥¢¥Ã¥×¤òÍưפËÄɲäǤ­¡¢°Û¤Ê¤ë¥Ý¥Ã¥×¥¢¥Ã¥×´Ö¤ÎÏ¢·È¤¬¤·¤ä¤¹¤¯¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£



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


¡ã»²¹Í¥µ¥¤¥È¡ä


¥½¥Õ¥È¥é¥¤¥àÍÍ
¡ÚUnity¡ÛUnity¤Ç¥á¥Ç¥£¥¨¥¤¥¿¡¼¥Ç¥¶¥¤¥ó¥Ñ¥¿¡¼¥ó¤òÅö¤Æ¤Ï¤á¤Æ¤ß¤ë
https://soft-rime.com/post-12107/
Qiita @Cova8bitdot in Graffity³ô¼°²ñ¼Ò ÍÍ¡ÚUnity¡ÛUnity¤Ç³Ø¤Ö¥Ç¥¶¥¤¥ó¥Ñ¥¿¡¼¥ó17: Mediator ¥Ñ¥¿¡¼¥ó¡Ú¥Ç¥¶¥Ñ¥¿¡Û
https://qiita.com/Cova8bitdot/items/be33b97f35c84e...

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


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

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

Menu



´ðÁÃ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

private



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

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