记录Unity出Web包遇到的问题


3楼猫 发布时间:2023-10-30 14:32:31 作者:风小水 Language

本次Booom比赛中,机核开启了上传Web版游戏的功能,于是我们项目出包的时候,我就尝试了一下出web包。
因为《魔女破天轮》这个项目直接拿的GameFramework的框架来用,遇到的问题和解决方案都是基于GF的。
首先一开始我使用Unity直出Web包,发现游戏出来运行直接报错,获取不到AB资源。一定是资源有问题,但问题在哪呢。
后面不断查资料和研究,发现web包是挂在服务器上运行。这样其实是没有文件系统的。通常我们在电脑/手机上的加载ab资源都是依赖文件夹系统的路径作为一种URL来使用。
所以如果根据路径去索引资源,其实是找不到StreamingAssets这个文件夹的。
一度我以为GF不支持WebGL,不过在GF官方网站说是支持Web只是没有经过测试,但是有人成功了。这次才让人重燃希望。
其实解决这个问题的方法没多复杂,反而可以说很简单。
主要在于打ab包的包体设置上。GF在打AB包之前,ResourceCollection.xml文件可以设置包体的加载类型(LoadType="0")。
默认0就是指【从文件系统中加载】。这时只需要我们把加载方式修改为【从内存中加载】,即LoadType="1"。
当然也可以在编辑器窗口中修改,但不推荐。一个一个去设置真的麻烦,不如ResourceCollection中直接批量修改。
设置好ResourceCollection.xml之后,我们就可以打Web专用的AB包了。
之后我们照常把ab包放到StreamingAssets这个文件夹,正常出Web包就完成辣。
但是我一出包运行,还是有报错。
但是这次的问题非常吊诡。Animation资源加载不到。这是什么情况?我反复比对了一下,不应该啊,同一个包体中的其它资源都能加载,只有Animation加载不了。怎么还有能加载都只加载一半的情况吗。
经过整整一天的反复打包测试和查找资料。终于在外国论坛的一个远古帖子上发现的端倪。
其实问题并不出在打包,而在出包设置上。在Unity的项目设置中有一个叫做"代码剥离"这么个东西。(更加早期的Unity版本可能会直接叫"Code Stripping")
出包的时候,会根据你的这个剥离等级,来进行一定层度对你项目中代码或者资源进行切割,不进入出包。
这个功能据反馈剥离并不准确,会导致剥离一些需要的代码和资源。
我尝试直接禁用之后,一个完美运行web包就出来了。
记录一下困扰了很久的问题,并且为未来参加机核GameJam比赛的朋友们,提供一点微小的帮助。

© 2022 3楼猫 下载APP 站点地图 广告合作:asmrly666@gmail.com