# TCCFramework **Repository Path**: TCC0036/TCCFramework ## Basic Information - **Project Name**: TCCFramework - **Description**: 基于HybridCLR热更的unity简单框架 - **Primary Language**: Unknown - **License**: Zlib - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2022-10-19 - **Last Updated**: 2025-06-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: Unity ## README # TCCFramework #### 介绍 基于HybridCLR热更的unity简单框架 #### 安装教程 一、新建项目 1、安装HybridCLR 新建一个Unity项目,通过Package Manager安装Hybridclr(需要提前安装Git): 到 https://github.com/focus-creative-games 找到hybridclr_unity ![输入图片说明](https://foruda.gitee.com/images/1686922467809338569/01cba1ff_8803467.png "屏幕截图") 复制Git链接https://github.com/focus-creative-games/hybridclr_unity.git ![输入图片说明](https://foruda.gitee.com/images/1686922609384310009/7e2a251d_8803467.png "屏幕截图") 打开Unity PackageManager ![输入图片说明](https://foruda.gitee.com/images/1686922626565710792/3d6dc733_8803467.png "屏幕截图") 输入链接后点Add ![输入图片说明](https://foruda.gitee.com/images/1686922652270718849/3bba3e56_8803467.png "屏幕截图") 安装成功后Unity导航栏会出现HybridCLR按钮 ![输入图片说明](https://foruda.gitee.com/images/1686922679323162866/830889fa_8803467.png "屏幕截图") 点击HybridCLR ---->Installer--->安装 ![输入图片说明](https://foruda.gitee.com/images/1686922703453118964/97142919_8803467.png "屏幕截图") 至此HybridCLR安装完毕 #### 使用说明 2、设置HybridCLR 点击HybridCLR----->Settings 按热更需求进行相应设置,没特殊要求以下设置满足大部分项目需求 ![输入图片说明](https://foruda.gitee.com/images/1686922754243363954/a52469bf_8803467.png "屏幕截图") 提示:设置完成后先打一个包以生成热更所需的必要元数据,先打空包可避免后续繁琐操作,未打包也没关系,第一次打AB包时会提示 二、框架内容 1、框架结构 ![输入图片说明](https://foruda.gitee.com/images/1686922787251334969/fee82e7f_8803467.png "屏幕截图") Editor:编辑器扩展工具文件夹 Plugins:插件包文件夹 Prefabs:预制体文件夹 Resources:框架使用资源文件夹 RunTime:运行时相关文件夹 2、使用框架 新建初始场景,将Prefabs下的Main预制体放入场景后在Inspector面板设置相关参数 3、管理类 1、ResetHandle 整个框架的入口,管理所有管理类,减少单例模式的频繁使用,对所有管理类之间进行解耦,控制整个程序本地化语言切换,是否使用热更等 2、UI UIManager: UI模块管理类,调用ResetHandler.Instance.UIMagr 通过调用OpenUI和CloseUI控制UI面板显示和隐藏 BasePanel: UI面板基类,管理了所有的UIBehaviour,可通过在Project面板点击鼠标右键-->Create-->TccFramework-->创建UIScript快速创建继承BasePanel的类文件 UIBehavior:管理GameObjet下所有UI组件的行为和动画,需在创建UI组件是动态挂载 ![输入图片说明](https://foruda.gitee.com/images/1686922972631790751/3c26ec93_8803467.png "屏幕截图") 通过GetUIBehaviour(ID)可索引到挂载了UIBehavior的UI组件,可以完全忽略UI对象层级改变从而找不到该UI对象问题 通过继承UIAnimBase类来实现UI中各种点击、拖拽、显示等所需动画,继承了UIAnimBase的类会被自动枚举,点击动画下拉菜单可自由替换 LocalizedLanguageText:本地化语言文本类,若使用本地化语言需将Unity的Text组件替换为该类,并在导航栏-->TCCFramework-->配置本地化语言工具中配置相应语言 配置本地化语言工具: 继承数据编辑器实现的配置工具,通过编辑字段按钮-->点击鼠标右键可自由添加删除字段来对本地化语言进行配置,添加完关闭自动保存,请勿删除编号,其实能替换语言成功必要字段 数据同理,通过鼠标右键可自由添加语言数据 数据编辑器工具使用同理 ![输入图片说明](image.png) LocalizedLanguageText会根据Text文本内容自动绑定对应编号 Text内的内容未在配置表中找到会有红字提示,只作提示作用,不影响程序运行,但是更换语言是此文本内容不做替换 ![输入图片说明](https://foruda.gitee.com/images/1686924098387900503/f9af9433_8803467.png "屏幕截图") 3、资源 ResourceManager:资源管理类,调用ResetHandler.Instance.ResMagr 管理Resources资源、场景资源、AssetBundle资源的加载与卸载 需要传入LoadResHandle LoadResHandle:资源的信息文件 4、音频 AudioManager:音频管理类,调用ResetHandler.Instance.AudioMagr 管理音频音量,暂停、播放等操作 5、本地化语言 WordManager:本地化语言管理类,调用ResetHandler.Instance.WordMagr 管理本地化语言切换, 切换CurrentLanguagel属性值即可切换相应语言 6、引用池 ReferencePoolManager:管理所有引用,调用ResetHandler.Instance.ReferPoolMagr 需频繁使用的引用类型应将其封装到继承IReference接口类中,然后通过Spawn()和Recycle()来进行回收使用,可有效减少不必要的CG的产生,达到优化项目目的 7、数据 DataManager:数据管理类,封装了数据保存和读取的几种方案 调用ResetHandler.Instance.DataMagr 8、对象池 ObjectPoolMananger:管理所有对象,调用ResetHandler.Instance.ObjPoolMagr 对需频繁生成和销毁的对象应在程序初始进入时使用RegisterPool()将其注册到对象池, 在需要使用的地方使用TakeOutObj()取出使用,使用完毕后通过RecycleObj()将其回收 9、事件 EventManager:事件管理系统,调用ResetHandler.Instance.EventMagr 通过DispatchEvent()将事件派发出去,在对此事件关注的地方通过RegistEvent()注册该事件, 在离开时记得使用()注销对此事件的关注以避免不必要报错 10、版本管理 VersionsManager:管理热更资源版本,非热更程序不关注此模块,调用ResetHandler.Instance.VersionsdMagr 热更程序需要一个继承IUpdataHandle接口的类为主程序提供热更资源检查入口,该类需放在非热更程序集中,如图: ![输入图片说明](https://foruda.gitee.com/images/1686924121417209364/9e3bfd76_8803467.png "屏幕截图") ![输入图片说明](https://foruda.gitee.com/images/1686924138783137339/c8c20b24_8803467.png "屏幕截图") 关于程序集使用自行百度Unity Assembly Defintion基础知识此处不做讲解 实现接口函数CheckUpdata,在函数中使用ResetHandler.Instance.VersionsdMagr.InitCheckVersion()检查资源更新,检查完毕使用 ResetHandler.Instance.VersionsdMagr.DownloadFiles()从服务器下载对应更新资源,下载完毕执行startGame委托进入程序 11、Web WebNetManager:web网络管理器,封装了Post、Get请求,调用ResetHandler.Instance.WebNetMagr 12、打包 点击导航栏-->TCCFramerwork-->热更-->AssetBundleTool调出AB包打包界面,通过拖入或点击+号按钮方式添加需要打包的资源,文件夹必须勾选文件夹项,否则打包报错,记得配置打包平台和输出路径 注:请勿自主更换AB包打包工具,否则热更时会出错,打包完后将AB包文件夹放入资源服务器即可热更,AB文件夹必包含当前平台路径 ![输入图片说明](https://foruda.gitee.com/images/1686924173587322078/a976d06a_8803467.png "屏幕截图")