using UnityEngine;
using System.Collections;
/* NGUI ScrollView
* 功能:点击scrollview里面的item,检测如果item被遮挡自动滚动scrollview使当前item显示出来
*/
public class ScrollviewItemFit : MonoBehaviour
{
//所在的scrollview
public UIScrollView ScrollView;
//滚动值
public float delta = -0.5f;
//可手动调节的item宽度或者高度的一半
public float height = 400f;
/// <summary>
/// 初始化
/// </summary>
void Start()
{
// 获取scrollview
ScrollView = GetComponentInParent<UIScrollView>();
}
/// <summary>
/// 点击事件
/// </summary>
void OnClick()
{
//panel的裁剪区域
Vector4 region = ScrollView.panel.finalClipRegion;
//item在scrollview坐标系下的位置
var localPos = ScrollView.transform.InverseTransformPoint(transform.position);
//1.纵向滚动的情况
if (this.ScrollView.canMoveVertically)
{
if (localPos.y < region.y - region.w + height)
{
//排除scrollWheelFactor对灵敏度的影响
this.ScrollView.Scroll(delta / this.ScrollView.scrollWheelFactor);
}
if (localPos.y > region.y + region.w - height)
{
this.ScrollView.Scroll(-delta / this.ScrollView.scrollWheelFactor);
}
}
//2.横向滚动的情况
if (ScrollView.canMoveHorizontally)
{
if (localPos.x < region.x - region.z + height)
{
//排除scrollWheelFactor对灵敏度的影响
this.ScrollView.Scroll(delta / this.ScrollView.scrollWheelFactor);
}
if (localPos.x > region.x + region.z - height)
{
this.ScrollView.Scroll(-delta / this.ScrollView.scrollWheelFactor);
}
}
}
}