この全体の小説を読むのにあまり興味がない人は、最初はオフにするだけで、この質問には純粋に理論的なコードはありません。 私は自分の電話にいますが、これはどちらの選択肢が最も適しているのか、その状況で作業するのが最も簡単なのかという疑問です。C#XNA - タイルマップの配列またはタイル[、]配列
質問には、私は基本的なTilemapエンジン*でなければならないと考えているものに取り組んでいます。私は私のアプローチについては疑問に思っています。私はすでに数回それを書き直しました。それはあまりにも長い時間を費やしているわけではない、プロジェクトは、少なくともおしゃれなことに言いたい。
基本的には、このコンストラクタを持つSpriteクラスがあります。文字列名、int id、texture2dテクスチャです。
次に、Spriteクラスから派生したTileクラスがコンストラクタに追加されています。 Int X、int Y、bool walkable。
私は最初に2D整数配列を使用し、配列の位置に目的のタイルのID値を割り当てました。 そして、タイルマップを描画するときには、ループ全体を2倍にして、配列内の配列位置と同じIDのタイルを見つけて、新しいタイルを返すタイル関数を返しますループの現在のXとY(明白な理由から、テクスチャサイズを掛けたもの)を描き続ける。この時点で、私のTileクラスはXとYの値を持たなかったからです。私はそれが一種の原始的なアプローチだと感じました。
しかし私は別のアプローチをしましたが、2Dタイル配列を作成し、配列の各位置にID値を割り当ててから、それをマッチングして新しいインスタンスを作成してから描画しました配列をループして、コンストラクタ内の現在のXとYを持つ目的のタイルの新しいインスタンスを配列の位置にしてから、Tile.XとTile.Yで描画します。もっとフィット感があるようだ。
私がコードを実行する前に少なくとも約1秒間、それはしました。 これまで、描画を試みる前に配列全体にタイルを完全に配置する必要がありました。以前はID 0のタイルを使用していたため、nullオブジェクト参照が戻されます(もちろん)。他に何も割り当てられていなければ、デフォルトとして描画します。 私が以前に持っていたすべての混乱のどこかに、IDが0だった場合に描画しないようにと言った単純な「if」もありましたが、後で追加しました。 私は今、Tile配列で同じことをすることができることを認識しています.0の場合はチェックし、次にnullの場合はチェックします。しかし、私はヌルかどうかのチェックにはあまり気にしません。 もう一度、それは私にとっては何らかの形で原始的であるように思えます。 また、単純なxmlファイルをtilemapとして解析しようとすると、今度はピクルのようになります。xmlとタイルをどのようにマッチさせるか分からないからです。 Btw、以前はxmlで作業したことがないので、問題があるかどうかしかわかりません。
*「プロジェクト」がエンジンと見なされる時期や理由を正確に明確にしても、基本的なものかもしれないが、それも素晴らしいだろう。なぜなら私はそれを完全に理解しているとは思わないからです。
**私はこの状況でforeachを使用するほうが適していることに気付きましたが、それはafileのTile配列でのみ機能します。
TL; DR 私の質問を終えるために 最も適しているのは何ですか?タイルマップのint [、]またはTile [、]ですか?そして、2つの無関係なXとYのintを使用する代わりに、配置のためにTileクラスのvector2を使うべきですか?
注 - 私はコンピュータサイエンスの学生です。これまでのところ、基本的な "hello world"トレーニングしか受けていませんでした。残りの部分は個人的な関心から学んだものです。また、間違って使用されている不具合や用語がある場合は、私に修正してください。私は助けが必要なのでここで尋ねています。話題がオンであるかオフトピックであるかに関わらず、私は何か助けをとるでしょう。しかし、それが適切かつ建設的な方法で与えられたら、私は感謝します。
編集:聖なること、私はそれほど書いたことも分からなかった。 これを読んだ人には、あなたは本当のMVPです!
私はこれを読んだことを楽しんだが、私はあなたのための答えを持っていない..恐ろしいポストMonogameとタイル理論については! – jhhoff02
よく縛られた比較的小さなマップの私のマップ構造は、通常、 'TileStack'の2次元配列です。 'TileStack'が座標系に関するメタデータを持ち、' Tile'の 'List'があります。 'Tile'はTileのidと、色、オフセット、回転などのタイルインスタンスに関する追加情報を含みます。 –