我正在通过 NuGet 软件包创建一个 MonoGame 项目。我从一个空白的项目开始,然后运行" Install-Package MonoGame"在程序包管理器控制台中。之后我复制了所有旧代码,将命名空间更改为新的项目名称,从那时起我就遇到了 Visual Studio 的奇怪构建问题,重启VS或重建后不会消失解决方案。
所有这些都与Vector2
个对象有关。我必须创建一个扩展方法来访问Vector2.X,因为VS无法在Vector2
内找到X的定义,即使我点击F12它也会直接转到Vector2.X。我必须创建一个静态方法来创建Vector2实例,因为" new Vector2(x,y)"对于需要Vector2
个对象作为参数的方法,它是一个无效参数。最后,我有这行代码:
PhysicsBody.Position = Extras.ToSimUnits(new Vector2(value.X, value.Y));
为此,我收到错误"实例参数:无法转换为' Microsoft.Xna.Framework.Vector2
'到' Microsoft.Xna.Framework.Vector2
'"。这怎么可能呢?我知道我可以继续添加静态方法来做一些简单的事情,这些事情由于某种原因导致构建错误,直到所有的Vector2愚蠢都消失了,但有没有一个可以使这个工作正常的修复?
答案 0 :(得分:1)
MonoGame很可能引用不同版本的XNA,或者使用相同的命名空间来实现备用实现,以最大限度地减少对最终开发人员的代码影响。
有关方法,请参阅@ayls对此类似问题Monogame Ambiguous Vector2的回答。
实际上,来自@Andrew Russell的答案看起来更具权威Ambiguous reference between MonoGame & Microsoft.XNA.Framework namespaces