1)AssetBundle如何计算可靠的Hash值
2)升级后的物理开销问题
3)UWA GOT支持iOS后没法出包问题
4)如何释放Live2D new的Mesh
5)雾效Fog在手机上失效的问题html
Q:项目以前是使用建置出来的AssetBundle档案,本身算MD5看成用户端更新比对项目。但由于AssetBundle建置的不稳定性,经常Asset没有改变可是AssetBundle变了,致使用户端下载到没必要要的AssetBundle。因此后来开始试着从Asset算一个Version Hash值。目前引入的参数有:xcode
可是这个方案实际应用仍是有不少问题:框架
感受本身Version Hash好像也没有彻底解决问题又形成建置时间增长,因此想问在运营大项目的大佬们有什么建议,谢谢。工具
A1:我的仍是投票给构建完毕以后的AssetBundle的Hash值。一方面担忧本身构建的不能覆盖全部更改的状况(题主考虑的已经挺全面),另一方面是.meta文件自己就不是为构建惟一性设计的,好比它混合了各个平台的参数,任何一个平台的参数修改都会致使其内容的更改,所以咱们必须参考meta,而它的修改又不必定意味着资源的修改,这样就很尴尬。测试
在这个前提下,能够作的事情是尽可能发现和解决资源相同可是AssetBundle的文件Hash值却不一样的状况。
感谢贾伟昊@UWA问答社区提供了回答网站A2:咱们是这样作的:
AssetBundleHash结合AssetFileHash,在Bundle对应的manifest文件中能够取到AssetFileHash值。ui
ManifestFileVersion: 0 CRC: 3889896754 Hashes: AssetFileHash: serializedVersion: 2 Hash: 7a90127ef724ff63cb40874dc69929b8 TypeTreeHash: serializedVersion: 2 Hash: 0d46a8251e1e96cd839078edaf4c28a3
对于AssetBundleHash不一样但AssetFileHash相同的,按未变化处理。
感谢littlesome@UWA问答社区提供了回答
Q:一个项目场景里只有静态碰撞盒, 用于玩家点击选中。Unity 5.6以前,物理开销基本没有。 升级到Unity 2018后,分析报告里的物理开销2ms不到,虽然很少,可是很奇怪。spa
后来发现Project Settings里把Physics.autoSimulation关了以后开销就下去不少了, Physics2D.autoSimulation关了以后会再下去了一点点。这个参数好像是Unity 2017以后新加的参数。插件
看介绍,关了这个参数以后每次LateUpdate的时间里就不会自动处理物理方面的计算, 能够手动调用Physics.Simulate来手动控制物理计算。设计
A:物理系统不会本身去运行了。在5.4~2017.2版本中,Unity引擎能够根据大家项目中Rigidbody的使用状况来本身决定是否开启物理引擎,若是没有使用,则它会自动关闭。可是,在2017.4版本之后,物理引擎会自动开启,Unity引擎推出API由开发团队本身去控制是否开启和关闭。因此,通常在最新的版本中,UWA都建议你们看看大家的物理模块开销,是否在自动空转,若是耗时较高,则能够尝试本身去关闭Auto Simulation选项。可是,须要说明的是,若是场景中含有Trigger、布料模拟等,则关闭Auto Simulation后则不起做用了,这个时候研发团队须要根据自身状况来决定该选项的开启和关闭。
该回答由UWA提供
Q:最近有看到UWA GOT工具新增了iOS版本的支持,因而下载了最新的工具包进行了接入测试。是按照文档直接将UWA_GOTv2.0.1_iOS.unitypackage导入进了Unity项目内,而且作了配置。
可是发现添加了UWA GOT插件之后iOS上不能正常出包,老是卡在xcodebuild archive这一步,报错信息以下:
** ARCHIVE FAILED ** The following build commands failed: Check dependencies
咱们打的是Distribution包,是否跟这个有关系?已经确认就是添加了UWA_GOT插件之后引发没法打包的问题,由于在移除了SDK之后能够顺利出包了,麻烦各位前辈帮忙解答下。
(版本:Unity 2018.3.4f1)
A:目前已经解决,是被上面的报错信息混淆了视听。以前由于打包环境比较复杂,有的时候不能获得真正的报错位置,并且同时还要不停地有出包任务,很差作调试。因此今天单独在一台纯净的Mac上面模拟了打包环境,并接入UWA GOT的iOS版SDK,测试了之后有如下发现:
一、导出xcode工程而且在xcode中直接build不会报错。
二、导出xode工程,而后在xcode中执行Build Archive会报错。报错信息相似于下面这样:
ld: bitcode bundle could not be generated because '/xx/libuwa.a' was built without full bitcode. All object files and libraries for bitcode must be generated from Xcode Archive or Install build for architecture arm64 clang: error: linker command failed with exit code 1 (use -v to see invocation)
这样就比较好解决了,缘由是若是一个工程里面有静态库的引用,那么全部的静态库也须要打开Bitcode后从新编译。这一切在直接Build的时候都没有问题,可是在“Archive”的时候就会报错。咱们在出iOS包的流程是先Build Archive而后在export Archive导出ipa,所以就会出现问题了。
解决方法比较简单,我是直接在执行xcodebuild命令的时候把EnableBitcode设置为NO了,相似于下面的命令:
xcodebuild -target <your target> -configuration <your configuration> **ENABLE_BITCODE=NO**
看网上还有一种解决办法是不关闭bitcode,而后在执行xcode build命令的时候带上参数。
OTHER_CFLAGS="-fembed-bitcode"
后面这种没有试过不知是否奏效,但愿能够帮助到你们。
感谢题主马三小伙儿@UWA问答社区提供了回答
Q:项目用的Live2D,建立后其框架会动态new大量Mesh,想求教下除了用Resources.UnloadUnusedAssets()接口外,有没有方法能指定只释放这部分Mesh?
A:Live2D有两个大坑:
(1)CubismRenderer初始化new Mesh[2],并无销毁代码
![]()
代码修改以下:
(2)MeshRenderer.material实例化独立材质
代码修改以下,运行时还须要把全部MeshRender的材质设置成同一个材质:
感谢晨星@UWA问答社区提供了回答
Q:在PC上面,整个场景中有雾效,单独对这个场景打包AssetBundle,那么在手机上面没有雾效。若是是直接将该场景丢在Hierarchy上build,在手机上面能够看见雾效。请教下,这个是哪里出了问题?都是在一样的手机上面测试的。
A:多是graphics里的雾选项没勾Shader裁剪了。
![]()
感谢关@UWA问答社区提供了回答
今天的分享就到这里。固然,生有涯而知无涯。在漫漫的开发周期中,您看到的这些问题也许都只是冰山一角,咱们早已在UWA问答网站上准备了更多的技术话题等你一块儿来探索和分享。欢迎热爱进步的你加入,也许你的方法恰能解别人的燃眉之急;而他山之“石”,也能攻你之“玉”。
官网:www.uwa4d.com
官方技术博客:blog.uwa4d.com
官方问答社区:answer.uwa4d.com
UWA学堂:edu.uwa4d.com 官方技术QQ群:793972859(原群已满员)