基于Unity3D的滑动面板的实现

来源:互联网 发布:linux漏洞 在哪 编辑:程序博客网 时间:2024/06/04 23:30

滑动面板在制作帮助界面时经常被用到,功能如图所示:



代码如下:

using UnityEngine;using System.Collections;using UnityEngine.EventSystems;using System.Collections.Generic;using UnityEngine.UI;public class SilderPanel : MonoBehaviour,IDragHandler,IEndDragHandler{//显示信息的Textpublic Text pageNumberText;//滑动是图片移动的速度public float dragSpeed = 10;//滑到下一页的判断条件public float offsetSpeed = 3;//移动到下一页的速度public float moveSpeed = 10;//子页总数private int totalPageNumber=5;//当前滑动的偏移量private Vector2 delta;//是否滑倒下一页private bool isHoming = false;//当前的页数private int index = 0;//父物体以计算相对位置private Transform parentTF;//介绍页private List< Transform> childArrayList;    void Start()    {        parentTF = this.transform.parent;totalPageNumber = this.transform.childCount;childArrayList = new List<Transform> (totalPageNumber);for (int i = 0; i < totalPageNumber; i++) {childArrayList.Add (this.transform.GetChild (i));}pageNumberText.text = (index + 1) + "/" + totalPageNumber;    }void Update(){Homing();}    //1.拖拽时移动     public void OnDrag(PointerEventData eventData)    {        delta = eventData.delta;        this.transform.Translate(delta.x * Time.deltaTime * dragSpeed, 0, 0);    }    //2.归位      public void OnEndDrag(PointerEventData eventData)    {        //如果速度达到1        if (Mathf.Abs(delta.x) >= offsetSpeed)        {            //归位            //鼠标向左移动 , 物体向左移动             if (delta.x < 0)                index++;            else                index--;            //限制索引范围            index = Mathf.Clamp(index, 0, childArrayList.Count - 1);        }        isHoming = true;        pageNumberText.text = (index + 1) + "/" + totalPageNumber;    }//3.呈现界面    private void Homing()    {        if (isHoming)        {            Vector3 targetPosition = parentTF.position - childArrayList[index].position + this.transform.position;            this.transform.position = Vector3.Lerp(this.transform.position, targetPosition, Time.deltaTime * moveSpeed);            //如果当前面板 接近 目标位置            if ((this.transform.position - targetPosition).sqrMagnitude<1)            {                this.transform.position = targetPosition;                isHoming = false;            }        }    }}
工程下载地址:http://download.csdn.net/download/yongshuangzhao/10162471
原创粉丝点击