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

¡¡¥Þ¥¦¥¹¥¯¥ê¥Ã¥¯¤Ç¤Ï¤Ê¤¯¡¢¥­¡¼¥Ü¡¼¥É(¥²¡¼¥à¥Ñ¥Ã¥É)¤Ç¤ÎÁàºî¤¬²Äǽ¤Ê¥¤¥ó¥Ù¥ó¥È¥ê¥¦¥¤¥ó¥É¥¦¤Î¼ÂÁõÎã¤Ç¤¹¡£
£²²ó¤Î¼ê½ç¤Ëʬ¤±¤Æ³Ø½¬¤·¤Þ¤¹¡£

¡¡¤³¤³¤Ç¤ÏÀµÊý·Á¡¢¤¢¤ë¤¤¤ÏĹÊý·Á¤Î¥¤¥ó¥Ù¥ó¥È¥ê¤òºÎÍѤ·¡¢Á´¥°¥ê¥Ã¥É(¥Þ¥¹)¤ò°ÜÆ°¤Ç¤­¤º¡¢ÆÃÄê¤Î¥°¥ê¥Ã¥É¤òÀ©¸Â¤¹¤ë¥±¡¼¥¹¤Ç¤¹¡£
¸«¤¿Ìܾå¤ÏÉÔ°ÂÄê¤Ê¥°¥ê¥Ã¥É¤Ç¤¹¤¬¡¢¤½¤ì¤ò¿¼¡¸µÇÛÎó¤òÍøÍѤ·¤¿ºÂɸ¤ËÃÖ¤­´¹¤¨¤ë¤³¤È¤Ç´ÉÍý¤·¤Þ¤¹¡£


¡ã¼ÂÁõÆ°²è¡ä
Æ°²è¥Õ¥¡¥¤¥ë¤Ø¤Î¥ê¥ó¥¯




¡¡¥­¡¼ÆþÎÏÁàºî¤Ë¤Ä¤¤¤Æ¤Ï UniRx ¤òÍøÍѤ·¡¢¥¤¥ó¥Ù¥ó¥È¥êÆâ¤Î¥°¥ê¥Ã¥É(¥Þ¥¹ÌÜ)¤È¥¢¥¤¥Æ¥à¥¢¥¤¥³¥ó¤Ë¤Ä¤¤¤Æ¤Ï¼«Æ°À¸À®¤ò¹Ô¤¤¤Þ¤¹¡£
¥°¥ê¥Ã¥É¤Ë¤Ä¤¤¤Æ¤Ï¿¼¡¸µÇÛÎó¤òÍøÍѤ·¤ÆºÂɸ¤È¤·¤Æ´ÉÍý¤·¡¢¥¢¥¤¥Æ¥à¥¢¥¤¥³¥ó¤Î²èÁü¤Ê¤É¤Î¾ðÊó¤Ë¤Ä¤¤¤Æ¤Ï¥Ç¡¼¥¿¥Ù¡¼¥¹¤è¤ê»²¾È¤·¤ÆÀßÄꤷ¤Þ¤¹¡£

¡¡¸½ºßÀ©ºî¤·¤Æ¤¤¤ë¥¤¥ó¥Ù¥ó¥È¥ê¤ò²þÎɤ·¤Æ¤ß¤¿¤¤¡¢½èÍý¤Î¼«Æ°²½¡¦¸úΨ²½¤ò¿Þ¤ê¤¿¤¤¡¢¤È¤¤¤¦¥Ë¡¼¥º¤ËÂбþ¤¹¤ë¶µºà¤È¤Ê¤ê¤Þ¤¹¡£

¡¡£²²ó¤Î¼ê½ç¤Ë¤ª¤¤¤Æ³Ø½¬¸å¡¢¤½¤Î¸å¤Î³Ø½¬¤È¤·¤Þ¤·¤Æ¤Ï¡¢¤³¤³¤Ç¤Ï£±¤Ä¤Î¥¯¥é¥¹¤Ç¤¹¤Ù¤Æ¤ò´°·ë¤·¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢
¤½¤Á¤é¤ò MVC¡ÊModel-View-Controller¡Ë¥¢¡¼¥­¥Æ¥¯¥Á¥ã¤ò³èÍѤ·¤¿¡¢¥¯¥é¥¹¤Îʬ³ä(ÀÕ̳ʬ¤±)¤ò¹Ô¤¦¤¿¤á¤Î¥ê¥Õ¥¡¥¯¥¿¥ê¥ó¥°¼êË¡¤ò³Ø½¬¤·¤Þ¤¹¡£



»öÁ°Ãμ±


¡¡¾¯¤Ê¤¯¤È¤â¡¢²¼µ­¤Îµ¡Ç½¤Ë¤Ä¤¤¤Æ¤ÏÍý²ò¤ò¤·¤Æ¤ª¤¯Êý¤¬Ë¾¤Þ¤·¤¤¤Ç¤·¤ç¤¦¡£

