我正在開發一個XNA遊戲。這是我對架構小心的時候。直到今天,我一直以這種方式來實現我自己的繪製方法:XNA draw:在整個遊戲中使用一個spritebatch
public void Draw(SpriteBatch sb, GameTime gameTime)
{
sb.Begin();
// ... to draw ...
sb.End();
}
我挖DrawableGameComponent,看到Draw方法來這樣:
public void Draw(GameTime gameTime)
{
// ...
}
首先,我知道SpriteBatch可以在開始和結束之間收集許多Texture2D,以便對它們進行排序或使用相同的效果進行繪製。
我的問題是關於傳遞SpriteBatch的性能和成本。在DrawableGameComponent中,如果其spritebatch是公開的,則可以調用遊戲對象的spritebatch。
有什麼建議,xna遊戲程序員應該做什麼?
感謝您的建議。
我不同意這是最好的方法。在遊戲中使用[IoC](https://en.wikipedia.org/wiki/Inversion_of_control)可能會導致大量的性能開銷,如果沒有正確連接的話。這要求您提前註冊所有的類型,即使遊戲在其生命週期中從不使用它們,這是浪費資源。根據您的目標設備和遊戲類型,資源可能非常有限。 DI有它的位置。我只是不同意它屬於除原型之外的任何形式的視頻遊戲。 –
@JohnathonSullinger您提到的限制顯然是正確的,因爲這是DI非常常見的「問題」。它應該小心使用,並進行監控以避免不良表現 - 但大多數收集DI經驗的人已經知道這一點 – Dbl