Как правильно использовать длину смахивания игрока в пикселях для перемещения элементов пользовательского интерфейса в Unity?

В целях оптимизации мне пришлось создать список объединения (действующий как представление прокрутки), чтобы уменьшить количество создаваемых игровых объектов. В этом списке используются перетаскиваемые интерфейсы (IDragHandler, IBeginDragHandler, IEndDragHandler) для оценки ввода игрока в реальном времени и перемещения / реорганизации его элементов пользовательского интерфейса.

Все они используют RectTransform, и я изменяю их закрепленную позицию в пользовательском интерфейсе в соответствии с длиной перетаскивания в течение последнего кадра.

Однако мне не удается синхронизировать сенсорный ввод и движение элементов. При прокрутке мой список прокручивается быстрее, чем ввод (т.е. при визуальном прокрутке на 130 пикселей мой список будет прокручиваться примерно на 180 пикселей)

Я тестировал насквозь, но значения, собранные из ввода, проходящие через скрипт и используемые в конце для смещения anchoredPosition RectTransform, одинаковы, каждый кадр, все время. Сначала я подумал, что это связано с разрешением экрана, поскольку скорость прокрутки, похоже, варьируется от мобильного устройства к другому, но нормализация вектора относительно разрешения экрана не решает проблему.

Я что-то упустил и / или есть простой способ (метод Unity) исправить это поведение?


person Nyakouai    schedule 09.06.2018    source источник


Ответы (1)


Моему коллеге наконец удалось решить проблему, так как он наткнулся на скрипт, изменяющий масштаб родительского объекта gameObject.

Обязательно проверьте масштабы gameObject и его родительского объекта, чтобы убедиться, что у вас правильное соотношение.

person Nyakouai    schedule 16.07.2018