¡¦¥¹¥¯¥ê¥×¥¿¥Ö¥ë¡¦¥ª¥Ö¥¸¥§¥¯¥È
¡¦¥·¥ó¥°¥ë¥È¥ó¡¦¥Ç¥¶¥¤¥ó¥Ñ¥¿¡¼¥ó
¡¦Â¿¼¡¸µÇÛÎó
¡¦List
¡¦»°¹à±é»»»Ò(¤¹¤Ê¤ï¤Á¡¢Ìá¤êÃͤΤ¢¤ë½èÍý¤ÎÆɤ߲ò¤­Êý)

¡¡¿·¤·¤¯³Ø½¬¤¹¤ëÆâÍƤȤ·¤Æ¤Ï¡¢UniRx ¤òÍøÍѤ·¤¿¥­¡¼ÆþÎϵ¡Ç½¤Ë¤Ê¤ê¤Þ¤¹¡£


Àß·×


¡¡Â¿¼¡¸µÇÛÎó¤òÍøÍѤ·¤Æ¡¢X¤ÈY¤ÎºÂɸ¤Ç´ÉÍý¤·¤Æ¤¤¤Þ¤¹¡£





¿¼¡¸µÇÛÎó»þ¤Î¥á¥Ë¥å¡¼£±Æâ¤ÎºÂɸ [x-y]


[0-0, 1-0]
[0-1, 1-1, 2-1, 3-1]
[0-2, 1-2, 2-2, 3-2]

¡¡¾åµ­¤Î²èÁü¤ò¸µ¤Ë¤·¤¿ÇÛÎó¤Ï¡¢¤³¤Î¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£º¸¾å¤¬[0-0]¡¢±¦²¼¤¬ [3-2]¤Ç¤¹¡£

¡¦¥«¡¼¥½¥ë¤Î¾å²¼º¸±¦°ÜÆ°(Æ°¤±¤Ê¤¤¾ì½ê¤Ë¤Ï¤¤¤«¤Ê¤¤¤è¤¦¤Ë¤¹¤ëÀ©¸ÂÉÕ¤­)
¡¦¥¤¥ó¥Ù¥ó¥È¥êÆâ¤Î¥á¥Ë¥å¡¼ÀÚ¤êÂؤ¨(£±¤È¤ÎÀÚ¤êÂؤ¨¡£¥«¡¼¥½¥ë¤Î°ÌÃ֤ϣ±¤Î¤ßÂбþ)

¡¡¤¢¤È¤Ï¡¢¥¢¥¤¥Æ¥à¤Î¥¢¥¤¥³¥óÍѤΥ²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î¥×¥ì¥Ï¥Ö¤òºîÀ®¤·¤Æ¤¤¤¿¤À¤­¡¢
¤½¤³¤Ë¿·¤·¤¤¥¯¥é¥¹¤ò¥¢¥¿¥Ã¥Á¤·¤Æ¡¢½ê»ý¤·¤Æ¤¤¤ë¥¢¥¤¥Æ¥à¤Î¥Ç¡¼¥¿¤òÅϤ¹¤³¤È¤Ç²èÁü¤òº¹¤·Âؤ¨¤ë¤è¤¦¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£



¥¢¥»¥Ã¥È¤Î¥¤¥ó¥Ý¡¼¥È


¡¡É¬Íפʥ¢¥»¥Ã¥È¤ò¥¤¥ó¥Ý¡¼¥È¤·¤Æ¤ª¤­¤Þ¤¹¡£


¡ã£±¡¥UniRx¡ä


¡¡Unity ¤Î¥¢¥»¥Ã¥È¥¹¥È¥¢¤«¤é¥¤¥ó¥Ý¡¼¥È¤ª´ê¤¤¤·¤Þ¤¹¡£

UniRx - Reactive Extensions for Unity
https://assetstore.unity.com/packages/tools/integr...


<£²¡¥InputAsObservable>


¡¡¤³¤Á¤é¤Ï UniRx ¤Î³ÈÄ¥¥¢¥»¥Ã¥È¤È¤·¤Æ Github ¤Ë¸ø³«¤µ¤ì¤Æ¤¤¤Þ¤¹¡£

¡¡²¼µ­¤Î URL ¤è¤ê Download Zip ¤òÁªÂò¤·¤Æ¥À¥¦¥ó¥í¡¼¥É¤·¤Æ¤¯¤À¤µ¤¤¡£
²òÅष¤¿¥Õ¥©¥ë¥À¤ò¤½¤Î¤Þ¤ÞUnity ¤Ø¥¤¥ó¥Ý¡¼¥È¤·¤Æ¤¯¤À¤µ¤¤¡£

¡¡¤³¤ì¤Ë¤è¤ê InputAsRx.Triggers ¤Î̾Á°¶õ´Ö¤¬ÍøÍѤǤ­¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£


Github
https://github.com/euglenach/InputAsObservable


¡¡À©ºîÍͤΥµ¥¤¥È¤Ç¤¹¡£
¥¢¥»¥Ã¥È¤ÎÍøÍÑÊýË¡¤â²òÀ⤵¤ì¤Æ¤¤¤Þ¤¹¡£ÌܤòÄ̤·¤Æ¤ª¤­¤Þ¤·¤ç¤¦¡£

Qiita @Euglenach ÍÍ
¥­¡¼ÆþÎÏ¡¢¥Þ¥¦¥¹ÆþÎϤòIObservable T ¤ËÊÑ´¹¤·¤Æ»È¤¦


