Unity3D. Как построить компоненты программно
Я новичок в единстве, и у меня возникли некоторые проблемы, связанные с архитектурой.
Допустим, у меня есть компонент сценария C# под названием "компонент A". Я хотел бы, чтобы компонент A имел массив из 100 других компонентов типа "компонент B". Как программно построить компонент B с определенными значениями?
Обратите внимание, что "компонент B" является производным от "MonoBehaviour", так как он должен иметь возможность вызывать "StartCoroutine"
Я знаю, что в единстве вы не используете конструкторы, как обычно в OO.
1 ответ
Обратите внимание, что "компонент B" является производным от "MonoBehaviour", так как он должен иметь возможность вызывать "StartCoroutine"
Я знаю, что в единстве вы не используете конструкторы, как обычно в OO.
Это правда. Возможность состоит в том, чтобы istantiating компоненты во время выполнения и предоставить метод для их инициализации (если инициализация требует аргументов, иначе вся инициализация может быть сделана внутри Start
или же Awake
методы).
Как программно построить компонент B с определенными значениями?
Вот возможный способ:
public class BComponent : MonoBehavior
{
int id;
public void Init(int i)
{
id = i;
}
}
}
public class AComponent : MonoBehavior
{
private BComponent[] bs;
void Start()
{
bs = new BComponent[100];
for (int i=0; i < 100; ++i )
{
bs[i] = gameObject.AddComponent<BComponent>().Init(i);
}
}
}
Обратите внимание, что в приведенном выше примере все компоненты будут присоединены к одному GameObject, это может быть не то, что вам нужно. В конце концов попробуйте дать больше деталей.