Unity Scroll教程之 根据内容动态调整Rect大小

2024-11-02 20:10:41

1、打开unity,新建一个工程,具体如下图

Unity Scroll教程之 根据内容动态调整Rect大小

3、给ScrollBG添加Mask和ScrollRect组件,并把其下的GameObject,和ScrollBar对应赋值,具体如下图

Unity Scroll教程之 根据内容动态调整Rect大小Unity Scroll教程之 根据内容动态调整Rect大小

6、ScrollTest脚本的代码和代码说明如下图

Unity Scroll教程之 根据内容动态调整Rect大小

7、ScrollTest脚本的具体内容如下:using UnityEngine;using UnityEngine.UI;public class ScrollTest : MonoBehaviour { //设置获取相关参数 public Transform goParent; public GameObject itemImagePrefab; private Vector2 originSize; // Use this for initialization void Start () { //获取最初goParent的宽高 originSize = goParent.GetComponent<RectTransform>().sizeDelta; } // Update is called once per frame void Update () { //按下空格键调用添加ItemImage if (Input.GetKeyDown(KeyCode.Space)) { AddScrollItem(1); } } private void AddScrollItem(int count) { //生成ItemImage for (int i =0; i < count; i ++) { GameObject go = Instantiate(itemImagePrefab) as GameObject; go.transform.SetParent(goParent); } //调整ScrollRect边框大小 //获取当前的ItemImage的实际个数 int itemImageCount = goParent.childCount; //计算当前实际生成ItemImage所需要的goParent的高度 float ScrollRectY = itemImageCount * ((itemImagePrefab.GetComponent<RectTransform>().sizeDelta.y) + goParent.GetComponent<VerticalLayoutGroup>().spacing); //比原先小则,保持原有尺寸不变,反之,高度设置为所需要的 if (ScrollRectY <= originSize.y) { goParent.GetComponent<RectTransform>().sizeDelta = originSize; } else { goParent.GetComponent<RectTransform>().sizeDelta = new Vector2(originSize.x, ScrollRectY); } }}

8、脚本编译正确,回到Unity界面,在场景中添加一个GameObject挂载脚本,给脚本对应赋值,具体如下图

Unity Scroll教程之 根据内容动态调整Rect大小

10、选中ScrollBG其下的GameObject,调整其Pivot位于中上方,具体如下图

Unity Scroll教程之 根据内容动态调整Rect大小
猜你喜欢