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, это может быть не то, что вам нужно. В конце концов попробуйте дать больше деталей.

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