unity实现翻页效果
作者:weixin_44462815 时间:2022-09-01 17:10:15
本文实例为大家分享了unity实现翻页效果的具体代码,供大家参考,具体内容如下
一、示意图
二、步骤
创建物体ToPanel;添加组件ScrollRect,
在下面创建一个空物体用来装需要移动的子物体,
创建一个Scrollbar;
三、代码
下面展示一些 内联代码片。
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using System.Collections.Generic;
public class SliderControl : MonoBehaviour
{
public Scrollbar m_Scrollbar;
public ScrollRect m_ScrollRect;
[Header("子物体的父物体")]
public GameObject panel;
[Header("移动到多少百分比图片切换")] //注释
[Range(0.1f, 0.9f)] //范围
public float banfenbi = 0.5f;
[Header("是否限制一次只能切换一张图片")]
public bool limit = false;
private float mTargetValue;
private bool mNeedMove = false;
private const float SMOOTH_TIME = 0.2F;
private float mMoveSpeed = 0f;
private float child_Count;
private float num1;
private float var_Down;
private List<float> num_list1 =new List<float>();
private List<float> num_list2 = new List<float>();
private List<float> num_list3 = new List<float>();
private int weizhi; //页数
void Start()
{
weizhi = 0;
child_Count = panel.transform.childCount;
num1 = 1 / (child_Count - 1);
print("-----子物体数量------ " + child_Count + " " + num1);
for (int i = 0; i < child_Count; i++)
{
float a = 0;
num_list1.Add(a + num1 * i);
float b = (a + num1 * i) + (num1 * banfenbi);
num_list2.Add(b);
float c = (a + num1 * i) + (num1 * (1-banfenbi));
num_list3.Add(c);
print("---child_Count----- " + num_list1[i] + " " + num_list2[i]);
}
}
public void OnPointer()
{ }
public void OnPointerDown()
{
//print("---OnPointerDown----");
var_Down = m_Scrollbar.value;
mNeedMove = false;
}
public void OnPointerUp()
{
//print("---OnPointerUp----");
//print("-----m_Scrollbar.value---- " + m_Scrollbar.value);
for (int i = 0; i < child_Count; i++)
{
float num;
if (var_Down- m_Scrollbar.value<0)
{
num = num_list2[i];
}
else
{
num = num_list3[i];
}
if (m_Scrollbar.value <= num)
{
if (limit)
{
if (i> weizhi)
{
weizhi = weizhi + 1;
}
else if (i == weizhi)
{
weizhi = i;
}
else
{
weizhi = weizhi - 1;
}
mTargetValue = num_list1[weizhi];
}
else
{
mTargetValue = num_list1[i];
weizhi = i; //页数
}
break;
}
}
mNeedMove = true;
mMoveSpeed = 0;
}
/// <summary>
/// 直接跳转到指定页数
/// </summary>
/// <param name="页数"></param>
public void OnButtonClick(int value)
{
mTargetValue = num_list1[value];
if (mTargetValue<0)
{
mTargetValue = 0;
}
if (mTargetValue>1)
{
mTargetValue = 1;
}
weizhi = value;
mNeedMove = true;
}
void Update()
{
if (mNeedMove)
{
if (Mathf.Abs(m_Scrollbar.value - mTargetValue) < 0.01f)
{
m_Scrollbar.value = mTargetValue;
mNeedMove = false;
MoveEnd();
return;
}
m_Scrollbar.value = Mathf.SmoothDamp(m_Scrollbar.value, mTargetValue, ref mMoveSpeed, SMOOTH_TIME);
}
}
/// <summary>
/// 移动完毕的回调
/// </summary>
public void MoveEnd()
{
print("----- 移动完毕-----第几页--- "+ (weizhi+1));
}
}
来源:https://blog.csdn.net/weixin_44462815/article/details/114259792
标签:unity,翻页
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Java基础之数组模拟循环队列
2022-08-29 12:58:06
![](https://img.aspxhome.com/file/2023/9/78929_0s.png)
Java详细讲解不同版本的接口语法和抽象类与接口的区别
2022-09-30 01:46:38
![](https://img.aspxhome.com/file/2023/5/61875_0s.png)
c#代码生成URL地址的示例
2022-02-17 09:44:08
java中JSONObject转换为HashMap(方法+main方法调用实例)
2023-08-10 04:04:08
![](https://img.aspxhome.com/file/2023/7/68187_0s.png)
Mac OS上安装Tomcat服务器的简单步骤
2022-11-26 21:06:42
![](https://img.aspxhome.com/file/2023/3/110633_0s.png)
一文带你了解C#中抽象方法与虚方法的区别
2023-07-23 00:14:32
Jetpack Compose 的新型架构 MVI使用详解
2023-01-24 14:53:26
![](https://img.aspxhome.com/file/2023/2/139392_0s.jpg)
Android图文居中显示控件使用方法详解
2023-04-04 14:07:24
Android BottomSheet实现可拉伸控件
2023-07-05 15:07:51
springboot为异步任务规划自定义线程池的实现
2022-12-05 01:13:02
![](https://img.aspxhome.com/file/2023/1/95971_0s.png)
Android编程使用android-support-design实现MD风格对话框功能示例
2022-05-19 03:46:39
![](https://img.aspxhome.com/file/2023/6/90176_0s.png)
如何通过Android Stduio来编写一个完整的天气预报APP
2023-10-11 17:45:01
![](https://img.aspxhome.com/file/2023/8/96028_0s.png)
SpringBoot自定义MessageConverter与内容协商管理器contentNegotiationManager详解
2023-11-28 11:35:54
![](https://img.aspxhome.com/file/2023/5/60285_0s.png)
SpringBoot集成vue的开发解决方案
2023-11-24 20:58:10
![](https://img.aspxhome.com/file/2023/8/59028_0s.png)
解析如何在android中增加gsensor驱动(MMA7660)
2023-05-22 22:03:24
初识Java基础之数据类型与运算符
2021-10-13 12:20:32
Unity 按钮添加OnClick事件操作
2023-06-28 15:57:27
![](https://img.aspxhome.com/file/2023/3/113683_0s.jpg)
Android开发中线程池源码解析
2023-12-19 02:30:57
![](https://img.aspxhome.com/file/2023/5/139395_0s.jpg)
基于jdk动态代理和cglib动态代理实现及区别说明
2022-04-11 00:32:44
RestTemplate自定义请求失败异常处理示例解析
2021-12-03 22:13:17
![](https://img.aspxhome.com/file/2023/0/60700_0s.png)