自制滑动块滑动界面
1、新建组件Scroll View,调整适合大小,修改组件参数
(垂直滑动,取消自带水平,垂直滑动块)
2、新建Slider组件,调整大小及组件参数
3、脚本
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class ScrollViewManager : MonoBehaviour { private Slider m_Slider; private RectTransform content; private RectTransform m_Transform; public int Count;//任务个数(后续读表获取任务人数) private void Start() { m_Slider = transform.Find("Slider").GetComponent<Slider>(); content = transform.Find("Viewport/Content").GetComponent<RectTransform>(); m_Transform = GetComponent<RectTransform>(); //print(content.sizeDelta.y); //print(m_Transform.sizeDelta.y); //滑动区域有任务按钮 //Content对象添加组件<VerticalLayoutGroup>和<Content Size Fitter>通过content.sizeDelta.y获取不到长度, //设置上下距离各20,每个任务对象距离为10,每个任务对象长度50,count任务对象个数 float maxContent = 40 + 50 * Count + 10 * (Count - 1); print("Content" + maxContent); //滑动区域大于显示区域 if (maxContent > m_Transform.sizeDelta.y) { //设置滑动条最大距离 float maxValue = maxContent - m_Transform.sizeDelta.y; m_Slider.minValue = 0; m_Slider.maxValue = maxValue; } //滑动区域小于或者等于显示区域 else { //不显示滑动条 m_Slider.gameObject.SetActive(false); m_Slider.minValue = 0; m_Slider.maxValue = 0; } //滑动条赋值滑动显示界面位置 m_Slider.onValueChanged.AddListener(delegate (float value) { content.anchoredPosition = new Vector2(0, m_Slider.value); }); } private void Update() { m_Slider.value = content.anchoredPosition.y; } }
3
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?