Asset Pipeline Version 2(Asset Database v2)
Unity 中存在四种管线(可能更多 别的我不知道):渲染管线,Build管线,Asset pipeline。 目前前两个都是可编程的。
- SRP :Universal Render Pipeline, High Definition Render Pipeline ( HDRP) ,
- SBP :Scriptable Build Pipeline
- Script Compilation Pipeline 脚本编译管道
- Asset Pipeline : 也是Import Pipeline, Unity也有提供 导入前处理,后处理的API让开发者控制。
Unity可能会为您想在游戏中使用的不同资产类型提供最全面的支持。Unity具有对模型文件,纹理文件,音频文件,视频文件和文本文件的多种文件格式的本机(内置)支持,
上图中说的不对, 比如模型资源Maya 要导入Unity 需要:
更具体的所有资源类型的导入和设置可以看: 文章内容较老~
https://www.3dgep.com/introduction-to-unity-3-5-part-2/
确实有人为这个东西, 但是现在文档确实很少!!!!!
https://forum.unity.com/threads/asset-pipeline-version-2.679366/#post-4548685
新资产管道的第一部分于2019.2。使用与新的Asset管道一样大的功能通常需要多个版本,然后才能为所有人启用该功能。就是这种情况,我们在2019.2中完成了大部分基础工作,因此我们可以继续开发和测试功能的下一阶段,并使用进入2019.3的较小变更集。
2019.3博客文章指出:“一项新的实验功能是,您可以在Asset Pipeline中存储多个修订,这将大大改善平台在先前导入的资产版本之间的切换和交换switching and swapping。” –是我必须以某种方式启用的功能,还是“正常工作”?切换平台似乎并不比以前更快。
不建议您启用新功能。管道,因为它几乎可以肯定对您的项目不起作用。我们确实保留了启用/禁用它的选项,因为我们一直在使用该标志自己测试新管道,并且将其标记为实验性指示其当前状态。
如果一切按计划进行,我们将在2019.3上启用该标记,并使新管道成为将资产导入Unity的默认方式。今年9月,在哥本哈根Unite的新管道上将有更多信息。
https://forum.unity.com/threads/what-is-asset-database-v2.680170/
视频: https://www.youtube.com/watch?v=S2P9n5U9xVw
AssetDatabase.Refresh() refresher - Unite Copenhagen
AssetDatabase已被重写。 您越了解此API的工作原理,您的代码就越强大。 这些信息可以指导您制定自己的资产管理策略的决策。 例如,当您在平台之间跳转时,不需要重新导入资产。 在本课程中,您将对导入修改的资产和跟踪依赖关系有更深入的了解,以显着改善工作流程和迭代时间。
https://docs.unity3d.com/2020.1/Documentation/Manual/AssetDatabase.html
视频内容:
- 介绍新的 AssetDatabase
- Refresh() 将会发生什么?
- 平台的快速切换
- ADB的提示和机巧
重写了 AssetDatabase , 但是API和 V1版本一致。
有一些指导原则 Guiding Principles , 针对 Determinism 和 Dependency tracking 。 确定性和依赖跟踪
不会过多的讨论 Cache Server , 支持动态依赖关系
术语:导入结果在 Library 文件夹下
两个字母的文件夹是啥? 是资源名称的前两个字母。
任意的数据流的结果 是128位的哈希值。
有静态和动态的依赖关系。
什么是确定性, 就是相同的输入,肯定有相同的输出。
下面的代码中有不确定的函数和确定的函数处理。 第一个函数在第二次执行的时候会失败,因为Move的目标路径已经有资源了。 所以确保目标路径不存在资源。
-- 确保在导入资产时,由于所有依赖项都相同,因此导入结果相同
-- 跨机器相同
-- 对于远程缓存数据非常重要
关于 AssetDatabase
AD 分为两个数据库 。
- Source Asset Database
- Artifact Database
Memory mapped Database 内存映射数据库
交易性的,因此更难腐败
有四种方式触发刷新~
自动刷新, 每当进入和退出Unity的时候 ,会从操作系统那得到一个窗口焦点事件, 那是一个C++ Native层。 通过C# 调用它, 这是唯一被强迫的方法, 同步脚本编译的含义,知道所有脚本被编译然后继续导入的过程
菜单就是 Ctrl + R 刷新。
1、Scan 扫描:
遍历 Assets 文件夹。 检测变化的文件, 如果改变了要对它重新哈希,并存储到数据库中。
还要枚举 packages 文件夹, 但他们有一个区别, 只对pachages做一次,因为认为是不可变的(只读)。