Unity UGUI教程之实现滑页效果


简介

项目需要...直接展示效果吧:


原理

使用UGUI提供的ScrollRect和ScrollBar组件实现基本滑动以及自己控制每次移动一页来达到滑页的效果。

实现过程

1.创建两个panel,上面的panel用于显示,下面的panel用于存放按钮

2.在TopPanel上添加ScrollRect脚本,用于滑动

3.在TopPanel下创建一个新的Panel,并在子Panel下拜访要显示的对象

4.将该子Panel设置为ScrollRect的活动对象

5.为ScrollRect添加ScrollBar滚动条,直接在空白处单机右键添加ScrollBar即可

6.将ScrollBar与ScrollRect关联

7.设置ScrollRect的其他参数

8.将SliderControl脚本挂在TopPanel上,并关联ScrollBar

9.添加响应事件

为按钮也添加相应的事件(记住是五个按钮哈)

10.运行查看效果吧,如果出错,请检查上述步骤

代码

SliderControl:
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class SliderControl : MonoBehaviour
{
public Scrollbar m_Scrollbar;
public ScrollRect m_ScrollRect;
private float mTargetValue;
private bool mNeedMove = false;
private const float MOVE_SPEED = 1F;
private const float SMOOTH_TIME = 0.2F;
private float mMoveSpeed = 0f;
public void OnPointerDown()
{
mNeedMove = false;
}
public void OnPointerUp()
{
// 判断当前位于哪个区间,设置自动滑动至的位置
if (m_Scrollbar.value <= 0.125f)
{
mTargetValue = 0;
}
else if (m_Scrollbar.value <= 0.375f)
{
mTargetValue = 0.25f;
}
else if (m_Scrollbar.value <= 0.625f)
{
mTargetValue = 0.5f;
}
else if (m_Scrollbar.value <= 0.875f)
{
mTargetValue = 0.75f;
}
else
{
mTargetValue = 1f;
}
mNeedMove = true;
mMoveSpeed = 0;
}
public void OnButtonClick(int value)
{
switch (value)
{
case 1:
mTargetValue = 0;
break;
case 2:
mTargetValue = 0.25f;
break;
case 3:
mTargetValue = 0.5f;
break;
case 4:
mTargetValue = 0.75f;
break;
case 5:
mTargetValue = 1f;
break;
default:
Debug.LogError("!!!!!");
break;
}
mNeedMove = true;
}
void Update()
{
if (mNeedMove)
{
if (Mathf.Abs(m_Scrollbar.value - mTargetValue) < 0.01f)
{
m_Scrollbar.value = mTargetValue;
mNeedMove = false;
return;
}
m_Scrollbar.value = Mathf.SmoothDamp(m_Scrollbar.value, mTargetValue, ref mMoveSpeed, SMOOTH_TIME);
}
}
} 

总结

移动用的mathf提供的平滑函数,如果需要阻尼效果,可以自己修改代码。

以上内容是小编给大家介绍的Unity UGUI教程之实现滑页效果,希望对大家有所帮助!



相关阅读:
ASP.NET MVC5网站开发管理列表、回复及删除(十三)
MySQL实现差集(Minus)和交集(Intersect)测试报告
jsp 连接sql server 2008 连接不上的解决方法
Web安全测试之XSS实例讲解
Java中遍历数组使用foreach循环还是for循环?
c#通过DES加密算法加密大文件的方法
PHP快速按行读取CSV大文件的封装类分享(也适用于其它超大文本文件)
Linux下touch命令有什么作用如何使用?
使用jQuery实现input数值增量和减量的方法
编写高性能Javascript代码的N条建议
XP/Win7系统电脑蓝屏提示2345port.sys错误的解决方法
不是Win10.1 微软正准备10月Win10 RTM预览版TH2更新
javascript实现的弹出层背景置灰-模拟(easyui dialog)
sql server中判断表或临时表是否存在的方法
快速导航
PHP MySQL HTML CSS JavaScript MSSQL AJAX .NET JSP Linux Mac ASP 服务器 SQL jQuery C# C++ java Android IOS oracle MongoDB SQLite wamp 交通频道 作文范文 我家的老外 致我们的梦想 营销总监的辞职报告范本 钻石人生 父亲和祖父 “活力东风西,共圆中国梦”活动 法布尔作文500字 感叹刘恩沄 还是盲人好 最新社会工作实习报告范文 “小手牵大手 共营一片绿”活动倡议书 羊年同事圣诞节祝福语 生日祝福短信搞笑 听课心得体会:习作教学展示研讨课 关于读书笔记的格式怎么写 中考满分作文1000字:让生命充满爱 地质队员弘扬“三光荣”精神心得体会 2017幽默万圣节祝福语 初中文学社活动计划 争做“文明”少年作文500字 小狗——“白白” 《小学生之友》——我的良师益友 ℡. 有一首情章 灬叫做比翼双飞/* “同在蓝天下”中队主题队会活动方案 碎笔2回眸青春 写给最感激的你——读博儿的诗有感作文200字 清明祭扫烈士墓仪式主持词 机械工程应急设计研究 你真的认真了吗? 三年级开学250字作文:开学典礼 -阳桥 小学四年级作文400字:迷人的汇景湖 父母说百遍,他只需要一分钟教会你 心中永远的星星作文1500字 灰姑娘的传说作文400字 鸟作文750字 廉洁自律的格言,民不容贪党不容腐 鹅毛笔和大拇指 读《少年鳄鱼帮》有感 为人生多备一只电筒 高中高三作文900字:季节 朋友是一首歌作文1200字 成功的秘诀其实就这么简单! 寂寞的城市作文150字 遗失的梦想作文800字 2016年镇卫生院年工作总结范文 小狼小狼读后感200字 重庆dna亲子鉴定 落花醉 捉河蚌作文400字

Copyright © 2016 phpStudy |