我正在使用XNA中的游戏,我不想在Draw和Update方法中的主文件中放置一堆代码。有没有办法可以运行一个" master"一个方法,例如:
protected override void Draw(GameTime gameTime)
{
// Instead of having to do Tools.DrawModel() for every model
// I have to draw, can I do this?
Tools.MasterDraw();
}
// Inside MasterDraw:
public static void MasterDraw()
{
// A bunch of Tools.DrawModel() goes here, but instead of repeating
// it every time for every model, how would I make a function
// to auto-add a line to draw itself inside this function????
}
答案 0 :(得分:0)
使用XNA,您可以为每个对象定义一个Draw
方法,如果它们派生自DrawableGameComponent
,将自动调用。
所以基本上你的Tool类看起来应该是这样的:
public class Tool : DrawableGameComponent
{
public Tool(Game game) : base(game)
{
game.Components.Add(this);
}
public override void Draw(GameTime gameTime)
{
base.Draw(gameTime);
// Put draw logic for your tool here
}
}
您需要实现构造函数(接收Game
)并将您的内容添加到Game.Components
列表中。将对象添加到组件会触发对Draw
的自动调用。
您还可以覆盖Update
以避免将所有内容放入Game1
循环。
你也应该好好看看MSDN's Starter Kit: Platformer,因为你似乎并不熟悉XNA。该模式在基础教程中实现。