自制滑动块滑动界面

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

 

posted @   一路繁华的夏ˇ  阅读(45)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示