与えられた名前なしオブジェクトの照会。私はこのようなC#ラインを使用してオブジェクトのリストを作成している
for(int i = 0; i < gameObjects.Count; i++)
Console.WriteLine(gameObjects[i].GetType());
これまでのところとても良いです。しかし、私はgameObjectsに存在するはずのものよりも多くのアイテムを画面に表示していますので、私のコードで何も見つけられないので、エントリが重複しているかどうかを調べる方法を試しています。リストに余分なオブジェクトを作成している可能性があります。リスト内の各オブジェクトの名前を印刷することができれば幸いですが、名前を付けていないので、これは可能ではないと思います。リストの中の1つのオブジェクトと、他のものとを区別できるものは他にありますか?それはちょうどデバッグであるので、私は実際に入って、各オブジェクトに名前が付いていることを確認する必要はありませんでした。
ありがとうございます!
編集:
private void CreateStaticObject(Vector2 v2StaticObjectPosition)
{
Texture2D staticObjectTexture = Content.Load<Texture2D>(@"textures\StaticObject");
GameInfo.gameInfo.gameObjects.Add(new StaticObject(staticObjectTexture, v2StaticObjectPosition, sbSpriteBatch));
}
リストはGameInfoのと呼ばれるクラス内に含まれています。より多くのコードを求める人のために
、私はゲームオブジェクトのリストにタイプstaticObjectのオブジェクトを追加する機能を持っています。各StaticObjectはSpriteクラスを継承しています(重要な場合)。
私はまたStaticObjectクラスから継承するリストにPlayerオブジェクトを追加:
for(int i = 0; i < GameInfo.gameInfo.gameObjects.Count; i++)
{
string sObjectString = string.Format("Game object {0} is a {1}", i, GameInfo.gameInfo.gameObjects[i].GetType());
DrawWithShadow(sObjectString, new Vector2(10, 20 * i + 10));
}
DrawWithShadow:私は、これでリストの内容をプリントアウトしてい
private void CreatePlayer(Vector2 v2PlayerPosition)
{
Texture2D playerTexture = Content.Load<Texture2D>(@"textures\Player1");
player1 = new Player(playerTexture, v2PlayerPosition, sbSpriteBatch);
}
()は、画面上のテキストを目的の場所にうまくフォーマットする簡単な方法です。残念ながら、CreateStaticObject()メソッドを呼び出して作成したオブジェクトごとに、リストに2つのエントリがあります。
本当にあなたのコードの多くを見るのに役立ちます... – maccettura
"duplicates"を定義すると、同じインスタンスへの2つの参照を意味しますか?あなたのオブジェクトには実際に使用するデータが含まれていますか? – DrNachtschatten
問題を再現するための情報がうまくいくはずです。 – LuckyLikey