Войти
ПрограммированиеФорумОбщее

Unity: как изменить размер объекта согласно ContentSizeFilter?

#0
15:02, 30 авг. 2017

Привет всем!
Есть ui-текст. Размер текста меняется. За текстом расположена картинка, которая должна меняться по размеру текста. Так вот, если картинка является дочерней к тексту, то ее размер меняется через ContentSizeFilter, но тогда она перекрывает текст. Если картинку не делать дочерней к тексту, то она не перекрывает текст, но ContentSizeFilter тогда её не масштабирует.

У меня была мысль в методе 1) сделать картинку дочерней к тексту 2)как-то заставить контент сайз обновить размеры контента 3) убрать картинку из дочерних объектов текста.  Так вот, с пунктом 2 проблема, не нашёл метода в ContentSizeFilter который обновлялся бы размеры дочерних объектов. Такой метод существует? Есть ещё варианты решения проблемы?


#1
15:21, 30 авг. 2017

Задать картинки (как дочерний элемент текста) в Anchors у RectTransform как min = [0;0] и max = [1;1] ?

#2
15:40, 30 авг. 2017

Пробовал, у меня так и сделано + картинка растягивается во весь размер родителя если она дочерняя к тексту. Тут нужно ещё позицию и width и height задавать.

#3
16:20, 30 авг. 2017

Правка
к картинке ContentSizeFitter и VerticalLayoutGroup и флажки Сontrol Сhild Size

#4
0:48, 31 авг. 2017

shda
Спасибо, помогло.

Прошло более 3 лет
#5
(Правка: 13:25) 10:59, 12 июня 2021

Второй пункт делается через корутину, с небольшой задержкой:

  using TMPro;


  public TextMeshPro Text_Mesh; 

  void Start () {
    // Добавить ContentSizeFitter
    Text_Mesh.gameObject.AddComponent<UnityEngine.UI.ContentSizeFitter>().horizontalFit =
      UnityEngine.UI.ContentSizeFitter.FitMode.PreferredSize;
    Text_Mesh.gameObject.GetComponent<UnityEngine.UI.ContentSizeFitter>().verticalFit = 
      UnityEngine.UI.ContentSizeFitter.FitMode.PreferredSize;

    StartCoroutine (ChangedSize ());
  }


  IEnumerator ChangedSize() {
    yield return new WaitForSeconds (0.0001f);
    print (Text_Mesh.GetComponent<RectTransform>().sizeDelta);
  }
ПрограммированиеФорумОбщее