Обведите массив игровых объектов, убив предыдущих по клику c # - PullRequest
0 голосов
/ 16 мая 2019

У меня есть массив, содержащий игровые объекты, и я хочу создать первый экземпляр по щелчку, а если я нажму снова, убить текущий игровой объект и создать экземпляр следующего игрового объекта в массиве.

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 и ++, но каждый раз, когда я создавал игровой объект при нажатии, все игровые объекты запускались сразу.

1 Ответ

0 голосов
/ 16 мая 2019

Код, который вы имеете внутри функции 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;
    }
}
}

Дайте мне знать, если это поможет.

...