找回密码
 注册帐号

扫一扫,访问微社区

沐冉楠 Unity发布WEBGL优化(一)

25
回复
2714
查看
打印 上一主题 下一主题
[ 复制链接 ]
排名
949
昨日变化

31

主题

219

帖子

2280

积分

Rank: 9Rank: 9Rank: 9

UID
114543
好友
20
蛮牛币
9626
威望
0
注册时间
2015-7-21
在线时间
774 小时
最后登录
2020-10-21

专栏作家

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

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

x
对Unity开发WEBGL印象就是开发方便打包慢输出内容加载慢不支持移动端一堆堆问题.但是最麻烦的还是加载慢真的慢.
所以通过对各种h5开发对比准备放弃Unity发布WEBGL的做法.但是随着unity2020.1发布这个现状稍稍出现点转机...

最近测试了Unity Tinylaya和Unity webgl发现如果优化做的好unity webgl 虽然比不上tiny和laya但是可以把他们之间的差距缩小不少
测试同一款场景冷加载(本地服务器不考虑网络影响)
1.unity tiny   1.2秒

2.laya            1.69秒


3.未优化的webgl(unity2018开发的)   5.5秒

4.优化的WEBGL(unity2020.1开发)     1.98秒


看到这个数据我燃起了希望准备脱坑脱坑再入坑.

先回答几个小问题介绍:

1.为什么Unity Tiny那么快?
因为unity tiny用DOTS(多线程式数据导向型技术堆栈)开发DOTS=ECS+job System+Burst

实体组件系统(ECS) :因为unity3d各种组件都存在可能你项目不需要那么多组件但是打包是就都给加进去了ecs解决的就是我用什么组件加载什么组件.


任务系统(Job System):unity主要任务都是在主线程运行这个就是让你不知不觉中把unity变成多线程运行

Burst Compiler编译器:unity之前用mono来进行编译实现跨平台后来升级
IL2CPP速度有进一步提升还是比不过c++这个这个编译器翻译为大爆炸是使用LLVM从IL/.NET字节码转换为高度优化的本机代码据说已经可以超越c++的速度了.

所以dots是未来的方向但是unity已上市有了钱就放弃梦想了?说好2020年发布正式dots这也没消息了.所以现在可以学习但是使用起来就没那么方便了.有兴趣自己研究吧.


2.laya为什么也可以那么快?
laya是国产的一款引擎主要就是因为unity webgl不作为所以才有了laya他使用asts或者js开发在浏览器上不用转换脚本了场景可以用unity的并且也用上了实体组件系统可以控制加载需要的组件这是一款不错的工具主要用来开发各种小游戏.搞了三天开发了一个场景进行与其他对比测试.


3.Unity webgl为什么那么慢?
1.没有实体组件系统把引擎内的组件一蜂窝打包管你用不用2.之前编码可能还是用mono这编译也很慢

3.资源优化不完全加载数据很多还有可能是很多不用的数据.

4.优化后为什么unitywebgl也可以提升那么大?
1.unity2020.1更改了构建加载器可以根据项目进行组件剥离和代码优化

2.全面使用IL2CPP来编译提升点速度

3.全面使用WebAssembly

4.自己进行各种尽可能的优化来提高加载速度

最后的成品会比之前的webgl有很大提升



开始进行项目优化

1.下载Unity2020.1和更高的版本用必须高于2020.1的版本开发

2.设置WEBGL PLayer Setting



1.如果没有必须后台运行的必要就关闭后台运行P->Resolution and Presentation ->Run In BackGround

2.修改一个合适的加载页面(尽量小加载页能让人时间感降低)因为加载的进度条是与数据加载有关与加载到引擎时间可能不对应会感觉进度条不准.

3.如果是专业版去掉splash screen关闭启动画面会有一点点提升



4.Other Settings->Auto Graphics API根据自己需要选择webgl1.0webgl2.0或者都选毕竟还有edge浏览器只支持webgl1.0

5.Other Settings->Lightmap Encoding 选择Low光照贴图选低毕竟webgl了牺牲质量换速度


