ict.shenzhi/Assets/deepseek/Samples~ 1/DeepSeek-Chat/Scripts/PageTurning.cs

107 lines
2.7 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using System.Reflection;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class PageTurning : MonoBehaviour, IPointerClickHandler,IPointerEnterHandler,IPointerExitHandler
{
public Scrollbar slider;
//检测鼠标是否在此UI上的布尔值
public bool Isin;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
ChangePage();
MouseWheel();
if (this.transform.childCount == 0)
{
slider.size = 1;
}
else
{
ChangeScollbarLong();
}
}
//让此页面的滚动跟随右侧的滑动条
void ChangePage()
{
if (this.transform.childCount != 0)
{
float all=0;
for (int n = 0; n < this.transform.childCount; n++)
{
if (n != 0)
{
all += this.GetComponent<VerticalLayoutGroup>().spacing;
}
all += this.transform.GetChild(n).GetComponent<RectTransform>().sizeDelta.y;
}
//Debug.Log(all);
if (all < this.transform.GetComponent<RectTransform>().sizeDelta.y)
{
return;
}
this.GetComponent<VerticalLayoutGroup>().padding.top = Convert.ToInt32(Math.Floor(-slider.value * (all - this.transform.GetComponent<RectTransform>().sizeDelta.y)));
LayoutRebuilder.ForceRebuildLayoutImmediate(this.GetComponent<RectTransform>());
}
}
public void OnPointerClick(PointerEventData pointerEventData)
{
}
public void OnPointerEnter(PointerEventData pointerEventData)
{
Isin = true;
}
public void OnPointerExit(PointerEventData pointerEventData)
{
Isin = false;
}
void MouseWheel()
{
if (Isin)
{
slider.value += Input.GetAxis("Mouse ScrollWheel")*0.06f;
}
if (slider.value > 1)
{
slider.value = 1;
}
if (slider.value < 0)
{
slider.value = 0;
}
}
void ChangeScollbarLong()
{
float all = 0;
for (int n = 0; n < this.transform.childCount; n++)
{
all += this.transform.GetChild(n).GetComponent<RectTransform>().sizeDelta.y;
}
if (all < this.transform.GetComponent<RectTransform>().sizeDelta.y)
{
slider.size = 1;
}
else
{
slider.size = this.transform.GetComponent<RectTransform>().sizeDelta.y/all;
}
}
}