【发布时间】:2015-09-21 17:20:01
【问题描述】:
我正在使用MonoGame 制作一个小游戏作为练习。你是一艘船,用子弹射击小行星。
我有一个可以射击的物体,然后它会爆炸成一堆子弹,除了移除原来的炸弹物体外,一切都有效。
我在 List 中处理我的对象,其中 entity 是列表中所有对象(例如船、小行星、子弹等)继承自的对象,我这样做是为了将它们放在 1 个列表中并将当它们碰撞时,清理列表上的索引,循环遍历并从原始列表中删除具有清理列表中索引的项目。
TL;DR 问题是,我不知道如何使用仅包含索引的列表来跟踪特定的炸弹对象,因为一直在删除和添加不同的对象。
如果我尝试在 Bomb 对象中使用某种计时器,我无法从对象本身中删除它,我什至尝试调用外部方法 Finalize 将对象设置为 NULL,但这也不起作用。 我用了这行代码:
game.objectController.Finalize(this);
还有这个方法:
public void Finalize(Entity obj)
{
obj = null;
}
一个困难的解决方案是制定某种方法来跟踪实体列表中的所有索引,即使它们“四处移动”,但这不是处理它的正确方法吗?
我能想到的另一个解决方案是从炸弹对象中执行一些操作,该对象将返回它的列表条目,但我不知道该怎么做。
提前感谢您的帮助。
编辑:这是我尝试作为接口的代码
interface IDestructible
{
public bool Isdestroyed();
}
这是我在要在一定时间限制后销毁的可破坏对象中使用的实现方法:
public bool IDestructible.Isdestroyed(){
if (timer == 25)
{
Explode();
return true;
} return false;
}`
【问题讨论】: