using UnityEngine; using UnityEngine.UI; using QFramework; using I2.Loc; using System; using CustomTool; using System.IO; namespace QFramework { public class PC_SettingPanelData : UIPanelData { } [Serializable] public class SettingInfo { public float keySpeedValue; public float mouseSpeedValue; public string language; public SettingInfo(float keySpeed = 0.5f, float mouseSpeed = 0.5f, string language = "Chinese") { this.keySpeedValue = keySpeed; this.mouseSpeedValue = mouseSpeed; this.language = language; } } public partial class PC_SettingPanel : UIPanel { protected override void ProcessMsg(int eventId, QMsg msg) { throw new System.NotImplementedException(); } private SettingInfo initSettingInfo = new SettingInfo(0.5f, 0.5f, "Chinese"); private SettingInfo configSettingInfo; private SettingInfo currentSettingInfo = new SettingInfo(); protected override void OnInit(IUIData uiData = null) { mData = uiData as PC_SettingPanelData ?? new PC_SettingPanelData(); // please add init code here LanguageDropdown.onValueChanged.AddListener(s => { if (LocalizationManager.HasLanguage(GetLanguageKeyCode(LanguageDropdown.options[LanguageDropdown.value].text))) { LocalizationManager.CurrentLanguage = GetLanguageKeyCode((LanguageDropdown.options[LanguageDropdown.value].text)); currentSettingInfo.language = LocalizationManager.CurrentLanguage; } }); ConfirmBtn.onClick.AddListener(() => { SaveSettingInfo(currentSettingInfo); UIKit.ClosePanel(); }); CancelBtn.onClick.AddListener(() => { LoadSetingInfo(configSettingInfo); UIKit.ClosePanel(); }); ResetBtrn.onClick.AddListener(() => { LoadSetingInfo(initSettingInfo); }); keySpeedSlider.onValueChanged.AddListener(s => { keySpeedValue.text = Mathf.RoundToInt(keySpeedSlider.value * 100).ToString() + "%"; currentSettingInfo.keySpeedValue = keySpeedSlider.value; RoamCameraController.Instance.TranslateSpeed = keySpeedSlider.value * 20; }); mouseSpeedSlider.onValueChanged.AddListener(s => { mouseSpeedValue.text = Mathf.RoundToInt(mouseSpeedSlider.value * 100).ToString() + "%"; currentSettingInfo.mouseSpeedValue = mouseSpeedSlider.value; RoamCameraController.Instance.MouseScrollMoveSpeed = mouseSpeedSlider.value * 2; }); } protected override void OnOpen(IUIData uiData = null) { RecordSettingInfo(); configSettingInfo = GetSettingInfo(); if (configSettingInfo != null) { LoadSetingInfo(configSettingInfo); } else { Debug.LogError("当前为存在设置信息,重新创建"); } } protected override void OnShow() { } protected override void OnHide() { } protected override void OnClose() { } public void RecordSettingInfo() { currentSettingInfo.keySpeedValue = keySpeedSlider.value; currentSettingInfo.mouseSpeedValue = mouseSpeedSlider.value; currentSettingInfo.language = GetLanguageKeyCode(LanguageDropdown.options[LanguageDropdown.value].text); } public void LoadSetingInfo(SettingInfo settingInfo) { keySpeedSlider.value = settingInfo.keySpeedValue; mouseSpeedSlider.value = settingInfo.mouseSpeedValue; RoamCameraController.Instance.TranslateSpeed = keySpeedSlider.value * 20; RoamCameraController.Instance.MouseScrollMoveSpeed = mouseSpeedSlider.value * 2; foreach (var item in LanguageDropdown.options) { if (GetLanguageKeyCode(item.text) == settingInfo.language) { LanguageDropdown.value = LanguageDropdown.options.IndexOf(item); if (LocalizationManager.HasLanguage(settingInfo.language)) { LocalizationManager.CurrentLanguage = settingInfo.language; } break; } } } /// /// 获取相机配置数据 /// /// private SettingInfo GetSettingInfo() { // 拼接文件基本路径 string filePath = PathHelper.CombineFilePath(PathHelper.m_ReadOnlyPath, "Json", "SettingInfo.json"); string fileData = FileHelper.GetAllDataInfo(filePath); SettingInfo config = JsonUtility.FromJson(fileData); return config == null ? null : config; } public void SaveSettingInfo(SettingInfo info) { // 拼接文件基本路径 string filePath = PathHelper.CombineFilePath(PathHelper.m_ReadOnlyPath, "Json", "SettingInfo.json"); File.WriteAllText(filePath, JsonUtility.ToJson(info)); } //语言Code转换 public string GetLanguageKeyCode(string name) { if (name.Equals("简体中文") || name.Equals("中文")) { return "Chinese"; } return name; } } }