Input module

Как Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π½Π° сцСну

Π§Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π½Π° сцСну, Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΏΡ€Π΅Ρ„Π°Π± Π² ΠΊΠΎΡ€Π΅Π½ΡŒ ΠΎΠ±Ρ‰Π΅Π³ΠΎ канваса.

Как ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Ρ‚ΡŒΡΡ

1. Класс-ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ интСрфСйс IInputHandler

2. НуТно Π΄Π΅Π»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹Π΅ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса для подписки Π½Π° эти события, Π΄ΠΎΠ±Π°Π²ΠΈΠ² ΠΊ Π½ΠΈΠΌ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ InputCallback с Π½ΡƒΠΆΠ½Ρ‹ΠΌ Ρ‚ΠΈΠΏΠΎΠΌ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Π°, Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ Π½ΡƒΠΆΠ½Ρ‹ΠΉ event (ΠΊΠ»ΠΈΠΊ, пСрСтаскиваниС ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅). ΠœΠ΅Ρ‚ΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ PointerEventData ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΈΠ»ΠΈ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΏΠΎΡ…ΠΎΠΆΠΈΠΉ Π½Π° IDragHandler-интСрфСйс, Π»ΠΈΠ±ΠΎ Π±Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²). ΠžΠ±Ρ‹Ρ‡Π½ΠΎ достаточно PointerEventData eventData ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° для получСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ Π½Π°ΠΆΠ°Ρ‚ΠΈΡŽ.

ΠžΡ‚ΠΏΠΈΡΠΊΠ° Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ

Для отписки ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ UnsubscribeInput():

НСобходимо ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ имя ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΠΏΠΈΡΠ°Ρ‚ΡŒ. НСобходимости Π² отпискС Π½Π° OnDisable Π½Π΅Ρ‚, отписка происходит автоматичСски. ΠŸΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ отписка Π½Π΅ происходит, Ссли скрипт Ρ…ΠΎΡ‚ΡŒ ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½, Π½ΠΎ всС Π΅Ρ‰Π΅ сущСствуСт Π½Π° сцСнС. ΠŸΡ€ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΌ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ подписка Π·Π°Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ вновь. Полная отписка происходит ΠΏΡ€ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° со сцСны.

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹

Когда подписки ΠΏΠ΅Ρ€Π΅ΡΡ‚Π°ΡŽΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ нСсколько ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, связанныС с самим ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ:

  1. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ появилась ошибка ArgumentException: No parameter of BaseEventData class in method <Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°> of class <класс ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°>;. Π’ΠΎΠ³Π΄Π° Ρƒ подписанного ΠΌΠ΅Ρ‚ΠΎΠ΄Π° лишниС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈ отсутствуСт PointerEventData ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€.

  2. Π”Π΅Π»Π΅Π³ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π΅ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ, ΠΈ Π΅Π³ΠΎ нСльзя ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ InputEventsTrigger-Ρƒ. Π’ΠΎΠ³Π΄Π° Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚, ΠΈ подписки Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚.

  3. На канвасС Π΅ΡΡ‚ΡŒ растянутый Image, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€Π΅Ρ„Π°Π± TriggerInput. UI, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ Π²Π²ΠΎΠ΄ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ доступны для Raycast (Π£ Image Π΅ΡΡ‚ΡŒ Ρ„Π»Π°Π³ Raycast Target, Π΅Π³ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ).

  4. Если класс Π½Π΅ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ интСрфСйс IInputHandler, подписки этого класса Π½Π΅ Π·Π°Ρ„ΠΈΠΊΡΠΈΡ€ΡƒΡŽΡ‚ΡΡ. Π’Π°ΠΊΠΆΠ΅ Ссли Π½Π΅Ρ‚ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ², Ρ‚ΠΎ IInputHandler Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ даст.

  5. Ну, ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ с Ρ‚Π°ΠΊΠΈΠΌ скриптом просто Π½Π΅ Π»Π΅ΠΆΠΈΡ‚ Π½Π° сцСнС/ Π² ΠΊΠ°ΠΊΠΎΠΌ-Π»ΠΈΠ±ΠΎ ΠΏΡ€Π΅Ρ„Π°Π±Π΅, ΠΈ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² событий Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π΅Π³ΠΎ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ.

ВаТная Π΄ΠΎΠΏ. информация

  • Бобытия Π½Π°ΠΆΠ°Ρ‚ΠΈΠΉ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ класса Event Trigger (класс InputEventsTrigger), скрипт ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π»Π΅ΠΆΠΈΡ‚ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ рядом с Image (image растянут Π½Π° вСсь экран).

  • ΠŸΡ€Π΅Ρ„Π°Π±Ρ‹ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅ΡˆΠ°ΡŽΡ‚ свои подписки (информация ΠΎΠ± Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°Ρ… запСкаСтся Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ подписанном ΠΏΡ€Π΅Ρ„Π°Π±Π΅).

  • Π’Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ подписанныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ Π·Π°ΠΏΡ€Π΅Ρ‰Π°Π΅Ρ‚, Ссли Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ класса. Атрибут Π½Π° это ΠΏΠΎΠ²Π»ΠΈΡΡ‚ΡŒ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚.

  • Для просмотра Π·Π°Ρ‚Ρ€ΠΎΠ½ΡƒΡ‚Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ ΠΏΡ€Π΅Ρ„Π°Π±ΠΎΠ² Π΅ΡΡ‚ΡŒ свой ScriptableObject - InputSettings. Π—Π΄Π΅ΡΡŒ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ поиск подписок Π² скриптах ΠΈ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΡ€Π΅Ρ„Π°Π±Ρ‹ Π±Ρ‹Π»ΠΈ подписаны. МоТно Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΠ°ΠΏΠΊΠΈ, ΠΏΡ€Π΅Ρ„Π°Π±Ρ‹ Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒΡΡ ΠΈ ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ поиск. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ стоит ΠΏΠ°ΠΏΠΊΠ° ΠΏΡ€Π΅Ρ„Π°Π±ΠΎΠ² Assets/Prefabs НС рСкомСндуСтся Ρ‚ΡƒΡ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ ΠΌΠ΅Π½ΡΡ‚ΡŒ Π² ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅, это для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ, Ссли Π²Π΄Ρ€ΡƒΠ³ Π½Π΅ понятно Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ.

Last updated