Unity-RectTransform设置UI width

不知道有没人需要这样的代码,就是.sizeDelta //不确定是不是英文翻译的原因,基本很难理解,sizeDelta===Size,//未必完全正确,但这么写好像总没错过

//image 在一个UnityEngine.UI.Image 的数组内
        foreach (var image in lstOfButtons) {
            var rectangle =image.rectTransform.rect;
            rectangle.width = buttonSize.x;
            rectangle.height = buttonSize.y;
            //不能这么写
            //image.rectTransform..rect = rectangle;
            var t = image.GetComponent<RectTransform>();
            var RECT = t.rect;

            
            image.rectTransform.sizeDelta = buttonSize;//buttonSize 是 Vector2
        }

很多年前,分享过这个项目

Unity判断鼠标点击是否在某个窗口 RectTransform 内_unity rectanglecontainsscreenpoint-优快云博客

原理

RectTransform是一个很特殊的存在//上面的代码已经明显,指出了

因为,一般人的理解

GameObject

Transform,

已经觉得Unity有些多此一举了

(实际上Transform 也是GameObject的一个Component)

应该是可以AddComponent<Transform>()不是么

但实际上只能,AddComponent<RectTransform>()

这是为什么呢

主要还是历史原因

我很难说这个结构到底有什么好,但古今中外,那么一二十年的游戏引擎经验,我从未见第二个个引擎能做到

(没有这个结构的,自以为简单的就是做不好)

很多引擎觉得transform多省事,就是

gameobject

---Transform

---Component

这样的结构多好,多简单

实际上,最重要的结构就是Unity隐藏起来的:RectTransform

这是一个特殊的Component,特殊的UI结构(也是必然的UI结构)

因为一个比较符号用户习惯的UI编辑器有三部分

RectTransform几乎完美的融合你这三部分(用最简单,最贴近用户的做法,虽然API名字有些怪异)

并不是程序正义,而是符合用户习惯。。。

参考:

https://baike.baidu.com/item/%CE%B4/3300125

Unity设置UI大小可以通过多种方式实现,具体方法取决于你使用的UI系统和需求。以下是一些常见的方法: 1. **使用RectTransform组件**: - 选择你想要调整大小的UI元素。 - 在Inspector面板中找到RectTransform组件。 - 调整Width和Height值来设置UI元素的度和度。 2. **使用Anchors和Pivot**: - Anchors用于定义UI元素相对于父物体的位置和大小。 - Pivot定义UI元素的旋转和缩放中心点。 - 通过调整Anchors和Pivot,可以实现UI元素在不同分辨率下的自适应。 3. **使用Canvas Scaler**: - 选择Canvas物体。 - 在Inspector面板中找到Canvas Scaler组件。 - 设置UI Scale Mode为Scale With Screen Size。 - 设置Reference Resolution为设计时的分辨率。 - 设置Screen Match Mode来控制UI在不同分辨率下的缩放方式。 4. **使用Layout Group**: -UI元素的父物体上添加Layout Group组件(如Horizontal Layout Group、Vertical Layout Group或Grid Layout Group)。 - Layout Group可以自动调整子UI元素的大小和位置。 5. **动态调整UI大小**: - 通过编写脚本来动态调整UI元素的大小。 - 例如,可以使用以下代码来调整UI元素的度和度: ```csharp using UnityEngine; public class ResizeUI : MonoBehaviour { public RectTransform uiElement; public float newWidth; public float newHeight; void Start() { uiElement.sizeDelta = new Vector2(newWidth, newHeight); } } ``` 通过上述方法,你可以根据具体需求灵活地设置和调整Unity中的UI大小。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

avi9111

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值