资源引用
资源系统主要处理的是那些被叫做"Declared"资源,这个术语也可以理解为资源的申报,即存在于磁盘上的资源定义文件.
当资源系统发现了一个资源定义文件便等于发现了一个"Declared"资源.
"Declared"资源只不过是工作的一部分,一个明显的原因就是有了资源你必须能使用它们.当你使用一个资源的时候,你将它的资源编号赋予了对象实例,这些对象又保存在了TAML文件中,比如场景或者其他的对象集合.
不管TAML的内容是什么,总有很多的对象对保存这些资源的编号.
一个好的资源系统,不仅能够承担起维护"Declared"资源数据库的责任,允许你通过各种方式使用它们,还要能够支持用户例如资源重命名和删除的操作.
当你重命名一个被好几个地方引用的资源会发生什么?你如果执行了重命名操作,其他几个引用到这个资源的地方马上会因为找不到资源而操作无效.最坏的情况,就是在这些文件重新加载的时候,控制台会发出警告,提示资源找不到了.
但幸运的是,Torque的资源系统被设计的能够在资源发生改变的时候,负责更新所有这个资源相关的引用.
资源系统能够做到这点是因为它能够扫描TAML文件中的引用资产.当发现这些引用资产的时候,他会保存这些保存到数据库中,而这时,你如果重命名一个资源,资源系统就能自动的更新相关的引用资源.
要想让资源系统做到这一点,你必须告诉它要扫描那些文件,逐个扫描每个文件的代价太大,所以需要一种新的策略,这个策略就是在模块定义文件中指定资源位置,用"ReferencedAsset"类型代替"DeclaredAsset".如下:
<ModuleDefinition
ModuleId="TruckToy"
VersionId="1"
Description="A monster truck toy."
Dependencies="ToyAssets=1"
Type="toy"
ToyCategoryIndex="5"
ScriptFile="main.cs"
CreateFunction="create"
DestroyFunction="destroy">
<ReferencedAssets
Path="levels"
Extension="level.taml"
Recurse="true"/>
</ModuleDefinition>
待续...