是否所有初始化代码都限于Initialize方法?

时间:2011-08-15 16:31:39

标签: c# xna

好吧,所以我想知道如果我正在加载内容方法中的对象而不是初始化方法是否正常?这真的很重要吗? 感谢。

BTW之所以我问这个问题是因为我必须在我初始化我的播放器对象之前加载纹理,除了这种方式我想不出可行的方法。

如果有人知道我该怎么做,那就太好了,非常感谢。

2 个答案:

答案 0 :(得分:1)

可以在LoadContent方法中使用new创建对象。您可以在 [Game.LoadContent被称为-AR] 之后的其他地方加载内容。

Xna仅提供具有InitializeLoadContent方法的模式。如果你想保留它,可以将LoadContent方法添加到你的玩家对象中,然后通过游戏LoadContent方法调用它(或者为你的玩家使用一个可绘制的游戏组件)。

修改

以下是使用DrawableGameComponent的示例:

Player.cs

class Player : DrawableGameComponent
{
    public Player(Game game) : base(game)
    {
    }

    protected override void LoadContent()
    {
       // ... load your content via Game.Content.Load<...>(...);
    }
}

Game.cs

protected override void Initialize()
{
    Components.Add(new Player(this));
}

答案 1 :(得分:0)

在我的游戏中,我从不使用初始化方法。原因是我实际上发现调用什么方法和何时调用不一致。所以在我的LoadContent()方法中,我构造了对象,构造函数在我自己的方法中加载了它需要的纹理。因此,当玩家完成构建时,您将获得纹理。

老实说,无论你初始化或加载内容的顺序是什么,你应该保持一致,因为那是好的代码。 (或更容易阅读)`