Единство: Прокрутка макета вертикальной группы не работает с Android

#android #unity3d #touch-event #vertical-scrolling

Вопрос:

Я делаю прокручиваемый список значений.

Я сделал это, используя шаблон элемента, настроенный с элементом макета, вложенным в объект Группы вертикального макета.

Шаблон элемента состоит из изображения и текстового описания.

Сценарий, который я использую для заполнения списка, прост для:

 for (int i = 0; i < details.Count amp;amp; i < LenSize; i  ){
    Transform transf = Instantiate(template, container);
    RectTransform trasnf2 = transf.GetComponent<RectTransform>();

    height = -3 * i;

    trasnf2.anchoredPosition = new Vector2(0, height);
    transf.gameObject.SetActive(true);

    transf.Find("Image").GetComponent<Text>().text = details[i].image;
    transf.Find("Desc").GetComponent<Text>().text = 
    details[i].description;
}
 

Все работает правильно, когда я запускаю приложение со своего компьютера, я могу прокручивать список «щелчком левой кнопки мыши перетаскиванием вверх/вниз» или колесом прокрутки мыши.

Моя проблема возникает, когда я создаю приложение и запускаю его со своего устройства Android, я не могу прокручивать список с помощью сенсорного экрана. (Сенсорные входы работают нормально, у меня есть какая-то кнопка, и они работают)

Может ли кто-нибудь помочь мне с моей проблемой?

Я обнаружил, что могу использовать диспетчер ввода для отслеживания события ввода… но я не уверен, как использовать его для «прокрутки» на Android, потому что, если я изменю смещение объекта с помощью группы вертикальной компоновки, я перемещу весь объект и не буду прокручивать внутренние элементы, иначе, если я изменю смещение дочернего элемента (Шаблоны элементов) Я изменяю положение одного элемента, «нарушая» компоновку группы вертикальных компоновок;

Я пытался найти решения, но я новичок, и, по-видимому, ничего не работает, когда я применяю его.

Что я делаю не так?

Комментарии:

1. Вы просто пытаетесь создать прокручиваемый список объектов? Если это так, то для этого вам не нужен код. Я могу опубликовать пример прокручиваемого списка, используя только компоненты пользовательского интерфейса.

2. @TEEBQNE Я попытался прокрутить список объектов в начале, но у меня возникли проблемы с пользовательским интерфейсом. Теперь я точно не помню, почему (я сделал это несколько недель назад), но для этого я использую Группу вертикальной компоновки. Если хотите, можете опубликовать, и я попробую, если получится.

Ответ №1:

Если ваша цель-создать прокручиваемый список объектов пользовательского интерфейса, вот gif, который я сделал в этом процессе. Он проходит через макет и каждый компонент, и он работает.

Пример

Если вы хотите динамически добавлять объекты в этот список во время выполнения, используйте Panel_Content преобразование и создание экземпляров объектов с помощью Instantiate(yourPrefab, Pane_Content.transform, false) . Дайте мне знать, если у вас возникнут проблемы с этим примером.

Комментарии:

1. Привет @TEEBQNE, ваше решение действительно похоже на мое. Я изменил свою настройку, чтобы использовать вашу и … Ничего не изменилось. Работает при выполнении с unity/ПК, но все еще не работает, когда я использую его на устройстве Android, прокрутка не работает. 🙁

2. @GiorgiaRondin Возможно, что есть еще один элемент пользовательского интерфейса, блокирующий клики при перепродаже вашего пользовательского интерфейса на мобильные устройства. Попробуйте создать проект для Windows/Mac и посмотрите, является ли проблема только для сборки или только для Android.

3. Вы правы, я создал проект для Windows/Mac, и проблема возникает, когда я создаю проект. Как я могу найти, какой элемент пользовательского интерфейса блокирует щелчок? Есть ли какой-нибудь трюк или советы, чтобы его найти?

4. @GiorgiaRondin Я бы сделал ваш режим холста масштабируемым до размера экрана. Я бы также отключил поле Raycastable для всех изображений или текста, на которые не нужно нажимать. Есть хороший способ отладить его в редакторе, но не фантастический способ сборки. Вы можете распечатать текущий зависший или щелкнутый игровой объект из системы событий и включить отображение журналов отладки при создании проекта. Это, вероятно, подходит для экранной панели.

5. Я опаздываю, мне очень жаль. В любом случае я попробовал новый проект. И после того, как я не знаю, я много раз пытался… Я выяснил, в чем была проблема. Теперь это работает правильно!!!!!! Thxxx тебе очень, очень много ^^