XNA项目 - 谁负责绘图?

Noa*_*Gal 3 xna

我正在玩XNA,我需要在每个帧中绘制几个不同的模型.此时,Game对象保存对我所有模型的引用,并依次绘制它们.每个都有自己不同的绘图方式 - 一个有两个单独的纹理,另一个可能镜像到另一边,等等.

我想知道是否可以添加一个

public void Draw(SpriteBatch spriteBatch)

我的所有模型的方法(当然是来自BaseModel),并让每个类负责绘制自己,或者我应该坚持让类根据Update方法上的事件(KeyboardState)设置数据,并保持Game类中的所有图形逻辑.

有没有一种首选的方法呢?

Dav*_*own 5

通常,我有一个包含BaseModel,纹理数据,旋转和缩放数据等的基类.对于游戏中每种类型的actor,我创建了一个派生类.基类提供了一个Draw方法,默认情况下,该方法使用类中给出的纹理,旋转和缩放数据绘制模型.派生类可以覆盖它来绘制演员,但是他们喜欢.

然后,我有一个DrawableGameComponent充当我的场景图.它包含所有活动actor对象的列表.在组件的Draw和Update方法中,我遍历actor的列表并调用它们的Draw和Update方法.