using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Events; using UnityEngine.UI; //评价指标滑块控制类 public class AppraiseSliderCtrl : MonoBehaviour { public Slider slider_weight;//权重滑块 public Text pointName;//显示评价指标类型 public Text showSliderValue;//显示滑块值 string currentName; string valueUnit; UnityAction valueChangedEvent; // Start is called before the first frame update void Awake() { slider_weight.minValue = 0; slider_weight.maxValue = 20; slider_weight.wholeNumbers = true; slider_weight.onValueChanged.AddListener(SliderValueChanged); slider_weight.value = (slider_weight.minValue + slider_weight.maxValue) / 2; } /// /// 注入初始化参数 返回当前权重值 /// /// /// /// 当前权重值 public float InjectInitData(string Name, UnityAction valueChanged) { this.valueChangedEvent = valueChanged; currentName = Name; pointName.text = currentName + ":"; return slider_weight.value/10; } protected virtual void SliderValueChanged(float value) { float trueValue = value / 10f;//转换为0-2便于显示和后续计算 showSliderValue.text = trueValue.ToString("0.0"); valueChangedEvent?.Invoke(currentName, trueValue); } //隐藏时 初始化slider private void OnDisable() { valueChangedEvent = null; slider_weight.value = (slider_weight.minValue+slider_weight.maxValue)/2;//保持在中间 } }