开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

蛮牛译馆

关注:579

当前位置:游戏蛮牛 技术专区 蛮牛译馆

查看: 2160|回复: 14

[外文翻译] 独立团队为移动设备做游戏时提高Unity UI性能的建议

[复制链接]  [移动端链接]
排名
7947
昨日变化
5

260

主题

298

帖子

1511

积分

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

UID
159865
好友
9
蛮牛币
3908
威望
0
注册时间
2016-8-1
在线时间
623 小时
最后登录
2017-10-15

蛮牛译员

发表于 2017-8-22 14:51:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册帐号

x
独立团队为移动设备做游戏时提高Unity UI性能的建议

有一个名为"Unite Europe 2017 - Squeezing Unity: Tips for raising performance"的Unity开发演讲,由伊恩·邓多尔(Ian Dundore)为你在游戏中可以做的事情,通过解释Unity在幕后的工作原理来提高Unity的表现。

更新:我刚刚注意到(当我即将完成这篇文章的时候),Ian在2016年的“Unite 2016 - Let ' s talk(内容)优化”中有另一个对话,也有其他的好建议。


有两种方法可以提高我们在工作中使用的Unity UI的性能,他们没有在视频中提到,我们想在这篇博文中分享它们。其中一个是使用CanvasGroup组件,另一个是使用RectMask2D



CanvasGroup

CanvasGroup组件控制在其RectTransform层次结构中所有元素的alpha值,以及这个层次结构是否处理输入。第一个主要用于渲染目的,第二个用于用户交互。



对于canvas来说,最棒的是,如果你想避免渲染一个元素的层次结构,你可以把alpha值设为0,这样就避免了将它发送到提高gpu使用率的队列,或者至少是FrameDebugger和我们的性能测试说的那样。如果您还想避免使用事件系统中的事件的层次结构,您可以关闭块raycast属性,这将避免对其子元素的所有raycast检查,从而提高cpu使用率。两者的结合很重要。它也比用canvas来遍历所有的子集并禁用它们更容易,也更友好。同样,禁用/启用所有处理raycast的对象。

在我们的例子中,在工作中,我们使用了多个Canvas对象,并使用Canvas alpha和block raycast属性将所有的对象都“禁用”(没有呈现或处理输入)。这提高了激活和停用我们的metagame屏幕的速度,因为它避免了重新生成网格和计算布局,这也是GameObject SetActive()所做的。




RectMask2D

在使用掩码时,它可以以某种方式隐藏部分屏幕,甚至使用特定的形状。我们在metagame屏幕上使用了大量的mask,主要是用一种不错的方式显示在ScrollRect中的内容。



我们开始使用掩模组件,用一个没有Sprite的图像,来裁剪我们想要的。尽管它运行良好,但在移动设备上表现不佳。在对FrameDebugger进行了一些调查之后,我们发现我们有大量的渲染调用,这是在ScrollRect(和掩码)之外的。



由于我们只是使用 rectangle containers对那些scrollrect,所以我们改为使用RectMask2D。对于带有很多元素的ScrollRects,这种变化极大地提高了性能,因为它就像掩码之外的元素,在渲染调用方面已经不再存在了。


这是一个很大的改变,但只有当你使用矩形容器时,它才会起作用。注意,Unity UI掩码教程只是展示了图像掩码,并没有说明任何关于性能成本的内容(应该如此)

注意:在使用掩码时,有一种常见的方法是在掩码上添加一些东西,以隐藏可能的丑陋的掩码边框,我们通常会在不覆盖所有屏幕的所有ScrollRect上这样做。




附赠的黑科技:The touch hack

还有一个,黑科技,我们叫它Touch hack。这是一种处理屏幕上的触摸的方法,不需要渲染penalty,我不确定这是不是一个很好的提示,但它帮助了我们


当在屏幕上处理触摸时,我们首先想到的是使用一个没有Sprite设置的图像,将它扩展到启用了raycast的所有屏幕上。这很正常,但它不仅打破了这批产品,而且还把一个巨大的空透明的quad呈现给所有在移动设备上非常糟糕的屏幕。


我们的解决方案是使用一个文本来作为替代,也扩大到所有屏幕但没有字体没有文本集。正如预期的那样,它不消耗呈现时间(在移动设备上测试)和处理raycasts,我觉得这是因为它不生成网格(因为它没有文字和字体设置),同时还有raycasts配置的边界框。


结论

要有很好的工具来检测问题所在,了解你是否在进步,这一点非常重要。我们使用了很多框架调试器(查看正在绘制的内容、有多少渲染调用等)、overdraw场景视图和Profiler(查看Unity UI CPU成本)。
希望这些技巧能帮助你在使用Unity UI来提高你的游戏的性能。

更多


Implementing Multiple Canvas Groups In Unity 5 - http://www.israel-smith.com/thou ... -groups-in-unity-5/






原文标题:Our tips to improve Unity UI performance when making games for mobile devices


回复

使用道具 举报

7日久生情
1975/5000
排名
6332
昨日变化
48

4

主题

1622

帖子

1975

积分

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

UID
209186
好友
3
蛮牛币
2561
威望
0
注册时间
2017-3-1
在线时间
191 小时
最后登录
2017-10-23
发表于 2017-8-23 09:16:07 | 显示全部楼层
独立团队为移动设备做游戏时提高Unity UI性能的建议

