Lautaro Cabral
Otra forma de usar el invoke:
Invoke(nameof(ReloadLevel), 0.1f);
Luis Antonio Preza Padilla
Me encanta, mantiene lo tipado de C#
Luis Santiago
Buenisimo, gracias por compartir!
Optimiza el reinicio de tu videojuego en Unity con un flujo robusto que limpia el nivel, genera el suelo inicial y evita artefactos visuales. Aquí verás cómo integrar el Game Manager y el Level Manager con llamadas precisas y un orden correcto, además de ajustes prácticos de colliders y cámara para una experiencia fluida.
¿Cómo limpiar bloques al morir y reiniciar en Unity?
Para cerrar correctamente una partida y empezar otra sin residuos, es clave el orden en el set game state. Antes de reiniciar el controlador y el personaje, se debe limpiar la escena y volver a generar los bloques iniciales. Así desaparecen los restos del intento anterior y evitas que queden bloques superpuestos.
¿Qué llamadas debes hacer en Level Manager?
// Dentro de SetGameState cuando pasas a InGame LevelManager.SharedInstance.RemoveAllLevelBlocks(); LevelManager.SharedInstance.GenerateInitialBlocks(); controller.StartGame();
¿Por qué evitar solapamientos de bloques?
Punto clave: el StartGame llama a SetGameState, y este orquesta la limpieza y preparación de escena para el estado in game.
¿Cuándo retrasar la recarga con invoke?
A veces conviene dar un margen al motor para completar destrucciones antes de generar nuevos bloques. Una técnica sencilla es extraer la lógica en una función ReloadLevel y usar Invoke con un pequeño retardo. Sin embargo, en el caso descrito, el problema real fue no guardar el script: tras guardar, el retardo no fue necesario.
¿Cómo estructurar la recarga del nivel?
void ReloadLevel() { LevelManager.SharedInstance.GenerateInitialBlocks(); controller.StartGame(); } // Al entrar en InGame LevelManager.SharedInstance.RemoveAllLevelBlocks(); // Opción si hace falta esperar: Invoke(nameof(ReloadLevel), 0.1f); // Si no hace falta, llama directamente: // ReloadLevel();
¿Qué ajustes de jugabilidad y cámara revisar?
Durante las pruebas, el flujo mostró que la exit zone destruye el bloque anterior y genera el siguiente con normalidad. Aun así, hay detalles de contacto y cámara que conviene revisar para una experiencia pulida.
¿Cómo prevenir atascos por colliders?
¿Qué pasa con el barrido de cámara al reiniciar?
Además, recuerda la aleatoriedad del generador: a veces aparecen muchos bloques sencillos seguidos y otras, más complejos. Es normal en un sistema de contenido dinámico.
¿Te pasó lo del script sin guardar o tienes otra duda sobre el orden de llamadas en Game Manager y Level Manager? Cuéntalo en los comentarios y comparte tu solución.
Lautaro Cabral
Otra forma de usar el invoke:
Invoke(nameof(ReloadLevel), 0.1f);
Luis Antonio Preza Padilla
Me encanta, mantiene lo tipado de C#
Luis Santiago
Buenisimo, gracias por compartir!
Juanjo González
Yo desde el principio vi ese círculo en el nombre del script, y pensé: "¿Eso no significa que no ha guardado el script?"
Alex Quintero
Me andan ocurriendo mini fallos y es que ando colocando mal algunos codigos, necesito estar mas atento.
Cesar Hernández Ramírez
Ponte trucha
Usuario anónimo
Userno se si lo cambiaremos después o algo así o no es parte del diseño pero creo que lo de limpiar el currentlevel sedeveria hacer al cambiar al estado de gameover porque supongo que si quiero cambiar de menu a ingame lo va reiniciar todo (porque aria esto por ejemplo para poder gastar los coleccionables y comprar un booster de speed o no se algo o solo poner pause)
movigostudio movigostudio
yo por eso quite el level block 0 del random
Ricardo Sanchez
para que hay que destriuir bloques?? para que el juego no pese tanto ? por performance ? no gaste tanto recurso ?
Carlos Jimenez
Para mejorar el performance. En videojuegos siempre es importante mantener al mínimo el uso de recursos necesarios. Sí el jugador no no ve ni necesita un asset no hay razón para mantenerlo en la escena.
Eduardo Mogollon
GIF
Francisco Parejo
Tengo el siguiente problema. El bucle For del LevelManager no finaliza nunca, es decir, me genera los dos bloques iniciales pero sigue construyendo bloques sin parar. El personaje nunca llega a caer al vacío, y quisiera que funcionase para crear distintas partidas con niveles de dificultad diferentes.
Tomas Leonardo Amaya Ríos
Aparicion de bloques despues de destruir los anteriores
https://drive.google.com/file/d/1gNbObhQCmNoky4lAHSxlHNVf47e_OTdN/view?usp=sharing```