滑块释放时的函数调用?

时间:2016-05-03 14:52:06

标签: c# unity3d slider

我使用滑块将历史数据加载到我的可视化应用程序中。滑块表示相对于现在的时间段。因此,您可以及时向后滑动,它将加载数据。

但是,目前,只要滑块的值发生变化,数据就会加载,这意味着我想在5小时前看到它?我必须在两者之间加载所有内容......

我正在使用的代码如下:

    history = LoadData.Historical();

    data = GameObject.Find("DataManager").GetComponent<LoadData>();

    slider.maxValue = history.Length - 1;
    slider.value = slider.maxValue;
    slider.onValueChanged.AddListener(delegate { ValueChange(); });

其中ValueChange()包含这样的内容:

    LoadData.Candles(data.bounds, history[(int)slider.value]);

有没有办法让我只能在更改数值时加载数据?当我没有按住滑块时?

注意:我已经尝试过一个协程方法来实现这一点,但它只是以泪水和无限循环结束。 :/

编辑:

我起草了这个解决方案,但似乎OnMouseUp不能直接在Sliders上工作......有什么想法吗?

void Start()
{

    slider = gameObject.GetComponent<Slider>();

    history = LoadData.Historical();

    data = GameObject.Find("DataManager").GetComponent<LoadData>();

    slider.maxValue = history.Length - 1;
    slider.value = slider.maxValue;
    slider.onValueChanged.AddListener(delegate { ValueChange(); });

    LoadData.Candles(data.bounds, history[(int)slider.maxValue]);

    valueChanged = false;
}

void OnMouseUp()
{
    Debug.Log("UP");
    if (valueChanged)
    {
        LoadData.DestroyCandles();
        LoadData.Candles(data.bounds, history[(int)slider.value]);
    }
    valueChanged = false;
}

void ValueChange()
{
    valueChanged = true;
    Debug.Log(valueChanged);
}

Edit2:

enter image description here

1 个答案:

答案 0 :(得分:1)

您可以使用事件系统捕获MouseUp事件,如下所示。它应该做的伎俩,但你需要考虑值是否改变自己(只是存储旧值并检查它是否相等)

{"script":"#!/bin/bash hello=$jj1 echo $hello echo $jj1 echo $jj2 for el1 in $jj3 do echo \"$el1\" done for el2 in $jj4 do echo \"$el2\" done for i in $( ls ); do echo item: $i done"}

idk如果它是最好的解决方案,但仍然是一个解决方案(但可能也不是最差的):D