C# 在Unity中如何读写xml配置文件

来源:这里教程网 时间:2026-02-21 17:29:10 作者:

在Unity中使用C#读写XML配置文件是一种常见的数据持久化方式,适合存储游戏设置、玩家偏好或关卡配置等结构化数据。Unity支持标准的.NET XML类库,可以方便地通过

System.Xml
System.Xml.Serialization
来操作XML文件。

1. 创建可读写的XML文件路径

在Unity中,不能直接写入项目Assets目录下的文件(打包后更不可行),应使用

Application.persistentDataPath
来获取一个可读写的路径。

string filePath = Path.Combine(Application.persistentDataPath, "config.xml");

这个路径在不同平台指向不同的实际目录,例如:

Windows:
C:/Users/[用户]/AppData/LocalLow/[公司名]/[项目名]
Android: 应用私有目录 iOS: 沙盒Documents目录

2. 定义用于序列化的数据类

要将对象保存为XML,需定义一个C#类,并添加适当的序列化属性。

示例:

[System.Serializable]
public class GameConfig
{
    public float musicVolume = 1.0f;
    public bool isFullscreen = true;
    public int resolutionWidth = 1920;
    public int resolutionHeight = 1080;
}

注意:

[System.Serializable]
是必须的,以便让XmlSerializer能处理该类。

3. 写入XML文件(序列化)

使用

XmlSerializer
将对象写入文件。

public void SaveConfig(GameConfig config)
{
    var serializer = new XmlSerializer(typeof(GameConfig));
    using (var stream = new FileStream(filePath, FileMode.Create))
    {
        serializer.Serialize(stream, config);
    }
}

调用示例:

GameConfig config = new GameConfig();
config.musicVolume = 0.7f;
SaveConfig(config);

4. 读取XML文件(反序列化)

从文件加载XML数据回对象。

public GameConfig LoadConfig()
{
    if (!File.Exists(filePath))
    {
        return new GameConfig(); // 返回默认值
    }

    var serializer = new XmlSerializer(typeof(GameConfig));
    using (var stream = new FileStream(filePath, FileMode.Open))
    {
        return (GameConfig)serializer.Deserialize(stream);
    }
}

调用示例:

GameConfig config = LoadConfig();
Debug.Log("音乐音量:" + config.musicVolume);

5. 注意事项与建议

确保在使用File相关操作时引入
using System.IO;
多线程环境下读写XML需加锁,避免冲突 可在编辑器中测试时使用
Application.dataPath
,但发布后请务必切换到
persistentDataPath
XML文件可被人轻易查看和修改,敏感数据建议加密或改用二进制序列化 异常处理:建议在读写时包裹
try-catch
,防止因文件损坏导致崩溃

基本上就这些。Unity中读写XML并不复杂,关键是选对路径并正确使用序列化机制。只要类结构清晰,XML就能自动映射字段,非常适合作为轻量级配置方案。

相关推荐