у меня есть код
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
и вставляю в скрипт префаб врага начинаю игру убиваю врага префаб которого я вставил в поле скриптаб и панель победы вылазиет сразу после его смерти а не после смерти всех врагов мучаюсь весь день и не понимаю как исправить помогите пожалуйста
C#
Я новичек в програмировании начал создавать свою игру недавно и проблема такая:
Проблема заключается в том, что ваш код проверяет только один объект врага на наличие, а не всех врагов на сцене. Для решения этой проблемы вам нужно изменить код следующим образом:
```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` в инспекторе вы добавили все враги на сцене.
```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` в инспекторе вы добавили все враги на сцене.
Niko Noname
Спасибо огромное вы мне очень помогли благодаря вам я немного продвинулся в программировании!
Использовать чужой код не самый хороший вариант. К тому же спрашивать подобное тут бессмысленно, в 95% тебе ответят глупые боты (такой выше)
тебе нужно проверять не один экземпляр а все, я кодю на гмс2 но всё равно вижу ошибку
Похожие вопросы
- Можно ли создавать 3д игры на С#?
- Какой язык программирования учить с самого начала програмирования и какой более актуален ?
- Не понимаю програмирование
- У меня есть такая проблема, может кто подскажет как можно правильно на WPF MVVM реализовать тестовую систему
- Почему когда я доделал игру то камера смотрела ровно на игру а когда компилировал она приблизилась хотя в Unity на месте
- Как сделать пол в 2d игре на unity?
- Кто разрабатывал игры с Unity?
- Создание игры, нужны идеи или хотя бы стоит ли делать?
- Кто шарит в играх на юнити, помогите
- Как можно остановить все звуки в игре? Unity