自定义配置文件的使用及加载-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")); } }
相关文章推荐
- 谷歌验证码非web.xml非servlet拦截 使用配置文件自定义加载,防止多次点击(防js攻击)
- 如何加载和使用配置文件中的自定义实体属性
- Commons-Configuration2简介、使用方式、代码范例 -- 自动重新加载配置文件、监听器、处理器、自定义检测器
- [dotnetCore2.0]学习笔记之二: ASP.NET Core中,如何灵活使用静态文件和加载自定义配置
- 自定义配置Outlook使用现有数据文件
- Control Study->AdRotator广告控件显示自定义配置文件中广告以及与DataGrid控件结合使用显示图片(示例代码下载)
- Emacs自定义配置文件 - google-c-style.el等编程插件使用方法
- Spring中使用classpath加载配置文件浅析
- 在C#类库中使用App.config文件自定义配置
- 转--只有在配置文件或 Page 指令中将 enableSessionState 设置为 true 时,才能使用会话状态。还请确保在应用程序配置的 // 节中包括 System.Web.SessionStateMod 或自定义会话状态模块
- 使用反射机制动态加载配置文件
- Control Study->AdRotator广告控件显示自定义配置文件中广告以及与DataGrid控件结合使用显示图片(示例代码下载)
- 页面加入_JS,CSS使用,#include添加文件,缓存页面,页面间传递汉字,IsPostBack控制页面的加载,自定义错语页面
- 加载XML配置文件的BeanFactory的使用演示
- Struts2使用通配符加载配置文件和通配符方法的底层实现学习
- Spring中使用classpath加载配置文件浅析
- Spring中使用classpath加载配置文件浅析
- Spring中使用classpath加载配置文件浅析
- 使用类加载器加载配置文件
- Spring中使用classpath加载配置文件浅析