6.Other Settings->Api Compiler Configuration 选择.Net Standard 2.0



7.Other Settings->Strip Engine Code 勾选上这是剥离引擎代码把Managed stripping level>等级设成高这能尽可能剥离不使用的引擎代码.

8.Other Settings-> Optimize mesh Data勾选上这是优化网格数据


9.Other Settings-> Texture MipMap Stripping 根据自己选择勾选这个是贴图边缘模糊进行抗锯齿


10.Other Settings-> Stack Trace 全部选择None 堆栈跟踪全部不需要.


11.Publishing Settings ->Enable Excptions 选择None启用异常检测发布时间不需要


12.Publishing Settings ->Compression Format 是否压缩跟自己需要选择压缩肯定需要解压如果网络不好选择压缩.压缩尽量选择Gzip兼容好本地加载可以选择不压缩


13.Publishing Settings ->Data Caching 数据缓存这个一定要勾选二次加载提速度能不少.














回复

使用道具 举报

8常驻蛮牛
6019/10000
排名
238
昨日变化

1

主题

291

帖子

6019

积分

Rank: 8Rank: 8

UID
69456
好友
7
蛮牛币
55
威望
0
注册时间
2015-1-19
在线时间
3691 小时
最后登录
2020-10-22
QQ
沙发
2020-10-5 17:09:41 只看该作者
谢谢分享!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
回复

使用道具 举报

7日久生情
2137/5000
排名
1191
昨日变化

1

主题

632

帖子

2137

积分

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

UID
87577
好友
0
蛮牛币
10478
威望
0
注册时间
2015-3-31
在线时间
526 小时
最后登录
2020-10-20

一掷千金

板凳
2020-10-6 14:48:37 只看该作者
too good too strong
回复 支持 反对

使用道具 举报

0

主题

6

帖子

27

积分

Rank: 1

UID
317550
好友
1
蛮牛币
109
威望
0
注册时间
2019-3-25
在线时间
21 小时
最后登录
2020-10-22
地板
2020-10-7 08:34:30 只看该作者
谢谢学习了,也不知道为什么,我的生成ok,就是在网页打不开{:97:}
生成的时候也没有报错,打开状态就是一张加载ing
回复 支持 反对

使用道具 举报

2初来乍到
131/150

0

主题

4

帖子

131

积分

Rank: 2Rank: 2

UID
351393
好友
0
蛮牛币
2
威望
0
注册时间
2020-8-12
在线时间
127 小时
最后登录
2020-10-20
5#
2020-10-8 09:38:40 只看该作者
感谢分享~~~
回复

使用道具 举报

6蛮牛粉丝
1402/1500
排名
3329
昨日变化

4

主题

225

帖子

1402

积分

Rank: 6Rank: 6Rank: 6

UID
62741
好友
1
蛮牛币
1357
威望
0
注册时间
2014-12-21
在线时间
729 小时
最后登录
2020-10-16
6#
2020-10-8 15:15:29 只看该作者
谢谢分享~~~~~~~~~~~~~~~~~~~~
回复

使用道具 举报

6蛮牛粉丝
1280/1500
排名
11820
昨日变化

4

主题

126

帖子

1280

积分

Rank: 6Rank: 6Rank: 6

UID
244131
好友
0
蛮牛币
1487
威望
0
注册时间
2017-9-17
在线时间
1068 小时
最后登录
2020-10-22
7#
2020-10-9 10:41:42 只看该作者
谢谢分享
回复

使用道具 举报

6蛮牛粉丝
1280/1500
排名
11820
昨日变化

4

主题

126

帖子

1280

积分

Rank: 6Rank: 6Rank: 6

UID
244131
好友
0
蛮牛币
1487
威望
0
注册时间
2017-9-17
在线时间
1068 小时
最后登录
2020-10-22
8#
2020-10-9 11:17:10 只看该作者
shenty 发表于 2020-10-7 08:34
谢谢学习了,也不知道为什么,我的生成ok,就是在网页打不开
生成的时候也没有报错,打开状态 ...

