簡體   English   中英

在靜態類中引用ContentManager? (C#,XNA)

[英]Referencing the ContentManager in a static class? (C#, XNA)

我創建了一個靜態類,該類需要能夠更改對象中使用的精靈。 但是,在非靜態類中,我能夠將對象中的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);
    }

可能有更好的方法來執行此操作,但我在搜索中未找到任何內容。

如果ContentManager是靜態的,則可能這樣聲明:

class YourObject
{
    static public ContentManager Content;

您已經在此對象的靜態函數中,因此您可以像這樣簡單地訪問它:

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

要么:

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

如果您的Content對象不是靜態聲明的,則不能在靜態調用中訪問它,除非您在YourObject上有引用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM