我是团结的新手,在解决这个架构时遇到了一些麻烦。
假设我有一个名为'component A'的C#脚本组件。 我希望组件A有一个包含“组件B”类型的100个其他组件的数组。 如何用特定值以编程方式构造'组件B?
请注意,“组件B”源自“MonoBehaviour”,因为它需要能够调用“StartCoroutine”
我知道在团结中你不像通常在OO那样使用构造函数。
答案 0 :(得分:5)
请注意,'组件B'是根据需要从'MonoBehaviour'派生的 能够调用'StartCoroutine'
我知道在统一中你不像往常那样使用构造函数 在OO。
这是真的。可能性是在运行时对组件进行异步化并提供初始化它们的方法(如果初始化需要参数,否则所有初始化都可以在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,这可能不是您想要的。最终尝试提供更多细节。