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*/} }

有人可以建议,如何从 Texture2D 中检索资产名称,根据 MSDN,此字段包含纹理的名称。

4

1 回答 1

7

XNA 框架实际上并未使用onName属性;GraphicsResource由您决定用您认为合适的任何内容填充它。您可以编写一个辅助方法来很容易地做到这一点:

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 回答