/QFramework

Your first K.I.S.S Unity 3D Framework.

Primary LanguageC#

[TOC]

Build Status

QFramework 简介 Intro

中文|English

QFramework 是提供一套简单、强大、易上手、符合 SOLID 原则、支持领域驱动设计(DDD)、事件驱动、数据驱动、分层、MVC 、CQRS、模块化、易扩展的架构,她的源码只有不到 800 行,你可以完全把她放在你的笔记应用里保存。

运行环境

  • Unity 2018.4.x ~ 2021.x

安装

示例&Demo

交流&社区

提供的架构图

示意图

ShowCase(商业案例)

鬼山之下 谐音梗挑战

Star 趋势(如果项目有帮到您欢迎点赞)

Stargazers over time

核心成员

优秀的 Unity 库、框架

代码规范完全遵循:

QCSharpStyleGuide

赞助 Donate:

  • 如果觉得不错可以在 这里 Asset Store 给个 5 星哦~ give 5 star
  • 或者给此仓库一个小小的 Star~ star this repository
  • 以上这些都会转化成我们的动力,提供更好的技术服务!

TODO:

以下内容待整理内容

快速图解:

1.ViewController和Bind的基本使用 自动生成脚本

自动生成的脚本如下:

2.ViewController和ViewController的嵌套使用

自动生成的脚本如下:

3.自动生成Prefab

4.使用UIKit创建Prefab和脚本

自动生成的脚本如下:

5.使用UIKit子控件UIElement

快速开始 QuickStart:

1.Action Kit

  • chainning style(Driven by MonoBehaviour or Update)
this.Sequence()
	.Delay(1.0f)
	.Event(()=>Log.I("Delayed 1 second"))
	.Until(()=>something is done)
	.Begin();
  • object oriented style
var sequenceNode = new SequenceNode();
sequenceNode.Append(DelayAction.Allocate(1.0f));
sequenceNode.Append(EventAction.Allocate(()=>Log.I("Delayed 1 second"));
sequenceNode.Append(UntilAction.Allocate(()=>something is true));

this.ExecuteNode(sequenceNode);

2.Res Kit

// allocate a loader when initialize a panel or a monobehavour
var loader = ResLoader.Allocate();

// load someth in a panel or a monobehaviour
loader.LoadSync<GameObject>("resources://smobj");

loader.LoadSync<Texture2D>("resources://Bg");

// load by asset bundle's assetName
loader.LoadSync<Texture2D>("HomeBg");

// load by asset bundle name and assetName
loader.LoadSync<Texture2D>("home","HomeBg");


// resycle this panel/monobehaivour's loaded res when destroyed 
loader.Recycle2Cache();
loader = null;

3.UI Kit

// open a panel from assetBundle
UIKit.OpenPanel<UIMainPanel>();

// load a panel from specified Resources
UIKit.OpenPanel<UIMainPanel>(prefabName:"Resources/UIMainPanel");

// load a panel from specield assetName
UIKit.OpenPanel<UIMainPanel>(prefabName:"UIMainPanel1");

技术支持 Tech Support:

下载地址 Download:

可选的包含项目 Include Projects:

参考 Reference:

功能列表

模块名称 包含功能 描述
Core Architecture 一套全栈通用的系统设计架构,QF 的本身是用这套架构设计,同时这套架构可以应用与项目开发,为 QF 的主要提供架构,QF 的文档系统(React)、QF 的插件系统(.Net Core)均用此架构开发。
CodeGen 代码生成库,一套链式代码生成模板。
Singleton 一套单例模板工具
IOC 依赖注入/控制反转容器
Event 事件机制实现,包含枚举事件 和 类型事件
Pool 各种对象池提供,包含 List、Dictionary 对象池
FSM 一套基于类型的状态机实现
Disposable 销毁模式 和 对应扩展方法实现
Factory 对象的创建模式封装
RefCounter 引用计数器实现
CSharpExtensions 大量的方便易用的扩展实现
Table 可以建立索引的表格数据结构实现
EasyIMGUI 方便易用的、面向对象的(组合模式)的 IMGUI(OnGUI)绘制库
Utility 各种静态方法封装
ManagerOfManagers(弃用) Manager Of Managers 架构的实现
ActionKit 之后写
ResKit SimulationModel 真机和编辑器模拟资源加载双模式,让开发阶段与真机阶段自如切换
ResPathLoad 从Resources目录与沙盒目录以及从网络中加载资源
LoadSprite 加载Sprite或精灵图集
LoadScene 在AssetBundle中同步与异步加载Scene场景
ResAssetManager 标记的AssetBunlde资源管理,快速定位
LoadASync 异步加载与异步队列加载
CustomRes Reskit功能自定义拓展
CustomLoadConfig AssetBundle自定义配置表生成
UIKit 之后写
AudioKit 之后写