运行调试实例

时间:2016-01-17 09:15:39

标签: c# xna monogame edit-and-continue

我正在开展一个使用第三方库的项目,这似乎给我带来了一些麻烦。

该项目是使用MonoGame和FarseerPhysics的游戏。

导致问题的代码(下面的github):

    private void DrawDebug(GameTime gameTime, RenderBatch renderBatch)
    {
        AABB boundingBox = GetBoundingBox();
        Vector2 tl = new Vector2(boundingBox.LowerBound.X, boundingBox.LowerBound.Y);
        Vector2 tr = new Vector2(boundingBox.LowerBound.X, boundingBox.UpperBound.Y);
        Vector2 bl = new Vector2(boundingBox.UpperBound.X, boundingBox.LowerBound.Y);
        Vector2 br = new Vector2(boundingBox.UpperBound.X, boundingBox.UpperBound.Y);

        Color drawColor = Color.White * 0.4f;
        renderBatch.Queue(new DrawLineInstruction(tl, tr, 0) { Color = drawColor });
        renderBatch.Queue(new DrawLineInstruction(tl, bl, 0) { Color = drawColor });
        renderBatch.Queue(new DrawLineInstruction(tr, br, 0) { Color = drawColor });
        renderBatch.Queue(new DrawLineInstruction(bl, br, 0) { Color = drawColor });
    }

    private AABB GetBoundingBox()
    {
        AABB boundingBox;
        FarseerPhysics.Common.Transform transform = GetFarseerTransform();
        BoundingShape.ComputeAABB(out boundingBox, ref transform, 0);
        //Weird edit-and-continue bug where properties are duplicated after editing this class
        return new AABB() { LowerBound = boundingBox.LowerBound, UpperBound = boundingBox.UpperBound };
    }

我在Color drawColor = Color.White * 0.4f;上设置了断点,并将浮点值更改为其他值。当我继续在BoundingShape.ComputeAABB(...)上创建NullReferenceException时。 它还显示了2个名为BoundingShape的属性和2个字段_shape(这是BoundingShape的支持字段)。

这是我的错还是我可以解决的问题?

Here is a screenshot。 注意本地视图,BoundingShape已被复制。 此外,Entity(包含正在编辑的代码的类)是抽象的,Level完全实现抽象类。

奇怪的部分:

它必须与out和ref参数有关,因为如果我在一个数组中返回LowerBound和UpperBound然后它可以工作,但是如果我返回AABB实例则它会失败。

我尝试过的事情:

  • 直接使用BoundingShape的支持字段(无结果,支持字段也重复,请参见屏幕截图)

  • 将边界框代码放在自己的方法中(没有结果,只有在将返回类型更改为数组时)。

  • Microsoft.Xna.Framework.Game.SortingFilteringCollection.ForEachFilteredItem(System.Action action, Microsoft.Xna.Framework.GameTime userData)

  • 的foreach循环中更改代码

从我的解决方法中得到帮助;可能有一些视觉工作室设置导致这个?

Github repo

感谢您阅读我的问题

0 个答案:

没有答案