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.