UI ¤ÎºîÀ®


¡¡¥¤¥ó¥Ù¥ó¥È¥êÍѤΥ¦¥¤¥ó¥É¥¦¤ò UI ¤ÇÀ©ºî¤·¤Þ¤¹¡£

¡¡ÇØ·Ê¡¢¥Õ¥ì¡¼¥à¤Ê¤É¤ÏǤ°Õ¤Ç¤¹¡£¼«Ê¬¤Î¹¥¤­¤Ê·Á¾õ¤ÇºîÀ®¤·¤Æ¤ß¤Þ¤·¤ç¤¦¡£

¡¡²¼µ­¤Ï¥µ¥ó¥×¥ë¤Ç¤¹¡£¤³¤ÎÄ̤ê¤Ç¤¢¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£


´°À®¿Þ



£±¡¥Canvas ¤ÎºîÀ®


¡¡Canvas Scaler ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤ÎÀßÄê¤ò˺¤ì¤º¤Ë¹Ô¤¦¤è¤¦¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£


£²¡¥¥á¥Ë¥å¡¼ÍѤΥ²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ÎºîÀ®


¡¡ÇطʲèÁü¤ÎÀßÄêÍÑ¥ª¥Ö¥¸¥§¥¯¥È¤ä¡¢¥«¡¼¥½¥ë°ÜÆ°Àè¤Î¥ª¥Ö¥¸¥§¥¯¥È¤ÎÇÛÃÖ°ÌÃÖ¤ÎÀßÄêÍѤΥª¥Ö¥¸¥§¥¯¥È¤òÇÛÃÖ¤·¤Æ¤ª¤­¤Þ¤¹¡£
¥«¡¼¥½¥ë¤Î°ÜÆ°Àè¤Ë¤Ä¤¤¤Æ¤Ï¡¢³Æ¥Þ¥¹ÌÜ(Grid)¤òÀ¸À®¤·¤Þ¤¹¤¬¡¢¤½¤ì¤òÇÛÃÖ¤¹¤ë¤¿¤á¤Î¥ª¥Ö¥¸¥§¥¯¥È¤ò»öÁ°¤ËÇÛÃÖ¤·¤Æ¤ª¤¯¤ÈÀ¸À®¤·¤ä¤¹¤¤¤Ç¤¹¡£


£³¡¥¥«¡¼¥½¥ëÍѤΥ²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ÎºîÀ®


¡¡¥×¥ì¥¤¥ä¡¼¤ÎÁàºî¤¹¤ë¥«¡¼¥½¥ë¤Ë¤Ä¤¤¤Æ¤â¥ª¥Ö¥¸¥§¥¯¥È¤òÍÑ°Õ¤·¤Þ¤¹¡£
¤³¤Á¤é¤òÁàºî¤¹¤ë·Á¤Ë¤Ê¤ê¤Þ¤¹¡£


InventoryManager ¥¹¥¯¥ê¥×¥È¤ÎºîÀ®


¡¡using ¤Ç¤Ï¥¤¥ó¥Ý¡¼¥È¤·¤¿³°Éô¥¢¥»¥Ã¥È¤è¤ê UniRx ¤È InputAsRx.Triggers ¤Î̾Á°¶õ´Ö¤òÍøÍѤ·¤Æ¤¤¤Þ¤¹¡£
¤Þ¤¿¥«¡¼¥½¥ë¤ò¥Õ¥©¡¼¥«¥¹¤·¤Æ¥­¡¼ÆþÎÏÁàºî¤ËÂбþ¤µ¤»¤ë¤¿¤á¡¢UnityEngine.EventSystems ¤Î̾Á°¶õ´Ö¤âÄɲ䷤Ƥ¤¤Þ¤¹¡£


InventoryManager.cs

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



²òÀâ


¡¡UI ¤Ç¥­¡¼¥Ü¡¼¥É¤ä¥¸¥ç¥¤¥Ñ¥Ã¥É¤Ë¤è¤ë¥«¡¼¥½¥ë°ÜÆ°¤ò¼Â¸½¤¹¤ë¤Ë¤Ï¡¢°Ê²¼¤Î¼ê½ç¤¬É¬Íפˤʤê¤Þ¤¹¡£

£±¡¥UI ¤¬³«¤¤¤¿¤È¤­¡¢£±¤Ä¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë¥Õ¥©¡¼¥«¥¹¤¹¤ë¡£¤³¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤¬¥«¡¼¥½¥ë¤Î½é´ü°ÌÃ֤ˤʤë¤è¤¦¤Ë¤¹¤ë
£²¡¥¥­¡¼ÆþÎϤȥ«¡¼¥½¥ë¤ÎÆ°¤­¤òϢư¤µ¤»¤ë


£±¡¥UI ¤¬³«¤¤¤¿¤È¤­¡¢£±¤Ä¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë¥Õ¥©¡¼¥«¥¹¤¹¤ë¡£¤³¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤¬¥«¡¼¥½¥ë¤Î½é´ü°ÌÃ֤ˤʤë¤è¤¦¤Ë¤¹¤ë


