从XNA中的Texture2D获取资产名称

时间:2012-09-10 16:00:47

标签: c# xna

我正在尝试在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,这个字段包含纹理的名称。

1 个答案:

答案 0 :(得分:6)

XNA Framework实际上并未使用Name上的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"