Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

237
Visualizações
Unity- Cargar - Desbloquear niveles y comprobar si hay próximos niveles existentes

Estoy trabajando en un juego pequeño similar a Angry Birds ya que soy nuevo tanto en Unity como en C#. Quiero cargar y desbloquear el siguiente nivel si todos los enemigos están muertos y verificar si existe un nuevo nivel (si no) volver a la escena de selección de nivel.

Esto es lo que probé:

NivelScript

 using UnityEngine; using UnityEngine.SceneManagement; public class LevelScript : MonoBehaviour { [SerializeField] string _nextLevelName; Monster[] _monsters; void OnEnable() { _monsters = FindObjectsOfType<Monster>(); } private void Update() { int currentLevel = SceneManager.GetActiveScene().buildIndex ; if (currentLevel >= PlayerPrefs.GetInt("levelsUnlocked")) { PlayerPrefs.SetInt("levelsUnlocked", currentLevel ); } if (MonsterAreAllDead()) { GoToNextLevel(); } Debug.Log("Level" + PlayerPrefs.GetInt("levelsUnlocked") + "UNLOCKED"); } public void Pass() { int currentLevel = SceneManager.GetActiveScene().buildIndex; if (currentLevel >= PlayerPrefs.GetInt("levelsUnlocked") ) { PlayerPrefs.SetInt("levelsUnlocked", currentLevel + 1); }; } bool MonsterAreAllDead() { foreach (var monster in _monsters) { if (monster.gameObject.activeSelf) return false; } return true; } void GoToNextLevel() { Debug.Log("Go to next level" + _nextLevelName); SceneManager.LoadScene(_nextLevelName); }

}

y Gerente de Nivel

 public class LevelManager : MonoBehaviour { int levelsUnlocked; public Button[] buttons; void Start() { levelsUnlocked = PlayerPrefs.GetInt("levelsUnlocked", 1); for (int i = 0; i < buttons.Length; i++) { buttons[i].interactable = false; } for (int i = 0; i < levelsUnlocked; i++) { buttons[i].interactable = true; } } public void LoadLevel(int levelIndex) { SceneManager.LoadScene(levelIndex); }

Obtuve estos 2 scripts y adjunté tanto el lienzo como mis botones y el script de nivel a mis niveles.

El problema es que cada nivel se desbloquea al principio y después de completar los niveles automáticamente, quiere pasar al siguiente nivel que aún no existe.

Por favor, ayúdame. Lo siento si mi pregunta es estúpida y mal inglés.

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Debe crear una matriz de escenas en su LevelManager que conozca todos sus niveles (en orden) y para obtener el siguiente nivel, puede obtener la posición de su escena real en la matriz y verificar la siguiente.

algo como

pseudocódigo:

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour {
    void Example() {
        Application.LoadLevel("HighScore");
    }
}
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda