我正在Visual Studio 2019中使用Monogames框架。
当我尝试使用SpriteBatch.Draw()
时,有8种不同的替代选择。输入正确的替代功能参数后,会收到错误消息,因为我尝试使用具有不同参数的另一个替代功能,而我不明白为什么。
为什么Visual Studio或MonoGame框架无法理解我要使用的替代功能?
对此的附带说明是,我可以使用带有很多参数的重写函数,但由于其对性能的压力更大,因此我不想使用它。而且它是过时的。
答案 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
方法都会对性能产生明显影响。