Unity怎么读取XML配置文件 C#解析XML数据
#技术教程 发布时间: 2025-12-25
推荐使用System.Xml.Linq(LINQ to XML)读取XML配置文件,将config.xml放入Assets/Resources/Configs/并用Resources.Load("Configs/config")获取TextAsset,再通过XDocument.Parse(textAsset.text)解析;也可用XmlSerializer反序列化为强类型对象,需注意UTF-8无BOM编码、平台兼容性及缓存优化。
Unity中读取XML配置文件,推荐用C#原生的System.Xml或更现代的System.Xml.Linq(即LINQ to XML)。前者兼容性好,后者语法简洁、易读易写,适合大多数项目。
把XML文件放进Resources文件夹(最简单方式)
Unity不支持直接用File.ReadAllText读取任意路径的XML(尤其在WebGL或移动端),所以建议把配置文件放在Assets/Resources/下,用Resources.Load加载:
- 将
config.xml放入Assets/Resources/Configs/(路径可自定义) - 确保文件扩展名是
.xml,且Unity未将其识别为文本资源以外的类型(可在Inspector里确认Text Asset类型) - 代码中用
Resources.Load获取——注意不用写("Configs/config") .xml后缀
用XDocument解析XML(推荐LINQ to XML)
XDocument比XmlDocument更轻量、API更直观。加载完TextAsset后,用其text属性创建XDocument:
XDocument doc = XDocument.Parse(textAsset.text); var root = doc.Root; // 例如读取double volume = (double)root.Attribute("volume"); bool fullscreen = (bool)root.Attribute("fullscreen"); // 读取子节点: var level = root.Element("Level"); string levelName = level?.Attribute("name")?.Value; strin g difficulty = level?.Attribute("difficulty")?.Value;
用XmlSerializer反序列化成对象(适合结构固定场景)
如果XML格式规范、和C#类一一对应,可用XmlSerializer自动映射。先定义带[XmlRoot]、[XmlElement]等特性的类:
[XmlRoot("GameSettings")]
public class GameConfig
{
[XmlAttribute] public float volume;
[XmlAttribute] public bool fullscreen;
[XmlElement("Level")] public List levels;
}
public class LevelData
{
[XmlAttribute] public string name;
[XmlAttribute] public string difficulty;
}
// 使用:
var serializer = new XmlSerializer(typeof(GameConfig));
using var reader = new StringReader(textAsset.text);
GameConfig config = (GameConfig)serializer.Deserialize(reader);
注意:XmlSerializer要求类为public,字段/属性有public get/set,且不能有无参构造函数缺失等问题。
注意事项和常见坑
Unity Editor里测试正常,但打包后可能出错,主要因路径或编码问题:
- XML文件保存时用UTF-8无BOM格式(VS Code或Notepad++可设置),避免中文乱码
- WebGL平台不支持
Resources.Load异步加载XML?实际支持,但必须确保构建时勾选了Include Text Assets(默认已包含) - Android/iOS上
Application.streamingAssetsPath也可放XML,但需用WWW或UnityWebRequest异步读取,不能直接File.Read - 频繁读取?缓存解析结果,不要每帧都Parse
上一篇 : 《试客联盟》提现方法介绍
下一篇 : 得物怎么改地址 得物修改收货地址教程
-
SEO外包最佳选择国内专业的白帽SEO机构,熟知搜索算法,各行业企业站优化策略!
SEO公司
-
可定制SEO优化套餐基于整站优化与品牌搜索展现,定制个性化营销推广方案!
SEO套餐
-
SEO入门教程多年积累SEO实战案例,从新手到专家,从入门到精通,海量的SEO学习资料!
SEO教程
-
SEO项目资源高质量SEO项目资源,稀缺性外链,优质文案代写,老域名提权,云主机相关配置折扣!
SEO资源
-
SEO快速建站快速搭建符合搜索引擎友好的企业网站,协助备案,域名选择,服务器配置等相关服务!
SEO建站
-
快速搜索引擎优化建议没有任何SEO机构,可以承诺搜索引擎排名的具体位置,如果有,那么请您多注意!专业的SEO机构,一般情况下只能确保目标关键词进入到首页或者前几页,如果您有相关问题,欢迎咨询!
g difficulty = level?.Attribute("difficulty")?.Value;