Repaso: sortear el botín
Parte de la sección Arquitectura de juegos en Unity del Journey de Unity de Coddy. Lección 22 de 64.
En este capítulo, se colocaron clases serializables, listas y enumeraciones en el Inspector, y la tabla del cofre utiliza las tres. Ahora el cofre hace una tirada en ella.
Desafío
FácilHaz que la barra espaciadora abra el cofre y suelte un objeto según su peso.
- Escribe
public LootEntry Pick(int roll): recorretable; devuelve la entrada cuandorollsea menor que su peso; de lo contrario, resta el peso. Después del bucle,return null;. - Al pulsar la barra espaciadora, elige con
Random.Range(0, TotalWeight()), genera suprefaba 1.5 unidades por encima del cofre y registraentry.rarity + ": " + entry.itemName.
Pulsa «Jugar» y la barra espaciadora: la mayoría de las veces aparecerá Common: Apple o Pan. Después, pulsa «Comprobar».
Pruébalo tú mismo
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;
public enum Rarity { Common, Rare, Epic, Legendary }
[System.Serializable]
public class LootEntry
{
public string itemName;
public GameObject prefab;
public Rarity rarity;
}
public class LootChest : MonoBehaviour
{
public List<LootEntry> table;
public int WeightOf(Rarity rarity)
{
switch (rarity)
{
case Rarity.Common: return 10;
case Rarity.Rare: return 4;
case Rarity.Epic: return 2;
case Rarity.Legendary: return 1;
}
return 0;
}
public int TotalWeight()
{
int total = 0;
foreach (LootEntry entry in table) total += WeightOf(entry.rarity);
return total;
}
// Pick(int roll) y la lógica para abrir el cofre con Space van aquí
}
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Arquitectura de juegos en Unity
1Componentes, no jerarquías
Componentes pequeñosUn script base para enemigosComponentes abstractosComponentes que trabajan juntosRepaso: torreta modularRepaso: cañón doble4Datos serializados
Clases serializablesListas en el InspectorEnumeraciones en el InspectorRepaso: tabla de botínRepaso: sortear el botín2Interfaces en Unity
IDamageableInterfaces y TryGetComponentGetComponentsRepaso: Tecla de interacciónRepaso: El más cercano al alcance5ScriptableObjects
Activos de datosEstadísticas de armasConfiguración compartidaGuardar el vientoOleadas como datosRepaso: base de datos de objetosRepaso: comprar en la tienda3Eventos
Eventos de C# en UnitySuscribirse en OnEnableCampos UnityEventLos eventos controlan la interfazRepaso: ventana emergente de logrosRepaso: temporizador de la ventana emergentePractica por tu cuenta: Playground de Unity