多语言展示
当前在线:716今日阅读:60今日分享:41

UGUI:实现ScrollRect拖动到最底添加下一页内容

如果ScrollRect的内容是分页设计的,想实现ScrollRect拖动到最底端再获取下一页,如果实现呢,见下文。
工具/原料

Unity

方法/步骤
1

打开Unity3D后,单击菜单GameObject->UI->Panel,创建一个Panel。如下图:

2

创建好Panel之后,选中Canvas,单击鼠标右键,选中UI->Scrollbar,创建一个ScrollBar。

3

把scrollbar的Direction设置成Bottom To Top如下图:

4

在刚刚创建好的Panel下添加ScrollRect和Mask组件,添加方法如下图:

5

添加好ScrollRect后,把之前创建好的ScrollBar拖到ScrollRect的Vertical Scrollbar上。如下图:

6

选中Panel,右键单击鼠标,选中CreateEmpty,将创建的新对象命名为grid

7

在grid下添加Grid Layout Group和Content Size Fitter组件,并如下设置。

8

选中Panel,单击鼠标右键,选择UI->Panel,并将创建好的Panel命名为Item

9

选中刚刚创建好的Item,单击鼠标右键,选择UI->Text,创建Text

10

创建一个脚本文件,命名为ItemControl.cs输入一下内容:using UnityEngine;using System.Collections;using UnityEngine.UI;public class ItemControl : MonoBehaviour {    private Text labText;    public void setItem(string str)    {        labText = transform.GetComponentInChildren();        labText.text = str;    }}

11

将ItemControl.cs添加到Item上,如下图

12

创建脚本ScrollRectControl.cs输入一下内容:using UnityEngine;using System.Collections;using UnityEngine.UI;using UnityEngine.EventSystems;public class ScrollRectControl : MonoBehaviour, IEndDragHandler{    public Scrollbar bar;    private ScrollRect scrollRect;    private GameObject item;    private GameObject grid;    void Start()    {        scrollRect = transform.GetComponent();        item = transform.FindChild('Item').gameObject;        grid = transform.FindChild('grid').gameObject;        addItem();    }    public void OnEndDrag(PointerEventData eventData)    {        if (bar.value <= 0)        {            addItem();        }    }    void addItem()    {        for (int i = 0; i < 5; i++)        {            GameObject newItem = addChild(item, grid);            newItem.SetActive(true);            string str = string.Format('第{0}项时间为{1}',i,System.DateTime.Now);            newItem.GetComponent().setItem(str);        }    }    public static GameObject addChild(GameObject o, GameObject parent)    {        if (o == null || parent == null)        {            return null;        }        GameObject inst = GameObject.Instantiate(o) as GameObject;        inst.transform.SetParent(parent.transform, false);        inst.transform.localPosition = Vector3.zero;        inst.transform.localScale = Vector3.one;        return inst;    }}

13

将ScrollRectControl.cs添加到Panel上,并将Scrollbar拖到ScrollRectControl的Bar上,如下图:

14

运行,看效果:刚运行时,添加了5个Item项,当拖动到ScrollRect末尾时,又添加了5个Item项。是不是很简单。

推荐信息