由于公司变动,以前都是有ini作为配置文件的,这次要改为web的config格式作为配置文件-->xxx.config格式
unity 版本位5.6f,
查询了很多的资料,大部分都要用Unity.Configuration,但是不知为啥我的unity无法支持其dll文件,因为.net格式太低,后来我更改了版本,换成了2018.3.5,他可以支持.net4x
后来才发现并没有啥用,而且由于配置只需要读取最为简单的 <add key="MySql" value=“ ”/>这其中一个值即可。
因此改为了寻常读取xml的方法。
web.config如下
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="MySql" value="……"/>
<add key="OfflineMySql" value="……"/>
</appSettings>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
</configuration>
unity使用其自带的System.Xml.Linq的dll方法,代码如下
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Xml.Linq;
using System.Xml;
using System.IO;
public class LoadConfig : MonoBehaviour
{
public static string serverSql = null;
public static string offlineSql = null;
//在所有代码执行前执行
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]
static void OnConfigLoaded()
{
//config存放路径
string configPath = "F:/work/web.config";
XmlDocument configInfo = new XmlDocument();
if (configPath != null)
{
//一层层的拨开xml
configInfo.Load(configPath);
XmlNode configuration = configInfo.SelectSingleNode("configuration");
XmlNode appSettings = configuration.SelectSingleNode("appSettings");
XmlNodeList infoNodeList = appSettings.ChildNodes;
//用foreach查找add key的值
foreach (XmlElement xe in infoNodeList)
{
if (xe.Attributes["key"].Value == "MySql")
{
// 获取其相应的value值
serverSql = xe.Attributes["value"].Value;
}
if (xe.Attributes["key"].Value == "OfflineMySql")
{
// 获取其相应的value值
offlineSql = xe.Attributes["value"].Value;
}
}
if (serverSql == null || offlineSql == null)
{
if (serverSql == null)
{
Debug.Log("缺少服务器数据库配置信息,请查看配置文件");
}
if (offlineSql == null)
{
Debug.Log("缺少本地数据库配置信息,请查看配置文件");
}
}
}
else Debug.Log("未找到配置文件");
}
}
获取出来之后,由于是sql配置信息,所以需要解析字符串,sql配置信息示例:
"OfflineMySql" value="Server=127.0.0.1;Port=3306;Database=sqlcs;Uid=root;Pwd=111111;"/>
void Awake()
{
//调用解析
ConfigPars(LoadConfig.serverSql, serverSqlConnetList);
ConfigPars(LoadConfig.offlineSql, offlinSqlConnetList);
}
/// <summary>
/// 解析config的数据库信息字符串
/// </summary>
/// <param name="sql"></param>
/// <param name="list"></param>
public void ConfigPars(string sql, List<string> list)
{
if (list != null)
{
list.Clear();
}
var result = sql.Split(';').Select(s => s.Split('=').LastOrDefault());
result.ToList().ForEach(s => list.Add(s));
}
来源:https://www.cnblogs.com/Small-Transparent/p/11022765.html