¡¡£±¤Ë¤Ä¤¤¤Æ¤Ï¡¢Unity ¤¬ÍÑ°Õ¤·¤Æ¤¤¤ë½èÍý¤¬¤¢¤ê¤Þ¤¹¡£

''EventSystem.current.SetSelectedGameObject() ¥á¥½¥Ã¥É''

¡¡¤³¤Î¥á¥½¥Ã¥É¤òÍøÍѤ·¡¢°ú¿ô¤Ë¤Ï GameObject ·¿¤ò»ØÄꤹ¤ë¤³¤È¤Ç¡¢¥Õ¥©¡¼¥«¥¹¤·¤Þ¤¹¡£
¤³¤ì¤Ï UnityEngine.EventSystems ̾Á°¶õ´Ö(namespace)¤Ë´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢using ¤ÇÀë¸À¤·¤Æ¤¤¤Þ¤¹¡£


£²¡¥¥­¡¼ÆþÎϤȥ«¡¼¥½¥ë¤ÎÆ°¤­¤òϢư¤µ¤»¤ë


¡¡£²¤Ë¤Ä¤¤¤Æ¤Ï¡¢¥­¡¼ÆþÎÏÉôʬ¤È¡¢¥«¡¼¥½¥ë¤Ø¤Î¾ðÊó¤òÅϤ¹Éôʬ¤ò¤½¤ì¤¾¤ìºî¤ê¤Þ¤¹¡£
¡¡¥­¡¼ÆþÎϤˤϡ¢UniRx.Triggers ¤ò³ÈÄ¥¤·¤Æ¤¤¤ëÀè¤Û¤É¤Î InputAsObservable ¥¢¥»¥Ã¥È¤òÍøÍѤ·¤Þ¤¹¡£

this.OnAxisRawAsObservable("Horizontal")      // GetAxisRaw ¥á¥½¥Ã¥É¤ÈƱ¤¸
    .Where(horizontal => horizontal != 0)     // ¥­¡¼ÆþÎϤ¬¤¢¤ë¤«³Îǧ
    .ThrottleFirst(TimeSpan.FromSeconds(inputDelay))     // Ϣ³ÆþÎϤòÀ©¸æ¡£inputDelay »þ´Ö¤À¤±Ï¢Â³ÆþÎϤò¼õ¤±ÉÕ¤±¤Ê¤¤
    .Subscribe(horizontal => MoveCursor((int)horizontal, 0));   // ¥­¡¼ÆþÎϤÎÃͤò MoveCursor ¤ËÅϤ·¤Æ°ÜÆ°Àè¤ò·è¤á¤ë

¡¡¤³¤ì¤¬¥­¡¼ÆþÎÏÉôʬ¤Ç¤¹¡£
¡¡this ¤È¤¢¤ë¤Î¤Ï¡¢¤³¤Î¥¯¥é¥¹¤È¡¢¤³¤Î¥¯¥é¥¹¤¬·Ñ¾µ¤·¤Æ¤¤¤ë MonoBehaviour ¥¯¥é¥¹¤ò»Ø¤·¤Æ¤¤¤Þ¤¹¡£
¤½¤ÎÃæ¤ËÍÑ°Õ¤µ¤ì¤Æ¤¤¤ë Input.GetAxisRaw ¥á¥½¥Ã¥É¤ò UniRx ¤Î·Á¤Ç½ñ¤¤¤¿½ñ¼°¤Ë¤Ê¤ê¤Þ¤¹¡£

¡¡UniRx ¤Ï¡¢°ìÅÙ½èÍý¤òºîÀ®¤¹¤ì¤Ð¡¢¼«Æ°Åª¤Ë´Æ»ë½èÍý¤¬¼Â¹Ô¤µ¤ì¤Þ¤¹¡£

¡¡¤³¤Î¥±¡¼¥¹¤Ç¤¢¤ì¤Ð¡¢Horizontal Êý¸þ(X ¼´)¤Î¥­¡¼ÆþÎϤò´Æ»ë¤·¡¢Where Éôʬ¤Ç¾ò·ï¤ò³Îǧ¤·¤Þ¤¹¡£¤³¤ì¤Ï if ʸ¤ÈƱ¤¸µ¡Ç½¤Ç¤¹¡£
¤Ä¤Þ¤ê¡¢Horizontal Êý¸þ(º¸±¦Ìð°õ¡¢¤¢¤ë¤¤¤ÏAW¥­¡¼)¤ÎÆþÎϤò OnAxisRawAsObservable("Horizontal") ¤Ç¼õÉÕ¡¢
¼ÂºÝ¤ËÆþÎÏÃͤ¬¤¢¤ë¤«¤É¤¦¤«¤ò.Where(horizontal => horizontal != 0)Éôʬ¤Ç¥Á¥§¥Ã¥¯¤·¤Æ¤¤¤Þ¤¹¡£¥­¡¼ÆþÎϤ¬¤¢¤ì¤ÐÃÍ¤Ï 0 °Ê³°¤Ë¤Ê¤ë¤¿¤á¤Ç¤¹¡£

