获得将要生成的资源的GUID

news2024/11/19 9:37:28

1)获得将要生成的资源的GUID
​2)多个小资源包合并为大资源包的疑问
3)模型Meta中的hasExtraRoot参数的作用和历史原因
4)合批注意点


这是第333篇UWA技术知识分享的推送,也是《厚积薄发 | 技术分享》第三回,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等技术知识点,助力大家更全面地掌握和学习。

Asset

Q:假如需要导入一个FBX文件,并且同时修改一些导入设置的情况。如果先导入,生成GUID,再修改,就会出现两次Import流程。资源量大的情况下就会浪费大量的时间。

设置本身倒是简单,可以通过文本创建Meta。但是资源的GUID是个比较麻烦的问题。因为需要保证不重复,并且和路径有一定关系。

如果使用未来导入资源路径生成GUID,应该使用怎么的操作?

A1:我最近也有类似的需求,我的做法就是先准备一份“导入设置”的模板Meta,里面的GUID是项目中已经存在的。然后在生成对应或者修改对应资源的时候,直接拷贝那个模板Meta。然后如果要导入的资源本来已经导入过了,就将GUID替换回去。如果是新导入的资源,Unity则会自动帮我重新生成一个新的GUID,我不用管,这样导入会快很多。

感谢junbin.liu@UWA问答社区提供了回答

A2:建议在导入的时候直接做修改,可以试试Unity 3D的OnPostprocessAllAssets。

感谢贺帆@UWA问答社区提供了回答


AssetBundle

Q:看有文章说可以利用接口LoadFromFile(string path, uint crc, ulong offset);来实现资源包合并为一个打包,且能减少IO操作,不知流程是否是如下理解:

合并前:
资源包A:assets_res_a.bundle
资源包B:assets_res_b.bundle
合并前对资源包的加载方式:
AssetBundle a = AssetBundle.LoadFromFile("assets_res_a.bundle");
AssetBundle b = AssetBundle.LoadFromFile("assets_res_b.bundle");

合并后:
资源包AB:assets_res_ab.bundle
并且记录了a、b在大包(ab)中的offset(A包的offset=0,B包offset=12)
合并后对资源包的加载方式:
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了,求指点迷津。

A:AssetBundle已经是一个VFS了,再在上面多管理一层,从各方面来说不合理,还有可能出现IO句柄持有冲突的问题。

上面所谓的减少IO,不是减少IO本身的读取量,只是少了一个IO句柄,直接把两个原始资源打到一个Bundle内,其实是一样的。那么问题就变成了怎么合理打包Bundle。

感谢1 9 7 3-3111356@UWA问答社区提供了回答


Asset

Q:模型Meta中的hasExtraRoot参数是做什么用的?有什么历史原因么?

模型Meta中有个奇怪的参数hasExtraRoot,看起来是humanDescription旗下的,但实际会对任何类型的模型都造成影响。

这个参数无论是在API还是在编辑器界面,都找不到调整的地方。当前项目中一部分是0,一部分是1。观察得出,这个在为1的情况下,会保留外层无Mesh关联的Transform;为0的情况下会移除顶层Child不超过1,并且无Mesh的Transform。

不知道这是怎么生成的,是不是为了适配某些历史版本呢?

A:可以参考下:
FBX import: humanoid rig creates extra GameObject ("hasExtraRoot") - Unity Forum

感谢野生西瓜@UWA问答社区提供了回答


Rendering

SRP的合批注意点

SPR Batcher适用于URP管线,只需要材质所用到的Shader变体相同就可以合批的。不过,UGUI和粒子的DrawCall走Unity自己的合批逻辑,因而SRP Batcher不适用;而包括SpriteRenderer在内等使用MaterialPropertyBlock修改材质的情况都会打断SRP Batcher。

另外,需要注意RenderQueue穿插,GPU Instancing的优先级要高于SRP Batcher,更隐形的问题是在Editor上SRP Batcher合批成功,但是在真机上合批失败的问题,比如Unity的版本导致OpenGL ES的API导致SRPBatcher在真机上合批失败的问题,再比如CBuffer里面的变量没有在材质球的Property里面,也会有相似的问题。

