Горизонтальная прокрутка с постоянной высотой изображений в Unity3D UI - Как?

Я хочу реализовать scrollview в Unity3D 5 UI с горизонтальными изображениями, загруженными из Интернета, они имеют разные случайные пропорции, но я хочу, чтобы они были постоянной высоты. И ширина должна соответствовать их пропорциям, вот так:

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

Есть идеи как этого добиться? Благодарю.

1 ответ

Вам необходимо использовать ScrollView с включенной горизонтальной прокруткой и отключенной вертикальной прокруткой. Настройте иерархию, как показано на рисунке ниже:

введите описание изображения здесь

На GameObject назван Content прикреплять Horizontal Layout Group а также Content Size Fitter со следующими настройками:

введите описание изображения здесь

Затем на всех ваших изображениях прикрепите Layout Element компонента и во время выполнения вычислите ширину, используя соотношение сторон изображения и высоту к Content gameobject и назначьте эту ширину Preferred Width собственностью Layout Element Компонент: на следующем изображении 300 рассчитанная ширина для изображения:

введите описание изображения здесь

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

PS Я написал этот ответ в спешке. Надеюсь, это будет иметь смысл для вас, если вы не дадите мне знать, и я улучшу свой ответ.

Другие вопросы по тегам