счетчик переменных в OnCollisionEnter2D подсчитывает только один раз, но другая строка кода работает нормально

#c# #unity3d

Вопрос:

нажмите, чтобы увидеть изображение, я пытаюсь увеличить переменную «res», но каким-то образом она увеличивается только один раз, пока функция destroy() работает нормально

  private void OnCollisionEnter2D(Collision2D collision)
    {
        if(collision.gameObject.CompareTag("enemy") )
        {
            res  ;
            Destroy(gameObject); 
            Debug.Log(res);
        }
    }
 

нужна помощь и спасибо вам .

Комментарии:

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

2. Есть ли этот скрипт на плеере? Если да, то как вы возрождаете игрока?

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

Ответ №1:

Один из способов исправить это-добавить a static перед переменной, например, из

 public string name;
 

Для

 public static string name;
 

static превращает любую переменную в переменную, которую могут использовать все экземпляры класса и которая одинакова для всех экземпляров. Он работает как «глобальная» переменная.

Комментарии:

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

2. да, просто создавать вещи static -опасный (и немного ленивый 😉 ) подход ^^

3. @derHugo Согласился!