【问题标题】:Instance Argument: Cannot convert an object to its own type实例参数:无法将对象转换为其自己的类型
【发布时间】:2014-05-30 06:35:26
【问题描述】:

我正在通过 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 愚蠢都消失了,但是有没有一个修复程序可以让这个工作正常?

【问题讨论】:

    标签: c# build xna visual-studio-2013 monogame


    【解决方案1】:

    MonoGame 很可能引用了不同版本的 XNA,或者已将相同的命名空间用于替代实现,以尽量减少对最终开发人员的代码影响。

    有关方法,请参阅@ayls 对类似问题的回答Monogame Ambiguous Vector2

    其实@Andrew Russell 的这个回答看起来更权威Ambiguous reference between MonoGame & Microsoft.XNA.Framework namespaces

    【讨论】:

    • 我现在收到错误“您的类型 Microsoft.Xna.Framework.Vector3 是在未引用的程序集中定义的。您必须添加对程序集 Microsoft.Xna.Framework 的引用,版本 = 4.0.0.0,文化 = 中性, PublicKeyToken=blahblahblah”。我曾尝试使用 Monogame 的 beta 安装程序(它们很难找到),在重新启动创建项目的过程(这次使用 MonoGame 模板)、复制代码文件(但不是设置)并尝试构建后,我得到了与 Vector2 完全相同的问题。我不明白的是它现在在抱怨Vector3。
    猜你喜欢
    • 2021-06-02
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    • 1970-01-01
    • 2020-10-26
    • 2023-04-10
    • 1970-01-01
    相关资源
    最近更新 更多