Skip to content

Latest commit

 

History

History
63 lines (27 loc) · 2.82 KB

asset.md

File metadata and controls

63 lines (27 loc) · 2.82 KB

资源管理

设计思路

主要提供一个内存对象和本地文件的管理。并且提供资源连接的能力。

有三个边界:

  1. 硬盘上的原始文件 png obj 等等
  2. 内部资源文件 node image texture shader 等等
  3. 内存对象 node image 等等

第一种类型的数据完全依靠本地文件系统来管理,通过vfs来读写文件。

第二种是资源的静态组织形式,可以叫做asset对象。asset是对资源的描述,也就是给文件增加更多的属性。比如缩略图,内部对象的列表。不同资源文件里的引用路径就是通过asset的路径实现的,通过#name的方式访问内对象。

第三种是任何可以从Object继承的对象。他们被asset包含。asset更像是一个容器,Object是里面的元素。这种设计可以让asset和文件一一对应。来解决多对象的文件问题。比如一个fbx是n个资源的集合体,对应一个asset可以轻松的管理。对于简单的类型比如png文件也是可以理解为image和texture两个对象。asset本身的类型可以由第一个对象来决定。所以我们可以动态的修改他。每个asset都由一个文件路径,这个路径跟他对应的文件是一对一的。

文件处理的流程:

​ vfs搜索全部目录,遇到注册过的后缀就生成对应的内文件。比如遇到png就给生成对应的asset对象。生成缩略图。生成对应的信息描述。生成asset的内部对象表。

​ 内部对象是一个容器关系,列表中第一个对象就是asset的主对象。一个asset可以包含多个对象。

​ asset生成完毕回产生一个树状结构。root根节点,下面包含asset节点。

​ 提供每个asset的导入导出和更新方式。实际上asset更像是一个针对文件后缀的导入导出插件。只不过是动态的,而不是一般软件里静态的工具。asset提供文件到内置类型的转换机制。比如FBX的导入导出。所以asset要求用户设定不同的选项。比如完全导入内置对象,解析外部文件,外部连接。状态之间是可以切换的,但是不一定可以随意提升下降。

​ 修改asset中的资源由asset决定如何处理。是保存在内资源里还是写入回外资源。

内置类型:

​ 就是第三种继承自Object的类型。

解析外部文件:

​ 就是数据存放与外部文件,asset仅仅是生成了其他信息。

外部类型:

​ 对于无法导入的数据我们提供一个独立的asset类型,只是关联对应的文件,提供缩略图。并不需要提供内置对象的分析和解析功能。在导入asset的时候就可以设置类型。或者中途可以切换。

内存管理:

asset并不管理资源的内存对象。这些都是resource的范畴。

主要类型

  • AssetManager

  • Asset