找回密码
 注册帐号

扫一扫,访问微社区

GUI UGUI RectTransform应该如何设置

7
回复
739
查看
[ 复制链接 ]
5熟悉之中
528/1000
排名
12480
昨日变化

18

主题

188

帖子

528

积分

Rank: 5Rank: 5

UID
310955
好友
0
蛮牛币
1098
威望
0
注册时间
2019-1-7
在线时间
230 小时
最后登录
2020-6-2
2019-9-27 14:46:40 显示全部楼层 阅读模式
118蛮牛币
本帖最后由 dog!egg 于 2019-9-27 15:05 编辑

如图,需要所有比例(16:9 / 16:10 / 4:3)下同效果,上面的plane要在左右贴边,佔屏幕最顶1/5。左侧plane贴左边,高度为屏幕4/5,宽度固定400px,plane里面的图片按plane的比例,位置不变。
请问这些plane 和 image 的 RectTransform 应该如何设定?

44227.png


回复

使用道具 举报

5熟悉之中
723/1000
排名
11086
昨日变化

1

主题

235

帖子

723

积分

Rank: 5Rank: 5

UID
205241
好友
0
蛮牛币
386
威望
0
注册时间
2017-2-6
在线时间
395 小时
最后登录
2020-6-5
2019-9-27 16:32:30 显示全部楼层
plane位置放在左下,宽400,高为屏幕分辨率h的4/5.这好弄,plance里面的图片按plance的比例是什么意思?表示Image的款不变,高随分辨率的大小或者plance的高变换而变化
回复

使用道具 举报

5熟悉之中
734/1000
排名
5899
昨日变化

0

主题

73

帖子

734

积分

Rank: 5Rank: 5

UID
100591
好友
0
蛮牛币
891
威望
0
注册时间
2015-5-15
在线时间
425 小时
最后登录
2020-6-1
2019-9-28 13:55:07 显示全部楼层
应该可以用stretch  不用锚点抓区
回复

使用道具 举报

5熟悉之中
954/1000
排名
4799
昨日变化

10

主题

129

帖子

954

积分

Rank: 5Rank: 5

UID
252255
好友
0
蛮牛币
368
威望
0
注册时间
2017-11-2
在线时间
514 小时
最后登录
2020-5-29
2019-9-29 09:58:23 显示全部楼层
那你还是用layout组件和父物体的layoutGroup组件做适配吧
回复

使用道具 举报

3偶尔光临
168/300
排名
39865
昨日变化

0

主题

22

帖子

168

积分

Rank: 3Rank: 3Rank: 3

UID
289585
好友
0
蛮牛币
390
威望
0
注册时间
2018-7-12
在线时间
140 小时
最后登录
2020-6-5
2019-9-30 10:01:41 显示全部楼层
如图在Canvas Scaler设置16:9的比例,希望可以帮到你
97410852ac57ebb292b2c794d8dab880.png
回复

使用道具 举报

排名
6934
昨日变化

4

主题

352

帖子

770

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
5146
好友
2
蛮牛币
3
威望
0
注册时间
2013-10-8
在线时间
224 小时
最后登录
2020-3-18

认证开发者

2019-11-28 10:01:31 显示全部楼层
应该可以用stretch  不用锚点抓区
回复

使用道具 举报

3偶尔光临
174/300
排名
11989
昨日变化

1

主题

44

帖子

174

积分

Rank: 3Rank: 3Rank: 3

UID
150591
好友
0
蛮牛币
278
威望
0
注册时间
2016-6-2
在线时间
49 小时
最后登录
2019-12-25
2019-12-4 18:29:16 显示全部楼层




锚点跟对齐方式参考图片
还须加上代码抓屏幕的大小
如果会动态改变的话,要再加上判断
[C#] 纯文本查看 复制代码
public RectTransform background;
	public RectTransform nav;
	public RectTransform menu;
	float nav_height;
	void Start()
    {
        nav_height = Screen.height/5;
		background.GetComponent<RectTransform>().sizeDelta = new Vector2 (0, Screen.height*4/5);
		nav.GetComponent<RectTransform>().sizeDelta = new Vector2 (0, nav_height);
		menu.GetComponent<RectTransform>().sizeDelta = new Vector2 (400, Screen.height-nav_height);
    }
回复

使用道具 举报

6蛮牛粉丝
1184/1500
排名
3345
昨日变化

2

主题

191

帖子

1184

积分

Rank: 6Rank: 6Rank: 6

UID
52792
好友
3
蛮牛币
2010
威望
0
注册时间
2014-11-3
在线时间
545 小时
最后登录
2020-6-5
2019-12-4 22:13:26 显示全部楼层
共同学习,共同进步。
能用到的大概有3处地方:1、anchors  2、pivot 3、canvas的scaler
1、anchors  锚点,就是当前panel要固定在屏幕的什么位置,其实是由4个小三角标出的一个rect,min是rect左下角的坐标,max是rect右上角的坐标;
下图中的情况是min和max的y值都是1,表示panel要固定在屏幕顶端。
未标题-1.png

2、pivot 坐标原点,就是上图中小圆圈的位置(坐标系要设成pivot | local比较直观),这时候改变topPanel的height值会发现,topPanel顶部不动,底部大小变化。
同理 leftPanel的值 ancho 的值0,0,0,0,pivot 0,0,改变leftPanel的height,底部不动,顶部大小变化,改变width,左边不动,右边大小变化。
3、canvas的scaler 设置,原始分辨率1920*1080(16:9),滑动条的值为0表示保持宽度比例,为1表示保持高度比例。
上边的要求就是保持高度比例不变,设为1。

2

2

这时修改分辨率,1600*1000   1024*768(4:3),发现可以满足上述要求了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则