Torque2D MIT 学习笔记(11) 资源管理(3)

资源引用

  资源系统主要处理的是那些被叫做"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>

  待续...

原文地址:https://www.cnblogs.com/KevinYuen/p/2941937.html