ねえ、私はしばらくの間見回してきましたが、まだこの問題に対する直接的な答えを見つけることができません. UI の一部に頻繁に変化するアイコンが表示される XNA ゲームがあります (頻度は関係ありません)。スプライトシートを出力する単純なスプライトシートメーカーと、それぞれのアイコンの場所を含む単純な XML ファイルを使用することにしました。
私ができるようにしたいのは、XMLファイルから適切なアイコンのスプライトシートの場所とアイコンサイズをRectangle
. 次に、これを描画ビットのソース四角形として使用できます。
ただし、独自のコンテンツ パイプラインを作成せずに XML ファイルを XNA 4.0 プロジェクトにロードする方法 (可能であれば避けたいもの) の簡単な説明をまだ見つけていません。データをRectangle
変数に入れます。
XML ファイルは次のようになります。
<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with TexturePacker http://texturepacker.com-->
<!-- $TexturePacker:SmartUpdate:748fc56befb00c22540f953093f731a7$ -->
<!--Format:
n => name of the sprite
x => sprite x pos in texture
y => sprite y pos in texture
w => sprite width (may be trimmed)
h => sprite height (may be trimmed)
oX => sprite's x-corner offset (only available if trimmed)
oY => sprite's y-corner offset (only available if trimmed)
oW => sprite's original width (only available if trimmed)
oH => sprite's original height (only available if trimmed)
r => 'y' only set if sprite is rotated
-->
<TextureAtlas imagePath="Loadout_Icons.png" width="185" height="86">
<sprite n="Charge_Down.png" x="0" y="0" w="37" h="43"/>
<sprite n="Charge_Up.png" x="37" y="0" w="37" h="43"/>
<sprite n="Damage_Down.png" x="74" y="0" w="37" h="43"/>
<sprite n="Damage_Up.png" x="111" y="0" w="37" h="43"/>
<sprite n="FireRate_Down.png" x="148" y="0" w="37" h="43"/>
<sprite n="FireRate_Up.png" x="0" y="43" w="37" h="43"/>
<sprite n="Health_Down.png" x="37" y="43" w="37" h="43"/>
<sprite n="Health_Up.png" x="74" y="43" w="37" h="43"/>
<sprite n="Speed_Down.png" x="111" y="43" w="37" h="43"/>
<sprite n="Speed_Up.png" x="148" y="43" w="37" h="43"/>
</TextureAtlas>
また、独自の XML ファイルを作成しないことで自分自身を撃っているかどうかもわかりませんが、その方が簡単でしょうか?
msdn が提供しなければならなかったもののほとんどを役に立たずに読みましたが、関連するページや質問へのリンクは大歓迎です。前もって感謝します。