0

我创建了一个静态类,它需要能够更改对象中使用的精灵。但是,在非静态类中,我可以将对象中的 ContentManager 称为this.Content,但在静态类中,它说“this”不能使用。

对于如何从静态类引用此对象中的内容管理器,我有点迷茫。我尝试使用对象而不是this( enemies[i].),但这不起作用。我也尝试使用 just ContentManager.,但它告诉我也不存在。

我仍然不完全理解 ContentManager 以及为什么它需要在每个对象中,但我很难找到关于它是什么以及它做什么的真正详细信息(大多数教程似乎掩盖了它,只是说它必要的)

这是我到目前为止的代码片段。它简化了一点(还有很多),但只有this.Content一部分给我带来了麻烦:

public static void fight(List<enemy> enemies)
    {
        for (int i = 0; i < enemies.Count; i++)
            {
                if (enemies[i].hp <= 0)
                                {
                                    enemies[i].LoadContent(this.Content, "spr_enemy_dead");
                                }

enemy这是在对象内包含内容管理器的方法:

public void LoadContent(ContentManager theContentManager, string AssetName)
    {
        spr_enemy = theContentManager.Load<Texture2D>(AssetName);
    }

可能有更好的方法来做到这一点,但我在搜索中没有找到任何东西。

4

1 回答 1

1

如果 ContentManager 是静态的,可能声明如下:

class YourObject
{
    static public ContentManager Content;

您已经在此对象的静态函数中,因此您可以像这样简单地访问它:

enemies[i].LoadContent(Content, ...

或者:

enemies[i].LoadContent(YourObject.Content, ...

如果您的 Content 对象未静态声明,则无法在静态调用中访问它,除非您对 YourObject 有引用...

于 2013-01-03T20:01:57.290 回答