unity3d - 循环遍历一系列游戏对象,单击 c# 杀死前一个对象
问题描述
我有一个包含游戏对象的数组,我想在单击时实例化第一个对象,如果再次单击,则终止当前游戏对象并实例化数组中的下一个游戏对象。
public Transform[] Cubes;
Transform Clone;
public Transform Spawnup;
void Start()
{
Clone = Instantiate(Cubes[Random.Range(0, 3)], transform.position,
transform.rotation) as Transform;
Clone.parent = transform;
transform.position = Spawnup.position;
}
void FixedUpdate()
{
if (transform.childCount < 1)
{
transform.position = Spawnup.position;
Clone = Instantiate(Cubes[Random.Range(0, 3)], transform.position,
transform.rotation) as Transform;
Clone.parent = transform;
}
}
private public void ChangeOnClick()
{
//Destroy(gameObject);
//for (int i = 0; i < Cubes.Length; i++)
// {
// Clone = Instantiate(Cubes[0], Clone.position, Clone.rotation) as
Transform;
// }
}
private void OnTriggerEnter2D(Collider2D collision)
{
if (collision && transform.childCount > 0)
{
Clone.parent = Spawnup;
}
}
}
我尝试使用 int 和 ++,但每次我在单击时实例化一个游戏对象时,所有游戏对象都会立即实例化。
解决方案
FixedUpdate 函数中的代码应该在 ChangeOnClick 函数中。
代码:
GameObject _PreviousClone;
int cubeIndex;
private public void ChangeOnClick()
{
if (transform.childCount < 1)
{
transform.position = Spawnup.position;
if(_PreviousClone && _PreviousClone.canBeDestroyed)
{
Destroy(_PreviousClone.gameobject);
cubeIndex++;
Clone = Instantiate(Cubes[cubeIndex], transform.position,
transform.rotation) as Transform;
[yourClass] _cloneClass = Clone.getcomponent<[Yourclass]>();
_cloneClass.canBeDestroyed = true;
_PreviousClone = Clone;
Clone.parent = transform;
if(cubeIndex==Cubes.length-1)
cubeIndex=0;
}
}
}
让我知道它是否有帮助。