有什么方法可以区分手动或自动更改滑块值吗?

问题描述 投票:0回答:1

我正在 Unity 中编写视频播放器,并使用滑块作为设置视频搜索的栏。

为此,我创建了 SeekVideo 函数,该函数使用滑块的值将其分配给视频并从 OnValueChange 调用它。

我的问题是,当在“Update”方法中更改滑块的值时,每一帧都会调用 SeekVideo 函数。

不知道有没有办法用flag来区分,比如函数是手动调用的还是自动调用的。

这是我的代码:

Unity Editor

public void SeekVideo() {
    Debug.Log("This function is being called every frame");
    float value = slider.value;
    long miliseconds = (long)(GetVideoDuration(videoIndex) * value);
    Seek(0, miliseconds);
}

public void Update() {
    if (isVideoPlayerReady && slider != null) {
        slider.value = (float)GetVideoPosition(videoIndex) / GetVideoDuration(videoIndex);
    }
}

我不知道是否可能,因为现在代码使每一帧都重置视频种子,并且消耗大量资源。有什么建议吗?

c# unit-testing unity-game-engine unity-webgl
1个回答
0
投票

而不是设置

slider.value

这将触发您可以使用的回调事件

slider.SetValueWithoutNotify(...);

顾名思义,省略了回调

© www.soinside.com 2019 - 2024. All rights reserved.