诸暨建设局网站,中国设计师联盟网站,兰州建设网站的网站,vs做网站怎么放视频1#xff09;Unity 2022 LTS版本的稳定性 2#xff09;多个小资源包合并为大资源包的疑问 3#xff09;启动Unity导入变动的资源时#xff0c;Singleton ScriptableObject 加载不到 这是第362篇UWA技术知识分享的推送#xff0c;精选了UWA社区的热门话题#xff0c;涵盖了…1Unity 2022 LTS版本的稳定性 2多个小资源包合并为大资源包的疑问 3启动Unity导入变动的资源时Singleton ScriptableObject 加载不到 这是第362篇UWA技术知识分享的推送精选了UWA社区的热门话题涵盖了UWA问答、社区帖子等技术知识点助力大家更全面地掌握和学习。
Platform
Q想从Unity 2021 LTS升级到Unity 2022 LTS想问下2022的稳定性怎么样
主要想要的Feature是DOTS的Production Version和Material Variant。 A稳定性肯定是可以的但需要考虑以下几点 DOTS我用的比较多22的肯定会更好、更成熟基本上版本越新越好具体看更新日志。你要升级22目前只是22.3.13未来肯定还有很多小版本根据规律每个大版本的小版本至少都是.3.30了那么就需要考虑成本了24年开始发布的版本就需要各种用户支付安装费用目前21最新是21.3.32还是要综合起来考虑。 感谢沈杰UWA问答社区提供了回答 AssetBundle
Q看有文章说可以利用接口LoadFromFile(string path, uint crc, ulong offset);来实现资源包合并为一个打包且能减少IO操作不知流程是否是如下理解
合并前资源包Aassets_res_a.bundle资源包Bassets_res_b.bundle合并前对资源包的加载方式AssetBundle a AssetBundle.LoadFromFile(assets_res_a.bundle);AssetBundle b AssetBundle.LoadFromFile(assets_res_b.bundle);
合并后资源包ABassets_res_ab.bundle并且记录了a、b在大包ab中的offsetA包的offset0B包offset12合并后对资源包的加载方式AssetBundle a AssetBundle.LoadFromFile(assets_res_ab.bundle, 0, 0);AssetBundle b AssetBundle.LoadFromFile(assets_res_ab.bundle, 0, 12);
从接口上看合并后并没有减少IO操作仍是两次对assets_res_ab.bundle的读取除非引擎内部有做优化当第一次读assets_res_ab.bundle有IO在没释放情况下第二次读就不是IO了求指点迷津。 A1首先引擎内部是有文件打开句柄的Cache的合并以后可以减少Open Close的开销其实这个开销不小不过Cache也不是很大如果频繁读取不同VFS的文件其实也差不太多了。 各个OS最大开启文件句柄数是有上限的这个也能有效降低因为同时开启句柄太多造成后面文件打不开问题。 个别手机有打开文件权限问题明明文件存在但是低概率偶发会因为权限问题短时间内无法再Open那么合并后也能改善遇到这种问题的几率。 单独小文件在各个操作系统下其实还有一个簇的概念比如Windows下一般最小空间占用单位是4KB。那么合并成大文件还能减少空间浪费。 在Windows下开启WindowsDefender的情况下Open还会触发杀毒软件Scan文件很多很碎的情况下还是多少有点影响的。 感谢黄程UWA问答社区提供了回答 A2我记得官方说过这种方式还是不推荐本身AssetBundle已经是一个VFS的多了这个操作反而显得累赘。 感谢司马老师UWA问答社区提供了回答 A3以下几点建议供参考 File的Open、Exists等消耗都挺高之前某低端机Exists大概0.3ms一种优化策略就是基于离线分析一次生成文件列表或整合大文件认为大文件内的散文件都存在减少Exists调用大文件Open一次可以缓存下来不Close减少Open调用。句柄数限制大多安卓可能1024当然也有几万的。文件读取一般File.ReadALl或者手动开StreamFile.ReadAll底层依然是个Stream然后Stream读取一般是每次读满一个默认的1KB或4KB长度的Buffer或者匹配到结尾那么对于小文件合并后的大文件可能达到预取的效果减少Read次数。物理空间占用。安全性方面的不太了解参考楼上黄程回答 感谢makebalancefoxmail.comUWA问答社区提供了回答 Asset
Q当有资源变动时启动Unity在导入资源时Singleton ScriptableObject 加载不到有解决办法么
问题出现把ScriptableObject封装成单例当配置文件在别的资源导入的时候需要读单例配置。
已知现象加载不到的原因是当有新资源变化时Asset Database要等新资源初始化完才能初始化完成这个阶段很多东西都加载不上来Resource接口也是不能用的。
我最早是通过自定义导入顺序还专门给配置文件改了后缀但也是被资产解析挡住了。 A你们用单例的话可以继承Unity的ScriptableSingleton它可以通过Attribute配置加载路径应该能直接解决问题。我们是不用单例所以把它内部用的接口翻出来了。 这个方案应该是你想要的[RS] 项目重新导入时加载不到ScriptableObject - 简书 感谢WalkerUWA问答社区提供了回答
封面图来源于网络 今天的分享就到这里。生有涯而知无涯在漫漫的开发周期中我们遇到的问题只是冰山一角UWA社区愿伴你同行一起探索分享。欢迎更多的开发者加入UWA社区。
UWA官网www.uwa4d.com UWA社区community.uwa4d.com