2013-01-03 31 views
0

我已經創建了一個靜態類,它需要能夠更改對象中使用的精靈。但是,在非靜態類中,我能夠將對象中的ContentManager引用爲this.Content,但是在靜態類中,它表示「this」不能使用。在靜態類中引用ContentManager? (C#,XNA)

對於如何從靜態類引用此對象中的內容管理器,我有點遺憾。我嘗試使用該對象而不是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); 
    } 

可能有更好的方法來做到這一點,但我沒有找到任何東西在我的搜索。

+0

你一直在談論「對象」 - *哪個*對象?靜態方法沒有上下文...你瞭解靜態和實例方法之間的區別嗎? (如果你是C#的新手,我會強烈建議你在開始使用XNA之前通過簡單的控制檯應用程序學習語言。) –

+0

好吧,這有點苛刻,但是確實如此。您可以嘗試將ContentManager作爲參數傳遞給fight方法,但是您確實不應該那樣做。 :) – Davio

+0

對不起,列表(列表敵人)是我傳入此方法的對象的列表。我的意思是包括但忘記。 –

回答

1

如果ContentManager是靜態的,大概聲明如下:

class YourObject 
{ 
    static public ContentManager Content; 

您已經是這個對象的靜態函數內,所以你可以簡單地訪問它像這樣:

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

或:

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

如果您的內容對象沒有靜態聲明,您無法訪問它wi除非你在YourObject上有一個參考,否則你可以調用一個靜態調用...