K Frame Work

GPL-3.0
by cjsjy123

Unity Game FrameWork

( Crawled 30 minutes ago )
+

KFrameWork

这是一套Unity逻辑框架,减少与原始逻辑代码的耦合而设计的.

By author Kubility

API Introduction for Class:

MainLoop: 主循环,负责框架相关事件的触发和框架的初始化
GameFrameWork:负责框架的基本状态,负责框架的属性初始化
AttributeRegister:属性注册类,附加的属性在此注册相应的逻辑
SceneCtr:场景管理类,记录场景的信息,并负责场景的加载和监听
ScriptLogicCtr:脚本逻辑控制器,负责给不同的脚本命令分配不同的脚本执行器执行逻辑代码
GameSyncCtr:游戏同步器,负责游戏的各种逻辑同步以及记录同步的相关信息
Schedule:定时器,脱离了Unity的协同程序,依赖unity的更新来每帧判断定时器事件的状态信息
KObjectPool:对象池,不在内部使用泛型约束new()来达到内部的对象构造,因为new T()实际上调用的activitor.createInstance()比new的开销大约大了2-3倍,所以建议判断返回值,在代码外部使用new进行对象构造,最后舍弃的时候使用push回收

Command(脱离unity协同程序)
FrameCommand:帧命令,使得逻辑代码可以在指定的帧数过了之后执行
ScriptCommand:脚本命令,负责逻辑代码消息的传递
TimeCommand:时间命令,使得逻辑代码可以在指定的时间过了之后执行
BatchCommand:批命令,可以使得不同的commond类按照既定的顺序依次执行

Command Note:
每个命令都可以同类型叠加,比如 timeCmd+= timeCmd; 但是拒绝不同类型叠加,不同类型叠加必须通过BatchCommand

Params(泛参数类,支持多类型的参数Read/Write)
SimpleParams:简单的泛参数类,有同类型参数和总参数上限,gc小于GenericParams
GenericParams:可变泛参数类,没有同类型和总参数上限,gc略大于SimpleParams

Attrs:
Script_SharpLogicAttribute: c#脚本逻辑属性,当有同命令的scriptCmd触发的时候,会进入到对应的注册函数中
Script_LuaLogicAttribute:Lua脚本逻辑属性,当有同命令的scriptCmd触发的时候,会进入到对应的注册函数中

FrameWokAwakeAttribute:框架初始化事件
FrameWokDestroyAttribute:框架摧毁事件
FrameWokStartAttribute:框架开始事件
FrameWokDevicePausedAttribute:框架暂停/唤醒事件
FrameWokDeviceQuitAttribute:框架退出事件
FrameWokDisableAttribute:框架未激活事件
FrameWokEnableAttribute:框架激活事件
FrameWokFixedUpdateAttribute:框架Fixedupdate事件
FrameWokUpdateAttribute:框架Update事件
FrameWokLateUpdateAttribute:框架Lateupdate事件
FrameWokBeforeUpdateAttribute:框架早于Upate的BeforeUpdate事件(但是不能保证优先于所有的Update)

SceneEnterAttribute:场景进入监听
ScenLeaveAttribute:场景李磊监听

SingleTonAttribute:单例属性,可以配置来确定单例的实例化时机,比如声明相应的静态字段

可能会引用到的库 ToLua
https://github.com/topameng/tolua
protobuf-net
gstring

Notes:
0.0.01Version ----- 2016.10.23:
基于unity5.3以上版本进行开发,所以对于其他版本可能会有API不匹配问题,后续进行兼容支持 同时因为内部大量的使用了对象池,所以很多对象在第一次使用的时候gc一般远大于后面几次,但也得益于此,后面的操作一般可减少50%-90%的gc开销, 其他功能仍在持续迭代开发中,相应的UI,RES模块,以及其他的管理模块尚未完成,此版本为开发版本并不是发布版本,可以简单试用框架的基本功能

0.0.01Version ----- 2016.10.26:
为逻辑框架添加简易状态机结构,辅助ai实现

0.0.01aVersion ----- 2016.11.3:
优化命令,达到0GC image image

0.0.01bVersion ----- 2016.11.3:
增加资源导入监听接口,并添加了部分例子