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

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

Регистрация
12 Май 2013
Сообщения
86
Репутация
0
Спасибо
0
Монет
0
у меня есть код





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

и вставляю в скрипт префаб врага начинаю игру убиваю врага префаб которого я вставил в поле скриптаб и панель победы вылазиет сразу после его смерти а не после смерти всех врагов мучаюсь весь день и не понимаю как исправить помогите пожалуйста
 
Регистрация
13 Июл 2013
Сообщения
76
Репутация
-3
Спасибо
0
Монет
0
"Я новичек в програмировании начал создавать свою игру" вот и ябись сам
 
Регистрация
3 Ноя 2013
Сообщения
68
Репутация
-3
Спасибо
0
Монет
0
Использовать чужой код не самый хороший вариант. К тому же спрашивать подобное тут бессмысленно, в 95% тебе ответят глупые боты (такой выше)
 

g4H

Capitan

g4H

Capitan
Регистрация
20 Июн 2013
Сообщения
88
Репутация
0
Спасибо
0
Монет
0
тебе нужно проверять не один экземпляр а все, я кодю на гмс2 но всё равно вижу ошибку
 
Регистрация
27 Ноя 2013
Сообщения
71
Репутация
0
Спасибо
0
Монет
0
Проблема заключается в том, что ваш код проверяет только один объект врага на наличие, а не всех врагов на сцене. Для решения этой проблемы вам нужно изменить код следующим образом:

```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` в инспекторе вы добавили все враги на сцене.
 
Сверху Снизу