CocosCreator资源加载和游戏优化

一、资源加载管线

1. 管线(Pipeline)

使用管线来处理曾哥资源加载的流程,解耦了资源处理的流程。

①transformPipeline(Url路径转换管线) = parse(创建RequestItem) + replaceOverrideAsset(替换覆盖的资源) + combine(组合生成item.url)

②fetchPipeline(预加载管线) = transformPipeline(url路径转换) + fetch(下载资源文件)

③pipeline(正常加载管线) = transformPipeline(url路径转换) + loadOneAssetPipeline(下载资源文件 fetch、parse)

2.transformPipeline(Url路径转换管线)

①parse:为每个要加载的资源生成RequestItem对象,并初始化其资源信息(AssetInfo、uuid、cofig等)

②replaceOverrideAsset:会从assetOverrideMap中查看item的uuid,并替换覆盖资源

③combine:为每个RequestItem构建出真正的加载路径,这个加载路径最终会转换到item.url中

3.fetchPipeline(预加载管线)

①preprocess:交由transformPipeline执行

②fetch:用于下载资源文件,由packManager负责下载实现,fetch会将下载完的文件数据放到item.file中

4.pipeline(正常加载管线)

①preprocess:交由transformPipeline执行

②load:在loadOneAssetPipeline中执行每个子任务。(其中fetch阶段下载资源文件,parse用于加载完的资源文件转换成可用的资源对象)

5.资源优化

资源本身的压缩,纹理压缩,合并JSON,Zip压缩,在低端设备上,文件下载的并发数不能设置太高。

二、合批策略

1.静态合批

①将需要静态合批的静态模型放在同一个节点下,使用静态合批会将节点下的所有MeshRenderer里的Mesh合并成一个,并将其挂到另一个节点下。

操作方式:

a)材质和网格数据一致的静态模型节点,放置到同一节点下执行静态合批

b)通过代码调用BatchingUtility.batchStaticModel接口进行静态合批

2.GPU Instancing

①适用于大量顶点数据完全相同的动态模型的场景

②当启用后,绘制时会根据模型的材质和顶点数据分组,每个分组组织instanced attributes信息,然后一次性完成绘制

3.使用场景

①静态合批:确保材质统一的情况下,如果确认某些模型在游戏周期内完全静止不会变化,就可以使用静态合批。

②GPU Instancing:如果存在大量相同的模型重复绘制,相互间只有相对可控的小差异,就可以使用GPU Instancing。

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值