在静态类中引用ContentManager? (C#,XNA)

时间:2013-01-03 17:27:56

标签: c# xna sprite

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

我对如何从静态类引用此对象中的内容管理器感到有些迷茫。我尝试使用该对象而不是thisenemies[i].),但这不起作用。我也尝试使用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);
    }

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

1 个答案:

答案 0 :(得分:1)

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

class YourObject
{
    static public ContentManager Content;

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

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

或:

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

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