Unity3D制作横向滚动动态自适应列表
我新建了一个测试场景,结构就是添加一个Scroll Rect的组件,然后在Content上添加了一个Horizontal Layout Group组件,item是需要在Content下动态生成的物体。



为了方便查看,我添加了背景和文字,整体如下。

然后下面是代码的部分。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class ScrollHorizontal : MonoBehaviour
{
private GameObject item;
private Transform content;
private Vector2 originSize;
void Start()
{
content = GameObject.Find("Content").GetComponent<Transform>();
originSize = GameObject.Find("Content").GetComponent<RectTransform>().sizeDelta;
item = (GameObject)Resources.Load("item");
}
private void AddItem(int count)
{
for(int i=0; i < count; i++)
{
item = Instantiate(item);
item.transform.SetParent(content);
}
//获取当前的item的实际个数
int itemCount = content.childCount;
//计算当前实际生成item所需要的content的宽度
float ScrollRectX = itemCount * ((item.GetComponent<RectTransform>().sizeDelta.x)
+ content.GetComponent<HorizontalLayoutGroup>().spacing);
//比原先小则,保持原有尺寸不变,反之,宽度设置为所需要的
if (ScrollRectX <= originSize.x)
{
content.GetComponent<RectTransform>().sizeDelta = originSize;
}
else
{
content.GetComponent<RectTransform>().sizeDelta = new Vector2(ScrollRectX, originSize.y);
}
}
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
AddItem(1);
}
}
}
版权声明:本文为qq_36102944原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。