Passion & UI
This commit is contained in:
45
Assets/Scripts/Settings/UI/SettingsEntryIntInput.cs
Normal file
45
Assets/Scripts/Settings/UI/SettingsEntryIntInput.cs
Normal file
@@ -0,0 +1,45 @@
|
||||
using TMPro;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Cielonos.Settings.UI
|
||||
{
|
||||
/// <summary>
|
||||
/// 不带 [Range] 特性的 int 字段的设置条目 — 使用 TMP_InputField(整数模式)。
|
||||
/// </summary>
|
||||
public class SettingsEntryIntInput : SettingsEntryBase
|
||||
{
|
||||
[SerializeField] private TMP_InputField inputField;
|
||||
|
||||
protected override void SetupUI()
|
||||
{
|
||||
if (inputField == null) return;
|
||||
|
||||
inputField.contentType = TMP_InputField.ContentType.IntegerNumber;
|
||||
inputField.onEndEdit.AddListener(OnInputEndEdit);
|
||||
}
|
||||
|
||||
public override void RefreshValue()
|
||||
{
|
||||
if (inputField != null)
|
||||
inputField.SetTextWithoutNotify(GetFieldValue().ToString());
|
||||
}
|
||||
|
||||
private void OnInputEndEdit(string text)
|
||||
{
|
||||
if (int.TryParse(text, out int value))
|
||||
{
|
||||
SetFieldValue(value);
|
||||
}
|
||||
else
|
||||
{
|
||||
RefreshValue();
|
||||
}
|
||||
}
|
||||
|
||||
private void OnDestroy()
|
||||
{
|
||||
if (inputField != null)
|
||||
inputField.onEndEdit.RemoveListener(OnInputEndEdit);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user