我记得有一段时间看到一些绘制和更新所有drawablegameobjects的方法。我认为这是一个foreach循环,如
foreach(DrawableGameComponent dgc in Game.Components)
有人可以告诉我这样做的正确方法,或者他们是否知道教程?
谢谢!
答案 0 :(得分:1)
你可以这样做:
foreach(var dgc in Game.Components.OfType<DrawableGameComponent>()
.OrderBy(x => x.DrawOrder))
{
}
答案 1 :(得分: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);
}
答案 2 :(得分:0)
由于对象可能会扩展DrawableGameObject,因此您可以随时将其添加到游戏组件中:
class MyGame: Game
{
//...Your code
override public Load()
{
//... YOURCODE
Components.Add(myDrawableObj);
}
}
你会注意到他们将开始画画:)