🎮 Cómo Solucionar el Error del Cursor Bloqueado al Cambiar de Escena en Unity

Si tu cursor se queda bloqueado o invisible después de cambiar de escena en Unity, el problema generalmente se debe a que su estado (Cursor.lockState) no se restablece correctamente al cargar una nueva escena.

✅ El cursor se desbloqueará correctamente al cambiar de escena.
âś… Funciona tanto en el menĂş como en el juego.
âś… Se puede personalizar para bloquear el cursor en ciertas escenas y desbloquearlo en otras.


🔹 1. Restaurar el Cursor al Cargar una Nueva Escena

Si tu cursor queda bloqueado o invisible al cambiar de escena, usa Cursor.lockState y Cursor.visible en un script que se ejecute cada vez que una nueva escena se cargue.

📌 Paso 1: Crear el Script CursorManager.cs

  1. Ve a la carpeta Scripts (Assets/Scripts).
  2. Clic derecho > Create > C# Script.
  3. Nómbralo CursorManager.cs y ábrelo.
  4. Pega este cĂłdigo:
using UnityEngine;
using UnityEngine.SceneManagement;

public class CursorManager : MonoBehaviour
{
    void Start()
    {
        // Hacer visible el cursor y desbloquearlo cuando la escena cargue
        Cursor.lockState = CursorLockMode.None;
        Cursor.visible = true;
    }

    // Si quieres que el cursor se oculte en ciertas escenas (como en el juego), usa esto:
    void OnSceneLoaded(Scene scene, LoadSceneMode mode)
    {
        if (scene.buildIndex == 0) // Si es la escena del menĂş (Ă­ndice 0)
        {
            Cursor.lockState = CursorLockMode.None;
            Cursor.visible = true;
        }
        else // Si es cualquier otra escena (ej: dentro del juego)
        {
            Cursor.lockState = CursorLockMode.Locked;
            Cursor.visible = false;
        }
    }

    void OnEnable()
    {
        SceneManager.sceneLoaded += OnSceneLoaded;
    }

    void OnDisable()
    {
        SceneManager.sceneLoaded -= OnSceneLoaded;
    }
}

🔹 2. Asignar el Script en Unity

📌 Paso 2: Crear un Objeto CursorController

  1. En la JerarquĂ­a (Hierarchy), crea un GameObject vacĂ­o.
  2. NĂłmbralo CursorController.
  3. Añádele el script CursorManager.cs (Add Component > CursorManager).

🔹 3. Personalizar el Comportamiento del Cursor

🔹 Si quieres que el cursor siempre esté visible y desbloqueado en todas las escenas:

void Start()
{
    Cursor.lockState = CursorLockMode.None;
    Cursor.visible = true;
}

🔹 Si quieres que el cursor esté bloqueado en el juego pero visible en el menú:

void OnSceneLoaded(Scene scene, LoadSceneMode mode)
{
    if (scene.buildIndex == 0) // MenĂş principal
    {
        Cursor.lockState = CursorLockMode.None;
        Cursor.visible = true;
    }
    else // Juego
    {
        Cursor.lockState = CursorLockMode.Locked;
        Cursor.visible = false;
    }
}

🎯 Resultado Final

âś… El cursor se desbloquea correctamente en el menĂş.
âś… Se bloquea dentro del juego si es necesario.
✅ Funciona automáticamente cada vez que cambia la escena.

🔥 ¡Prueba esto y dime si funciona! 🚀🎮

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Información básica sobre protección de datos Ver más

  • Responsable: Tomas Gonzalez.
  • Finalidad:  Moderar los comentarios.
  • LegitimaciĂłn:  Por consentimiento del interesado.
  • Destinatarios y encargados de tratamiento:  No se ceden o comunican datos a terceros para prestar este servicio.
  • Derechos: Acceder, rectificar y suprimir los datos.
  • InformaciĂłn Adicional: Puede consultar la informaciĂłn detallada en la PolĂ­tica de Privacidad.

error: Content is protected !!
Este sitio web utiliza cookies, si necesitas más informaciĂłn puedes visitar nuestra polĂ­tica de privacidad    Ver
Privacidad