我正在创建一个Loot系统。我几乎快结束了,只剩下DropTable在Enemy脚本中的Inspector中填写了。由于某种原因,我的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()方法。但是,如果那是唯一的方法,那么我想它必须这样做。在这个问题上的任何帮助将不胜感激。
Helenr
慕侠2389804
相关分类