public T AddSliderSetting <T>(string name, string hintText, float min, float max, bool intValues) where T : IncDecSettingsController { var volumeSettings = Resources.FindObjectsOfTypeAll <WindowModeSettingsController>().FirstOrDefault(); GameObject newSettingsObject = MonoBehaviour.Instantiate(volumeSettings.gameObject, transform); newSettingsObject.name = name; WindowModeSettingsController volume = newSettingsObject.GetComponent <WindowModeSettingsController>(); T newSliderSettingsController = (T)ReflectionUtil.CopyComponent(volume, typeof(IncDecSettingsController), typeof(T), newSettingsObject); MonoBehaviour.DestroyImmediate(volume); GameObject.Destroy(newSettingsObject.transform.Find("Value").Find("DecButton").gameObject); GameObject.Destroy(newSettingsObject.transform.Find("Value").Find("ValueText").gameObject); GameObject.Destroy(newSettingsObject.transform.Find("Value").Find("IncButton").gameObject); HMUI.Scrollbar slider = GameObject.Instantiate(Resources.FindObjectsOfTypeAll <HMUI.Scrollbar>().First(), newSettingsObject.transform.Find("Value"), false); SliderProperties sliderProperties = slider.gameObject.AddComponent <SliderProperties>(); sliderProperties.FromValue = min; sliderProperties.ToValue = max; sliderProperties.IntValues = intValues; slider.GetComponentInChildren <TextMeshProUGUI>().enableWordWrapping = false; (slider.transform as RectTransform).sizeDelta = new Vector2(39.5f, 7.5f); (slider.transform as RectTransform).anchorMin = new Vector2(0, 0.5f); var tmpText = newSettingsObject.GetComponentInChildren <TMP_Text>(); tmpText.text = name; BeatSaberUI.AddHintText(tmpText.rectTransform, hintText); return(newSliderSettingsController); }
public static HMUI.Scrollbar CreateUISlider(RectTransform parent, float fromValue, float toValue, bool intValues, UnityAction <float> onValueChanged = null) { HMUI.Scrollbar slider = Instantiate(Resources.FindObjectsOfTypeAll <HMUI.Scrollbar>().First(), parent, false); SliderProperties[] sps = slider.gameObject.GetComponents <SliderProperties>(); for (int i = 0; i < sps.Length; ++i) { Destroy(sps[i]); } SliderProperties sliderProperties = slider.gameObject.AddComponent <SliderProperties>(); sliderProperties.FromValue = fromValue; sliderProperties.ToValue = toValue; sliderProperties.IntValues = intValues; sliderProperties.SetCurrentValueFromPercentage(slider.value); slider.GetComponentInChildren <TextMeshProUGUI>().text = sliderProperties.CurrentValue.ToString("N1"); slider.onValueChanged.AddListener(delegate(float value) { TextMeshProUGUI valueLabel = slider.GetComponentInChildren <TextMeshProUGUI>(); valueLabel.enableWordWrapping = false; sliderProperties.SetCurrentValueFromPercentage(value); valueLabel.text = sliderProperties.CurrentValue.ToString("N1"); }); if (onValueChanged != null) { slider.onValueChanged.AddListener(onValueChanged); } return(slider); }
public override void Init() { _sliderInst = transform.GetComponentInChildren <HMUI.Scrollbar>(); _sliderPropertiesInst = _sliderInst.gameObject.GetComponent <SliderProperties>(); _sliderPropertiesInst.CurrentValue = GetInitValue(); _textInst = _sliderInst.GetComponentInChildren <TMPro.TextMeshProUGUI>(); _sliderInst.value = _sliderPropertiesInst.GetPercentageFromValue(_sliderPropertiesInst.CurrentValue); _sliderInst.onValueChanged.AddListener(delegate(float value) { _sliderPropertiesInst.SetCurrentValueFromPercentage(value); RefreshUI(); }); RefreshUI(); }