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 交通频道 作文范文 送报 “**省人民满意的公务员”先进事迹——地税局稽查科科长 张爱玲经典爱情语录、张爱玲的语录 情窦初衷 金钱草 作文 我爱你之 生死相依 其实那一年我也有50万 怀疑与学问教学反思 《愿化泥土》课堂实录 有关歌颂祖国的诗歌(现代篇) 可爱的太湖 当值日生真不容易作文700字 记一次劳动600字 我是如何当好政协委员 罐头小人 供电公司年中工作会议报告 有一种美丽叫宽容 现实的人生态度 小学生描写爱的300字作文_将爱洒向世界 小学五年级作文1000字:将爱传递 一双红色绣花鞋 乡村农场交响曲 借朵朵花开,明媚这一季的伤怀 诗人没有死去 和谐文明家庭事迹材料 形容静的成语 越洋电话 初中初一作文650字:只有那时我才知道时间珍贵 读书到底是为了什么 假如我只有活二十天 市一季度经济形势分析及二季度工作计划 关于买卖的合同 守信 初中初一作文750字:我的语文情缘 换牙史550字 勿忘国耻,振兴中华作文500字 骑自行车上班——他骑他的,我骑我的 有趣的历史故事 东施效颦 有这样一个夏天 歌颂母爱作文300字 校园安全演讲稿:重视安全教育 五月怀想 《太白山随感》 忧伤那么长 一千张糖纸的读后感 现代教育技术与素质教育 来生,你如水上清荷款款而来 不能免俗 质量技术监督局产品质量和食品安全专项整治行动方案 不知道你信不信善恶有报,反正我信

Copyright © 2016 phpStudy |