Revisão: Sorteie o Loot
Parte da seção Arquitetura de Jogos no Unity do Journey de Unity da Coddy. Lição 22 de 64.
Este capítulo colocou classes serializáveis, listas e enums no Inspector, e a tabela do baú usa os três. Agora o baú faz uma rolagem com base nela.
Desafio
FácilFaça com que Space abra o baú e solte um item de acordo com o peso.
- Escreva
public LootEntry Pick(int roll): percorratable; retorne a entrada quandorollfor menor que o peso dela; caso contrário, subtraia o peso. Após o loop,return null;. - Ao pressionar Space, escolha com
Random.Range(0, TotalWeight()), gere oprefab1.5 unidades acima do baú e registreentry.rarity + ": " + entry.itemName.
Pressione “Jogar” e Space: na maioria das vezes, Common: Apple ou Bread. Depois, “Verificar”.
Experimente você mesmo
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) e a lógica para abrir o baú com Space ficam aqui
}
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Arquitetura de Jogos no Unity
1Componentes, não hierarquias
Componentes pequenosUm script base de inimigoComponentes abstratosComponentes trabalhando juntosRevisão: torre modularRevisão: canhão duplo4Dados Serializados
Classes SerializáveisListas no InspectorEnums no InspectorRevisão: Tabela de LootRevisão: Sorteie o Loot2Interfaces no Unity
IDamageableInterfaces e TryGetComponentGetComponentsRevisão: tecla de interaçãoRevisão: mais próximo ao alcance5ScriptableObjects
Ativos de DadosAtributos da ArmaConfigurações CompartilhadasSalve o VentoOndas como DadosRevisão: Banco de ItensRevisão: Comprar na LojaPratique por conta própria: Playground de Unity