簡體   English   中英

可以在SpriteBatch繪制調用之前繪制XNA DrawableGameComponents,以便在DrawableGameComponents頂部繪制精靈嗎?

[英]Can XNA DrawableGameComponents be drawn before SpriteBatch draw calls so that sprites are drawn on top of DrawableGameComponents?

我希望一些2D精靈遮擋一些3D DrawableGameComponents。 對於簡化示例,應該在暫停的太空船(實現為3D游戲組件)的頂部繪制一個暫停菜單(實現為2D精靈)。

XNA框架自動從Microsoft.Xna.Framework.Game和Microsoft.Xna.Framework.DrawableGameComponent調用類的Draw方法。

根據我的經驗,我發現繪制順序為:

  1. 游戲Draw()方法
  2. DrawableGameComponent Draw()方法

我的spriteBatch繪制方法調用是Game類的draw方法。 因此,太空飛船被繪制在暫停菜單的頂部(使其不可讀)。

在我看來,解決我的問題的最簡單方法是顛倒draw方法的調用順序。 這可能嗎?

我嘗試將DrawableGameComponents的DrawOrder設置為不同的值(1000、1、0,-1,-1000),但它對Game和DrawableGameComponent實例之間的XNA框架Draw()方法調用順序沒有影響。

我已經研究了SpriteBatch Draw方法調用的layerDepth,但它們似乎與Game和DrawableGameComponent類之間的XNA Framework繪制順序無關。 圖層深度似乎只影響SpriteBatch中的Sprite。

我是使用XNA的新手,但我懷疑我對框架的要求過多。 如果是這種情況,將2D對象放置在3D對象之上的正常方法是什么?

任何援助將不勝感激。

自從我使用XNA以來已經有一段時間了,但是我相信Game類的Draw()方法中的base.Draw()調用將遍歷DrawableGameComponents ,因此您可以嘗試將此調用放在繪圖邏輯之前或之后在Draw方法中,具體取決於您希望調用發生的順序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM