2013年3月3日
摘要: 所有引擎可识别的资源都是可以在程序运行时被实例化创建的.资源系统为各种类型的资源设计了一个资源基类(AssetBase),这个类实现了所有的在资源系统正常运作所需要的功能特性.导出属性域 AssetName(字符串): 资源名,强制存在域,与所在模块名组成唯一的资源编号. AssetDescription(字符串): 资源描述,默认空.引擎内部不会使用,主要是用于编辑器或者其他的方式呈现给用户. AssetCategory(字符串): 资源类别,默认空. AssetInternal(布尔型): 是否为内部资源,默认false. AssetAutoUnload(布尔型): 是否自动卸载... 阅读全文
posted @ 2013-03-03 22:03 Kevin Game 阅读(237) 评论(0) 推荐(0) 编辑
摘要: 资源引用 资源系统主要处理的是那些被叫做"Declared"资源,这个术语也可以理解为资源的申报,即存在于磁盘上的资源定义文件. 当资源系统发现了一个资源定义文件便等于发现了一个"Declared"资源. "Declared"资源只不过是工作的一部分,一个明显的原因就是有了资源你必须能使用它们.当你使用一个资源的时候,你将它的资源编号赋予了对象实例,这些对象又保存在了TAML文件中,比如场景或者其他的对象集合. 不管TAML的内容是什么,总有很多的对象对保存这些资源的编号. 一个好的资源系统,不仅能够承担起维护"Declar 阅读全文
posted @ 2013-03-03 21:28 Kevin Game 阅读(252) 评论(0) 推荐(0) 编辑
摘要: 资源的定义 我们以ImageAsset为例:<ImageAsset AssetName="background" ImageFile="sky.png"/> 不去关心这个资源类型的细节,单从上面的配置来看,有三个元素: 1. ImageAsset: 资源类型名 2. AssetName:资源名 3. ImageFile: 图像文件名(松散资源文件) 这里要注意的是AssetName,它是组成AssetId的重要部分,AssetId是资源的唯一编号,组成规则为: <ModuleId>:<AssetName> 比如: 我们 阅读全文
posted @ 2013-03-03 20:24 Kevin Game 阅读(315) 评论(0) 推荐(0) 编辑
摘要: 资源系统的组成部分 1. 资源收集 2. 资源标识 3. 资源加载/卸载 4. 资源依赖 5. 资源分组 6. 资源查找 7. 资源元数据管理 8. 资源重命名,重定位,删除预备知识 资源系统会使用到前面我们说过的模块系统,需要监听模块系统的事件,比如模块的加载/卸载. 当收到某个模块加载的事件后,资源系统会及时的加载这个模块所需要的资源. 同样的在收到模块卸载事件后,卸载掉它所使用的资源. 这里需要注意的细节是资源系统的加载卸载操作是由模块系统的模块加载/卸载来触发的,具体的资源加载/卸载机制后面会讲到. 另外资源系统和许多Torque中的子系统一样,所使用的也是T... 阅读全文
posted @ 2013-03-03 14:06 Kevin Game 阅读(274) 评论(0) 推荐(0) 编辑
摘要: TAML 编译当你要将一个对象写入到TAML时,并不意味着之写入单一的对象,写入操作同样将作用于他的子对象.在写入的时候会遵循若干个步骤:查找所有静态和动态的属性Field进行写入,保存.查找所有的子对象进行写入,保存.查找所有自定义状态进行写入,保存.静态和动态属性的编译这个过程实际上是由两部分组成,首先是遍历所有的静态属性域,并检测他们是否应该被写入文件.要注意的是这个检测操作只在没有前置调用WriteDefaults的情况下执行.在引擎的属性域系统中预先指定了每个属性的相关接口,有设置,获取,写入方法,如下:addProtectedField("Angle", Typ 阅读全文
posted @ 2013-03-03 12:26 Kevin Game 阅读(368) 评论(0) 推荐(0) 编辑