0

私は XNA (および一般的な C#) を学んでおり、学習目的で独自の小さなサイドスクローラーを作成しようとしているときに、次の問題に遭遇しました。

レベルはタイルから構築されます。インスタンス化のたびにタイルにテクスチャを渡したくないので ( のようにreturn new Tile(positionVector2, TEXTURE))、クラスはデフォルトでこのテクスチャを使用して構築する必要があります。

今、私はそれを機能させることができません。次のようにコンストラクターを使用しようとしました:

public Tile(Vector2 position)
{
   this.texture = Platformer03.Texture;  
}

ここPlatformer03で、 はゲーム クラス、Texture はロードされたタイル テクスチャのプロパティです。Platformer03はクラスでありインスタンスではないため(静的ではない)、これは明らかに機能しませんが、(game1と呼ばれますが、範囲外です)のインスタンスを見つけることさえできませんPlatformer03

だから私はこれをすべて間違っていると確信していますが、各インスタンス化で特定の texture2d を使用するように Tile クラスを取得するにはどうすればよいですか?

これ以上ばかげた質問はおそらく想像できないかもしれませんが、優しくしてください。

4

2 に答える 2

1

Texture変数の下Platformer03を変数にするstaticと、クラス自体のインスタンスがなくてもアクセスできるようになりますPlatformer03(プライベートまたは保護されていない場合)。

クラスが見つからPlatformer03ない場合は、正しい名前空間を探していない可能性がありますか?

于 2013-04-15T11:43:13.867 に答える
1

あなたの質問を理解しているかどうかはわかりませんが、Platformer03コンストラクターで必要なテクスチャを既にロードしている場合は、新しいインスタンスを作成しPlatformer03て取得できます。このような:

public Tile(Vector2 position)
{
    Texture = new Platformer03().Texture;
}

または、のすべての異なるオブジェクトに対して でPlataformer031 つの値のみを使用する場合は、次のように、非静的クラス内に静的メンバーを含めることができます。TexturePlatformer03

class Platformer03
{
    public static Texture2D Texture = ... ;
}
class Tile
{
    public Tile(Vector2 position)
    {
        this.texture = Platformer03.Texture;
    }
}

私の英語でごめんなさい。

于 2013-04-15T12:13:56.697 に答える