共计 2901 个字符,预计需要花费 8 分钟才能阅读完成。
1)为何反射探针敞开 Mipmap 后变成了白图
2)2021.3 Android 从 AssetBundle 中加载视频播放失败问题
3)SBP 是否能够解决打包时 FBX 等模型文件中额定的 GameObject
4)Addressables 加载已打包过的 Prefab 后 Mono 脚本失落
这是第 349 篇 UWA 技术常识分享的推送,精选了 UWA 社区的热门话题,涵盖了 UWA 问答、社区帖子等技术知识点,助力大家更全面地把握和学习。
UWA 社区主页:community.uwa4d.com
UWA QQ 群:465082844
Rendering
Q:反射探针敞开 Mipmap 后,变成了白图,请问这是为什么?
A:是与以下这个选项无关:
在 Unity 官网手册中提到,该选项会以镜面卷积的形式解决立方体贴图的 Mipmap:
不过这里的 Mipmap 和传统的 Mipmap 不太一样,是依据粗糙度不同进行划分的:
在 Shader 代码中也能够看到:
如果把这个设置改成 none,那么无论开不开 Mipmap 都是一样的成果。
感激真谛 @UWA 问答社区提供了答复
Loading
Q:在 Unity 2021.3 版本下,Android 从 AssetBundle 中加载视频播放:
AndroidVideoMedia::OpenExtractor could not translate archive
1. 应用的版本是 Unity 2021.3.8
2. 在打包视频的时候设置了不压缩
3. AssetBundle 放在 StreamingAssets 目录下
4. 相干代码
btn.onClick.AddListener(() =>
{AssetBundle ab = AssetBundle.LoadFromFile(Application.streamingAssetsPath + "/assetbundle/videos"+ "/1109.ab");
Debug.Log(ab == null);
videoPlayer.clip = ab.LoadAsset<VideoClip>("1109");
videoPlayer.Play();});
///build
BuildPipeline.BuildAssetBundles(config.OutPath, BuildAssetBundleOptions.UncompressedAssetBundle, config.buildTarget);
呈现的问题:
在 Android 9.0 以下手机加载视频播放不了,日志:
Unity AndroidVideoMedia::OpenExtractor could not translate archive:/CAB-8621c60d70de42f9c22e8270082bc81a/CAB-8621c60d70de42f9c22e8270082bc81a. resource to local file. Make sure file exists, is on disk (not in memory) and not compressed.
Android 9.0 以上则没有问题。
一些参考:
从论坛帖中理解如果要想从 AssetBundle 加载视频播放必须设置成不压缩:
https://forum.unity.com/threads/video-support-for-reading-vid…
官网文档也阐明了:
Unity supports playback from uncompressed asset bundles. For Android Pie and above, Unity supports playback from compressed asset bundles.
依照下面来说,应该是能够加载视频播放,然而还是有问题,不晓得有没有道友遇到过。
另外请问各位在解决视频资源的时候是什么计划,也是打进 AssetBundle,还是一成不变间接放到资源目录?
A1:自测了一下,不把视频打 AssetBundle 包就能够解决。<br/>
或者参考这个计划:
https://forum.unity.com/threads/load-videoclip-in-assetbundle…代码供参考:
private IEnumerator loadVideo(string pathvideo) {assetBundleRequest = DownloadingScreenManager.getInstance().getMapAssetBundle()["vide_bundlename"].LoadAssetAsync(pathvideo); yield return assetBundleRequest; textAsset = (TextAsset)assetBundleRequest.asset; File.WriteAllBytes(Path.Combine(Application.persistentDataPath, pathvideo + ".mp4"), textAsset.bytes); string url = Application.persistentDataPath + "/" + pathvideo + ".mp4"; videoPlayer.url = url; }
感激题主 zerolj@UWA 问答社区提供了答复
A2:从 Bundle 包里播放视频有很多问题,不同的机型体现还不一样,有的能播放有的不能。咱们的做法是当二进制打包到 Bundle,开游戏时复制到用户目录,播放时指定门路,最初还做了播放超时的解决。
感激李伟 @UWA 问答社区提供了答复
Memory
Q:Scriptable Build Pipeline 是否能够解决掉打包时,FBX 等模型文件中额定的 GameObject?
失常 Asset 编译流程编模型会带进来一堆不须要的货色。其中最突出的是复制进去的 Build In 资源,其次是带来大量 Remapper 内存耗费。
以后尚不理解 SBP 的能力,因而还是在应用复制 Mesh 和 AnimationClip 的流程进行优化。
不晓得 SBP 有没有能力剔除单个 AssetPath 下的局部文件援用?其余就是能不能强制断开资源援用(相似 Editor 图标,Shader 的默认贴图之类的)。
A:本人测试了下,确认能够做到。就是在 IBuildTask 层设置一下都能够提出。
感激题主欧月松 @UWA 问答社区提供了答复
Addressable
Q:所有应用 Addressables 打包的 Prefab,加载后 Mono 脚本都失落了;用了几个版本的 Addressables,和设置 MonoScript Bundle Naming 所有选项,状况均不变。
也不晓得是哪没设置对?
A:如果脚本丢了,阐明反序列化时资源和代码没有关联上,避免环境不一样最好从新打包资源。
感激李伟 @UWA 问答社区提供了答复
明天的分享就到这里。生有涯而知无涯,在漫漫的开发周期中,咱们遇到的问题只是冰山一角,UWA 社区愿伴你同行,一起摸索分享。欢送更多的开发者退出 UWA 社区。
UWA 官网:www.uwa4d.com
UWA 社区:community.uwa4d.com
UWA 学堂:edu.uwa4d.com
官网技术 QQ 群:465082844