Unity3D.如何以编程方式构造组件

Guy*_*ito 1 constructor unity-game-engine unity-components

我是团结的新手,并且在架构方面遇到了一些麻烦.

假设我有一个名为'component A'的C#脚本组件.我希望组件A有一个包含"组件B"类型的100个其他组件的数组.如何使用特定值以编程方式构造组件B?

请注意,'组件B'派生自'MonoBehaviour',因为它需要能够调用'StartCoroutine'

我知道在团结中你不像通常在OO那样使用构造函数.

Hei*_*bug 5

请注意,'组件B'派生自'MonoBehaviour',因为它需要能够调用'StartCoroutine'

我知道在团结中你不像通常在OO那样使用构造函数.

确实如此.可能性是在运行时初始化组件并提供初始化它们的方法(如果初始化需要参数,否则所有初始化都可以在内部StartAwake方法中完成).

如何使用特定值以编程方式构造组件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);
    }
   }
}
Run Code Online (Sandbox Code Playgroud)

请注意,在上面的示例中,所有组件都将附加到同一个GameObject,这可能不是您想要的.最终尝试提供更多细节.