0

しばらく前に、すべての drawablegameobject を描画して更新する方法を見たのを覚えています。のようなforeachループだったと思います

      foreach(DrawableGameComponent dgc in Game.Components)

誰かがこれを行う正しい方法を教えてもらえますか、またはそのチュートリアルを知っているかどうか教えてください。

ありがとう!

4

3 に答える 3

1

次の方法で実行できます。

foreach(var dgc in Game.Components.OfType<DrawableGameComponent>()
                                  .OrderBy(x => x.DrawOrder))
{

}
于 2012-05-31T18:03:00.447 に答える
0

オブジェクトはDrawableGameObjectを拡張する可能性があるため、いつでもゲームコンポーネントに追加できます。

class MyGame: Game
{
     //...Your code
     override public Load()
     {
           //... YOURCODE  
           Components.Add(myDrawableObj);
     }
 }

あなたは彼らが彼ら自身を描き始めることに気付くでしょう:)

于 2013-03-20T15:09:35.057 に答える
0

その通りです。Components 配列の各項目を単純にループして draw メソッドを呼び出すことができます。考慮すべき点がいくつかありますが、次のコードでうまくいくはずです。

それがあなたにとって重要でない場合は、DrawOrder で注文する必要はないかもしれませんし、かなり遅いのでとにかく linq でそれを行うべきではないかもしれませんが、ここに行きます。

foreach (var component in Components.OrderBy(x => ((IDrawable)x).DrawOrder))
  if (component is IDrawable)
  {
     IDrawable drawableComponent = (IDrawable)component;
     if (drawableComponent.Visible)
        drawableComponent.Draw(gameTime);
  }
于 2012-05-31T17:39:17.020 に答える