#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 Согласился!