Podsumowanie: losowanie łupów
Część sekcji Architektura gier w Unity ścieżki Unity w Coddy. Lekcja 22 z 64.
W tym rozdziale umieszczono w Inspektorze klasy możliwe do serializacji, listy i typy wyliczeniowe, a tabela skrzyni korzysta ze wszystkich trzech. Teraz skrzynia losuje z tej tabeli.
Wyzwanie
ŁatwyNaciśnij spację, aby otworzyć skrzynię i upuścić jeden przedmiot z uwzględnieniem jego wagi.
- Napisz
public LootEntry Pick(int roll): przejdź przeztable; zwróć wpis, gdyrolljest mniejsze od jego wagi, w przeciwnym razie odejmij wagę. Po pętli użyjreturn null;. - Po naciśnięciu spacji wybierz przedmiot za pomocą
Random.Range(0, TotalWeight()), utwórz jegoprefab1.5 jednostki nad skrzynią i zapisz w loguentry.rarity + ": " + entry.itemName.
Naciśnij „Graj” i spację: najczęściej pojawi się Common: Apple lub Bread. Następnie naciśnij „Sprawdź”.
Spróbuj swoich sił
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;
}
// Tutaj należy umieścić Pick(int roll) oraz otwieranie skrzyni klawiszem Space
}
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Architektura gier w Unity
1Komponenty, nie hierarchie
Małe komponentyBazowy skrypt przeciwnikaKomponenty abstrakcyjneWspółpracujące komponentyPowtórka: modułowa wieżyczkaPowtórka: podwójne działo4Dane serializowane
Klasy serializowalneListy w InspectorzeEnumy w InspectorzePodsumowanie: tabela łupówPodsumowanie: losowanie łupów2Interfejsy w Unity
IDamageableInterfejsy i TryGetComponentGetComponentsPowtórka: klawisz interakcjiPowtórka: najbliższy w zasięgu5ScriptableObjects
Zasoby danychStatystyki broniWspółdzielone ustawieniaOcal wiatrFale jako danePowtórka: Baza przedmiotówPowtórka: Kupowanie w sklepie8Kod wielokrotnego użytku
Metody rozszerzająceGeneryczny singletonGeneryczne metody pomocniczePodsumowanie: FindNearestPoćwicz samodzielnie: Edytor online Unity