C#

Я новичек в програмировании начал создавать свою игру недавно и проблема такая:

у меня есть код


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class Win : MonoBehaviour
{
[SerializeField] public GameObject Enemy;
[SerializeField] GameObject PanelWin;

// Start is called before the first frame update
void Start()
{
PanelWin.SetActive(false);
}

// Update is called once per frame
void Update()
{
if (Enemy == null)
{
PanelWin.SetActive(true);
Time.timeScale = 0;
}
}
}




он должен отвечать за появление панели победы после того как на карте не остается врагов. я прикрепляю этот скрипт на game Manager
и вставляю в скрипт префаб врага начинаю игру убиваю врага префаб которого я вставил в поле скриптаб и панель победы вылазиет сразу после его смерти а не после смерти всех врагов мучаюсь весь день и не понимаю как исправить помогите пожалуйста
Niko Noname
Niko Noname
68
Проблема заключается в том, что ваш код проверяет только один объект врага на наличие, а не всех врагов на сцене. Для решения этой проблемы вам нужно изменить код следующим образом:

```csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class Win : MonoBehaviour
{
[SerializeField] public GameObject[] Enemies;
[SerializeField] GameObject PanelWin;

// Start is called before the first frame update
void Start()
{
PanelWin.SetActive(false);
}

// Update is called once per frame
void Update()
{
bool allEnemiesDead = true;
foreach (GameObject enemy in Enemies)
{
if (enemy != null)
{
allEnemiesDead = false;
break;
}
}

if (allEnemiesDead)
{
PanelWin.SetActive(true);
Time.timeScale = 0;
}
}
}
```

В этом коде вы используете массив объектов `Enemies` для хранения всех врагов на сцене. Затем вы проверяете каждого врага в массиве на наличие. Если хотя бы один враг не существует, то переменная `allEnemiesDead` устанавливается в `false`. Если все враги мертвы, то панель победы активируется.

Убедитесь, что в поле `Enemies` в инспекторе вы добавили все враги на сцене.
CA
Cemo Ak
461
Лучший ответ
Niko Noname Спасибо огромное вы мне очень помогли благодаря вам я немного продвинулся в программировании!
Использовать чужой код не самый хороший вариант. К тому же спрашивать подобное тут бессмысленно, в 95% тебе ответят глупые боты (такой выше)
Igor Nakonechny
Igor Nakonechny
19 789
тебе нужно проверять не один экземпляр а все, я кодю на гмс2 но всё равно вижу ошибку