您的位置:首页 > 其它

自定义配置文件的使用及加载-txt

2017-01-16 13:08 525 查看
[Game]
Version=1

[Login]
Account = 阿斗阿斯顿撒
Password =我去饿我去恶趣味
Success = 成哥
Faild = 失败

[Job]
Job1 = 战士
Job2 = 法师
Description1="  打算大苏打实打实的武器恶趣味请问
Description2="  相册任务认为仍然显得十分的是
weapon1= 砍刀
weapon2= 发张

[Money]
Gold = 1234
Diamond = 11.2

[Scene]
LoadFaild = 加载失败


  txt信息

工具类

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System;

public static class Configuration {

//配置信息得数据结构--字典
private static Dictionary<string,Dictionary<string,string>> dicConfig = new Dictionary<string, Dictionary<string, string>>();
private static WWW www;
//是否加载结束
public static bool IsDone
{
//检测是否加载结束
get
{
if (www != null && www.isDone && string.IsNullOrEmpty(www.error))
{
BuildDictionary(www.text);
return true;
}
return false;
}
}
/// <summary>
/// 加载配置信息
/// </summary>
public static void LoadConfig()
{
string config = "file://" + Application.streamingAssetsPath + "/config.txt";
if (www == null) {
#if UNITY_ANDROID
config="jar:"+config;
#endif
www = new WWW(config);
}
}
//对外提供提取配置项得接口
public static string GetString(string mainKey, string subKey)
{
return Get(mainKey, subKey);
}
public static int GetInt(string mainKey, string subKey)
{
string value= Get(mainKey, subKey);
return value!= null ? int.Parse(value) : 0;
}
public static float GetFloat(string mainKey, string subKey)
{
string value = Get(mainKey, subKey);
return value != null ? float.Parse(value) : 0;
}
private static string Get(string mainKey, string subKey)
{
if(dicConfig.ContainsKey(mainKey) && dicConfig[mainKey].ContainsKey(subKey))
{
return dicConfig[mainKey][subKey];
}
return null;
}

//将配置信息在内存中形成数据结构
private static void BuildDictionary(string configText)
{
//逐行读取配置信息
StringReader reader = new StringReader(configText);
string line = null;
string mainKey = null;
string subKey = null;
string subValue = null;

while((line=reader.ReadLine())!=null)
{
line=  line.Trim();
if (!string.IsNullOrEmpty(line))
{
//检测是否是主键
if(line.StartsWith("[")) //如果是主键
{
//取得[]中的文本内容
mainKey=line.Substring(1, line.IndexOf("]") - 1);
dicConfig.Add(mainKey,new Dictionary<string, string>());
}
else //子键
{
var configKeyValue=    line.Split(new char[] {'='},StringSplitOptions.RemoveEmptyEntries);
subKey= configKeyValue[0].Trim();
subValue = configKeyValue[1].Trim();
subValue=   subValue.StartsWith("\"")? subValue.Substring(1):subValue;
dicConfig[mainKey].Add(subKey, subValue);
}
}
}
}
}


测试类

using UnityEngine;
using System.Collections;

public class LoadConfigTest : MonoBehaviour {

// Use this for initialization
IEnumerator Start () {

Configuration.LoadConfig();
while (!Configuration.IsDone)
yield return null;

print(Configuration.GetString("Job", "Job1"));
print(Configuration.GetString("Job","Job2"));

print(Configuration.GetInt("Money", "Gold"));
print(Configuration.GetFloat("Money", "Diamond"));
}

}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