实例参数:无法将对象转换为其自己的类型
本文关键字:转换 自己的 类型 对象 参数 实例 | 更新日期: 2023-09-27 17:58:39
我正在通过NuGet包创建MonoGame项目。我从一个空白项目开始,在PackageManager控制台中运行"InstallPackageMonoGame"。之后,我复制了所有的旧代码,将命名空间更改为新的项目名称,从那以后,我在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的愚蠢行为都消失了,但有没有一个修复方法可以让这一切正常工作?
MonoGame很可能引用了不同版本的XNA,或者在替代实现中使用了相同的命名空间,以最大限度地减少对最终开发人员的代码影响。
请参阅@ayls对这个类似问题的回答Monogame歧义向量2以了解方法。
事实上,来自@Andrew Russell的这个答案看起来更具权威性——MonoGame&微软XNA。框架名称空间