关卡分页设计

功能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];
        }
    }
}

最新文章

  1. 最近做了了解java基础的一些题,整理自己用到的一些函数和了解的一些名词
  2. Android中的自定义控件(二)
  3. [C#]想说一说嵌套数组
  4. c#和Javascript中去重总结
  5. 初学JavaScript七大注意事项
  6. POJ3267 The Cow Lexicon(DP+删词)
  7. [产品相关] A/B测试终极指南(翻译)
  8. magento
  9. Android开发的进阶之路
  10. 华为OJ:字符串合并处理
  11. Maven初学之经验浅谈
  12. ceph 参数说明&lt;转&gt;
  13. npm -v;报错 cannot find module &quot;wrapp&quot;
  14. linux数据库环境搭建
  15. 二十四、Hadoop学记笔记————Spark的架构
  16. oracle 删除重复记录
  17. Gitee(码云)、Github同时配置ssh key
  18. python调用cmd显示中文乱码及调用cmd命令
  19. Linux下使用OTL操作mysql数据库
  20. 对于低版本IE,ajax的设置处理

热门文章

  1. ubuntu16.04服务器上无root权限,配置个人tensorflow环境--cuda9.0+cuDNN7+tensorflow-gpu-1.8
  2. 如何在Eclipse中查看Java类库的源代码
  3. Linux系统安装jdk——.tar.gz版(old)
  4. python3 导入包总提示no moudle named xxx
  5. wangEditor富文本编辑器使用及图片上传
  6. spring学习笔记之---bean管理
  7. ipv6的连接
  8. kube-proxy源码分析
  9. Appium+python自动化(二十八)- 滑呀滑,滑到奈何桥喝碗孟婆汤 - 高级滑动(超详解)
  10. 自己动手写Spring框架--IOC、MVC