回复 支持 反对

使用道具 举报

5熟悉之中
925/1000
排名
3958
昨日变化
1

0

主题

467

帖子

925

积分

Rank: 5Rank: 5

UID
156480
好友
0
蛮牛币
1498
威望
0
注册时间
2016-7-12
在线时间
172 小时
最后登录
2017-10-19
发表于 2017-8-24 09:04:16 | 显示全部楼层
FairyGUI  你可以了解下

回复 支持 反对

使用道具 举报

5熟悉之中
579/1000
排名
4856
昨日变化
29

0

主题

217

帖子

579

积分

Rank: 5Rank: 5

UID
122160
好友
0
蛮牛币
1143
威望
0
注册时间
2015-9-10
在线时间
140 小时
最后登录
2017-10-23
发表于 2017-8-24 09:34:40 | 显示全部楼层
感谢分享

回复

使用道具 举报

7日久生情
1820/5000
排名
1644
昨日变化
7

8

主题

673

帖子

1820

积分

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

UID
68430
好友
3
蛮牛币
6956
威望
0
注册时间
2015-1-14
在线时间
475 小时
最后登录
2017-10-23
发表于 2017-8-24 09:55:22 | 显示全部楼层
路过看看~~

回复

使用道具 举报

3偶尔光临
233/300
排名
10341
昨日变化
12

0

主题

94

帖子

233

积分

Rank: 3Rank: 3Rank: 3

UID
238972
好友
1
蛮牛币
145
威望
0
注册时间
2017-8-22
在线时间
68 小时
最后登录
2017-10-24
发表于 2017-8-30 19:25:18 | 显示全部楼层

回复

使用道具 举报

2初来乍到
111/150
排名
15300
昨日变化
10

0

主题

58

帖子

111

积分

Rank: 2Rank: 2

UID
206442
好友
0
蛮牛币
183
威望
0
注册时间
2017-2-14
在线时间
22 小时
最后登录
2017-9-6
发表于 2017-9-1 09:18:23 | 显示全部楼层
多谢分享

回复

使用道具 举报

4四处流浪
346/500
排名
7618
昨日变化
9

3

主题

167

帖子

346

积分

Rank: 4

UID
234982
好友
0
蛮牛币
670
威望
0
注册时间
2017-7-30
在线时间
64 小时
最后登录
2017-10-22
发表于 2017-9-4 13:30:34 | 显示全部楼层
蛮牛币好少

回复

使用道具 举报

5熟悉之中
925/1000
排名
3958
昨日变化
1

0

主题

467

帖子

925

积分

Rank: 5Rank: 5

UID
156480
好友
0
蛮牛币
1498
威望
0
注册时间
2016-7-12
在线时间
172 小时
最后登录
2017-10-19
发表于 2017-9-6 09:01:54 | 显示全部楼层
FairyGUI  你可以了解下

回复 支持 反对

使用道具 举报

5熟悉之中
571/1000
排名
5320
昨日变化
38

0

主题

222

帖子

571

积分

Rank: 5Rank: 5

UID
220310
好友
0
蛮牛币
906
威望
0
注册时间
2017-5-2
在线时间
151 小时
最后登录
2017-10-23
发表于 2017-9-19 18:48:09 | 显示全部楼层

回复

使用道具 举报

5熟悉之中
925/1000
排名
3958
昨日变化
1

0

主题

467

帖子

925

积分

Rank: 5Rank: 5

UID
156480
好友
0
蛮牛币
1498
威望
0
注册时间
2016-7-12
在线时间
172 小时
最后登录
2017-10-19
发表于 2017-9-21 09:54:37 | 显示全部楼层
66666666666

回复

使用道具 举报

3偶尔光临
171/300
排名
9884
昨日变化
129

0

主题

50

帖子

171

积分

Rank: 3Rank: 3Rank: 3

UID
214903
好友
0
蛮牛币
260
威望
0
注册时间
2017-3-28
在线时间
45 小时
最后登录
2017-10-23
发表于 2017-9-21 10:52:11 | 显示全部楼层
写的不错,马克一下6666

回复 支持 反对

使用道具 举报

排名
15300
昨日变化
10

4

主题

17

帖子

77

积分

Rank: 2Rank: 2

UID
168439
好友
0
蛮牛币
55
威望
0
注册时间
2016-9-13
在线时间
24 小时
最后登录
2017-9-30
发表于 2017-9-30 15:56:54 | 显示全部楼层

回复

使用道具 举报

3偶尔光临
171/300
排名
9884
昨日变化
129

0

主题

50

帖子

171

积分

Rank: 3Rank: 3Rank: 3

UID
214903
好友
0
蛮牛币
260
威望
0
注册时间
2017-3-28
在线时间
45 小时
最后登录
2017-10-23
发表于 2017-10-1 11:02:15 | 显示全部楼层
66666666666666

回复

使用道具 举报

4四处流浪
485/500
排名
32192
昨日变化
22

0

主题

302

帖子

485

积分

Rank: 4

UID
134576
好友
0
蛮牛币
292
威望
0
注册时间
2016-1-13
在线时间
179 小时
最后登录
2017-10-23
发表于 2017-10-10 09:44:12 | 显示全部楼层

FairyGUI  你可以了解下

回复 支持 反对

使用道具 举报

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

本版积分规则

快速回复 返回顶部 返回列表