¡¡¤½¤Î²¼¤Ë¤¢¤ë .ThrottleFirst(TimeSpan.FromSeconds(inputDelay)) ¤Î½èÍý¤Ï¡¢½ÅÊ£ÆþÎϤòËɤ°µ¡Ç½¤Ç¤¹¡£
GetAxisRaw ¤Ë¤è¤ëÌ¿Îá¤Ï¥­¥ã¥é¤Î°ÜÆ°¤Ë¤âÍøÍѤǤ­¤ë¤è¤¦¤ËϢ³¤·¤ÆȽÄꤷ¤Þ¤¹¡£
¤½¤Î¤¿¤á¡¢1Éò¡¤·¤¿¤À¤±¤Ç¤â²èÌÌü¤Þ¤Ç¥«¡¼¥½¥ë¤¬°ìµ¤¤Ë°ÜÆ°¤·¤Æ¤·¤Þ¤¦¤Î¤Ç¡¢
¤½¤ì¤ò°ú¿ô¤Ç»ØÄꤷ¤¿»þ´Ö¤À¤±¡¢¥­¡¼ÆþÎϤò¼õ¤±ÉÕ¤±¤Ê¤¤¤è¤¦¤Ë¤¹¤ë¤³¤È¤Ç
¥­¡¼ÆþÎϤò¤·Â³¤±¤Æ¤â¡¢°ìÄê¤Î´Ö³Ö¤Ç¥«¡¼¥½¥ë¤ò°ÜÆ°¤Ç¤­¤ë¤è¤¦¤ËÄ´À°¤·¤Æ¤¤¤Þ¤¹¡£

¡¡ºÇ¸å¤Î .Subscribe(horizontal => MoveCursor( (int)horizontal, 0)) ¤¬¥­¡¼ÆþÎϤ¬¤¢¤Ã¤¿¤È¤­¤Ë¼Â¹Ô¤µ¤ì¤ë½èÍý¤Ç¤¹¡£
horizontal ÊÑ¿ô¤Ë¡¢º£²ó¤Îʬ¤Î¥­¡¼ÆþÎϤÎÃͤ¬Æþ¤ë¤Î¤Ç¡¢1 ¤« -1 ¤ÎÃͤ¬Æþ¤Ã¤Æ¤ª¤ê¡¢¤½¤ì¤ò MoveCorsor ¥á¥½¥Ã¥É¤ËÅϤ·¤Æ¤¤¤Þ¤¹¡£



¡¡¤³¤³¤ÇÍøÍѤµ¤ì¤Æ¤¤¤ë½èÍý¤Îµ­½Ò¤Ï UniRx ¤Î¤â¤Î¤Ç¤¹¤¬¡¢¥á¥½¥Ã¥É¤òÊ£¿ô¤Ä¤Ê¤²¤Æ¤¤¤¯¥á¥½¥Ã¥É¥Á¥§¡¼¥ó¤È¤¤¤¦½ñ¼°¤Ï C# ¼«ÂΤε¡Ç½¤Ç¤¹¡£



¡¡MoveCorsor ¥á¥½¥Ã¥É¤Ç¤Ï¡¢¥­¡¼ÆþÎϤÎÃͤ¬ X ¼´¤È Y ¼´¤Ë¤Ä¤¤¤ÆÍøÍѤ·¡¢¤½¤ì¤ò¥«¡¼¥½¥ë¤Î°ÌÃÖ¤ËÍî¤È¤·¹þ¤ó¤Ç¤¤¤Þ¤¹¡£
¤Þ¤¿¡¢¥«¡¼¥½¥ë¤¬°ÜÆ°¤Ç¤­¤ë¥°¥ê¥Ã¥É(ÏÈ)¤òĶ¤¨¤Æ¤¤¤Ê¤¤¤«¤òȽÄꤷ¡¢°ÜÆ°¤Ç¤­¤Ê¤¤¾ì¹ç¤Ë¤ÏÁ°¤Î°ÌÃ֤˺ưÜÆ°¤µ¤»¤Æ¤¤¤Þ¤¹¡£
¡¡¥«¡¼¥½¥ë¤Ï°ÜÆ°»þ¤Ë¿Æ»Ò´Ø·¸¤ò»È¤Ã¤Æ°ÜÆ°¤·¤Æ¤¤¤Þ¤¹¤¬¡¢Ã±½ã¤Ë¥«¡¼¥½¥ë¤ÎºÂɸ¤À¤±¤òÆ°¤«¤·¤Æ¤â¤¤¤¤¤Ç¤¹¡£
¤¿¤À¤·¡¢¿Æ»Ò´Ø·¸¤Ë¤·¤Æ¤ª¤¯¤È¡¢¿Æ¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤¬¡Ö¥¢¥¤¥Æ¥à¥¢¥¤¥³¥ó¡×¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë¤Ê¤ê¤Þ¤¹¤Î¤Ç¡¢
¥«¡¼¥½¥ë¤Î°ÌÃÖ¤«¤é¥¢¥¤¥Æ¥à¥¢¥¤¥³¥ó¤Î¾ðÊó¤ò»²¾È¤·¤ä¤¹¤¯¤Ê¤ë¤Î¤Ç¡¢¤³¤Î¤è¤¦¤Ë¤·¤Æ¤¤¤Þ¤¹¤¬¡¢¤³¤ÎÊÕ¤ê¤ÏǤ°Õ¤À¤È»×¤¤¤Þ¤¹¡£

