0

オブジェクトで使用されるスプライトを変更できる必要がある静的クラスを作成しました。ただし、非静的クラスでは、オブジェクト内の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);
    }

これを行うにはおそらくもっと良い方法がありますが、検索で何も見つかりませんでした。

4

1 に答える 1

1

ContentManagerが静的である場合、おそらく次のように宣言されます。

class YourObject
{
    static public ContentManager Content;

あなたはすでにこのオブジェクトの静的関数内にいるので、次のように簡単にアクセスできます。

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

また:

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

Contentオブジェクトが静的に宣言されていない場合、YourObjectに参照がない限り、静的呼び出し内でContentオブジェクトにアクセスすることはできません...

于 2013-01-03T20:01:57.290 に答える