Unity-RectTransform设置UI width

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

cs 复制代码
//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-CSDN博客

原理

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

因为,一般人的理解

GameObject

Transform,

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

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

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

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

这是为什么呢

主要还是历史原因

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

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

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

gameobject

---Transform

---Component

这样的结构多好,多简单

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

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

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

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

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

相关推荐
大熊猫侯佩5 小时前
浪浪山 iOS 奇遇记:给 APP 裹上 Liquid Glass “琉璃罩”(下集)
ui·界面设计·ios 26·液态玻璃·liquid glass·glass effect·glass container
不老刘8 小时前
Base UI:一款极简主义的「无样式」组件库
前端·ui
hqwest9 小时前
QT肝8天16--加载动态菜单
开发语言·数据库·qt·ui·sqlite
兰亭妙微16 小时前
[特殊字符]灵感补给站 | pinterest 设计灵感分享 UI版面设计3
ui·审美积累·桌面端界面设计·ui设计公司
兰亭妙微16 小时前
兰亭妙微QT软件开发与UI设计协同:如何避免设计与实现脱节?
开发语言·qt·ui
开心-开心急了17 小时前
PySide6 文本编辑器(QPlainTextEdit)实现查找功能——重构版本
开发语言·python·ui·重构·pyqt
雪下的新火18 小时前
爆炸特效-Unity-04-shader&粒子系统
经验分享·笔记·unity·游戏引擎·shader·粒子系统
我命由我1234519 小时前
Photoshop - Photoshop 工具栏(4)套索工具
经验分享·笔记·学习·ui·职场和发展·职场·photoshop
我命由我1234519 小时前
Photoshop - Photoshop 更改图像大小
笔记·学习·ui·职场和发展·职场发展·photoshop·ps
大Mod_abfun1 天前
Unity游戏基础-2(初识场景~项目构建)
游戏·unity·游戏引擎