﻿# 01. QFramework.Toolkits 简介

QFramework.Toolkits 是包含 QFramework.cs 和 大量工具集的解决方案。

在 QFramework v1.0 之前，QFramework.Toolkits 就是 QFramework 本身，而在 QFramework v1.0 开始，QFramework 拥有了自己的开发架构—QFramework.cs，于是原来的 QFramework 就变成了 QFramework.Toolkits。

QFramework.Toolkits 称为 QFramework 工具集，是一套**开箱即用的、渐进式**的**快速开发**框架。

目标是作为无框架经验的公司、独立开发者、以及 Unity3D 初学者们的**第一套框架**。框架内部积累了多个项目在各个技术方向的解决方案。学习成本低，接入成本低（侵入性低），重构成本低，二次开发成本低。文档内容丰富。

QFramework 工具集的设计哲学是追求极致的开发效率和开发体验。

**QFramework.Toolkits 特性一览**

* 工具集（QFramework.Toolkits v0.16）
    * UIKit 界面&View快速开发&管理解决方案
        * UI、GameObject 的代码生成&自动赋值
        * 界面管理
        * 层级管理
        * 界面堆栈
        * 默认使用 ResKit 方式管理界面资源
        * 可自定义界面的加载、卸载方式
        * Manager Of Manager 架构集成（不推荐使用）
    * ResKit 资源快速开发&管理解决方案
        * AssetBundle 提供模拟模式，开发阶段无需打包即可加载资源
        * 资源名称代码生成支持
        * 同一个 API 可加载 AssetBundle、Resources、网络 和 自定义来源的资源
        * 提供一套引用计数的资源管理模型
    * AudioKit 音频管理解决方案
        * 提供背景音乐、人声、音效 三种音频播放 API
        * 音量控制
        * 默认使用 ResKit 方式管理音频资源
        * 可自定义音频的加载、卸载方式
    * CoreKit 提供大量的代码工具
        * ActionKit：动作序列执行系统
        * CodeGenKit：代码生成 & 自动序列化赋值工具
        * EventKit：提供基于类、字符串、枚举以及信号类型的事件工具集
        * FluentAPI：对大量的 Unity 和 C# 常用的 API 提供了静态扩展的封装（链式 API）
        * IOCKit：提供依赖注入容器
        * LocaleKit：本地化&多语言工具集
        * LogKit：日志工具集
        * PackageKit：包管理工具，由此可更新框架和对应的插件模块。
        * PoolKit：对象池工具集，提供对象池的基础上，也提供 ListPool 和 Dictionary Pool 等工具。
        * SingletonKit：单例工具集
        * TableKit：提供表格类数据结构的工具集


**典型的 QFrameowrk.Toolkits 代码**

```csharp
using QFramework;
using UnityEngine;
using UnityEngine.UI;

namespace liangxiegame
{
    public partial class UIGamePanel : UIPanel
    {
        private ResLoader mResLoader;
        
        protected override void OnInit(IUIData uiData = null)
        {
            mResLoader = ResLoader.Allocate();
            
            mResLoader.LoadSync<GameObject>("GameplayRoot")
                .Instantiate()
                .Identity()
                .GetComponent<GameplayRoot>()
                .InitGameplayRoot();
            
            
            BtnPause.onClick.AddListener(() =>
            {
                AudioKit.PlaySound("btn_click");
                
                ActionKit.Sequence()
                    .Callback(() => BtnPause.interactable = false)
                    .Callback(() => BtnPause.PlayBtnFadeAnimation())
                    .Delay(0.3f)
                    .Callback(() => UIKit.OpenPanel<UIPausePanel>())
                    .Start(this);
            });
        }

        protected override void OnClose()
        {
            mResLoader.Recycle2Cache();
            mResLoader = null;
        }
    }
}
```

## 更多内容

*   转载请注明地址：[liangxiegame.com](https://liangxiegame.com) （首发） 微信公众号：凉鞋的笔记
*   QFramework 主页：[qframework.cn](https://qframework.cn)
*   QFramework 交流群: 623597263
*   QFramework Github 地址: [https://github.com/liangxiegame/qframework](https://github.com/liangxiegame/qframework)
*   QFramework Gitee 地址：[https://gitee.com/liangxiegame/QFramework](https://gitee.com/liangxiegame/QFramework)
*   GamePix 独立游戏学院 & Unity 进阶小班地址：[https://www.gamepixedu.com/](https://www.gamepixedu.com/)