为什么我不能使用 Monogames 的特定 Draw 覆盖方法?

Why can't I use a specific Draw override method from Monogames?

我在 Visual Studio 2019 年使用 Monogames 框架。

当我尝试使用 SpriteBatch.Draw() 时,我从 select 获得了 8 个不同的覆盖。当我为该覆盖功能输入正确的参数时,我收到错误消息,因为我正在尝试使用具有不同参数的另一个覆盖,但我不明白为什么。

喜欢下面这张图片

这里我输入的参数是正确的,但是我收到这样的错误信息

为什么 Visual Studio 或 MonoGame 框架不理解我想要使用的覆盖功能?

附带说明一下,我可以使用带有很多参数的覆盖函数,但我不想使用它,因为这会对性能造成更大压力。而且还是肥胖。

When I have enter the correct parameter for that override function, I get error messages as I'm trying to use another override with different parameters and I don't understand why.

几乎可以肯定,您只是弄错了一种类型。 Draw 方法的重载如此之多,我可以理解为什么这是一个如此容易犯的错误。我自己做了很多次。

找出问题所在的一种方法是在方法调用的正上方声明每个参数的类型,这样您就可以清楚地看到发生了什么。

Texture2D texture = _image;
Rectangle destinationRectangle = dRectangle;
Rectangle? sourceRectangle  = null;
Color color = Color.White;
float rotation = Orientation;
Vector2 origin = Vector2.Zero;
SpriteEffects effects = SpriteEffects.None;
float layerDepth = 0;

spriteBatch.Draw(texture, destinationRectangle, sourceRectangle, color, rotation, origin, effects, layerDepth);

一旦一切正常,您当然可以重构代码以内联参数或其他任何内容。

A side note on this is that I can use an override function with a lot of parameters but I don't want to use it cause of more stress on performance.

另外,过早对性能做出假设时要小心。除非您实际测量了两种方法并发现性能问题,否则没有理由相信任何 Draw 方法对性能有显着影响。