16.Configuration-Setting

Gameframework user configuration

introduce

Mainly used to save runtime application data, user data, etc.
Can be obtained and set, and will be persisted to files

Class introduction

SettingComponent
入口类
SettingManager
配置管理模块,功能委托给 ISettingHelper
ISettingHelper
配置加载解析和管理的实现接口
SettingHelperBase
DefaultSettingHelper
默认的配置管理
PlayerPrefsSettingHelper
玩家配置管理
使用 PlayerPrefs 保存
DefaultSetting
实际二进制序列化和管理默认配置
配置存放在 GameFrameworkSetting.dat
DefaultSettingSerializer
默认配置序列化

use

    //  首先在 SettingComponent 选择使用 DefaultSettingHelper 还是 PlayerPrefsSettingHelper
    SettingComponent settingComponent = Entry.GetComponent<SettingComponent>();
    bool enableLog = settingComponent.GetBool("EnableLog", false);
    settingComponent.SetBool("EnableLog", true);
    settingComponent.Save();

Configuration loading process

    SettingComponent.Start()
    {
    
    
        m_SettingManager.Load() // SettingManager.Load()
        {
    
    
            return m_SettingHelper.Load()   //  DefaultSettingHelper.Load()
            {
    
    
                m_FilePath = Path.Combine(Application.persistentDataPath, "GameFrameworkSetting.dat");
                using (FileStream fileStream = new FileStream(m_FilePath, FileMode.Open, FileAccess.Read))
                {
    
    
                    m_Serializer.Deserialize(fileStream)    //  DefaultSettingSerializer.Deserialize
                    {
    
    
                        //  读文件头标志和版本号
                        //  用版本号查找解析器 
                        m_DeserializeCallbacks.TryGetValue(version, out DeserializeCallback callback);

                        return callback(stream)     //  DefaultSettingHelper.DeserializeDefaultSettingCallback
                        {
    
    
                            m_Settings.Deserialize(stream)  //  DefaultSetting.Deserialize
                            {
    
    
                                //  !!!!!!!!! 解析二进制配置

                            }
                        }
                    }
                }
            }
        }
    }

Guess you like

Origin blog.csdn.net/qmladm/article/details/130040816