いくつかの2Dスプライトがいくつかの3DDrawableGameComponentsを遮るようにしたいと思います。簡単な例として、一時停止メニュー(2Dスプライトとして実装)を一時停止した宇宙船(3Dゲームコンポーネントとして実装)の上に描画する必要があります。
XNAフレームワークは、Microsoft.Xna.Framework.GameおよびMicrosoft.Xna.Framework.DrawableGameComponentからクラスのDrawメソッドを自動的に呼び出します。
私の経験では、描画順序は次のとおりです。
- ゲームのDraw()メソッド
- DrawableGameComponent Draw()メソッド
私のspriteBatch描画メソッド呼び出しは、私のGameクラスの描画メソッドです。したがって、宇宙船は一時停止メニューの上部に描画されます(読み取り不能になります)。
私の問題を解決する最も簡単な方法は、drawメソッドが呼び出される順序を逆にすることだと思います。これは可能ですか?
DrawableGameComponentsのDrawOrderを異なる値(1000、1、0、-1、-1000)に設定しようとしましたが、GameとDrawableGameComponentのインスタンス間のXNAフレームワークのDraw()メソッドの呼び出し順序には影響しません。
SpriteBatch Drawメソッド呼び出しのlayerDepthを調べましたが、GameクラスとDrawableGameComponentクラスの間のXNAFrameworkの描画順序とは関係がないようです。レイヤーの深さは、SpriteBatchのスプライトにのみ影響するようです。
XNAを使用するのは初めてですが、フレームワークについて質問しすぎているのではないかと思います。この場合、3Dオブジェクトの上に2Dオブジェクトを配置するための通常の方法は何でしょうか。
どんな援助もいただければ幸いです。