unity实现翻页效果
作者:weixin_44462815 发布时间:2022-09-01 17:10:15
标签:unity,翻页
本文实例为大家分享了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


猜你喜欢
- 问题描述提交表单到servlet时出现空白页面,但又网站不报错截图如下遇到这个问题查找了很多,仍没有解决,刚开始接触IDEA,以为是路径配置
- 背景最近引入了 Nacos Config 配置管理能力,说起来用法很简单,还是踩了三个坑。Nacos Config 的 nacos 的帐号密
- 最近在做项目的时候,一直用一个叫做API的东西,controller注解我会写,这个东西我也会用,但是我确实不知道这个东西是个什么,有点神奇
- 加载网络图片Image.network()是Flutter提供的一种从网络上加载图片的方法,它可以从指定的URL加载图片,并在加载完成后将其
- 本文实例为大家分享了C#超市收银系统设计的具体代码,供大家参考,具体内容如下1.登录界面代码如下:using System;using Sy
- 本文实例介绍了基于socket和javaFX简单文件传输工具,分享给大家供大家参考,具体内容如下package application;im
- 前言在 App 的运营中,活跃度是一个重要的指标,日活/月活……为了提高活跃度,就发明了小红点,
- 一、前言今天我们来说一说 Spring Bean 的生命周期,小伙伴们应该在面试中经常遇到,这是正常现象。因为 Spring Bean 的生
- 文件的重命名与移动操作有时候为了对文件进行统一访问与管理,需要把文件进行重命名,并移动到新的文件夹,如何实现呢?一枚简单的java小程序即可
- 开门见山,添加水印的方法非常简单,其实就只有3个步骤:1、载入原始图片2、载入水印图片3、保存带有水印的图片实现的原理就是:获取原始图片的宽
- 详解java.lang.reflect.Modifier.isInterface()方法java.lang.reflect.Modifier
- JSTL条件行为和遍历行为JSTL的条件行为标签有四个:if,choose,when,otherwise标签1、if标签是对某一个条件进行测
- 没有阿里云数据库的可以买个最便宜的,我是新用户9.9元买了一个1.买到后点击左上角的工作台2.3. 4. 5.6.7.8
- 看了网上关于记事本的查找替换很多,但都没有达到我想要的结果,然后自己学习总结了以下的方法:统计字符串(汉字,字母,数字,字符)先上效果图定义
- SwipeRefreshLayout是Android官方的下拉刷新控件,使用简单,界面美观,不熟悉的朋友可以随便搜索了解一下,这里就不废话了
- 在springboot项目中如果要在不集成templates的情况下访问静态资源需要做以下配置1.在项目的application.yml文件
- 年前无意看到一个用Python写的小桌面程序,可以自动玩扫雷的游戏,觉得挺有意思,决定用C#也做一个。【真实情况
- 小米系统自带的长截屏应该很多人都用过,效果不错。当长截屏时listview就会自动滚动,当按下停止截屏时,就会得到一张完整的截屏。该篇就介绍
- springboot 引入mybatis-plus后报错:Factory method ‘sqlSessionFactory' th
- 一、ListView该组件是android中最常用的一个UI组件,用于实现在屏幕上显示多个内容,以便于我们用手指来回翻转。先在layout中