Files
aibis-dream/Assets/Scripts/Game Loop/SettingLoader.cs
T
dingyuntian 9f20ef52d8 UI工具翻新
1. 增加UI工具
2. 增加设置页面
3. GameLoop更新
4. 导入ActionKit工具
2025-04-21 18:53:30 +08:00

83 lines
2.2 KiB
C#

using System.Collections.Generic;
using AibisDream.Kit;
using UnityEngine;
namespace AibisDream
{
/// <summary>
/// 用于规定配置如何影响游戏内容
/// </summary>
public class SettingLoader
{
private static readonly string SettingPath = Application.streamingAssetsPath + "/Config/sprite_group.json";
private readonly ConfigContainer _container;
private SettingLoader()
{
// 读取数据
_container = new ConfigContainer(SettingPath);
LoadAllSetting();
// 注册回调函数
_container.OnWrite += OnSettingChanged;
}
private void LoadAllSetting()
{
var settingConfig = _container.ReadAll();
foreach (var pair in settingConfig)
{
OnSettingChanged(pair.Key, pair.Value);
}
}
private void OnSettingChanged(string propName, string value)
{
// 配置项同步
switch (propName)
{
case "Volume":
AudioManager.Instance.SetVolume(float.Parse(value));
break;
case "TextSpeed":
// TODO 调整文字速度
break;
case "Resolution":
// TODO 调整分辨率
break;
case "Language":
// TODO 修改语言
break;
default:
Debug.Log($"{propName}未正确处理");
break;
}
}
public void Write(string propName, string value)
{
_container.Write(propName, value);
}
public bool TryRead(string key, out string value)
{
return _container.TryRead(key, out value);
}
public Dictionary<string, string> ReadAll()
{
return _container.ReadAll();
}
#region 单例部分
public static SettingLoader Instance { get; private set; }
public static void Init()
{
Instance = new SettingLoader();
}
#endregion
}
}