Saltar al contenido

🎮 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! 🚀🎮

Etiquetas:

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 !!

Descubre más desde Tomás González: Formador y Desarrollador Web

Suscríbete ahora para seguir leyendo y obtener acceso al archivo completo.

Seguir leyendo

Este sitio web utiliza cookies, si necesitas más información puedes visitar nuestra política de privacidad    Ver
Privacidad