同问,请问你找到问题在哪了吗,打包生成都没问题,就是网页上一直是加载的,打不开
回复 支持 反对

使用道具 举报

排名
949
昨日变化

31

主题

219

帖子

2280

积分

Rank: 9Rank: 9Rank: 9

UID
114543
好友
20
蛮牛币
9626
威望
0
注册时间
2015-7-21
在线时间
774 小时
最后登录
2020-10-21

专栏作家

9#
楼主 2020-10-9 11:38:00 只看该作者
Nirvana0515 发表于 2020-10-9 11:17
同问,请问你找到问题在哪了吗,打包生成都没问题,就是网页上一直是加载的,打不开 ...

直接打开使用edge使用其他浏览器请部到服务器或者本地服务器加载
回复 支持 反对

使用道具 举报

6蛮牛粉丝
1280/1500
排名
11820
昨日变化

4

主题

126

帖子

1280

积分

Rank: 6Rank: 6Rank: 6

UID
244131
好友
0
蛮牛币
1487
威望
0
注册时间
2017-9-17
在线时间
1068 小时
最后登录
2020-10-22
10#
2020-10-9 12:04:11 只看该作者
沐冉楠 发表于 2020-10-9 11:38
直接打开使用edge使用其他浏览器请部到服务器或者本地服务器加载

大佬,请问你用的unity版本是哪个
回复 支持 反对

使用道具 举报

排名
949
昨日变化

31

主题

219

帖子

2280

积分

Rank: 9Rank: 9Rank: 9

UID
114543
好友
20
蛮牛币
9626
威望
0
注册时间
2015-7-21
在线时间
774 小时
最后登录
2020-10-21

专栏作家

11#
楼主 2020-10-9 14:42:12 只看该作者
Nirvana0515 发表于 2020-10-9 12:04
大佬,请问你用的unity版本是哪个

2020.1.0f1
回复 支持 反对

使用道具 举报

6蛮牛粉丝
1280/1500
排名
11820
昨日变化

4

主题

126

帖子

1280

积分

Rank: 6Rank: 6Rank: 6

UID
244131
好友
0
蛮牛币
1487
威望
0
注册时间
2017-9-17
在线时间
1068 小时
最后登录
2020-10-22
12#
2020-10-9 14:49:58 只看该作者

感谢大佬,我试试2020.1.0的,刚刚用的1.7的版本,包可以打出,但是web打开不了,用的Edge 和火狐,不是浏览器的原因,其他的webgl项目都可以打开的
回复 支持 反对

使用道具 举报

3偶尔光临
157/300
排名
17382
昨日变化

1

主题

34

帖子

157

积分

Rank: 3Rank: 3Rank: 3

UID
307830
好友
0
蛮牛币
194
威望
0
注册时间
2018-12-11
在线时间
86 小时
最后登录
2020-10-14
13#
2020-10-9 15:37:06 只看该作者
改天试试2020
回复

使用道具 举报

3偶尔光临
157/300
排名
17382
昨日变化

1

主题

34

帖子

157

积分

Rank: 3Rank: 3Rank: 3

UID
307830
好友
0
蛮牛币
194
威望
0
注册时间
2018-12-11
在线时间
86 小时
最后登录
2020-10-14
14#
2020-10-9 15:38:51 只看该作者
改天试试2020
回复

使用道具 举报

6蛮牛粉丝
1280/1500
排名
11820
昨日变化

4

主题

126

帖子

1280

积分

Rank: 6Rank: 6Rank: 6

UID
244131
好友
0
蛮牛币
1487
威望
0
注册时间
2017-9-17
在线时间
1068 小时
最后登录
2020-10-22
15#
2020-10-9 15:44:29 只看该作者
大佬,试了一下 2020.1.0f1版本 原始场景什么设置都没修改打包,打包成功了但是web上还是没法打开,一直是加载的画面

img.png (27.98 KB, 下载次数: 1)

img.png
回复 支持 反对

使用道具 举报

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

本版积分规则

蛮牛教育10.1大促销!全站6折扣!