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:
- El usuario pulsa un botón (por ejemplo, Ver Ads o Entrar en la Tienda).
- Se abre un teclado numérico donde el jugador debe introducir su año de nacimiento (4 dígitos).
- Si el cálculo demuestra que el usuario es mayor de edad, se abre el panel correspondiente.
- Si es menor, el teclado se cierra y no se muestra nada más.
🖼️ Paso 1: Crear la UI en Unity
- Abre tu escena en Unity.
- Crea un Canvas (si no lo tienes ya en la escena).
- Dentro del Canvas, añade un
GameObject
y nómbralo comoAgeVerification
- Añade un GameObject
Container
que será el padre deYear
yKeyboard
- Dentro de Container, añade otro GameObject y nómbralo
Keyboard
. Este será nuestro teclado numérico. - Dentro del
Keyboard
, añade:- Diez botones (0–9) que servirán de teclado.
- Opcionalmente, un botón Limpiar.
- Al mismo nivel que
Keyboard
, añade un GameObject llamadoYear
, y en su interior, unTMP_Text
para mostrar los dígitos introducidos. NómbraloText
. - En
Container
, he añadido un ComponenteVertical Layout
para separarYear
yKeyboard
verticalmente. - En
Keyboard
he añadido unGrid Layout Group
para ordenar automáticamente los botones en forma de grid.
- 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
- Selecciona cada botón numérico (0–9).
- En el componente Button → OnClick(), arrastra el GameObject que tiene el script
AgeVerification
. - Selecciona la función
AgeVerification.ClickNumber(int)
e introduce el número correspondiente.
- Haz lo mismo con los botones especiales:
- Botón Limpiar →
ClearAge()
- Botón Limpiar →
🚪 Paso 4: Integrar los orígenes (Ads y Tienda)
- 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 panelAdsPanel
. - 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: