Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Has been cancelled
- Добавил новую систему настроек, возможности:
- Динамически создает список настроек
- Сохраняет настройки в JSON-файл
- Возможность группировать настройки
- Широкие возможности по кастомизации
- Применение настроек в реальном времени (частично)
- Добавил префабы для новых элементов настроек
- Изменил поведение игры исходя из нового формата настроек
47 lines
1.2 KiB
C#
47 lines
1.2 KiB
C#
using RR.Common.Settings;
|
|
using TMPro;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
|
|
namespace RR.Common.UI
|
|
{
|
|
public class SettingSliderBinder : MonoBehaviour
|
|
{
|
|
[SerializeField] private string key;
|
|
[SerializeField] private Slider slider;
|
|
[SerializeField] private TMP_Text label;
|
|
[SerializeField] private TMP_Text valueText; // optional
|
|
|
|
private SettingEntry def;
|
|
|
|
private void Start()
|
|
{
|
|
def = SettingsManager.Instance.Define(key);
|
|
if (def == null)
|
|
{
|
|
gameObject.SetActive(false);
|
|
return;
|
|
}
|
|
|
|
if (label) label.text = def.displayName;
|
|
|
|
slider.minValue = def.minFloat;
|
|
slider.maxValue = def.maxFloat;
|
|
|
|
float v = SettingsManager.Instance.Get(key).f;
|
|
slider.SetValueWithoutNotify(v);
|
|
UpdateValueText(v);
|
|
|
|
slider.onValueChanged.AddListener(val =>
|
|
{
|
|
SettingsManager.Instance.Set(key, SettingValue.Float(val));
|
|
UpdateValueText(val);
|
|
});
|
|
}
|
|
|
|
private void UpdateValueText(float v)
|
|
{
|
|
if (valueText) valueText.text = v.ToString("0.##");
|
|
}
|
|
}
|
|
} |