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

时间:2013-07-21 17:23:03

标签: unity3d constructor unity-components

我是团结的新手,在解决这个架构时遇到了一些麻烦。

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

请注意,“组件B”源自“MonoBehaviour”,因为它需要能够调用“StartCoroutine”

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

1 个答案:

答案 0 :(得分: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);
    }
   }
}

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