0

XNA プロジェクトでデータをシリアル化しようとしています。実行時に使用する Texture2D 背景プロパティがありますが、背景名を保持するための「文字列プロパティ」もあります。これにより、アセット名をシリアル化できるため、後でその情報を使用してシリアル化を解除し、ゲームにロードできます。

問題は、myTexture.Name プロパティがアセット名を保持すると想定されていることですが、XML ファイルにシリアル化しようとすると、BackgroundName 要素が空になります。

プロパティ コードは次のようになります。

//This property is Only used for serialization, myTexture is Texture2D and is assigned in the ctor of the class
public string BGName { get { return this.myTexture.Name;} set{/*Empty on purpose*/} }

MSDN によると、Texture2D からアセット名を取得する方法を教えてください。このフィールドにはテクスチャの名前が保持されます。

4

1 に答える 1

7

NameプロパティGraphicsResourceは、XNAフレームワークでは実際には使用されません。適切だと思うものを何でも入力するのはあなた次第です。これを簡単に行うためのヘルパーメソッドを作成できます。

public static Texture2D LoadTexture2D(this ContentManager content, String asset)
{
    var texture = content.Load<Texture2D>(asset);
    texture.Name = asset;
    return texture;
}

var texture = contentManager.LoadTexture2D("textures\\whatever");
Console.WriteLine(texture.Name); // should be "textures\\whatever"
于 2012-09-10T17:42:17.703 に答える