Я в процессе создания системы лута. Я почти в конце, все, что мне осталось, это заполнить DropTable
в Инспекторе в моем Enemy
сценарии. По какой-то причине мой DropTable
сценарий сериализуется, но мой LootDrop
класс - нет. Мои занятия по сути настроены так:
DropTable
класс:
[System.Serializable]
public class DropTable
{
public List<LootDrop> loot = new List<LootDrop>();
public Item GetDrop()
{
int roll = Random.Range(0, 101);
int chanceSum = 0;
foreach (LootDrop drop in loot)
{
chanceSum += drop.Chance;
if (roll < chanceSum)
{
return ItemDatabase.Instance.GetItem(drop.itemSlug); //return the item here
}
}
return null; //Didn't get anything from the roll
}
}
LootDrop
класс:
[System.Serializable]
public class LootDrop
{
public string itemSlug { get; set; }
public int Chance { get; set; }
}
По сути, мой DropTable
просто содержит список LootDrop
. Однако я не могу получить доступ к отдельным экземплярам LootDrop
внутри List<LootDrop>
от инспектора. Все, что я делаю, - это создание переменной public DropTable
в моем скрипте Enemy
. Я чувствую, что я делал подобные вещи раньше, и у меня не было проблем. Я что-то здесь не так делаю? Я действительно хотел, чтобы DropTable
был отдельным классом от моего врага, так как враг не должен заботиться о методе GetDrop()
. Тем не менее, если это единственный способ, то я думаю, что это нужно сделать. Любая помощь в этом вопросе будет оценена.