Я создал некоторые пользовательские радиальные кнопки меню для моей игры Android. Радиальное меню отображается при касании игрового объекта с помощью меню. Я использую события мыши для активации меню, которое работает в Unity, а также при создании на Android. Когда меню активно, вы можете щелкнуть мышью или переместить элемент меню, чтобы выбрать его. Если вы отпустите этот пункт меню, он выберет выделение в радиальное меню, которое затем предпримет соответствующие действия.Решение для OnPointerExit() Запуск на Touch Release на Android?
следующие работы в Unity:
public void OnPointerEnter (PointerEventData eventData)
{
myMenu.selected = this;
Debug.Log ("Menu selection is now: " + this.action.ToString());
defaultColor = circle.color;
circle.color = Color.white;
}
public void OnPointerExit (PointerEventData eventData)
{
myMenu.selected = null;
Debug.Log ("Menu selection has been nulled out.");
circle.color = defaultColor;
}
Однако, это не работает правильно, когда встроенный в Android. Через некоторое тестирование отладки я определил, что в Unity, если я активирую меню и мышь над элементом меню, затем отпустите мышь, myMenu.selected будет правильно назначен. Тем не менее, только на Android, поднимая мой палец над пунктом меню, обрабатывается окончательный OnPointerExit, который отменяет его, что означает, что меню никогда не получает правильный выбор. Мышь не ведет себя так - она не обрабатывает указатель как выход, когда кнопка мыши отпущена.
Я могу «решить» эту проблему, переключая все на ощупь, но затем я не могу проверить, используя плеер Unity и мою мышь. До сих пор все с помощью мыши также работало правильно с помощью touch. Это первая проблема, с которой я столкнулся. Есть ли для этого чистое решение? Или это лучшее решение для использования макросов, чтобы определить, есть ли я в редакторе и есть отдельный код мыши и касания для каждого?
Нет логики наведения. Я использую iPointerEnterHandler и ExitHandler. Логика выглядит так: - Коснитесь объекта, чтобы открыть меню. - Слайд, касаясь предпочтительного пункта меню. - Смещение элементов меню устанавливает нужный пункт меню нулевым (без выбора). - Отпустите в этом пункте меню, чтобы выбрать его. Проблема в том, что на Android, но не в проигрывателе, освобождение во время пункта меню обрабатывает его как выход. Я думаю, что ваше решение все еще работает, но это должно использовать директиву препроцессора для использования касания вместо событий мыши вне автономного для предсказуемости. –
У вас там что-то не хватает. Это поможет, если вы отредактировали вопрос, включив остальную часть кода взаимодействия. –