在Unity中使用C#进行Xml序列化时保留特定小数位的方法参考
序列化方法代码参考:
using System.IO;
using System.Xml.Serialization;
public class XmlTool
{
public static string ToXml<T>(T obj)
{
XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
using var stringWriter = new StringWriter();
//让xml文档的命名空间为空,文档显得简洁那么一点点。
XmlSerializerNamespaces xmlns = new XmlSerializerNamespaces();
xmlns.Add("","");
//
xmlSerializer.Serialize(stringWriter, obj, xmlns);
return stringWriter.ToString();
}
public static T FromXml<T>(string xml)
{
XmlSerializer xmlSerializer = new(typeof(T));
return (T)xmlSerializer.Deserialize(new StringReader(xml));
}
}
小数位数控制参考:
public struct SceneAreaInfo
{
[XmlAttribute("X")]
public string strX
{
get { return x.ToString("0.##"); }
set { x = float.Parse(value); }
}
[XmlIgnore]
public float x;//场景区域最左侧坐标
[XmlAttribute("Y")]
public string strY
{
get { return y.ToString("0.##"); }
set { y = float.Parse(value); }
}
[XmlIgnore]
public float y;//场景区域最下面坐标
[XmlAttribute("Width")]
public string strWidth
{
get { return width.ToString("0.##"); }
set { width = float.Parse(value); }
}
[XmlIgnore]
public float width;//场景区域宽度
[XmlAttribute("Height")]
public string strHeight
{
get { return height.ToString("0.##"); }
set { height = float.Parse(value); }
}
[XmlIgnore]
public float height;//场景区域高度
[XmlIgnore]
public Vector2 size => new Vector2(width, height);
public SceneAreaInfo(float x, float y, float width, float height)
{
this.x = x;
this.y = y;
this.width = width;
this.height = height;
}
public SceneAreaInfo(Rect rect)
{
x = rect.x;
y = rect.y;
width = rect.width;
height = rect.height;
}
}