【发布时间】:2020-07-01 19:53:02
【问题描述】:
我有一个附加到文本游戏对象的简短脚本,它设置文本以显示滑块的当前值/位置。此文本游戏对象附加到值更改字段上的滑块:ShowSliderValue -> [Dynamic float] TextUpdate
当我按下播放时,我的文本不会立即显示所选值/位置。仅当我更改滑块的位置时,文本才会从“新文本”更改为滑块的实际值。 从技术上讲,当我按下播放时,我想触发“On Value Changed”。这样我可以避免脚本中任何不必要的依赖。
using UnityEngine;
using UnityEngine.UI;
public class ShowSliderValue : MonoBehaviour
{
private Text text;
void Awake()
{
text = this.GetComponent<Text>();
}
public void TextUpdate(float value)
{
text.text = value.ToString("0.00");
}
}
在寻找解决方案时,我发现了以下视频。在 5:06(到 5:26),他们将默认值设置为 1 到 30,而且它似乎开箱即用。 Click here for youtube link.
我的文本是否可以在不先移动滑块或在显示的脚本中主动询问滑块值的情况下显示滑块值?
编辑:
这是我目前的解决方案: 我向我的 Slider 添加了一个脚本,该脚本更改了 Start() 上的 Slider 值。由于值需要实际改变,所以 slider.value = slider.value 不起作用。
using UnityEngine;
using UnityEngine.UI;
public class SliderTest : MonoBehaviour
{
private void Start()
{
Slider slider = this.GetComponent<Slider>();
float originalValue = slider.value;
slider.value = slider.maxValue;
slider.value = slider.minValue;
slider.value = originalValue;
}
}
这可确保发生值更改。除非 minValue = maxValue - 无论如何都会使滑块过时。
【问题讨论】:
标签: c# unity3d user-interface slider