我想要一些2D精靈來遮擋一些3D DrawableGameComponents。對於一個簡單的例子,暫停菜單(實現爲2D精靈)應該繪製在暫停的太空船上(作爲3D遊戲組件實現)。可以在SpriteBatch繪製調用之前繪製XNA DrawableGameComponents,以便繪製在DrawableGameComponents之上的精靈?
XNA框架自動調用來自Microsoft.Xna.Framework.Game和Microsoft.Xna.Framework.DrawableGameComponent的類的Draw方法。
以我的經驗,我發現繪製順序是:
- 遊戲抽獎()方法
- DrawableGameComponent抽獎()方法
我spriteBatch繪製方法的調用都是平局我的Game類的方法。因此,太空飛船將被拖到暫停菜單的頂部(使其無法讀取)。
在我看來,解決我的問題最簡單的方法是顛倒繪製方法的順序。這可能嗎?
我已經嘗試將DrawOrder的DrawableGameComponents設置爲不同的值(1000,1,0,1,-1000),但它對Game和DrawableGameComponent實例之間的XNA框架Draw()方法調用順序沒有影響。
我已經查看了SpriteBatch Draw方法調用的layerDepth,但它們似乎與Game和DrawableGameComponent類之間的XNA Framework繪製順序無關。圖層深度似乎隻影響SpriteBatch中的精靈。
我是新來的使用XNA,但我懷疑我是問太多的框架。如果是這種情況,將2D對象放置在3D對象頂部的正常方法是什麼?
任何援助將不勝感激。
沒錯!我不知道那個base.Draw()正在調用DrawableGameComponent的Draw()方法。移動繪圖邏輯上方的base.Draw()方法調用修改繪製順序。謝謝。 – 2010-07-11 07:41:49