Как приравнять компонент из переменной Unity

empty.AddComponent<MeshFilter>();
empty.GetComponent<MeshFilter>() = Data_Map.worldObjects[i].meshFilter;

Как можно приравнять компонент переменной? Этот кусок кода выдаёт ошибку, так как левая часть не является переменной.


Ответы (1 шт):

Автор решения: RiotBr3aker

Никак, это нарушение идеологии компонентов в Unity. Компоненты нельзя создавать вручную. Единственный способ создать объект компонента - AddComponent<T>(). После этого, как с точки зрения кода, так и с точки идеологии, компонент намертво прикреплен к объекту. Его можно настроить или удалить, но никак нельзя поменять на другой. И нет, компонент не может существовать без родительского объекта.

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


Судя по контексту, вы хотите переключать полигональную сетку при каких-то условиях. Проще хранить массив мешей и менять их у фильтров:

empty.GetComponent<MeshFilter>().mesh = Data_Map.worldMeshes[i]

→ Ссылка