作者 QQ:1107689123 邮箱:1107689123@qq.com
CEngine 是一个轻量级Unity开发框架,可满足常用的开发需求,主要包含的功能有:
- AssetBundle打包加载全套逻辑(整合SharpZipLib完成压缩解压)
- AssetBundle管理类
- 整合 IFix 完成代码热更
- 高效时间轮定时器(帧定时器及逻辑定时器)
- UI管理类
- 消息机制
- 对象池重用机制
- 日志输出为文件流保存本地方便调试
现有Unity开发工作流基本分为两类,一类在实现业务过程中不需要关心AssetBundle的加载与卸载,利用AssetDataBase实现编辑器模式与AB包的分离,这种开发模式优点在于快速开发,在编辑器上开发时不需要打包,出apk或者ipa时才打包,实现了加载逻辑与业务逻辑的分离,缺点在于AssetBundle不存在卸载逻辑,所有的AB包都会存在于内存,极大的增加了内存使用,最终打包时耗时极长,CEngine 使用了另一类工作流,打包时资源有修改时需要主动打一次AB包,整个开发过程中直接控制AB包的加载卸载,即编辑器与真机的AB加载具有一致性,优点在于主动管理AB包及其依赖的加载和卸载,极大减少内存消耗,打apk或ipa时速度极快,不需要额外打AB包的过程,缺点在于增加了开发复杂度以及开发人员门槛
打包的资源需要放到AssetBundle的子目录下,右键点击 CreateAssetBundle 即可完成AB打包,开发过程中打的AB包都会存放在DevCaChe目录,代码获取资源 AssetBundleMgr.instance.GetAssetBundle("ui/common.unity3d").LoadAsset<GameObject>("ResName") 代码卸载AB包 AssetBundleMgr.instance.UnloadAssetBundle("ui/common.unity3d")
点击 打开持久化数据目录 可打开游戏运行时存储数据目录,包括解压完成的AB包和Log日志
点击 拷贝压缩并生成配置 将会生成AB压缩包到StreamingAssets目录中
- 调用帧定时器 TimerMgr.SetFrameTimer(10, ()=>{ Debug.Log("invoke") }); 10帧后打印invoke
- 调用逻辑定时器 TimerMgr.SetLogicTimer(10, ()=>{ Debug.Log("invoke") }); 10毫秒后打印invoke
- 发送消息
- 发送无参数消息 EventMgr.instance.SendEvent("msg");
- 发送一个参数消息 EventMgr.instance.SendEvent<float>("msg", 0.1f);
- 发送两个参数消息 EventMgr.instance.SendEvent<float,float>("msg", 0.1f, 0.2f);
- 注册消息[清理时需要反注册,比如界面关闭时]
- 注册无参 EventMgr.instance.RegEvent("msg", callback);
- 注册一个参数消息 EventMgr.instance.RegEvent<float>("msg", callback1);
- 注册两个参数消息 EventMgr.instance.RegEvent<float,float>("msg", callback2);
- 反注册无参 EventMgr.instance.UnRegEvent("msg", callback);
- 反注册一个参数消息 EventMgr.instance.UnRegEvent<float>("msg", callback1);
- 反注册两个参数消息 EventMgr.instance.UnRegEvent<float,float>("msg", callback2);
使用 ObjectPool 模板类即可使用对象池 private ObjectPool _teNodePool = new ObjectPool() 从对象池中获取对象 _teNodePool.Get() 释放对象回对象池 _teNodePool.Release(te)