1)如何治理大型游戏的美术资源工程
2)Google Play强制64位App相干问题
3)零散AssetBundle资源再打包疑难
4)Unity中Api Compatibility Level .net 4.x与.NET Standard 2.0的区别
5)Unity 2020版本OpenGL ES3下SRP Batcher生效问题
这是第252篇UWA技术常识分享的推送。明天咱们持续为大家精选了若干和开发、优化相干的问题,倡议浏览工夫10分钟,认真读完必有播种。
UWA 问答社区:answer.uwa4d.com
UWA QQ群2:793972859(原群已满员)
Assets
Q:随着我的项目参加制作的人数变多,各类美术资源的数量也在急速回升,纵然有各种标准和各类资源导入、查看工具,跑一段时间后,依然会呈现工程里各类废除的资源未能及时清理,导致资源和包体大小持续上升,包含:
1)各类资源在制作过程中产生的一些两头文件;
2)本来在应用,但前面随业务需要变动,已弃用的资源;
3)本来就属于要放到游戏中看看成果,但没理论投放的资源。
想问下大家在解决这类问题时的一些计划?
A1:题主遇到的问题和技术无关,和流程无关。
(1)监管工作负责到人,凡事预则立、不预则废
每个我的项目都须要有一个Performance Owner来对性能、资源等问题进行管控。如果没有这个人,再弱小的工具、再NB的团队也是白扯。这个人能够是我的项目的制作人、主程、QA Leader或者PM(个别小团队不具备)都能够,就咱们单干的团队来看,以QA Leader作为Performance Owner的团队居多。(2)监管流程要跟上
团队中必须要有人来对资源问题、性能问题进行负责,且制订固定的流程来强制团队养成继续监控、继续欠缺的习惯。三天打鱼、两天晒网的模式,是很难成事的,做游戏开发也是如此。所以,将监控变成团队研发的习惯,就须要通过流程来一直把控,流程做到位了,所有就都好了。以上两点做到了,题主的问题天然就解决了。
该答复由UWA提供
A2:监管负责人个别是PM。因为有些QA没有常识,也没有权力,PM最好懂业务,如果没有PM最好就给客户端主程这个权力,锁版本是很必要的,大部分大厂都有这个。
用工具限度美术的操作,所有不正确的全副报错,而后提醒分明。用锁版本限度提交节点。而后要求不守规矩的人来到,不要问为什么会报错。当然必须从制作人开始就要反对。艰深地讲,美术和策动不会操作工具又不肯学习的,不配单干。
感激马古斯@UWA问答社区提供了答复,欢送大家转至社区交换:
Build
Q:Unity能够通过程序集加载对应的代码,且Google Play曾经强制64位APP,是否曾经不反对通过Assembly.Load加载代码了?
A:如下图所示,Unity外面Mono版本还不反对ARM64,所以要上Google Play(64位要求)只能应用IL2CPP,IL2CPP是不反对Assembly.Load的。
能够参考:
https://forum.unity.com/threa...
感激Xuan@UWA问答社区提供了答复,欢送大家转至社区交换:
AssetBundle
Q:Unity的AssetBundle资源有必要把零散的AssetBundle资源做成Zip吗?比方300MB一个。因为在打AssetBundle的时候能够抉择压缩格局,所以不是为了缩小总体的大小,而是如果散的AssetBundle,在下载的时候性能会不会有压力?各位在实践中都是怎么解决的呢?(资源量AssetBundle数量10W+,总大小在4G左右。)
A1:一堆散文件下载天然不如一个大文件更快,Http连贯也要工夫和资源,有时候AssetBundle其实只有几KB。不划算。打Zip算比拟不便,能够思考不带压缩打Zip。当然也能够自定义格局来做,然而合大文件当前更新会麻烦点,要做一些治理和替换。
感激黄程@UWA问答社区提供了答复
A2:最近刚好做这个性能。将多个包打成Zip,对下载效率有很大的帮忙,特地在国外网络环境下。
1.AssetBundle打包仍旧是零散的AssetBundle包(AssetBundle会做模块辨别,比方特效、UI等)。
2.须要热更新时候,生成的AssetBundle包信息和上个版本AssetBundle包比照,将各个模块变动的AssetBundle包生成Zip包。
3.热更新的时候,收集须要更新AssetBundle信息(有标记Zip,阐明资源在Zip包里)进行下载,没有标记Zip,则间接下载AssetBundle包,这样兼容跨多个版本热更新性能。
4.下载完的Zip包在客户端在解压成AssetBundle。
感激杨宇杰@UWA问答社区提供了答复
A3:当个搬运工补充一个答复:
散列的害处比拟集中:下载慢(用cdn,oss后端性能不用思考),上传到oss也是慢得多。Zip无论跳包治理,下载冗余,都是很头疼的事件,做动静下载更加不可能。因而可能导致比散列更加低廉的oss老本。
感激芭妮妮@UWA问答社区提供了答复
A4:后期开发用零散文件,文件小也省掉了断网续传的问题,前期工夫富裕了再扩大为大包的形式,能够依据版本号生成增量更新包一次下载实现。
放服务器上没什么影响,定期清理一下。
感激rekcah1986@UWA问答社区提供了答复
A5:上一个我的项目用的Zip打包,经营工夫长了当前,冗余资源会越来越多。热更资源要保障完整性不能删,除非你们是换包了,如果你们频繁换包,那么用Zip的形式是最合适的。
感激Lim@UWA问答社区提供了答复,欢送大家转至社区交换:
Editor
Q:Unity中Api Compatibility Level .NET 4.x与.NET Standard 2.0的区别是什么呢?
A:.NET Standard 2.0对平台的支持性更广、兼容性更好。.NET Standard 2.0的API是.NET 4.x的子集。或者说,.NET 4.x反对的API更多一些,兼容.NET Standard 2.0,然而有些API在有些平台上是不兼容的。
Unity默认抉择的是.NET Standard 2.0,如果想要跨平台兼容,那么就选Standard 2.0。如果应用的内部类库或者脚本外面调用的API不被Standard 2.0反对,再思考换成4.x来试试。
以官网文档为准:
https://docs.unity3d.com/Manu...
感激Prin@UWA问答社区提供了答复,欢送大家转至社区交换:
Rendering
Q:在Unity 2020版本下,OpenGL ES3下SRP Batcher生效,查看lit.shader显示不兼容SRP,该怎么解决呢?
A:经排查,在Unity 2020.2的某些版本下并没有呈现上述问题,但后续的版本就坏了。当初看到2020.3.9f1的Release notes里有提到这个问题。
可参考此处
感激小ben@UWA问答社区提供了答复,欢送大家转至社区交换:
封面图来源于网络
明天的分享就到这里。当然,生有涯而知无涯。在漫漫的开发周期中,您看到的这些问题兴许都只是冰山一角,咱们早已在UWA问答网站上筹备了更多的技术话题等你一起来摸索和分享。欢送酷爱提高的你退出,兴许你的办法恰能解他人的当务之急;而他山之“石”,也能攻你之“玉”。
官网:www.uwa4d.com
官网技术博客:blog.uwa4d.com
官网问答社区:answer.uwa4d.com
UWA学堂:edu.uwa4d.com
官网技术QQ群:793972859(原群已满员)