🎮 Cómo crear un sistema de verificación de edad en Unity paso a paso

🎮 Cómo crear un sistema de verificación de edad en Unity paso a paso

En este tutorial aprenderás a implementar un sistema de verificación de edad en Unity, muy útil cuando tu juego o aplicación necesita restringir el acceso a ciertos contenidos (por ejemplo, anuncios o compras dentro de la app).
El flujo será el siguiente:

  1. El usuario pulsa un botón (por ejemplo, Ver Ads o Entrar en la Tienda).
  2. Se abre un teclado numérico donde el jugador debe introducir su año de nacimiento (4 dígitos).
  3. Si el cálculo demuestra que el usuario es mayor de edad, se abre el panel correspondiente.
  4. Si es menor, el teclado se cierra y no se muestra nada más.

🖼️ Paso 1: Crear la UI en Unity

  1. Abre tu escena en Unity.
  2. Crea un Canvas (si no lo tienes ya en la escena).
  3. Dentro del Canvas, añade un GameObject y nómbralo como AgeVerification
  4. Añade un GameObject Container que será el padre de Year y Keyboard
  5. Dentro de Container, añade otro GameObject y nómbralo Keyboard. Este será nuestro teclado numérico.
  6. Dentro del Keyboard, añade:
    • Diez botones (0–9) que servirán de teclado.
    • Opcionalmente, un botón Limpiar.
  7. Al mismo nivel que Keyboard, añade un GameObject llamado Year, y en su interior, un TMP_Text para mostrar los dígitos introducidos. Nómbralo Text.
  8. En Container, he añadido un Componente Vertical Layout para separar Year y Keyboard verticalmente.
  9. En Keyboard he añadido un Grid Layout Group para ordenar automáticamente los botones en forma de grid.
  1. Crea otros dos paneles fuera del teclado:
    • AdsPanel → donde irán tus anuncios.
    • ShopPanel → para la tienda.

Ambos estarán desactivados por defecto.


💻 Paso 2: Crear el script AgeVerification

En tu carpeta Scripts, crea un archivo llamado AgeVerification.cs y pega el siguiente código:

using TMPro;
using UnityEngine;

public class AgeVerification : MonoBehaviour
{
    [Header("UI")]
    public TMP_Text AgeText;
    public GameObject keyboardPanel;   // Panel del teclado numérico
    public int minAge = 18;            // Edad mínima requerida

    private const int MaxDigits = 4;
    private string _ageInput = string.Empty;
    private GameObject _pendingAdultPanel;

    void Awake()
    {
        UpdateAgeLabel();
        if (keyboardPanel != null) keyboardPanel.SetActive(false);
    }

    // Inicia la verificación desde cualquier botón (Ads, Tienda, etc.)
    public void StartAgeGate(GameObject panelToEnableIfAdult)
    {
        _pendingAdultPanel = panelToEnableIfAdult;
        ClearAge();
        ShowKeyboard();
    }

    // Se llama desde los botones 0–9
    public void ClickNumber(int number)
    {
        if (_ageInput.Length >= MaxDigits) return;

        _ageInput += number.ToString();
        UpdateAgeLabel();

        if (_ageInput.Length == MaxDigits)
            AgeCompleted();
    }

    public void ClearAge()
    {
        _ageInput = string.Empty;
        UpdateAgeLabel();
    }

    public void Backspace()
    {
        if (_ageInput.Length == 0) return;
        _ageInput = _ageInput[..^1];
        UpdateAgeLabel();
    }

    private void AgeCompleted()
    {
        bool isAdult = false;

        if (int.TryParse(_ageInput, out int year))
        {
            int currentYear = System.DateTime.Now.Year;
            int age = currentYear - year;

            isAdult = age >= minAge && age < 120;
        }

        HideKeyboard();

        if (isAdult && _pendingAdultPanel != null)
            _pendingAdultPanel.SetActive(true);

        _pendingAdultPanel = null;
        ClearAge();
    }

    private void ShowKeyboard() => keyboardPanel?.SetActive(true);
    private void HideKeyboard() => keyboardPanel?.SetActive(false);

    private void UpdateAgeLabel()
    {
        if (AgeText != null) AgeText.text = _ageInput;
    }
}

⚙️ Paso 3: Conectar los botones

  1. Selecciona cada botón numérico (0–9).
  2. En el componente Button → OnClick(), arrastra el GameObject que tiene el script AgeVerification.
  3. Selecciona la función AgeVerification.ClickNumber(int) e introduce el número correspondiente.
  1. Haz lo mismo con los botones especiales:
    • Botón Limpiar → ClearAge()

🚪 Paso 4: Integrar los orígenes (Ads y Tienda)

  1. Selecciona el botón Ads y en su evento OnClick() llama a: AgeVerification.StartAgeGate(AdsPanel); Así, el flujo abrirá el teclado y solo si el usuario es mayor de edad se activará el panel AdsPanel.
  2. Haz lo mismo con el botón Tienda, pero pasando ShopPanel.

✅ Resultado final

  • El jugador pulsa el botón Ads o Tienda.
  • Se abre el teclado numérico.
  • Introduce su año de nacimiento (4 dígitos).
  • Si es mayor de edad, se abre el panel correspondiente.
  • Si es menor, el teclado se cierra y no ocurre nada más.

🚀 Conclusión

Con este sistema has aprendido a:

  • Crear un teclado numérico en Unity.
  • Implementar un script reutilizable para varios orígenes (ads, tienda, etc.).
  • Validar la edad calculando el año de nacimiento introducido.
  • Controlar la apertura y cierre automático de paneles según la verificación.

Este es un ejemplo básico, pero puedes expandirlo fácilmente:

  • Mostrar mensajes de error si la edad no es válida.
  • Guardar en PlayerPrefs si ya verificó la edad una vez.
  • Añadir efectos visuales al abrir/cerrar el teclado.

Documentación Oficial:

Share this content:

Comentarios

Aún no hay comentarios. ¿Por qué no comienzas el debate?

Deja una respuesta

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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.