1)透视相机怎么得到正交效果
2)Unity 2018 异步加载场景时 isDone 不为 true
3)关于 AssetBundle 的疑惑
4)www 下载图片是否支持直接下载成各个平台支持的压缩格式
5)场景 CombinedMesh 移除法线等多余信息
UWA 问答社区:answer.uwa4d.com
UWA QQ 群 2:793972859(原群已满员)
Q:我的场景中有两种物体需要渲染,一种 A 需要透视效果,一种 B 需要正交效果,不太想用两个摄像机去分别照两种物体,请问有办法用其它方式来处理 B,使其能够得到用透视相机渲染出正交效果吗?
A1:(1)如果楼主用的是 URP,那就比较好办,可以参考 Unity 官方的 FPSCameraDemoUniversal Rendering Examples,这个例子里面通过调整 Camera 的 FOV(比透视的值大一点,透视得到正交效果无非就是想去掉近大远小的效果吧)。如果效果不满足,有可以参考 RenderObjectsPass 里面的写法,自己 Override 一下 Execute 方法,在里面调整一下 Camera 的类型完了再恢复回去即可。
(2)非 SRP 然后又不想用两个相机,目前没想到什么好方法。
感谢李星@UWA问答社区提供了回答A2:B 类物体自定义材质,传入自己的正交 projection matrix,不要用 Unity 的透视 projection matrix。
感谢 fubbi1000@UWA 问答社区提供了回答
Q:我们使用的 Unity 版本:2018.4.0
在场景完成加载时,Unity 2018 异步加载场景时 isDone 不为 true。我们打印了加载场景的进度,进度到了 0.9 就直接进入场景了。不知是否是引擎的 Bug?
A:检查一下 AsyncOperation。
当 AllowSceneActivation = false 的时候,到 0.9 就会停住。
AllowSceneActivation = true 的时候,就会自动加载到 1.0 并且 isDone = true。
感谢萧小俊@UWA问答社区提供了回答
Q:我有一个主场景,一个战斗场景,目前的做法是每次切换场景时的 Loading 场景中会清理掉上一个场景的 AssetBundle,加载下一个场景的 AssetBundle。我的疑惑是需要每次都清理吗?在主场景几乎全是 UI 图片组成的情况下,可否不卸载主场景的 AssetBundle?
A:首先这个问题和版本有关,5.6 以上版本使用 LZ4 格式压缩,AssetBundle 占用内存较小,在内存允许的情况下可常驻内存,是否常驻主要跟资源的共用次数和内存有很大关系,楼主可以先测试一下内存,并且对自己的游戏的峰值内存有个预估,再决定是否常驻。
感谢郑骁@UWA问答社区提供了回答
Q:通过 www 直接从服务器下载 jpg 或 png 大图,不通过事先打包成 AssetBundle 包的形式,是否能直接下载成各个平台支持的压缩格式,减少游戏内存?
A1:可以参考这个文档:https://docs.unity3d.com/ScriptReference/WWW-texture.html
jpg 加载后变成 RGB24 格式,png 加载后变成 ARGB32 格式,如果需要 DXT 压缩的格式可以使用 LoadImageIntoTexture,链接:https://docs.unity3d.com/ScriptReference/WWW.LoadImageIntoTexture.html
不过移动平台对 DXT 格式支持的如何不清楚,很少有使用这个格式的。
感谢 Huatimes@UWA 问答社区提供了回答A2:现在大部分硬件厂商都已支持 ASTC,谷歌也开源了压缩代码,基于 C++11,楼主有兴趣可以自己参考魔改。
感谢郑骁@UWA问答社区提供了回答
Q:现在发现场景打入到 AssetBundle 后,CombinedMesh 里面拥有法线和切线信息(UV 信息反而没有)。法线和切线数据实际占到近 2/3 CombinedMesh 的尺寸,并且在光照烘焙后是完全没有用途的。
因此现在想找个办法将这两个数据处理掉。不知道各位有没有相关流程的经验?
A:测试删除合并前模型的切线法线导入就可以。不过总体还是比分散模型大很多。
感谢题主欧月松@UWA问答社区提供了回答,欢迎大家转至社区交流
今天的分享就到这里。当然,生有涯而知无涯。在漫漫的开发周期中,您看到的这些问题也许都只是冰山一角,我们早已在 UWA 问答网站上准备了更多的技术话题等你一起来探索和分享。欢迎热爱进步的你加入,也许你的方法恰能解别人的燃眉之急;而他山之 “石”,也能攻你之 “玉”。