Unity实现滑页效果(UGUI)

摘要:
介绍项目需要……直接显示效果:原理是使用UGUI提供的ScrollRect和ScrollBar组件来实现基本滑动,并控制每次一页的移动以实现滑动效果。“);break;}mNeedMove=true;}voidUpdate(){if{m_Scrollbar.value=mTargetValue;mNeedMove=false;return;}m_Scrollbar.value=数学。平滑阻尼;}}总结mathf为移动设备提供的平滑功能。如果你需要阻尼效果,你可以自己修改代码。
简介
项目需要...直接展示效果吧:

这里写图片描述

原理
使用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)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇React Native学习-调取摄像头第三方组件:react-native-image-pickerC# 从数据包获取校验和下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

UFPS入门: Unity FPS 教程

http://blog.csdn.net/kmyhy/article/details/72846348 UFPS : Ultimate FPS v1.7.3  download:https://item.taobao.com/item.htm?spm=a1z38n.10677092.0.0.11891deb83c0WO&id=57129885...

Unity3D ZFBrowser (EmbeddedBrowser) 插件嵌入网页无法输入中文问题

  网页嵌入插件最好的应该就是ZFBrowser了, 可是使用起来也是问题多多, 现在最要命的是网页输入不能打中文, 作者也没打算接入IME, 只能自己想办法了...   搞了半天只想到一个办法, 就是通过Unity的IME去触发中文输入, 然后传入网页, 也就是说做一个透明的 InputField 盖住网页的输入文本框, 然后在 Update 或是 on...

Unity学习——粒子系统(Particle System)

内置粒子系统(Bulit-in Particle System) Unity内置粒子系统允许你在Unity支持的平台中产生特效。 可以使用 C#脚本来与系统和脚本中的粒子个体交互。 粒子系统能使用Unity的底层物理系统,故可以和场景中的 Colliders交互。 使用内置粒子系统 内置粒子系统使用组件,所以在场景中放置一个粒子系统就是添加一个预先制作...

UGUI 实现Button长按效果(RepeatButton)

Tag:加入了一个延迟,在button按下状态一段时间后再開始 repeate using UnityEngine; using UnityEngine.Events; using UnityEngine.EventSystems; using System.Collections; public class RepeatPressEventTrig...

Unity3D研究之支持中文与本地文件的读取写入(转)

前几天有个朋友问我为什么在IOS平台中可以正常的读写文件可是在Android平台中就无法正常的读写。当时因为在上班所以我没时间来帮他解决,晚上回家后我就拿起安卓手机真机调试很快就定位问题所在,原来是他文件的路径写错了。开发中往往一道很难的问题解开的时候发现原来真的非常的简单,哇咔咔。 刚好在MOMO的书中也有涉及到文件的读取与写入,那么本节我将书中的部分...

从屏幕刷新频率到Unity VSync

显示器有一个属性叫屏幕刷新频率,它是指每秒刷新屏幕的次数,单位为Hz,一般设置为60Hz。 什么是刷新屏幕呢?我们屏幕是由像素矩阵组成的,其(CRT)显示图像的原理是靠电子束从左到右、从上到下逐行激发屏幕内表面的荧光粉单元(像素)来实现的。电子束一次水平方向的扫描叫行扫描,一次完整的扫描就是刷新屏幕,形成的图像就是一帧。因此60Hz的刷新率也就是每秒60...