期待更多讨论,欢迎大家转至UWA社区交流:
UWA-社区

静态合批有什么注意点

静态合批分两种,一种是提前在Editor中处理,一种是在Runtime时动态处理,要求同种材质才能合批。

当然,也有缺点,当子模型存在重复时,可能会使Mesh内存占用变大。也就是为什么大家都说静态合批更消耗空间。

期待更多讨论,欢迎大家转至UWA社区交流:
UWA-社区

封面图来源于网络


今天的分享就到这里。生有涯而知无涯,在漫漫的开发周期中,我们遇到的问题只是冰山一角,UWA社区愿伴你同行,一起探索分享。欢迎更多的开发者加入UWA社区。

UWA官网:www.uwa4d.com
UWA社区:community.uwa4d.com

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/455019.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PMP-上班摸鱼整理的知识点

1、主要解决流程:问题-风险-变更: 先分析是问题还是风险,解决问题、可以减少新的风险,登记风险,可以随时应对问题,2、变更管理流程 变更原则: 需提正式变更申请,先分析评估后变更,不改变基准项目经理审批,改…

2-07 使用JMeter测试单节点与集群的并发异常率

2-07 使用JMeter测试单节点与集群的并发异常率 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YVXaAkn2-1682304913240)(https://static.editool.cn/upload/47093438fcec4683a50626ae46a49942/pic-371.jpg)] [外链图片转存失败,源站可能有防盗链机制…

一些海洋资料收集及磁力tiff的数据提取

以下资料都来自于网络和公开发表的文献,欢迎下载 1、第一批至第十一批农业部国家级种质资源保护区的范围: 链接:https://pan.baidu.com/s/1fGcVcdbOUb3tOlYB8d4JUg 提取码:kgix 2、EGM2008 链接:https://pan.baidu…

matlab实现在画图的图窗里播放点数据的循环

数据准备 我准备好了打包的数据文件供演示下载,只需要小白式的操作。传送门 文件里集成了处理好的点云文件,如果你想显示曲线,只需要把你的数据批量更换上去即可。   每一个里面包含了以下信息: location:不同点的…

【GDOUCTF2023】wp

【GDOUCTF2023】 WEB hate eat snake js小游戏&#xff0c;玩游戏得到flag&#xff0c;修改一下js源码 EZ WEB 访问 /super-secret-route-nobody-will-guess 发送PUT请求&#xff1a; 受不了一点 <?php error_reporting(0); header("Content-type:text/html;char…

如何创建 SAP PM 通知

目的 了解如何根据创建通知的要求将通知详细信息从一个屏幕发送到另一个屏幕。为了解释这一点&#xff0c;我们将引导您完成以下步骤。 使用 title&#xff08;&#xff09; 更改屏幕标题删除“引用”组框根据交易自定义屏幕添加用于复制和发送通知详细信息的函数 在脚本文件…

面试官灵魂一问:SELECT COUNT(*) 会造成全表扫描吗?

SELECT COUNT(*) 会造成全表扫描吗&#xff1f; 前言SQL 选用索引的执行成本如何计算实例说明总结 前言 SELECT COUNT(*)会不会导致全表扫描引起慢查询呢&#xff1f; SELECT COUNT(*) FROM SomeTable网上有一种说法&#xff0c;针对无 where_clause 的 COUNT(*)&#xff0…

云计算下的企业数据备份与恢复实践

在当前的数字化时代&#xff0c;数据已经成为企业的核心资产之一。对于企业而言&#xff0c;数据的安全性和可用性至关重要。数据的丢失和破坏会给企业带来巨大的损失&#xff0c;因此&#xff0c;备份和恢复数据已经成为企业数据管理的重要环节。随着云计算的普及和发展&#…

深度学习模型参数量与训练数据量的平衡对泛化性能的影响

一、引言 深度学习模型在计算机视觉、自然语言处理等领域取得了显著的成果。为了获得泛化性能良好的模型&#xff0c;研究者需要在模型复杂度和训练数据量之间找到合适的平衡。本文将探讨这两者之间的关系以及如何在实际应用中实现最佳效果。 二、模型复杂度与训练数据量的关…

Windows云服务器配置多用户登录

Windows Server 2012操作系统的云服务器为例介绍实现多用户登录的操作步骤 安装桌面会话主机和远程桌面授权 登录Windows云服务器。在操作系统界面&#xff0c; 打开“服务器管理器”&#xff0c;单击“添加角色和功能”。 图1 添加角色和功能 保持默认参数&#xff0c;单击“…

Mars3d引用单个示例文件WeiVectorTileLayer.js报错的解决办法

参考文档修改文件后&#xff0c;发现依然报错&#xff1a; Mars3d单独引用示例文件教程_3d文件示例_绵绵-火星科技的博客-CSDN博客 具体报错截图&#xff1a; 看报错是&#xff1a; CesiumVectorTile.js里的错误&#xff0c;进去看看错误行&#xff0c;是不是缺cesium // if …

数组题目总结 -- 差分数组

零. 差分数组工具类 1. 思路和代码 diff 存在的意义就是想要通过构建 diff 数组来实现对原数组&#xff08;nums&#xff09;频繁的加减操作。差分数组的构建代码&#xff1a; int[] res new int[diff.length]; // 根据差分数组构造结果数组 res[0] diff[0]; for (int i …

Qt QWidget 抗锯齿圆角窗口的一个实现方案(支持子控件)

QWidget抗锯齿圆角窗口的一个实现方案 由于 QWidget::setMask 接口设置圆角不支持抗锯齿&#xff0c;所以通常会使用透明窗口加圆角背景&#xff0c;但圆角背景不能满足对子控件的裁剪&#xff0c;子控件与圆角区域重叠的部分还是能显示出来。当然对于大多数窗口&#xff0c;留…

Linux-初学者系列——篇幅7_文本编辑和处理命令

文本编辑和处理命令-目录 一、系统基本编辑命令安装vim软件工具包语法格式&#xff1a; 1、vim编辑命令模式01 普通模式02 编辑模式03 命令模式 2、编辑文件技巧01 批量删除多行指定信息02 批量增加多列指定信息03 编辑常见问题错误1&#xff1a;没有指定编辑信息错误2&#xf…

Kubernetes Service、Ingress、Ingress Controller

Kubernetes 网络模型 Kubernetes 对网络设施的基本要求 Pod 能够与所有其它节点上的 Pod 相互通信&#xff0c; 且不需要网络地址转译&#xff08;NAT&#xff09; 节点上的代理&#xff08;比如&#xff1a;系统守护进程、kubelet&#xff09;可以和节点上的所有 Pod 相互通…

基于Html+Css的图片展示25

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

SLAM论文速递【SLAM—— RDS-SLAM:基于语义分割方法的实时动态SLAM—4.24(1)

论文信息 题目&#xff1a; RDS-SLAM:Real-Time Dynamic SLAM Using Semantic Segmentation Methods RDS-SLAM:基于语义分割方法的实时动态SLAM论文地址&#xff1a; https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber9318990发表期刊&#xff1a; IEEE Access ( Volum…

如何发起一次完整的HTTP的请求流程

目录 &#x1f4a1; 预备知识 &#x1f50a; 浏览器端发起 HTTP 请求流程 1、构建请求 2、查找缓存 3、准备IP地址和端口 4、等待TCP队列 5、建立TCP连接 6、发送HTTP请求 &#x1f50a; 服务器端处理 HTTP 请求流程 1、返回请求 2、断开连接 3、重定向 HTTP 是一种…

【hello Linux】文件时间

目录 1. 简单介绍文件的三个时间&#xff1a; 2. 查看文件时间的命令&#xff1a; 3. makefile的时间编译原理&#xff1a; Linux&#x1f337; 1. 简单介绍文件的三个时间&#xff1a; 在Linux中&#xff0c;记录着文件的三方面时间&#xff1a; 1. Access&#xff1a;记…

适合小白的docker实战演示——docker基础入门命令

一、docker简单背景介绍 docker是dotCloud公司开源的一个基于LXC&#xff08;LXC为Linux Container的简写。Linux Container 容器是一种内核虚拟化技术&#xff0c;可以提供轻量级的虚拟化&#xff0c;以便隔离进程和资源&#xff09;的高级容器引擎&#xff0c;源码托管在Gith…