¡¡¥á¥Ë¥å¡¼£±¤Ë¤Ä¤¤¤Æ¤Ï¡¢¥Õ¥é¥°¤ò»È¤¦¤³¤È¤Ç¥«¡¼¥½¥ë¤Î°ÌÃÖ¤òµ­²±¤µ¤»¤ë¥±¡¼¥¹¤È¤µ¤»¤Ê¤¤¥±¡¼¥¹¤ÎÀÚ¤êÂؤ¨¤¬½ÐÍè¤ë¤è¤¦¤Ë¤·¤Æ¤¢¤ê¤Þ¤¹¡£

¡¡¥Ü¥¿¥ó¤ò²¡¤¹¤¿¤Ó¤Ë£±¤È£²¤òÀÚ¤êÂؤ¨¤Þ¤¹¡£


¥¹¥¯¥ê¥×¥È¤ò¥¢¥¿¥Ã¥Á¤·¤ÆÀßÄê¤ò¹Ô¤¦


¡¡ºîÀ®¤·¤¿¥¹¥¯¥ê¥×¥È¤Ï¡¢¤É¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë¥¢¥¿¥Ã¥Á¤·¤Æ¤âÌäÂꤢ¤ê¤Þ¤»¤ó¡£(¤Ê¤¼¡¢¤É¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤âÌäÂê¤Ê¤¤¤Î¤«¡¢Íýͳ¤ò¹Í¤¨¤Æ¤ß¤Þ¤·¤ç¤¦¡£)
¿·µ¬ºîÀ®¤·¤¿¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤â¤è¤¤¤Ç¤¹¤·¡¢Canvas ¤Ç¤âÌäÂꤢ¤ê¤Þ¤»¤ó¡£

¡¡GridList ÊÑ¿ô¤Ë¤Ï Grid(°ÜÆ°²Äǽ¤Ê¥Þ¥¹ÌÜ)¤Î°ÌÃÖÍѤΥ²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ò¥¢¥µ¥¤¥ó¤·¤Æ¤¯¤À¤µ¤¤¡£
¤³¤³¤ËÅÐÏ¿¤·¤¿°ÌÃÖ¤Ë Grid ¤òÀ¸À®¤·¡¢¥«¡¼¥½¥ë°ÜÆ°²Äǽ¤Ê¥ª¥Ö¥¸¥§¥¯¥È¤È¤·¤ÆÍøÍѤ·¤Þ¤¹¡£
¤Þ¤¿Â¿¼¡¸µÇÛÎó¤ÎºÂɸ¤¬¤ï¤«¤ê¤ä¤¹¤¤¤è¤¦¤Ë¡¢¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î̾¾Î¤¬¥²¡¼¥à¼Â¹Ô»þ¤ËºÂɸ̾¤ËÊѹ¹¤µ¤ì¤Þ¤¹¡£

¡¡Cursor ÊÑ¿ô¤Ë¥¢¥µ¥¤¥ó¤¹¤ë¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ï¡¢Canvas Æâ¤ËºîÀ®¤·¤¿¥«¡¼¥½¥ëÍѤΥ²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ò¥¢¥µ¥¤¥ó¤·¤Æ¤¯¤À¤µ¤¤¡£

¡¡IsMemoryCursorPos ¤Ë¥Á¥§¥Ã¥¯¤òÆþ¤ì¤ë¤È¡¢¥á¥Ë¥å¡¼1¤Î¤ß¡¢¥«¡¼¥½¥ë¤Î°ÌÃÖ¤òµ­²±¤·¤Þ¤¹¤Î¤Ç¡¢
°ìÅÙ¡¢¥¤¥ó¥Ù¥ó¥È¥ê¤òÊĤ¸¤Æ³«¤­Ä¾¤·¤Æ¤â¡¢Á°¤Î¥«¡¼¥½¥ë¤Î°ÌÃÖ¤«¤é¥¹¥¿¡¼¥È¤·¤Þ¤¹¡£




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


¡¡¥²¡¼¥à¼Â¹Ô»þ¤Î¤â¤Î¤Ç¤¹¡£
GridList ÊÑ¿ô¤ËÅÐÏ¿¤·¤¿¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î̾Á°¤ò¡¢¥Ç¥Ð¥Ã¥°¤·¤ä¤¹¤¤¤è¤¦¤ËºÂɸ°ÌÃÖ¤ËÊѹ¹¤·¤Æ¤¤¤Þ¤¹¡£





¡ã¼ÂÁõÆ°²è¡ä
Æ°²è¥Õ¥¡¥¤¥ë¤Ø¤Î¥ê¥ó¥¯



¤Þ¤È¤á


¡¡¤Þ¤À´°À®¤Ï¤·¤Æ¤¤¤Þ¤»¤ó¤¬¡¢¥á¥Ë¥å¡¼£±¤È£²¤Ø¤ÎÀÚ¤êÂؤ¨¤âÆþ¤ì¤Æ¤¢¤ê¤Þ¤¹¡£
¤¿¤À¤·¡¢¥«¡¼¥½¥ë¤Î°ÌÃÖ¤¬¥á¥Ë¥å¡¼£±¤·¤«Âбþ¤·¤Æ¤¤¤Þ¤»¤ó¡£



