示例#1
0
        /// <inheritdoc />
        protected override GameObject OnCreateControl(Transform subCategoryList)
        {
            var tr = Object.Instantiate(SliderCopy, subCategoryList, true);

            tr.name = "sldTemp";

            var textMesh = tr.Find("textShape").GetComponent <TextMeshProUGUI>();

            textMesh.text  = _settingName;
            textMesh.color = TextColor;

            var slider = tr.Find("Slider").GetComponent <Slider>();

            slider.minValue = _minValue;
            slider.maxValue = _maxValue;
            slider.onValueChanged.AddListener(SetValue);

            slider.GetComponent <ObservableScrollTrigger>().OnScrollAsObservable().Subscribe(data =>
            {
                var scrollDelta = data.scrollDelta.y;
                var valueChange = Mathf.Pow(10, Mathf.Round(Mathf.Log10(slider.maxValue / 100)));

                if (scrollDelta < 0f)
                {
                    slider.value += valueChange;
                }
                else if (scrollDelta > 0f)
                {
                    slider.value -= valueChange;
                }
            });

            var inputField = tr.Find("InputField").GetComponent <TMP_InputField>();

            inputField.onEndEdit.AddListener(txt =>
            {
                var result   = StringToValue?.Invoke(txt) ?? float.Parse(txt) / 100f;
                slider.value = Mathf.Clamp(result, slider.minValue, slider.maxValue);
            });

            slider.onValueChanged.AddListener(f =>
            {
                if (ValueToString != null)
                {
                    inputField.text = ValueToString(f);
                }
                else
                {
                    inputField.text = Mathf.RoundToInt(f * 100).ToString();
                }
            });

            var resetButton = tr.Find("Button").GetComponent <Button>();

            resetButton.onClick.AddListener(() => slider.value = _defaultValue);

            BufferedValueChanged.Subscribe(f => slider.value = f);

            return(tr.gameObject);
        }
        /// <inheritdoc />
        protected override GameObject OnCreateControl(Transform subCategoryList)
        {
            var tr = Object.Instantiate(SliderCopy, subCategoryList, false);

            tr.name = "sldTemp";

            var textMesh = tr.Find("textShape").GetComponent <TextMeshProUGUI>();

            textMesh.text  = _settingName;
            textMesh.color = TextColor;

            var slider = tr.Find("Slider").GetComponent <Slider>();

            slider.minValue     = _minValue;
            slider.maxValue     = _maxValue;
            slider.wholeNumbers = WholeNumbers;
            slider.onValueChanged.AddListener(SetValue);
            slider.value = _defaultValue;
            slider.GetComponent <ObservableScrollTrigger>()
            .OnScrollAsObservable()
            .Subscribe(
                data =>
            {
                var scrollDelta = data.scrollDelta.y;
                var valueChange = Mathf.Pow(10, Mathf.Floor(Mathf.Log10(Mathf.Max(Mathf.Abs(slider.minValue), Mathf.Abs(slider.maxValue)) / 100)));

                if (scrollDelta < 0f)
                {
                    slider.value += valueChange;
                }
                else if (scrollDelta > 0f)
                {
                    slider.value -= valueChange;
                }
            });

            var inputField = tr.Find("InputField").GetComponent <TMP_InputField>();

            if (MakerAPI.InsideMaker)
            {
                Singleton <ChaCustom.CustomBase> .Instance.lstTmpInputField.Add(inputField);
            }

            InputField(_defaultValue, inputField);

            inputField.onEndEdit.AddListener(
                txt =>
            {
                try
                {
                    var result   = StringToValue?.Invoke(txt) ?? float.Parse(txt) / 100f;
                    slider.value = Mathf.Clamp(result, slider.minValue, slider.maxValue);
                }
                catch
                {
                    // Ignore parsing errors, lets user keep typing
                }
            });

            slider.onValueChanged.AddListener(
                f =>
            {
                InputField(f, inputField);
            });

#if KKS
            var resetButton = tr.Find("btnReset").GetComponent <Button>();
#else
            var resetButton = tr.Find("Button").GetComponent <Button>();
#endif
            resetButton.onClick.AddListener(() => slider.value = _defaultValue);

            BufferedValueChanged.Subscribe(f => slider.value = f);

            return(tr.gameObject);
        }
        /// <inheritdoc />
        protected override GameObject OnCreateControl(Transform subCategoryList)
        {
            var tr = Object.Instantiate(SliderCopy, subCategoryList, false);

            tr.name = "SliderSet";

            var sliderSet = tr.GetComponent <CustomSliderSet>();

            sliderSet.onChange          = null;
            sliderSet.onPointerUp       = null;
            sliderSet.onSetDefaultValue = null;
            GameObject.Destroy(sliderSet);

            sliderSet.title.text  = _settingName;
            sliderSet.title.color = TextColor;
            SetTextAutosize(sliderSet.title);

            var slider = sliderSet.slider;

            slider.minValue = _minValue;
            slider.maxValue = _maxValue;
            slider.onValueChanged.ActuallyRemoveAllListeners();
            slider.onValueChanged.AddListener(SetValue);

            slider.GetComponent <ObservableScrollTrigger>()
            .OnScrollAsObservable()
            .Subscribe(
                data =>
            {
                var scrollDelta = data.scrollDelta.y;
                var valueChange = Mathf.Pow(10, Mathf.Floor(Mathf.Log10(Mathf.Max(Mathf.Abs(slider.minValue), Mathf.Abs(slider.maxValue)) / 100)));

                if (scrollDelta < 0f)
                {
                    slider.value += valueChange;
                }
                else if (scrollDelta > 0f)
                {
                    slider.value -= valueChange;
                }
            });

            var inputField = sliderSet.input;

            inputField.onEndEdit.AddListener(
                txt =>
            {
                try
                {
                    var result   = StringToValue?.Invoke(txt) ?? float.Parse(txt) / 100f;
                    slider.value = Mathf.Clamp(result, slider.minValue, slider.maxValue);
                }
                catch
                {
                    // Ignore parsing errors, lets user keep typing
                }
            });

            slider.onValueChanged.AddListener(
                f =>
            {
                if (ValueToString != null)
                {
                    inputField.text = ValueToString(f);
                }
                else
                {
                    inputField.text = Mathf.RoundToInt(f * 100).ToString();
                }
            });


            var resetButton = sliderSet.button;

            resetButton.onClick.ActuallyRemoveAllListeners();
            resetButton.onClick.AddListener(() => slider.value = _defaultValue);

            BufferedValueChanged.Subscribe(f => slider.value = f);

            return(tr.gameObject);
        }