Unity3D: удалить объекты возрождения

У меня есть 2D-игра, где есть оригинальный враг ниндзя.
Я создал скрипт для порождения моего оригинального ниндзя. Затем я поместил его на свою основную камеру, чтобы клон ниндзя появился в поле зрения основной камеры. У моего оригинального ниндзя также есть скрипт, который через несколько секунд он удалит.
Я понимаю, что удаление моего исходного ниндзя приводит к тому, что мои клоновые ниндзя не появляются, но я хочу удалить все клонированные объекты, чтобы не перезапускать свой проект.
Есть ли способ, где я могу удалить ниндзя-клона, не касаясь оригинального ниндзя? Или скрыть моего оригинального ниндзя в инспекторе, не скрывая клонов спавна.
Вот мой код уничтожения ниндзя:

private IEnumerator Killninja() {

   yield return new WaitForSeconds (4f);
     Destroy (gameObject);
}

    void Update () {
       StartCoroutine (Killninja ());
    }

1 ответ

Решение

Если вы не хотите, чтобы ваш оригинальный ниндзя был на сцене, не делайте этого на сцене. Перетащите его со сцены в Project Explorer. Это создаст Префаб ниндзя. Затем вы можете удалить ниндзя со сцены.

Теперь есть скрипт ObjectSpawner.cs, задача которого - создать префаб. Ниндзя, как:

public class ObjectSpawner : MonoBehaviour
{
    public GameObject prefab;

    void Start()
    {
        GameObject.Instantiate(prefab, transform.position, transform.rotation);
    }
}

Назначьте ObjectSpawner пустому объекту GameObject в сцене и назначьте его префаб Ninja, созданный ранее, для его prefab поле. Это приведет к появлению одного ниндзя, как только игра начнется, в позиции вашего объекта NinjaSpawner.

Ваш скрипт Ninja.cs будет ответственен за уничтожение Ninja, как только закончится его время:

public class Ninja : MonoBehaviour
{
    void Start()
    {
        StartCoroutine(DestroyDelayed());
    }

    IEnumerator DestroyDelayed()
    {
        yield return new WaitForSeconds(4f);
        Destroy(gameObject);
    }
}

Убедитесь, что скрипт назначен вашему объекту Ninja.

Другие вопросы по тегам