unity_UGUI养成之路03
关卡分页设计
功能1:通过直接滑动:
添加自动排序组件
设置通过添加组件设置内容的滑动,多余内容的隐藏
功能2:通过点击下面的圆圈滑动
上述代码实现:
using UnityEngine;
using System.Collections;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class LevelButtonScrollRect : MonoBehaviour ,IBeginDragHandler,IEndDragHandler
{
private ScrollRect scrollRect;
public float smoothing = 4; //插值的速度
private float[] pageArray=new float[]{ 0,0.33333f,0.66666f,1 }; //每个页面X轴坐标
private float targetHorizontalPosition=0; //距离最近页面的X坐标
private bool isDraging = false; //是否拖拽的标志位
public Toggle[] toggleArray; //圆圈数组
void Start ()
{
scrollRect = GetComponent<ScrollRect>();
}
void Update ()
{
if(isDraging==false)
scrollRect.horizontalNormalizedPosition = Mathf.Lerp(scrollRect.horizontalNormalizedPosition,
targetHorizontalPosition, Time.deltaTime*smoothing);
}
public void OnBeginDrag(PointerEventData eventData)
{
isDraging = true;
}
public void OnEndDrag(PointerEventData eventData)
{
isDraging = false;
//找到当前位置与每页距离最小的页面,并切换到该页面
float posX = scrollRect.horizontalNormalizedPosition;
int index = 0;
float offset = Mathf.Abs(pageArray[index] - posX);
for (int i = 1; i < pageArray.Length; i++)
{
float offsetTemp = Mathf.Abs(pageArray[i] - posX);
if (offsetTemp < offset)
{
index = i;
offset = offsetTemp;
}
}
targetHorizontalPosition = pageArray[index];
toggleArray[index].isOn = true;
//scrollRect.horizontalNormalizedPosition = pageArray[index];
}
public void MoveToPage1(bool isOn) {
if (isOn)
{
targetHorizontalPosition = pageArray[0];
}
}
public void MoveToPage2(bool isOn) {
if (isOn) {
targetHorizontalPosition = pageArray[1];
}
}
public void MoveToPage3(bool isOn) {
if (isOn)
{
targetHorizontalPosition = pageArray[2];
}
}
public void MoveToPage4(bool isOn) {
if (isOn)
{
targetHorizontalPosition = pageArray[3];
}
}
}
最新文章
- 最近做了了解java基础的一些题,整理自己用到的一些函数和了解的一些名词
- Android中的自定义控件(二)
- [C#]想说一说嵌套数组
- c#和Javascript中去重总结
- 初学JavaScript七大注意事项
- POJ3267 The Cow Lexicon(DP+删词)
- [产品相关] A/B测试终极指南(翻译)
- magento
- Android开发的进阶之路
- 华为OJ:字符串合并处理
- Maven初学之经验浅谈
- ceph 参数说明<;转>;
- npm -v;报错 cannot find module ";wrapp";
- linux数据库环境搭建
- 二十四、Hadoop学记笔记————Spark的架构
- oracle 删除重复记录
- Gitee(码云)、Github同时配置ssh key
- python调用cmd显示中文乱码及调用cmd命令
- Linux下使用OTL操作mysql数据库
- 对于低版本IE,ajax的设置处理
热门文章
- ubuntu16.04服务器上无root权限,配置个人tensorflow环境--cuda9.0+cuDNN7+tensorflow-gpu-1.8
- 如何在Eclipse中查看Java类库的源代码
- Linux系统安装jdk——.tar.gz版(old)
- python3 导入包总提示no moudle named xxx
- wangEditor富文本编辑器使用及图片上传
- spring学习笔记之---bean管理
- ipv6的连接
- kube-proxy源码分析
- Appium+python自动化(二十八)- 滑呀滑,滑到奈何桥喝碗孟婆汤 - 高级滑动(超详解)
- 自己动手写Spring框架--IOC、MVC