これが間違った質問場所である場合はお詫びします。私は非常に新しい趣味のプログラマーです。
私は現在、小さなトップダウンシューティングゲームに取り組んでいます。これは、学び、楽しむための単純な自己主導型プロジェクトにすぎません。フレームワークとしてC#とXNAを使用しており、gameObjectsを取得してインベントリに追加することで、ゲームに少し多様性を追加しようとしています。
現在、私は単一のList<GamePlayObjects>
「WorldObjects」を持っており、ObjectManager
すべてのオブジェクトの更新、衝突、描画関数を管理するクラスがあり、これまでのところに満足しています。GamePlayObjectと衝突すると(小惑星が爆発した後の鉄鉱石の小片など)、プライマリリスト「WorldObjects」からオブジェクトを削除し、これを「WorldObjects」という別のリストに追加します。List<GamePlayObjects> inventory
今、私がやりたいのは、アイテムのスプライトと私が収集したそのアイテムの総数で画面上に小さな領域を描くことです。描画の側面は、インベントリの内外へのデータの抽出に関係しているので、私はあまり興味がありません。
HashSet
インベントリから一意のアイテムを取得し、から各アイテムの総数を抽出するために使用することについて、いくつかのスレッドを読んだことがありますHashSet
が、これを理解するのに苦労しているため、ここにアクセスして支援を求めています。
私のコードの例と私が達成しようとしていること。
すべてのWorldObjectのリストがあります。各worldObjectは、そのworlObjectに関連するすべてのものを保持するクラスです。
private List<GamePlayObject> gameObjects = new List<GamePlayObject>();
あるオブジェクトが、「プレーヤー」が別のオブジェクト「鉄鉱石」と衝突したとしましょう。私は鉄鉱石の世界のオブジェクトを次の場所から削除します。
private List<GamePlayObject> gameObjects = new List<GamePlayObject>();
これをInventoryという新しいリストに追加します
private List<GamePlayObject> playerInventory = new List<GamePlayObject>();
ますます多くのオブジェクトが収集されてインベントリに追加されるので、情報を抽出して、インベントリに関する情報を画面に表示したいと思います。
たとえば、画面の右側に、在庫にあるアイテムのリストと各アイテムの合計金額を表示したいのですが、このデータは在庫リストから取得する必要があります。
したがって、次のようになります。
Iron Ore x 3
Steel x 10
Gold x 18
Uranium x 12