c# - Unity - 如果没有被拖动,则设置滑块值?
问题描述
好吧,我在 Unity 中有一个滑块,它的百分比等于 1440 中一天中当前分钟数的百分比,即 24 小时内的总分钟数。
currentMinute = System.DateTime.Now.Minute + (System.DateTime.Now.Hour * 60);
barPercentage = currentMinute / 1440;
这很好,但如果正在拖动滑块,我不想将slider.value 设置为此百分比。我已经尝试了所有方法,包括将事件触发器添加到句柄,然后触发这样的 bool:
public void SliderSelected()
{
sliderSelect = true;
}
public void SliderDeselect()
{
sliderSelect = false;
}
if(!sliderSelect)
{
slider.value = gameController.barPercentage;
}
问题是,有了这个我不能拖动我的滑块。如果我删除它,滑块会起作用:
slider.value = gameController.barPercentage;
但是 bool 也在工作 - 当我按住手柄时,当我使用 PointerDown 和 PointerUp 释放时,bool 是真假。
我怎样才能做到这一点?
解决方案
使用以下脚本和设置似乎可以正常工作:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Slid : MonoBehaviour
{
Slider slide;
bool sliderSelect = false;
// Start is called before the first frame update
void Start()
{
slide = GetComponent<Slider>();
}
public void SliderSelected()
{
sliderSelect = true;
}
public void SliderDeselect()
{
sliderSelect = false;
}
public void Update()
{
float currentMinute = System.DateTime.Now.Minute + (System.DateTime.Now.Hour * 60);
float barPercentage = currentMinute / 1440;
if (!sliderSelect)
{
slide.value = barPercentage;
}
}
}
滑块的 Unity 检查器视图
推荐阅读
- c - 有没有办法获得支持 AVX 的 Tensorflow 的 C API?
- javascript - VueJs 对象键/值在 v-for 循环中没有反应
- javascript - Testcafe 如何读取 json 响应并选择第一项并将其传递给选择器
- nginx - nginx: [emerg] "fastcgi_pass" 指令在 /etc/nginx/sites-enabled/def 中是不允许的
- mysql - InnoDB:错误(重复键)将单词节点写入 FTS 辅助索引表。来自 myServerName.err
- python - OpenCV 升级网络摄像头的提要,而不是使用全分辨率
- angular - AOT 构建文件大小大于正常构建
- python - 如何从python列表中的多个元素中找到完美匹配?
- apache-kafka - 用例:拥有大量订阅者的 Kafka 单一主题
- javascript - 当使用 Javascript 动态添加数据时,如何在 contenteditable div 的文本末尾获取插入符号位置?