しばらく前に、すべての drawablegameobject を描画して更新する方法を見たのを覚えています。のようなforeachループだったと思います
foreach(DrawableGameComponent dgc in Game.Components)
誰かがこれを行う正しい方法を教えてもらえますか、またはそのチュートリアルを知っているかどうか教えてください。
ありがとう!
次の方法で実行できます。
foreach(var dgc in Game.Components.OfType<DrawableGameComponent>()
.OrderBy(x => x.DrawOrder))
{
}
オブジェクトはDrawableGameObjectを拡張する可能性があるため、いつでもゲームコンポーネントに追加できます。
class MyGame: Game
{
//...Your code
override public Load()
{
//... YOURCODE
Components.Add(myDrawableObj);
}
}
あなたは彼らが彼ら自身を描き始めることに気付くでしょう:)
その通りです。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);
}