滚动测试-----匹配scrollvalue使图片滑动到指定区域

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class SliderControl : MonoBehaviour {

public Scrollbar m_Scrollbar;//水平滚动条
public ScrollRect m_ScrollRect;//水平滚动区域

float mTargetValue;//鼠标触发点的值
bool mNeedMove = false;//是否需要运动
const float MOVE_SPEED = 1F;//平滑运动的速度
const float SMOOTH_TIME = 0.2F;//平滑运动时的时间
float mMoveSpeed = 0f;//滚动的速度
public void OnPointerDown()
{
mNeedMove = false;//当鼠标移开时,不需要再移动
}

public void OnPointerUp()
{
// 判断当前位于哪个区间,设置自动滑动至那个指定的位置
//设置三个运动的区域临界值
if (m_Scrollbar.value <= 0.3f)
{
mTargetValue = 0;
}
else if (m_Scrollbar.value <= 0.75f)
{
mTargetValue = 0.5f;
}
else
{
mTargetValue = 1;
}

mNeedMove = true;
mMoveSpeed = 0;
}

public void OnButtonClick(int value)
{
switch (value)
{//转换这三个button与触发点的值
case 1:
mTargetValue = 0;
break;
case 2:
mTargetValue = 0.5f;
break;
case 3:
mTargetValue = 1f;
break;
default:
Debug.LogError("!!!!!");
break;
}
mNeedMove = true;
}

void Update()
{
if (mNeedMove)
{//判断绝对值是否小于0.01f,小于就停止运动,默认触发点的值与滚动值相等
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);
}
}
}

 

 添加好topPanel和三个button的事件

 

posted @ 2016-07-04 16:27  Fei非非  阅读(387)  评论(0编辑  收藏  举报