Repaso: tabla de botín
Parte de la sección Arquitectura de juegos en Unity del Journey de Unity de Coddy. Lección 18 de 50.
Desafío
FácilUn cofre del tesoro deja caer un objeto cada vez que pulsas Espacio. Escribe LootChest.cs. La escena rellena su tabla de botín en el Inspector, así que los nombres deben coincidir:
- Un enum
RarityconCommon,Rare,EpicyLegendary, en ese orden. - Una clase
LootEntryque el Inspector pueda mostrar, con un stringitemName, un GameObjectprefaby una Rarityrarity, y en el cofre unaList<LootEntry>pública llamadatable. La tabla de la escena contiene la manzana y el pan (Common), el anillo de plata (Rare), el huevo de dragón (Epic) y la corona dorada (Legendary), en ese orden. public int WeightOf(Rarity rarity)proporciona el peso de una entrada según su rareza: Common 10, Rare 4, Epic 2, Legendary 1.public int TotalWeight()suma los pesos de toda la tabla.public LootEntry Pick(int roll), para una tirada desde 0 hasta, sin incluir,TotalWeight(), recorre la tabla en orden, y cada entrada abarca tantas tiradas como indique su peso: las tiradas del 0 al 9 dan la manzana, del 10 al 19 el pan, del 20 al 23 el anillo de plata, y así sucesivamente.- Al pulsar Espacio, se ejecuta una vez
Random.Range(0, TotalWeight()), se elige esa entrada, se genera su prefab a 1.5 unidades por encima del cofre y se registra su rareza y nombre, como enRare: Silver Ring.
Pulsa Play, abre el cofre unas cuantas veces y luego pulsa Check.
Pruébalo tú mismo
using System.Collections.Generic;
using UnityEngine;
public class LootChest : MonoBehaviour
{
}
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 modular4Datos serializados
Clases serializablesListas en el InspectorEnumeraciones en el InspectorRepaso: tabla de botín7Máquinas de estados
Estados como clasesUna máquina de estadosTransicionesCerebros de enemigosRepaso: estados de puertas10Proyecto: Superviviente de la arena
El héroeTipos de enemigos2Interfaces en Unity
IDamageableInterfaces y TryGetComponentGetComponentsRepaso: tecla de interacción5ScriptableObjects
Recursos de datosEstadísticas de armasConfiguración compartidaOleadas como datosRepaso: base de datos de objetos