4

さて、私はこのゲームに取り組んでいます。私は XNA を初めて使用し (4.0 を使用しています)、敵がスポーンされるたびに異なるテクスチャを使用したいと考えています。

したがって、これらの画像「image1.png」、「image2.png」などがあります。新しい敵がスポーンするたびに異なるテクスチャを使用したいのですが、これまでのところ、ゲームの実行時にランダムな画像しかロードされないため、問題は、スポーンごとにランダム メソッドが更新されず、最初に設定されていることです。ゲームの。私はウェブ上で多くのことを検索し、解決策を試してみましたが、うまくいきますが、希望はありません...だから私のコードはここにあります

LoadContent()私はこのコードを持っています:

Random textureRandom = new Random();
            int skinRandom = textureRandom.Next(1, 4);
            string lamp = string.Concat("image", skinRandom.ToString());
            enemyTex = Content.Load<Texture2D>(lamp) as Texture2D; 
4

1 に答える 1

3

私の記憶が正しければ、Game.LoadContent() メソッドは、ゲームのリソースをロードするために初期化 (Game.Initialize()) するときに 1 回だけ呼び出されます。ゲームにこれらのリソースを強制的にリロードさせることもできますが、すべてのリソースをリロードする必要はないため、次のように LoadContent() メソッドで必要なすべての画像をロードすることをお勧めします。

List<Texture2D> texturePool = new List<Texture2D>();
Random rng = new Random();

protected override void LoadContent()
{
    for(int i = 0; i < 4; i++)
        texturePool.Add(Content.Load<Texture2D>("image" + i.ToString()));
}

そして、敵がスポーンする前に、ロードされたプールから 1 つを選択して、使用するテクスチャを変更します。

enemyTex = texturePool[rng.NextInt(texturePool.Count)];

また、タイトルを「XNA のランダム テクスチャ」などに変更することもできます。これは、ドローごとではなく、スポーンごとにテクスチャを変更する必要があり、この手法はより多くの状況で適用できるためです。

于 2012-11-15T09:35:05.537 に答える