using UnityEngine;
using UnityEngine.UI;
public class ScrollRectCenter:MonoBehaviour
{
public ScrollRect scrollRect;
/// <summary>
/// 适用于水平布局
/// </summary>
public void CenterPoint_H(RectTransform target)
{
float width = scrollRect.content.sizeDelta.x;
int index = target.GetSiblingIndex();
HorizontalOrVerticalLayoutGroup group = scrollRect.content.GetComponent<HorizontalOrVerticalLayoutGroup>();
float posX =( target.sizeDelta.x * (index) + group.spacing * index)/width;
scrollRect.normalizedPosition = new Vector2(posX, 0);
}
/// <summary>
/// 适用于垂直布局
/// </summary>
public void CenterPoint_V(RectTransform target)
{
float height = scrollRect.content.sizeDelta.y;
int index = target.GetSiblingIndex();
HorizontalOrVerticalLayoutGroup group = scrollRect.content.GetComponent<HorizontalOrVerticalLayoutGroup>();
float posY =( target.sizeDelta.y * (index) + group.spacing * index)/height;
scrollRect.normalizedPosition = new Vector2(0, posY);
}
没有找到类似的文章,做个记录,也给有需要的朋友做个参考,我项目里这种UI结构亲测是没问题的: