Страница 1 из 1

принудительная отмена OnDrag ивента

СообщениеДобавлено: 12 фев 2017, 16:06
LemanRass
Есть пошаговая игра.
Пользователю дается возможность путем перетаскивания Image ставить карты в слоты с OnDrop приемником на игровом поле.
Разумеется только во время своего хода.
Когда человек начал тянуть карту, но его ход внезапно кончается, карта остается на уровне мышки и продолжает за ней следовать пока человек ее не отпустит.
Нужно как то программно закончить OnDrag ивент конкретного Image.

Для реализации перетаскивания используется пространство имен UnityEngine.EventSystems а именно интерфейсы OnBeginDrag OnDrag OnEndDrag и OnDrop.

Re: принудительная отмена OnDrag ивента

СообщениеДобавлено: 12 фев 2017, 18:20
Anonymyx
Действия из EndDrag перенести в отдельный метод и вызывать его в конце хода.

Re: принудительная отмена OnDrag ивента

СообщениеДобавлено: 12 фев 2017, 18:29
LemanRass
Да это то понятно, не понятно только как программно отпустить Image который перетаскивал пользователь мышкой но сам не отпустил.

Re: принудительная отмена OnDrag ивента

СообщениеДобавлено: 12 фев 2017, 20:45
JTProjects
LemanRass писал(а):Да это то понятно, не понятно только как программно отпустить Image который перетаскивал пользователь мышкой но сам не отпустил.

У вас что-то делается, когда игрок отпускает карту, не дотащив ее до слота или это тоже еще предстоит сделать? По идее, она должна вернуться на свое место. Вот и возвращайте ее на место, когда время хода истекло, в OnDrag сделайте флаг, что ход еще не истек, а когда истек - отключайте перетаскивание карты за курсором.

Re: принудительная отмена OnDrag ивента

СообщениеДобавлено: 12 фев 2017, 23:54
Anonymyx
Да почти это и имел ввиду, в EndDrag по идее должна быть логика возвращающая все на место, обратно.