mirror of
https://github.com/wyb10a10/cocos_creator_framework.git
synced 2026-05-31 13:02:01 +08:00
creator2.4.2
cocos creator 框架 -- kxCreator
关于creator 2.4 新资源框架的一些思考
新的资源框架引入了AssetBundle的设计,这个设计的优点有很多:
- 非常便捷的分包,极大降低了小游戏或应用的首包体积
- 加快了首场景的加载速度,特别是资源较多的游戏
- 可以让开发中更加灵活的规划资源
但同时也引入了一些复杂度,比如bundle之间的依赖性,还有在使用资源的时候,我需要知道每个资源是在哪个bundle中,这使代码变得复杂了一些。
bundle的规划和依赖性问题取决于项目,框架可能需要解决依赖性的问题,在代码中隐藏bundle之间的依赖关系,调用者只需要关心当前要加载的资源所在的bundle即可。
是否可以让调用者连当前资源所在的bundle也无需关心呢???
方式1:制定一个目录的规则,让url中有足够的信息可以定位bundle,但这种方式会让url很奇怪,比如有些是本地bundle、有些是远程bundle、而且对目录有一定要求,实际上是增加了潜规则 方式2:走资源配置的形式,比如加载某资源id,这个id可以对应配置中的配置项包含bundle和url,可能很多项目会有类似的资源加载配置
按照2.4的设计,让使用者知道bundle这一层可能并不是一件糟糕的事情,不论是本地还是远程bundle,在加载bundle的时候,只需要使用bundle名称即可
写在前面
我对框架对一点理解,所谓框架,浅薄一点地说,只是将一些常用的代码进行封装,方便我们少写一点代码,更快地完成功能开发。但有的框架用起来舒坦,有的用起来令人令人感觉繁琐、压抑。希望这一堆代码,可以提高你的开发效率,并规避一些繁琐易错的问题。
有2个问题,是我们在平时编码的时候总是会困扰我们的问题,一个是生命周期的管理问题,一个是数据的读写问题。这两个问题决定了我们能否轻松地实现各种功能,对于生命周期管理问题,最好的方式是不用管理,让框架自动帮我们做这件事,同时也能支持让我们手动控制某些我们希望控制的地方。
核心框架
- 资源管理
- ResLoader:资源的加载和卸载,支持资源依赖的识别
- PrefabPool:Prefab的简单池子,用于优化大量重复创建的对象
- 网络框架
- UI框架
- 通用
- EventManager: 事件机制的支持
- TaskQueue: 任务队列的支持(确保有序地执行逻辑)
- todo: 热更新
- todo: 新手引导框架
示例项目
- 基础示例
- 网络功能示例 参考 Scene/example_net 场景
- 资源管理示例 参考 Scene/example_res 场景
- UI示例 参考 Scene/example_ui 场景
- ...
- 完整游戏示例
工具
...
Description
Languages
TypeScript
100%