private void DebugAllConfigBtn_onClick() { TestLogData data = TestLogXmlConfig.GetData(0); Debug.LogFormat( "{0} -> Data: {1}", typeof(TestLogXmlConfig).Name, data.ToString() ); data = TestLogXmlDocConfig.GetData(1); Debug.LogFormat( "{0} -> Data: {1}", typeof(TestLogXmlDocConfig).Name, data.ToString() ); Debug.LogFormat( "{0} -> Data: {1}", typeof(TestLogJsonConfig).Name, TestLogJsonConfig.Get <TestLogJsonConfig>().data ); Debug.LogFormat( "{0} -> Data: {1}", typeof(TestLogTxtConfig).Name, TestLogTxtConfig.Get <TestLogTxtConfig>().ToString() ); }
/// <summary> /// 初始化Config文件 /// </summary> private void InitConfig() { // 设置Config根目录 ConfigLoader.rootDirectory = Application.streamingAssetsPath + "/" + TestGameMain.instance.m_ConfigPath; // 自动读取Config,获取config中的测试数据 TestLogData logData0 = TestLogXmlConfig.GetData(0); TestLogData logData1 = TestLogXmlConfig.GetData(1); // 打印Config中的测试数据 Debug.Log(logData0); Debug.Log(logData1); // 这里可以自定义预读取的Config。 ConfigLoader.LoadConfig( typeof(TestLogTxtConfig), typeof(TestLogXmlDocConfig), typeof(TestLogJsonConfig) ); }
/// <summary> /// 获取数据 /// </summary> /// <param name="id"></param> /// <returns></returns> public static TestLogData GetData(int id) { TestLogXmlConfig config = Get <TestLogXmlConfig>(); if (config == null || config.m_DataDict == null) { throw new FormatException("Config is not formated. Check the console panel."); } TestLogData data; if (!config.m_DataDict.TryGetValue(id, out data)) { Debug.LogErrorFormat( "Data in config '{0}' is not found. ID: {1}.", typeof(TestLogXmlConfig).Name, id.ToString() ); return(null); } return(data); }
/// <summary> /// 反序列化完成时执行。 /// </summary> /// <param name="buffer"></param> protected override XmlConfigFile FormatBuffer(XmlConfigFile buffer) { //// 如果你要直接使用m_Datas。请直接返回Buffer //return buffer; // 将反序列化数据从buffer填充到本config的Dict TestLogXmlConfig logBuffer = buffer as TestLogXmlConfig; m_DataDict = new Dictionary <int, TestLogData>(); for (int i = 0; i < logBuffer.m_Datas.Length; i++) { TestLogData data = logBuffer.m_Datas[i]; if (!m_DataDict.ContainsKey(data.id)) { m_DataDict.Add(data.id, data); } } // 这里将buffer的数据填充到dict,buffer将丢弃。 // 需要注意,buffer的m_Datas属性有数据,而Dict没有数据。 // 本config,m_Datas没有数据,而Dict有数据。 // 你也可以把buffer填充,然后直接返回buffer,将本config丢弃。 return(this); }