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