我有一些以一定速度移动的预制件。所有都具有相同的脚本,其中从检查器中的公共变量的值分配该速度。像这样:
变量是对象速度。我想要做的是为使用脚本Movimiento Objeto的每个组件更改此速度。
我的问题是:如何为每个组件更改此值?可能它与GetComponent
有关,但我不确定。
答案 0 :(得分:1)
如果您通过代码生成对象,则可以将它们放入 List 并通过列表操作它们。
如果您在场景中的程序开头部分放置了部分或全部这些对象,您可以像Sharundaar所说的那样(使用 GetComponentsInChildren())并将它们放入列表中在运行时产生更多,或将它们放入简单的数组 MovimientoObjecto [] 。
如果您希望在运行时添加更多这些预制件(在程序启动后并通过代码执行),使用列表将对您有所帮助。
答案 1 :(得分:0)
您可以将所有对象作为另一个对象的子对象,然后将想要更改变量的脚本添加到刚刚创建的父对象中,然后可以调用 GetComponentsInChildren< MovimientoObjecto>(); 获取具有此组件的所有子项,最后迭代它以更改变量。
例如:
public class MyClass : MonoBehavior
{
MovimientoObjecto[] m_objects;
void Start()
{
m_objects = GetComponentsInChildren<MovimientoObjecto>();
}
void Update()
{
foreach(MovimientoObjecto obj in m_objects)
{
obj.objectSpeed = // something
}
}
}
请参阅:http://docs.unity3d.com/ScriptReference/Component.GetComponentsInChildren.html