Альтернативы Destroy () или SetActive () - PullRequest
0 голосов
/ 10 февраля 2019

У меня проблема с моим скриптом.Я действительно ищу решение без необходимости отправлять код.(Я использую Unity 2019 с C #.)

Вот дилемма:

У меня есть два сценария 1) EnemyDamage 2) EnemySpawn

Оба сценария работают нормально, пока один извраги убиты.

Обычно, когда мои враги умирают, я использую Destroy (gameObject), что в конечном итоге вызывает ошибку в моем скрипте вызова, потому что EnemySpawn все еще пытается получить доступ к уничтоженному врагу.

То, как работает мой скрипт вызова, состоит в том, что из списка можно выбрать нескольких врагов.Затем, используя сопрограммы, враги появляются на экране, а затем исчезают с помощью SetActive (true / false).Поэтому, даже если я решу установить для врага значение false в EnemyDamage, EnemySpawn просто вернет ему значение true.

Так что мне нужен еще один способ скрыть моего врага.(И я не могу просто переместить его из поля зрения камеры, потому что EnemySpawn просто вернет его обратно в случайную точку появления в виде камеры снова)

Какие есть альтернативы Destroy (), SetActive (),или выход за пределы диапазона камеры?

1 Ответ

0 голосов
/ 12 февраля 2019

Попробуйте добавить это в сценарий появления врага.Он должен удалить врага из списка, когда тот враг уничтожен. Переменная врагияysToRemove существует, потому что вы не можете редактировать список, просматривая его ( благодаря Христо ).

public List<GameObject> enemys;
List<GameObject> enemysToRemove = new List<GameObject>();

void Update () {
    foreach(GameObject enemy in enemys){
        if (enemy == null) {
            enemysToRemove.Add (enemy);
        }
    }
    foreach (GameObject item in enemysToRemove) {
        enemys.Remove (item);
    }
}

В качестве альтернативыПоставьте попытку и поймайте все, что вы делаете с врагами, в сценарии появления врага.Как это:

public List<GameObject> enemys;

foreach(GameObject enemy in enemys){
    try{
        //thing I want to do to this enemy
    }catch{
        Debug.Log ("enemy destroyed");
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...