【发布时间】:2011-08-24 07:50:44
【问题描述】:
有什么好的方法可以做到这一点吗?
我希望能够在 XNA 中绘制大量 2D 东西——通常是在偏移位置。例如,如果某物位于 (X,Y) 位置,那么理想情况下,我希望能够将修改后的 SpriteBatch 传递给它,当调用 Draw(X,Y) 时会考虑偏移量并在 (X +OffsetX, Y+OffsetY)。
我不想将此偏移量传递给孩子,而必须在每个孩子中单独处理它——这可能会搞砸,也会搞砸我的界面!
首先,我想有一个 SpriteBatch 的装饰器,如果我为位置 (X,Y) 的某物调用 Decorator.Draw,它将把它作为 (X+offsetX, y+offsetY) 路由到原始 SpriteBatch。但是我无法覆盖 SpriteBatch 类中的 Draw 方法,即使我创建了自己的“Decorator.DrawOffset”,Decorator 似乎也需要调用“SpriteBatch.Begin()”,而这些东西似乎会破坏...... :(
然后我想到了扩展方法,但我认为每次调用 draw() 时都需要将偏移量作为变量传递给它们?这仍然需要我通过孩子们传递偏移量......
另一种选择是将孩子绘制到 RenderTarget(或 XNA4 中的任何内容),然后将其渲染到屏幕上的偏移位置......但这似乎效率低得可怕?
感谢任何cmets!
【问题讨论】: