我创建了一个静态类,它需要能够更改对象中使用的sprite。但是,在非静态类中,我能够将对象中的ContentManager称为this.Content
,但在静态类中,它表示“this”不能使用。
我对如何从静态类引用此对象中的内容管理器感到有些迷茫。我尝试使用该对象而不是this
(enemies[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);
}
可能有更好的方法可以做到这一点,但我在搜索中找不到任何东西。
答案 0 :(得分:1)
如果ContentManager是静态的,可能会声明如下:
class YourObject
{
static public ContentManager Content;
您已经在此对象的静态函数中,因此您可以像这样访问它:
enemies[i].LoadContent(Content, ...
或:
enemies[i].LoadContent(YourObject.Content, ...
如果您的Content对象没有静态声明,除非您对YourObject有引用,否则无法在静态调用中访问它...