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

时间:2019-08-25 11:01:05

标签: c# visual-studio parameters draw monogame

我正在Visual Studio 2019中使用Monogames框架。

当我尝试使用SpriteBatch.Draw()时,有8种不同的替代选择。输入正确的替代功能参数后,会收到错误消息,因为我尝试使用具有不同参数的另一个替代功能,而我不明白为什么。

就像下面的这张照片 enter image description here

在这里,我已经正确输入了参数,但是却收到类似这样的错误消息 enter image description here

为什么Visual Studio或MonoGame框架无法理解我要使用的替代功能?

对此的附带说明是,我可以使用带有很多参数的重写函数,但由于其对性能的压力更大,因此我不想使用它。而且它是过时的。

enter image description here

1 个答案:

答案 0 :(得分:2)

  

当我为该覆盖功能输入正确的参数时,会收到错误消息,因为我试图使用具有不同参数的另一个覆盖,但我不明白为什么。

几乎可以肯定,您只是错误地输入了一种类型。 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);

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

  

对此的附带说明是,我可以使用带有很多参数的覆盖函数,但由于其对性能的压力更大,因此我不想使用它。

此外,请过早做出关于性能的假设。除非您实际测量了两种方法并发现了性能问题,否则没有理由相信任何Draw方法都会对性能产生明显影响。