GameFramework框架——ConfigComponent

兩水先木示發表於2020-11-05

ConfigComponent是一個載入解析配置表,並儲存解析後內容的框架類

載入並解析方法:

 GameEntry.Config.ReadData("Assets/.../...", this); //第二個引數即ne.UserData, 用於識別

相關事件監聽:

  GameEntry.Event.Subscribe(LoadConfigSuccessEventArgs.EventId, OnLoadConfigSuccess);
  GameEntry.Event.Subscribe(LoadConfigFailureEventArgs.EventId, OnLoadConfigFailure);

 回撥方法:

private void OnLoadConfigSuccess(object sender, GameEventArgs e)
{
     LoadConfigSuccessEventArgs ne = (LoadConfigSuccessEventArgs)e;
     if (ne.UserData != this)
     {
        return;
     }      
     Log.Info("Load config '{0}' OK.", ne.ConfigAssetName);
}
private void OnLoadConfigFailure(object sender, GameEventArgs e)
{
    LoadConfigFailureEventArgs ne = (LoadConfigFailureEventArgs)e;
    if (ne.UserData != this)
    {
        return;
    }

    Log.Error("Can not load config '{0}' from '{1}' with error message '{2}'.", ne.ConfigAssetName, ne.ConfigAssetName, ne.ErrorMessage);
}          

使用DefaultConfigHelper類解析DefaultConfig檔案

DefaultConfig檔案內容:

#    預設配置        
#    配置項    策劃備註    配置值
    Game.Id        Star Force
    Scene.Menu        1
    Scene.Main        2    

解析後將內容以鍵值對形式儲存在ConfigManager裡的 字典: private readonly Dictionary<string, ConfigData> m_ConfigDatas

ConfigData是一個類,有int, float, bool ,string 成員, 也就是說它只支援這四種型別的數值。

Lua形式表達就是解析成下面這樣子。

{
    ["Scene.Menu"] = 1,
    ["Scene.Main"] = 2,
}

根據key獲取內容,注意一定要選對方法!

GameEntry.Config.GetInt("Scene.Menu");//可傳第二個引數預設值
//GetBool , GetFloat, GetString  

 

相關文章