首页 > 解决方案 > 循环遍历一系列游戏对象,单击 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 和 ++,但每次我在单击时实例化一个游戏对象时,所有游戏对象都会立即实例化。

标签: unity3dgame-development

解决方案


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;
    }
}
}

让我知道它是否有帮助。


推荐阅读