53 lines
1.3 KiB
C#
53 lines
1.3 KiB
C#
using System;
|
|
using TMPro;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
|
|
namespace AZTECHWB.UI
|
|
{
|
|
public class SliderInputField : MonoBehaviour
|
|
{
|
|
private bool isUpdating = false;
|
|
|
|
public TMP_InputField inputField;
|
|
public Slider Slider;
|
|
|
|
public void SetSliderInputField()
|
|
{
|
|
inputField = transform.GetComponentInChildren<TMP_InputField>(true);
|
|
Slider = transform.GetComponentInChildren<Slider>(true);
|
|
|
|
Slider.onValueChanged.AddListener(OnSliderValueChanged);
|
|
inputField.onValueChanged.AddListener(OnInputFieldValueChanged);
|
|
}
|
|
|
|
public void SetText(string value)
|
|
{
|
|
inputField.text = value;
|
|
}
|
|
|
|
void OnSliderValueChanged(float value)
|
|
{
|
|
if (isUpdating) return;
|
|
|
|
var newValue = Math.Truncate(value * 10f) / 10f;
|
|
isUpdating = true;
|
|
inputField.text = newValue.ToString();
|
|
isUpdating = false;
|
|
}
|
|
|
|
void OnInputFieldValueChanged(string value)
|
|
{
|
|
if (isUpdating) return;
|
|
|
|
isUpdating = true;
|
|
if (float.TryParse(value, out float newValue))
|
|
{
|
|
Slider.value = newValue;
|
|
}
|
|
isUpdating = false;
|
|
}
|
|
|
|
}
|
|
}
|