在我的塔防游戏中,当我的敌人死亡时,我正在制作,我希望他们死对吗?所以,我需要删除它们。我是从C ++过来的,你可以用删除MyInstance;删除类的实例,但这在C#中不起作用。我知道C#中有一个垃圾收集器可以删除你的东西,但是,你如何标记一个删除的实例呢?谢谢你!!!
答案 0 :(得分:4)
我的建议是不要删除它们。虽然你有一个垃圾收集器可以提供帮助,但从性能的角度来看,不使用它通常是你的最佳选择。
想想你可能拥有的最大敌人数量。
创建一个Enemy对象的循环缓冲区:本质上是一个Enemy对象数组和一个最后一个指针。
为每个敌人添加“IsActive”标志。
当你想要创建一个新敌人时,从最后一个指针向前走过循环缓冲区,直到找到一个IsActive标志设置为false的敌人。设置指向该敌人的最后一个指针,将该敌人变为您关心的类型,并将其IsActive标志设置为true。
当敌人死亡时,将其IsActive标志设置为false。
在你的Update和Draw循环中,你只需遍历缓冲区,然后对IsActive设置为true的每个敌人进行操作或绘制。
答案 1 :(得分:3)
您可以将对象显式设置为null,将其标记为垃圾回收。
Enemy e = new Enemy();
// do stuff with enemy
// Set to null
e = null;