¡¡UniRx ¤Ç¥­¡¼ÆþÎϤξðÊó¤òºîÀ®¤¹¤ë¥á¥ê¥Ã¥È¤Ï¡¢Update ¥á¥½¥Ã¥ÉÆâ¤Ë¥­¡¼ÆþÎϤνèÍý¤ò½ñ¤«¤Ê¤¯¤ÆºÑ¤à¤è¤¦¤Ë¤Ê¤ê¡¢½èÍý¤ÎÉé²Ù·Ú¸º¤¬¸«¹þ¤á¤Þ¤¹¡£
¡¡
¡¡¤Þ¤¿º£²ó¤Ï¤ä¤Ã¤Æ¤¤¤Þ¤»¤ó¤¬¡¢¥¤¥ó¥Ù¥ó¥È¥ê¤Îɽ¼¨/Èóɽ¼¨¤Ê¤É¤Î Update Æâ¤Ë½ñ¤¤¤Æ¤¢¤ë½èÍý¤â¤¹¤Ù¤Æ UniRx ¤Ç¤Îµ­½Ò¤ËÊѹ¹²Äǽ¤Ç¤¹¡£
¤½¤¦¤¹¤ë¤³¤È¤Ç Update ¥á¥½¥Ã¥É¤ò½ñ¤«¤Ê¤¯¤ÆºÑ¤ß¤Þ¤¹¡£

¡¡¤½¤Î¾ì¹ç¡¢this.UpdateAsObservable ¥á¥½¥Ã¥É¤ò»È¤¦·Á¤Ë¤Ê¤ê¤Þ¤¹¤Î¤Ç¡¢¤è¤í¤·¤±¤ì¤ÐÄ´¤Ù¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£
¤¢¤ë¤¤¤Ï¡¢ChatGPT ¤Ë Update Æâ¤Î½èÍý¤ò½ñ¤¤¤Æ¡¢UniRx ¤Ø¤ÎÊÑ´¹¤ò»Ø¼¨¤·¤Æ¤â¤é¤Ã¤Æ¤â¤¤¤¤¤«¤â¤·¤ì¤Þ¤»¤ó¡£



¡¡UniRx ¤òÍøÍѤ¹¤ë¤È¡Ö­¡¤³¤¦¤¤¤¦¤³¤È¤¬µ¯¤­¤¿¤È¤­¡¢­¢¤³¤¦¤¤¤¦¤³¤È¤ò¼Â¹Ô¤¹¤ë¡×¤È¤¤¤¦·Á¤ÎÊÑ´¹¤¬½ÐÍè¤Þ¤¹¡£
¤³¤ì¤ÏÉáÃÊÍøÍѤ·¤Æ¤¤¤ë¥Ü¥¿¥ó¤Î½èÍý¤ò¡¢¿§¡¹¤Ê¤â¤Î¤Ë¤âÂбþ¤µ¤»¤ë¥¤¥á¡¼¥¸¤Ç¤¹¡£

¡¡¥Ü¥¿¥ó¤ò²¡¤·¤¿¤é¡¢ÅÐÏ¿¤·¤Æ¤¢¤Ã¤¿¥á¥½¥Ã¥É¤¬Æ°¤¯¡¢¤È¤¤¤¦¤Î¤ò¡¢Â¾¤Î½èÍý¤Ë¤â±þÍѤǤ­¤Þ¤¹¡£
¤³¤ì¤Ï½èÍý¤Î¥¤¥Ù¥ó¥È²½¤ä¡¢¥¤¥Ù¥ó¥È¶îÆ°·¿¤Î½èÍý¤È¤â¤¤¤¤¡¢»öÁ°¤Ë¡Ö­¡­¢¡×¤òÀßÄꤷ¤Æ¤ª¤¯¤³¤È¤Ç¼Â¸½¤·¤Æ¤¤¤Þ¤¹¡£

¡¡¤³¤Î½èÍý¤ÏÈóƱ´ü½èÍý¤È¤Ê¤ë¤Î¤Ç¡¢¥³¥ë¡¼¥Á¥ó¥á¥½¥Ã¥É¤ÈƱ¤¸¤¯¡¢¥á¥¤¥ó¤Î½èÍý¤«¤éʬΥ¤µ¤ì¤ÆÆ°¤­½Ð¤·¤Þ¤¹¡£
Update ¥á¥½¥Ã¥É¤Î¾ì¹ç¡¢¥á¥¤¥ó¤Î½èÍýÆâ¤Ç¥Ü¥¿¥ó¤ò²¡¤·¤¿¤«¤É¤¦¤«¤ò´Æ»ë¤¹¤ë·Á¤Ë¤Ê¤ê¤Þ¤¹¤¬¡¢
ÈóƱ´ü½èÍý¤Î¾ì¹ç¤Ë¤Ï¥á¥¤¥ó¤Î½èÍý¤È¤ÏÊ̤ξì½ê¤ÇÆ°¤¯¤Î¤Ç¡¢ÁêÂÐŪ¤Ë½èÍý¤ÎÉé²Ù·Ú¸º¤¬¼ÂÁõ½ÐÍè¤Þ¤¹¡£


