我有一个脚本,有一个列表,类型是某个脚本。然后想要实例化这个列表的所有成员(GameObjects有这个脚本)。我试过在列表上做for循环,然后做 .GetComponent<GameObject>();
但当然,由于显而易见的原因,这样做是行不通的。那么有什么方法可以做到这一点吗?
对于任何想知道我为什么要这样做的人,我想限制其他使用这个脚本的人只能用这个脚本来添加游戏对象(因为我不希望没有这个脚本的游戏对象被生成)。
也许在某个脚本上有一个引用,知道什么游戏对象被附加到它上面? 或者有更好的方法来做这件事。
谢谢您 :)
如果你把你的代码添加到问题中,会更容易。
好吧。GameObject
明明不是一类 Component
(MonoBehaviour
继承 Component
).
听起来你有一个 List<SomeComponent>
.
因此,你可以简单地访问的属性 Component.gameObject
这指的是 GameObject
的组件所连接的。
List<SomeComponent> list;
...
foreach(var component in list)
{
var obj = component.gameObject;
...
}
但是请注意,你实际上并不需要这样做。听起来你是想把列表中的元素传递给 Instantiate
这也需要 Component
(或者说任何 Object
母班 GameObject
, Component
和 ScriptableObject
)作为prefab参数。然后,它返回给定预制件的相同类型。