为什么这段代码没有正确执行(视频)?

Bea*_*red 8 c# monodevelop unity-game-engine

我正在使用Unity(3.4)Monodevelop(2.4.2),当我在调试器中逐步执行它时,它没有正确执行代码.这是显示它的视频的链接,请在720p运行并全屏显示...

http://www.youtube.com/watch?v=LGN7kxMUqjA

此外,这里有一些屏幕截图显示调试器在鼠标悬停变量时显示非常奇怪的值.这是在第一个if块中正确显示xSectionPixel的值时的样子... 在此输入图像描述 这就是它在第二个if块中错误地显示xSectionPixel的值时的样子...... 在此输入图像描述
这也是它开始不正确地执行代码的代码行.

什么会导致这个?

我尝试使用存储库中的代码的新副本重新安装工具,我甚至将它设置在具有不同操作系统(Win 7)的不同计算机上,并且它总是做同样的事情.这不是说它必须是我的代码吗?

值得注意的是,我正在使用SVN从存储库中推送/拉取代码,而我的本地副本存在于我的Dropbox文件夹中.

非常感谢您的智慧!如果你能发现任何可能破坏事物的东西(也就是我使用浮点数和整数的方式,那么这里也是代码?)

Vector2 textureCoordToHexGridCoord(int textX, int textY)
    {
        Vector2 hexGridCoord = new Vector2();
        float m = hexH / hexR;

        int xsection = (int)(textX / (hexH + hexS));
        int ysection = (int)(textY / (2 * hexR));

        int xSectionPixel = (int)(textX - xsection * (hexH + hexS));
        int ySectionPixel = (int)(textY - ysection * (2 * hexR));

        //A Section
        if(xsection % 2 == 0)
        {
            hexGridCoord.x = xsection;
            hexGridCoord.y = ysection;

            if(xSectionPixel < (hexH - ySectionPixel * m))
            {
                hexGridCoord.x--;
                hexGridCoord.y--;
            }

            if(xSectionPixel < (-hexH + ySectionPixel * m))
            {
                hexGridCoord.x--;
            }
        }

        //B Section
        else
        {
            if(xSectionPixel >= hexR)
            {
                if(ySectionPixel < (2 * hexH - xSectionPixel * m))
                {
                    hexGridCoord.x = xsection - 1;
                    hexGridCoord.y = ysection - 1;
                }
                else
                {
                    hexGridCoord.x = xsection;
                    //hexGridCoord.y = ysection;
                    hexGridCoord.y = ysection - 1;
                }
            }

            if(xSectionPixel < hexR)
            {
                if(ySectionPixel < (xSectionPixel * m))
                {
                    hexGridCoord.x = xsection;
                    //hexGridCoord.y = ysection - 1;
                    hexGridCoord.y = ysection;
                }
                else
                {
                    hexGridCoord.x = xsection - 1;
                    hexGridCoord.y = ysection;
                }
            }
        }

        return hexGridCoord;
    }
Run Code Online (Sandbox Code Playgroud)

Ash*_*her 7

我对您使用的框架没有具体经验,但我对调试器有很多经验.您看到的调试器行为可能发生在两种情况之一(我能想到...)

  1. 符号文件和执行代码与源代码不同步,通常IDE会检测到它,但在某些情况下它不会检测到,解决方案是删除所有二进制文件,重新编译并重试.

  2. 调试器或调试器扩展中的错误(用于在您所处的特定环境中进行调试,即统一/单一开发).

如果您无法解决它,我会在您的代码中添加日志记录并使用它来真正了解会发生什么.