¡¡Î㤨¤Ð¡¢­¡A ¤È¤¤¤¦¥Õ¥é¥°¤¬Î©¤Ã¤¿¤é ­¢ B ¤È¤¤¤¦¥á¥½¥Ã¥É¤ò¼Â¹Ô¤¹¤ë¡×¤È¤¤¤¦¤è¤¦¤Ê¡¢¥Õ¥é¥°´Æ»ë¤Î½èÍý¤ò Update ¤Ë½ñ¤¯¤Î¤Ç¤Ï¤Ê¤¯¤Æ
»öÁ°¤Ë¥»¥Ã¥È¤·¤Æ¤ª¤¯¤À¤±¤Ç¡¢¤¢¤È¤Ï¤º¤Ã¤È´Æ»ë¤·¤Æ¤¯¤ì¤ë¤Î¤¬ UniRx ¤Î¼Â¸½¤Ç¤­¤ëÆâÍƤǤ¹¡£

¡¡¤³¤Î­¡¤È­¢¤Î´Ö¤Ë¤Ï¡¢¥ª¥×¥·¥ç¥óÀßÄ꤬²Äǽ¤Ç¤¹¡£
¤½¤ì¤¬º£²ó¤Î¥­¡¼ÆþÎϤÎÉôʬ¤Ç¤âÍøÍѤµ¤ì¤Æ¤¤¤Þ¤¹¡£

this.OnAxisRawAsObservable("Horizontal")      // GetAxisRaw ¥á¥½¥Ã¥É¤ÈƱ¤¸
    .Where(horizontal => horizontal != 0)     // ¥­¡¼ÆþÎϤ¬¤¢¤ë¤«³Îǧ
    .ThrottleFirst(TimeSpan.FromSeconds(inputDelay))     // Ϣ³ÆþÎϤòÀ©¸æ¡£inputDelay »þ´Ö¤À¤±Ï¢Â³ÆþÎϤò¼õ¤±ÉÕ¤±¤Ê¤¤
    .Subscribe(horizontal => MoveCursor((int)horizontal, 0));   // ¥­¡¼ÆþÎϤÎÃͤò MoveCursor ¤ËÅϤ·¤Æ°ÜÆ°Àè¤ò·è¤á¤ë

¡ã¥­¡¼ÆþÎϤò´Æ»ë¤¹¤ë¡ä
­¡¡¡this.OnAxisRawAsObservable("Horizontal") // GetAxisRaw ¥á¥½¥Ã¥É¤ÈƱ¤¸

¡ã¤½¤ì¤ËÂбþ¤·¤Æ¡¢½èÍý¤ò¼Â¹Ô¤¹¤ë¡ä
­¢¡¡.Subscribe(horizontal => MoveCursor( (int)horizontal, 0)); // ¥­¡¼ÆþÎϤÎÃͤò MoveCursor ¤ËÅϤ·¤Æ°ÜÆ°Àè¤ò·è¤á¤ë

¡¡¤³¤Î­¡¤È­¢¤Î´Ö¤Ë¤¢¤ë£²¤Ä¤Î½èÍý¤¬¥ª¥×¥·¥ç¥ó¤Ç¤¹¡£
¤³¤Î¾ì¹ç¤Ï¡¢¡Ö¥­¡¼ÆþÎϤ¬¤¢¤Ã¤¿¤«³Îǧ¡×¡Ö°ìÄê»þ´Ö¤ª¤­¤Ë¥­¡¼ÆþÎϤò¼õ¤±ÉÕ¤±¤ë¡×¤È¤¤¤¦ÀßÄê¤ò¤·¤Æ¤¤¤ë¤Î¤Ç¡¢
­¢¤Î½èÍý¤Ë¹Ô¤¯Á°¤Ë¿§¡¹¤Ê¾ò·ï¤òÀßÄꤹ¤ë¤³¤È¤Ç¡¢¼«Ê¬¤ÎÁÛÄꤷ¤Æ¤¤¤ë½èÍý¤ò¼Â¸½¤·¤Æ¤¤¤Þ¤¹¡£




»²¹Í¥µ¥¤¥È
¥½¥Õ¥È¥é¥¤¥à ÍÍ
C#¥¹¥­¥ëÊÌ¡¢Inventory¡Ê¥¤¥ó¥Ù¥ó¥È¥ê¡Ë»ý¤Áʪ¥·¥¹¥Æ¥à


InventoryManager ¤Î±þÍÑÎã


¡¡¥²¡¼¥à¤Î¾õÂ֤˹ç¤ï¤»¤Æ¡¢¥¤¥ó¥Ù¥ó¥È¥ê¥¦¥¤¥ó¥É¥¦¤ÎµóÆ°¤âÄ´À°¤·¤Þ¤·¤ç¤¦¡£

¡¡¤³¤Á¤é¤Î¥±¡¼¥¹¤Î¾ì¹ç¤Ë¤ÏºÇ½é¤Ë¥¢¥¤¥³¥ó¤òÀ¸À®¤·¤Æʤ٤Ƥ¤¤Þ¤¹¡£


InventoryManager.cs

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

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


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

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

Menu



´ðÁÃ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

private



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

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