Unity3d中UGUI组件精简复盘(一)RectTransform组件

话不多说,我们直接进入正题~ 今天我们需要了解的组件便是我们在Unity开发中必不可少的组件啦,RectTransform组件啦~


在Unity3D中的组件布局是这样的:

RectTransform组件

在这里插入图片描述

Center模式下,UI部分的轴心点置灰,导致我们无法选中轴心点进行拖动

Pivot模式下,UI部分的轴心点恢复原亮,我们可选中轴心点进行拖动

自定义锚点,子物体可以设置成根据父物体的变化相对变化的效果

在这里插入图片描述

蓝色矩形边长为200,计算红色一点的Anchors的位置是什么?

AnchorsPosition为(0,-100)

Pivot

如果X位置变化,想要Image只向右边的拓展,则将Piovt设置为(0,0.5)

如果y位置都变化,想要Image只向上边扩展,则将Piovt设置为(0.5,1)

如果y位置都变化,想要Image只向下边扩展,则将Piovt设置为(0.5,0)

如果X,y位置都变化,想要Image向四周扩展,则将Piovt设置为(0.5,0.5)

在这里插入图片描述

获取UI宽高的最安全的方式

如何获取到Image组件的宽高?

在这里插入图片描述

size DeltaX = -(Left+Rigth)

size DeltaY = -(Top+Buttom)

蓝图模式和原始编辑模式

在这里插入图片描述

虚线框:蓝图模式

R:原始编辑模式

非蓝图和非编辑模式下,边框会随着Image的旋转缩放变化而变化,边框始终包含渲染图。Anchors的Min、Max值变化只操作锚点位置。操作Pivot的X、Y值的同时,image不会随之运动

蓝图模式下,边框不会随着Image的旋转、缩放而变化,应用在界面的动画的情况下。

原始编辑模式下,Anchors的Min、Max值变化的同时,image的边框也会随之变化。操作Pivot的X、Y值的同时,image会随之运动


以上呢,便是我对Rectransform组件作出的简要的描述,希望能够对你有所帮助~ 也希望你能够点赞、评论吖~ 你们的点赞、评论就是我前进的动力!


公众号:平平无奇代码猴
也可以搜索:Jackiie_wang 公众号,欢迎大家关注!欢迎催更!留言!

公众号二维码

作者:ProMer_Wang

链接:https://blog.csdn.net/qq_43801020/article/details/117531184

本文为ProMer_Wang的原创文章,著作权归作者所有,转载请注明原文出处,欢迎转载!

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
实现一个item列表可以通过 Unity3D 的UGUI组件来完成,以下是一个简单的实现步骤: 1. 创建一个ScrollView对象,它会成为你的item列表的容器。 2. 在ScrollView对象下创建一个Content对象,用于放置所有的item。 3. 创建一个item的Prefab,包含你需要显示的元素。 4. 在运行时,动态生成多个item对象,将它们放置在Content对象下,以此来构建item列表。 5. 根据需要,可以对item列表进行滚动、添加或删除item等操作。 具体实现可以参考以下步骤: 1. 创建ScrollView和Content对象 在场景创建一个空对象,命名为ScrollView。将Canvas组件的Render Mode设置为Screen Space - Overlay,然后将ScrollView对象的RectTransform组件的Anchors和Pivot都设置为(0, 0)。这样,ScrollView对象的左下角就会位于屏幕左下角。在ScrollView对象下创建一个空对象,命名为Content。将Content对象的RectTransform组件的Anchors和Pivot也都设置为(0, 0),以便于它能够与ScrollView对象的位置重合。 2. 创建item的Prefab 在项目资源创建一个新的Prefab,将你需要显示的元素放入其。例如,可以在Prefab添加一个Text对象,用于显示item的标题。确保这个Prefab的RectTransform组件的Anchors和Pivot都设置为(0, 0),以便于在生成item时它们能够正确地布局。 3. 动态生成item对象 在脚本,使用Instantiate()方法动态生成多个item对象,并将它们作为Content对象的子对象。例如: ```csharp public GameObject itemPrefab; public int itemCount = 20; void Start() { for (int i = 0; i < itemCount; i++) { GameObject item = Instantiate(itemPrefab, content.transform); // 设置item的位置和大小 item.GetComponent<RectTransform>().anchoredPosition = new Vector2(0, -i * item.GetComponent<RectTransform>().rect.height); } } ``` 这段代码会生成20个item对象,将它们放置在Content对象下,并设置它们的位置和大小。这里假设item的高度是固定的。 4. 对item列表进行滚动 为了让item列表能够滚动,需要将ScrollView对象下的Scrollbar组件与Content对象的RectTransform组件相绑定。在ScrollView对象下添加一个Scrollbar组件,将它的Direction设置为Vertical,并将它的Size设置为0.2(或根据需要调整)。然后将Scrollbar组件的Value属性绑定到Content对象的RectTransform组件的anchoredPosition.y属性上。这样,当拖动Scrollbar时,Content对象就会相应地向上或向下滚动。 5. 添加或删除item 如果需要动态地添加或删除item,可以在脚本使用Instantiate()和Destroy()方法来完成。例如: ```csharp public void AddItem() { GameObject item = Instantiate(itemPrefab, content.transform); // 设置新的item的位置和大小 item.GetComponent<RectTransform>().anchoredPosition = new Vector2(0, -itemCount * item.GetComponent<RectTransform>().rect.height); itemCount++; } public void RemoveItem() { if (itemCount > 0) { Destroy(content.transform.GetChild(itemCount - 1).gameObject); itemCount--; } } ``` 这样,就可以在运行时动态地添加或删除item了。当添加一个新的item时,只需生成一个新的GameObject,并将它放置在Content对象下;当删除一个item时,只需销毁Content对象下的最后一个子对象即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值