ºÇ½ª¹¹¿·¡§ orika_ex_miyako 2024ǯ01·î01Æü(·î) 19:15:09ÍúÎò
£²²ó¤Î¼ê½ç¤Ëʬ¤±¤Æ³Ø½¬¤·¤Þ¤¹¡£
¡¡¤³¤³¤Ç¤ÏÀµÊý·Á¡¢¤¢¤ë¤¤¤ÏĹÊý·Á¤Î¥¤¥ó¥Ù¥ó¥È¥ê¤òºÎÍѤ·¡¢Á´¥°¥ê¥Ã¥É(¥Þ¥¹)¤ò°ÜÆ°¤Ç¤¤ë¥±¡¼¥¹¤Ç¤¹¡£
¡¡¥¡¼ÆþÎÏÁàºî¤Ë¤Ä¤¤¤Æ¤Ï UniRx ¤òÍøÍѤ·¡¢¥¤¥ó¥Ù¥ó¥È¥êÆâ¤Î¥°¥ê¥Ã¥É(¥Þ¥¹ÌÜ)¤È¥¢¥¤¥Æ¥à¥¢¥¤¥³¥ó¤Ë¤Ä¤¤¤Æ¤Ï¼«Æ°À¸À®¤ò¹Ô¤¤¤Þ¤¹¡£
¥°¥ê¥Ã¥É¤Ë¤Ä¤¤¤Æ¤Ï¿¼¡¸µÇÛÎó¤òÍøÍѤ·¤ÆºÂɸ¤È¤·¤Æ´ÉÍý¤·¡¢¥¢¥¤¥Æ¥à¥¢¥¤¥³¥ó¤Î²èÁü¤Ê¤É¤Î¾ðÊó¤Ë¤Ä¤¤¤Æ¤Ï¥Ç¡¼¥¿¥Ù¡¼¥¹¤è¤ê»²¾È¤·¤ÆÀßÄꤷ¤Þ¤¹¡£
¡¡¸½ºßÀ©ºî¤·¤Æ¤¤¤ë¥¤¥ó¥Ù¥ó¥È¥ê¤ò²þÎɤ·¤Æ¤ß¤¿¤¤¡¢½èÍý¤Î¼«Æ°²½¡¦¸úΨ²½¤ò¿Þ¤ê¤¿¤¤¡¢¤È¤¤¤¦¥Ë¡¼¥º¤ËÂбþ¤¹¤ë¶µºà¤È¤Ê¤ê¤Þ¤¹¡£
¡¡£²²ó¤Î¼ê½ç¤Ë¤ª¤¤¤Æ³Ø½¬¸å¡¢¤½¤Î¸å¤Î³Ø½¬¤È¤·¤Þ¤·¤Æ¤Ï¡¢¤³¤³¤Ç¤Ï£±¤Ä¤Î¥¯¥é¥¹¤Ç¤¹¤Ù¤Æ¤ò´°·ë¤·¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢
¤½¤Á¤é¤ò MVC¡ÊModel-View-Controller¡Ë¥¢¡¼¥¥Æ¥¯¥Á¥ã¤ò³èÍѤ·¤¿¡¢¥¯¥é¥¹¤Îʬ³ä(ÀÕ̳ʬ¤±)¤ò¹Ô¤¦¤¿¤á¤Î¥ê¥Õ¥¡¥¯¥¿¥ê¥ó¥°¼êË¡¤ò³Ø½¬¤·¤Þ¤¹¡£
¡¡¾¯¤Ê¤¯¤È¤â¡¢²¼µ¤Îµ¡Ç½¤Ë¤Ä¤¤¤Æ¤ÏÍý²ò¤ò¤·¤Æ¤ª¤¯Êý¤¬Ë¾¤Þ¤·¤¤¤Ç¤·¤ç¤¦¡£
¡¦¥¹¥¯¥ê¥×¥¿¥Ö¥ë¡¦¥ª¥Ö¥¸¥§¥¯¥È ¡¦¥·¥ó¥°¥ë¥È¥ó¡¦¥Ç¥¶¥¤¥ó¥Ñ¥¿¡¼¥ó ¡¦Â¿¼¡¸µÇÛÎó ¡¦List ¡¦»°¹à±é»»»Ò(¤¹¤Ê¤ï¤Á¡¢Ìá¤êÃͤΤ¢¤ë½èÍý¤ÎÆɤ߲ò¤Êý)
¡¡¿·¤·¤¯³Ø½¬¤¹¤ëÆâÍƤȤ·¤Æ¤Ï¡¢UniRx ¤òÍøÍѤ·¤¿¥¡¼ÆþÎϵ¡Ç½¤Ë¤Ê¤ê¤Þ¤¹¡£
¡¡Â¿¼¡¸µÇÛÎó¤òÍøÍѤ·¤Æ¡¢X¤ÈY¤ÎºÂɸ¤Ç´ÉÍý¤·¤Æ¤¤¤Þ¤¹¡£
¿¼¡¸µÇÛÎó»þ¤Î¥á¥Ë¥å¡¼£±Æâ¤ÎºÂɸ [x-y]
[0-0, 1-0, 2-0, 3-0]
[0-1, 1-1, 2-1, 3-1]
[0-2, 1-2, 2-2, 3-2]
¡¡¾åµ¤Î²èÁü¤ò¸µ¤Ë¤·¤¿ÇÛÎó¤Ï¡¢¤³¤Î¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£º¸¾å¤¬[0-0]¡¢±¦²¼¤¬ [3-2]¤Ç¤¹¡£
¡¦¥«¡¼¥½¥ë¤Î¾å²¼º¸±¦°ÜÆ°(¥°¥ê¥Ã¥É³°Éô¤Ë¤Ï¤¤¤«¤Ê¤¤¤è¤¦¤Ë¤¹¤ëÀ©¸ÂÉÕ¤)
¡¡¤¢¤È¤Ï¡¢¥¢¥¤¥Æ¥à¤Î¥¢¥¤¥³¥óÍѤΥ²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î¥×¥ì¥Ï¥Ö¤òºîÀ®¤·¤Æ¤¤¤¿¤À¤¡¢
¤½¤³¤Ë¿·¤·¤¤¥¯¥é¥¹¤ò¥¢¥¿¥Ã¥Á¤·¤Æ¡¢½ê»ý¤·¤Æ¤¤¤ë¥¢¥¤¥Æ¥à¤Î¥Ç¡¼¥¿¤òÅϤ¹¤³¤È¤Ç²èÁü¤òº¹¤·Âؤ¨¤ë¤è¤¦¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£
¡¡Unity ¤Î¥¢¥»¥Ã¥È¥¹¥È¥¢¤«¤é¥¤¥ó¥Ý¡¼¥È¤ª´ê¤¤¤·¤Þ¤¹¡£
UniRx - Reactive Extensions for Unity
https://assetstore.unity.com/packages/tools/integr...
¡¡¤³¤Á¤é¤Ï UniRx ¤Î³ÈÄ¥¥¢¥»¥Ã¥È¤È¤·¤Æ Github ¤Ë¸ø³«¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
¡¡²¼µ¤Î URL ¤è¤ê Download Zip ¤òÁªÂò¤·¤Æ¥À¥¦¥ó¥í¡¼¥É¤·¤Æ¤¯¤À¤µ¤¤¡£
²òÅष¤¿¥Õ¥©¥ë¥À¤ò¤½¤Î¤Þ¤ÞUnity ¤Ø¥¤¥ó¥Ý¡¼¥È¤·¤Æ¤¯¤À¤µ¤¤¡£
¡¡¤³¤ì¤Ë¤è¤ê InputAsRx.Triggers ¤Î̾Á°¶õ´Ö¤¬ÍøÍѤǤ¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
Github
https://github.com/euglenach/InputAsObservable
¡¡À©ºîÍͤΥµ¥¤¥È¤Ç¤¹¡£
¥¢¥»¥Ã¥È¤ÎÍøÍÑÊýË¡¤â²òÀ⤵¤ì¤Æ¤¤¤Þ¤¹¡£ÌܤòÄ̤·¤Æ¤ª¤¤Þ¤·¤ç¤¦¡£
Qiita @Euglenach ÍÍ
¥¡¼ÆþÎÏ¡¢¥Þ¥¦¥¹ÆþÎϤòIObservable T ¤ËÊÑ´¹¤·¤Æ»È¤¦
¡¡ÇطʲèÁü¤ÎÀßÄêÍÑ¥ª¥Ö¥¸¥§¥¯¥È¤ä¡¢¥«¡¼¥½¥ë°ÜÆ°Àè¤Î¥ª¥Ö¥¸¥§¥¯¥È¤ÎÇÛÃÖ°ÌÃÖ¤ÎÀßÄêÍѤΥª¥Ö¥¸¥§¥¯¥È¤òÇÛÃÖ¤·¤Æ¤ª¤¤Þ¤¹¡£
¥«¡¼¥½¥ë¤Î°ÜÆ°Àè¤Ë¤Ä¤¤¤Æ¤Ï¡¢³Æ¥Þ¥¹ÌÜ(Grid)¤òÀ¸À®¤·¤Þ¤¹¤¬¡¢¤½¤ì¤òÇÛÃÖ¤¹¤ë¤¿¤á¤Î¥ª¥Ö¥¸¥§¥¯¥È¤ò»öÁ°¤ËÇÛÃÖ¤·¤Æ¤ª¤¯¤ÈÀ¸À®¤·¤ä¤¹¤¤¤Ç¤¹¡£
¡¡¥×¥ì¥¤¥ä¡¼¤ÎÁàºî¤¹¤ë¥«¡¼¥½¥ë¤Ë¤Ä¤¤¤Æ¤â¥ª¥Ö¥¸¥§¥¯¥È¤òÍÑ°Õ¤·¤Þ¤¹¡£
¤³¤Á¤é¤òÁàºî¤¹¤ë·Á¤Ë¤Ê¤ê¤Þ¤¹¡£
¡¡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¤Î¤ß¡¢¥«¡¼¥½¥ë¤Î°ÌÃÖ¤òµ²±¤·¤Þ¤¹¤Î¤Ç¡¢
°ìÅÙ¡¢¥¤¥ó¥Ù¥ó¥È¥ê¤òÊĤ¸¤Æ³«¤Ä¾¤·¤Æ¤â¡¢Á°¤Î¥«¡¼¥½¥ë¤Î°ÌÃÖ¤«¤é¥¹¥¿¡¼¥È¤·¤Þ¤¹¡£
¡¡¤Þ¤À´°À®¤Ï¤·¤Æ¤¤¤Þ¤»¤ó¤¬¡¢¥á¥Ë¥å¡¼£±¤È£²¤Ø¤ÎÀÚ¤êÂؤ¨¤âÆþ¤ì¤Æ¤¢¤ê¤Þ¤¹¡£
¤¿¤À¤·¡¢¥«¡¼¥½¥ë¤Î°ÌÃÖ¤¬¥á¥Ë¥å¡¼£±¤·¤«Âбþ¤·¤Æ¤¤¤Þ¤»¤ó¡£
¡¡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 ¤ËÅϤ·¤Æ°ÜÆ°Àè¤ò·è¤á¤ë
¡¡¤³¤Î¡¤È¢¤Î´Ö¤Ë¤¢¤ë£²¤Ä¤Î½èÍý¤¬¥ª¥×¥·¥ç¥ó¤Ç¤¹¡£
¤³¤Î¾ì¹ç¤Ï¡¢¡Ö¥¡¼ÆþÎϤ¬¤¢¤Ã¤¿¤«³Îǧ¡×¡Ö°ìÄê»þ´Ö¤ª¤¤Ë¥¡¼ÆþÎϤò¼õ¤±ÉÕ¤±¤ë¡×¤È¤¤¤¦ÀßÄê¤ò¤·¤Æ¤¤¤ë¤Î¤Ç¡¢
¢¤Î½èÍý¤Ë¹Ô¤¯Á°¤Ë¿§¡¹¤Ê¾ò·ï¤òÀßÄꤹ¤ë¤³¤È¤Ç¡¢¼«Ê¬¤ÎÁÛÄꤷ¤Æ¤¤¤ë½èÍý¤ò¼Â¸½¤·¤Æ¤¤¤Þ¤¹¡£
¡¡¤³¤Î¼ê½ç¤Ï´°À®¤Ç¤¹¡£¼¡¤Î¼ê½ç¤Ç¤ÏÀµÊý·Á¤äĹÊý·Á¤Ç¤Ï¤Ê¤¯¡¢¥Þ¥¹Ìܤοô¤¬ÉÔÄê¿ô¤Î¾ì¹ç¤Î¼ÂÁõÎã¤Ç¤¹¡£
¡¡¡¡=>¡¡UniRx ¤òÍøÍѤ·¤¿¥¡¼Áàºî²Äǽ¤Ê¥¤¥ó¥Ù¥ó¥È¥ê¤Î¼ÂÁõÎã¢
»²¹Í¥µ¥¤¥È
¥½¥Õ¥È¥é¥¤¥à ÍÍ
C#¥¹¥¥ëÊÌ¡¢Inventory¡Ê¥¤¥ó¥Ù¥ó¥È¥ê¡Ë»ý¤Áʪ¥·¥¹¥Æ¥à
- ¥«¥Æ¥´¥ê¡§
- ¿Ê³Ø/¥¹¥¯¡¼¥ë
- ¥×¥í¥°¥é¥ß¥ó¥°
¥³¥á¥ó¥È¤ò¤«¤¯