涉及的敌人课程:
public abstract Enemy : MonoBehaviour {}
public class A : Enemy {}
public class B : Enemy {}
我有一本字典。我想让字典包含每种类型敌人的堆栈。
public class Test : MonoBehaviour
{
// prefabs
public GameObject a, b;
public Dictionary<Enemy, Stack> eDictionary;
void Start()
{
eDictionary = new Dictionary<Enemy, Stack>();
Fill(a, 10);
Fill(b, 10);
}
}
我如何制作堆栈和密钥。
public void Fill(Enemy e, int howMany)
{
Stack s = new Stack();
for(int I = 0; I < howMany; I++)
{
GameObject g = MonoBehavior.Instantiate(e.gameObject) as GameObject;
s.Push(g);
}
eDictionary.Add(e, s)
}
主要问题是:如何以A型敌人与1把钥匙叠加的方式制作钥匙?
当我进入generalized
敌人类A和B并尝试将该敌人添加到相应的堆栈时,由于其键,我得到键不匹配错误。当我将敌人从堆栈中弹出时,我就这样做了,当我完成它们时,我想将它们推入字典的堆栈中(它在那时失败了)。
答案 0 :(得分:4)
我认为问题可能与你正在使用的密钥有关。
当你将堆栈添加到Dictionary时,你会给它一个敌人实例的密钥。因此,即使您稍后引用具有相同类型的字典,它也将是不同的实例,因此它将不匹配。
一种解决方案是使用类的名称作为键,而不是对象本身。