Задача - расположить объекты по сетке. Для этого пробовал VerticalLayoutGroup, HorisontalLayoutGroup, GridLayoutGroup.
Проблема заключается в том, что при динамическом добавлении объектов, все эти объекты появляются в нулевых локальных координатах и не распределяются по сетке. Пробовал просто вручную накидывать объекты на сцене - всё работает (кто бы сомневался..)
Итак, код добавления объектов:
public GameObject grid;
void Start () {
foreach (var item in Resources.LoadAll<GameObject>("prefabs/bodies"))
{
GameObject temp = Instantiate(new GameObject(item.GetComponent<Body_variables>().bodyName), grid.transform, false);
temp.AddComponent<TextMesh>();
temp.GetComponent<TextMesh>().text = temp.name;
temp.GetComponent<TextMesh>().fontSize = fontSize;
bodies.Add(temp);
}
foreach (var item in Resources.LoadAll<GameObject>("prefabs/weapons"))
{
GameObject temp = Instantiate(new GameObject(item.GetComponent<Weapon_variables>().weaponName), grid.transform, false);
temp.AddComponent<TextMesh>();
temp.GetComponent<TextMesh>().text = temp.name;
temp.GetComponent<TextMesh>().fontSize = fontSize;
weapons.Add(temp);
}
}
В GameObject grid передается объект, содержащий компонент VerticalLayoutGroup Вот он:
Иерархия:
Сам скрипт Висит на MainCamera и в него передается объект Content.
Вот что получается в результате:
Все объекты висят в нулевых координатах. Нагугливание проблемы выдало множество способов решения, попробовал все, ничего не помогло. Вот они прямо по списку:
grid.GetComponent<VerticalLayoutGroup>().enabled = false;
grid.GetComponent<VerticalLayoutGroup>().enabled = true;
Canvas.ForceUpdateCanvases();
grid.GetComponent<VerticalLayoutGroup>().SetLayoutVertical();
grid.GetComponent<ContentSizeFitter>().SetLayoutVertical();
LayoutRebuilder.ForceRebuildLayoutImmediate(grid.transform as RectTransform);
Параметры компонентов пробовал менять, собственно результата ноль. Где я туплю? выручайте (:
Вы используете компонент TextMesh - это 3d текст для сцены, а не интерфейса.
LayoutGroup с ним не работают. Используйте базовый Text.
Если вам нужно какое-то особое оформление текста, можете в ассет сторе скачать TextMeshPro - там у них своя реализация.
И ещё. Делать Canvas дочерним объектом камеры не обязательно - это ничего не даёт. Всё решает Render Mode установленный в компоненте.
И ешё2. Компонент VerticalLayoutGroup нужен для вертикальной сортировки компонентов, для построения сетки есть GridLayoutGroup
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Прочитал на хабре, что можно уменьшить время компиляции, за счет ключа параллельной компиляции /MPВ настройках не вижу таких пунктов
Не могу разобраться с проблемой десериализации колекции объектов
Нужно что-нибудь не сложное по типу Lazarus