chip-gameV3/Assets/Scripts/Common/PrefsApplicator.cs
sega 8a6d23b77d Реорг Scripts
Разделено на 4 модуля
- Menu
- Gameplay
- Settings
- Common
2026-07-15 10:49:55 +03:00

67 lines
1.5 KiB
C#

using System.Collections;
using TMPro;
using UnityEngine;
enum PrefsType { str, intNumber, floatNumber }
[RequireComponent(typeof(TextMeshProUGUI))]
public class PrefsApplicator : MonoBehaviour
{
[SerializeField] PrefsType prefsType = PrefsType.str;
[SerializeField] string prefix;
[SerializeField] string suffix;
[SerializeField] string prefsKey;
[SerializeField] string defaultText;
Coroutine coroutine;
TextMeshProUGUI label;
private void OnEnable() => StartPolling();
private void OnDisable() => StopPolling();
void Refresh()
{
string data;
if (PlayerPrefs.HasKey(prefsKey))
{
data = prefsType switch
{
PrefsType.str => PlayerPrefs.GetString(prefsKey),
PrefsType.intNumber => PlayerPrefs.GetInt(prefsKey).ToString(),
PrefsType.floatNumber => PlayerPrefs.GetFloat(prefsKey).ToString(),
_ => PlayerPrefs.GetString(prefsKey)
};
}
else
{
data = defaultText;
}
string message = $"{prefix} {data} {suffix}";
label.text = message;
}
void StartPolling()
{
label = GetComponent<TextMeshProUGUI>();
coroutine = StartCoroutine(poll());
}
void StopPolling()
{
if (coroutine != null)
StopCoroutine(coroutine);
}
IEnumerator poll()
{
while (true)
{
Refresh();
yield return new WaitForSeconds(5);
}
}
}