资源管理系统

一、资源打包
  • BuildPipeline.BuildAssetBundle资源打包参数:Determine(Object保持ID不变,用于增量发布)、ColloctDependencies(收集依赖)、Complete完全打包(该资源以完整的形式打包)
  • 场景打包:先打包的依赖的所有资源,然后打包场景,用BuildPipeline.BuildStreamed...选项为BuildAddtionalStreamdScene,表示打包成一个流化的压缩的可用www加载的AssetBundle
  • 资源MD值生成:使用C#MD5根据资源全局路径 生成一个哈希值byte[],串联所有byte的tostring("x2")
  • 资源也可以通过crc来唯一标志,crc较md5耗内存和空间要少
  • 生成资源依赖树之点名法:AssetDatabase可以返回每个资源所有依赖,通过该方法我们可以对对关联到的所有资源调用该方法,并对返回列表的每个路径点名,点名次数多的就是被嵌套依赖的资源。用依赖树来表示,点名最大的是叶子结点资源,最少的是根资源。
  • 生成依赖树之减法:.资源的直接依赖 = 资源的全部依赖 - 资源的所有的依赖的全部依赖
  • 自定义资源格式:资源格式的分类如:
    光照贴图 纹理
    音频 视频 动画 材质 动画控制器 fbx 预设 场景。
    每一资源我们都通过其后缀来区分是什么格式,一种格式的资源可能会对应到多种后缀。比如纹理:.jpg、.png
  • 依赖关系最终会生成一张依赖图,途中每个节点代表一个资源和他的依赖信息。其结构包含有:
    • path:路径
    • allDependencies:所有依赖的路径
    • dependencies:直接依赖的路径
    • formatDependencies:所有的依赖按格式分类
  • AB包加载完成后把它所有的资源都Load出来就可以释放掉,包括主资源和所有子资源。当然这里是指该资源只会被别的资源依赖一次,比如图集的纹理。其他资源如Material、特效的纹理因为混用比较常见,依赖关系比较复杂不能马上卸载,AB包必须和资源共存亡,否则后续依赖他的资源会丢失依赖。除非全局公用的资源,否则不要抽出来当成公用依赖打,会造成依赖关系紊乱。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章