unity项目获取和更改xml配置

最近在做一个pc项目的时候要求在运行的应用中修改相关的xml配置并且保存
如图:

在这里插入图片描述
项目根目录和xml层级图在这里插入图片描述
xml数据:在这里插入图片描述
那么如何来修改项目外部的xml文件且保存修改呢呢?闲话不多说上代码

1.先通过反序列化获取到xml的相关数据

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Serialization;


[XmlType(TypeName = "SystemSetting")]
public class SystemSetting
{
    
    [XmlElement]
    public bool IsDebug = false;
    /// <summary>
    /// 屏幕分辨率
    /// </summary>
    [XmlElement]
    public  ResolutionSetting ResolutionSetting; 
    /*todo:
     *     1.加一个页面,显示日志列表,IsDebug是true时显示。
     *     2.加一个位置显示当前是访客模式还是管理模式
     */

    /// <summary>
    /// 版本信息,就一个版本号
    /// </summary>
    [XmlElement]
    public VersionSetting VersionSetting;

    /// <summary>
    /// 是否强制全屏
    /// </summary>
    [XmlElement]
    public bool IsFullScreen ;

    /// <summary>
    /// 是否显示首页
    /// </summary>
    [XmlElement]
    public bool IsShowHomePage=true ;

    /// <summary>
    /// 是否显示左侧拓补图
    /// </summary>
    [XmlElement]
    public bool IsShowLeftTopo=true;

    /// <summary>
    /// 是否显示右下角告警推送
    /// </summary>
    [XmlElement]
    public bool IsShowRightDownAlarm=true;

    /// <summary>
    /// 是否显示右上角统计信息
    /// </summary>
    [XmlElement]
    public bool IsShowRightTopInfo=true;

    /// <summary>
    /// 摄像头跟随相关参数
    /// 【后续随着功能调整会没用】
    /// </summary>
    [XmlElement]
    public CinemachineSetting CinemachineSetting;

    /// <summary>
    /// 通信相关参数设置
    /// </summary>
    [XmlElement]
    public CommunicationSetting CommunicationSetting;

    /// <summary>
    /// 刷新间隔时间
    /// 1.实时定位信息
    /// 2.区域统计数据
    /// 3.人员树节点
    /// 4.部门树节点刷新
    /// 5.附近摄像头界面刷新
    /// 6.顶视图截图保存【没什么用,先放着,可以设置成】
    /// </summary>
    [XmlElement]
    public RefreshSetting RefreshSetting;

    /// <summary>
    /// 霍尼维尔视频设置
    /// </summary>
    [XmlElement]
    public HoneyWellSetting HoneyWellSetting;

    /// <summary>
    /// 模型动态加载相关设置
    /// </summary>
    [XmlElement]
    public AssetLoadSetting AssetLoadSetting;

    /// <summary>
    /// 历史轨迹相关设置
    /// </summary>
    [XmlElement]
    public HistoryPathSetting HistoryPathSetting; 

    /// <summary>
    /// 定位相关设置
    /// </summary>
    [XmlElement]
    public LocationSetting LocationSetting;

    /// <summary>
    /// 调试模式相关设置
    /// </summary>
    [XmlElement]
    public DebugSetting DebugSetting;

    /// <summary>
    /// 设备加载相关设置
    /// 【临时调试用,不显示】
    /// </summary>
    [XmlElement]
    public DeviceSetting DeviceSetting;
    /// <summary>
    /// 是否显示告警
    /// </summary>
    [XmlElement]
    public AlarmSetting AlarmSetting;

    public SystemSetting()
    {
        ResolutionSetting = new ResolutionSetting();
        CinemachineSetting = new CinemachineSetting();
        CommunicationSetting = new CommunicationSetting();
        VersionSetting = new VersionSetting();
        RefreshSetting = new RefreshSetting();
        AssetLoadSetting = new AssetLoadSetting();
        HoneyWellSetting = new HoneyWellSetting();
        DeviceSetting = new DeviceSetting();
        HistoryPathSetting = new HistoryPathSetting();
        LocationSetting = new LocationSetting();
        DebugSetting = new DebugSetting();
        AlarmSetting = new AlarmSetting();
    }
}
2.修改xml相关的数据

这边有了所有的相应的对象和属性之后就可以修改了,做个简单的事例。

SystemSettingHelper.systemSetting.IsShowLeftTopo = false;
IsShowLeftTopo 就是xml中的一个数据,其他数据同理修改即可
3.保存修改内容
/// <summary>
    /// 保存系统设置
    /// </summary>
    public static void SaveSystemSetting()
    {
        string path = Application.dataPath + ConfigPath;
        try
        {
            SerializeHelper.Save(systemSetting, path);
        }
        catch (Exception ex)
        {
            Debug.LogError(ex.ToString());
        }

    }
    序列化

        /// <summary>
        /// 将对象保存到文件中
        /// </summary>
        /// <param name="obj"></param>
        /// <param name="fileName"></param>
        public static void Save(object obj, string fileName)
        {
            //Serialize(obj, fileName);
            Save(obj, fileName, Encoding.UTF8);
        }

        /// <summary>
        /// 将对象保存到文件中
        /// </summary>
        /// <param name="obj"></param>
        /// <param name="fileName"></param>
        /// <param name="encoding"></param>
        public static void Save(object obj, string fileName, Encoding encoding)
        {
            CreateFileSDirectory(fileName);
            string text = GetXmlText(obj, encoding);
            File.WriteAllText(fileName, text, encoding);
        }
        前后效果如图

在这里插入图片描述
在这里插入图片描述
至此我们就已经做完了获取xml数据修改并保存的所有步骤了。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值