更新日期:2025年3月21日。
Github 仓库:https://github.com/SaiTingHu/HTFramework
Gitee 仓库:https://gitee.com/SaiTingHu/HTFramework
索引
一、Main主程序简介
Main
为框架主模块,提供访问其他模块的快捷接口,还支持快捷设置脚本定义、指定全局主要数据类、设置项目授权、以及配置全局参数等。
二、简略文档
快捷调用
通过如下方式快捷调用此模块:
HT.Framework.Main.Current
公开字段
字段 | 描述 |
---|---|
DefaultSkin | 默认的GUI皮肤 |
IsEnabledLogInfo | 是否启用常规日志打印 |
IsEnabledLogWarning | 是否启用警告日志打印 |
IsEnabledLogError | 是否启用错误日志打印 |
IsAllowSceneAddBuild | 是否允许将场景添加到发布界面 |
ApplicationFocusEvent | 程序焦点事件 |
ApplicationQuitEvent | 程序退出事件 |
公开属性
属性 | 描述 |
---|---|
IsInitCompleted | 框架是否已完成初始化(包含所有内置模块的初始化) |
IsReadyCompleted | 框架是否已完成准备工作(包含所有内置模块的准备工作) |
Pause | 暂停主程序 |
公开方法
方法 | 描述 |
---|---|
Clone | 克隆实例 |
CloneGameObject | 克隆 GameObject 实例 |
Kill | 杀死实例 |
KillImmediate | 立即杀死实例 |
Kills | 杀死一群实例 |
GetInternalModule | 获取内置模块 |
AddDataModel | 添加数据模型 |
RemoveDataModel | 移除数据模型 |
GetDataModel | 获取数据模型 |
ClearDataBinding | 清空指定数据模型的数据绑定 |
ClearAllDataBinding | 清空所有数据模型的数据绑定 |
IsExistParameter | 是否存在指定名称、类型的参数 |
GetParameters | 通过名称、类型获取参数 |
HybridCLRCompleted | HybridCLR 热更新程序集已加载完成 |
QueueOnMainThread | 将执行委托排到主线程调用(在子线程中) |
QueueOnSubThread | 将执行委托排到子线程调用(在主线程中) |
公开类型
类型 | 描述 |
---|---|
DataModelBase | 数据模型基类,自定义数据模型继承此类 |
LicenserBase | 授权者基类,自定义授权条件继承此类 |
公开接口
接口 | 描述 |
---|---|
无 | 无 |
公开特性
特性 | 描述 |
---|---|
无 | 无 |
三、使用Main主程序
框架生命周期
框架生命周期函数如下(Module
代表内置模块和自定义模块,MonoBehaviour
代表常规脚本的生命周期):
规则如下:
1.OnInit自身初始化
:框架的所有模块的自身初始化将在此完成,且其只专注于自身初始化;
2.OnReady准备完毕
:框架的所有模块已完成初始化,在此阶段已能确保访问其他模块的安全性,若有需要访问其他模块的业务,可在此处完成;
3.OnUpdate逻辑帧更新
:初始化完成、准备完毕后,这里进行逻辑帧更新。
4.OnTerminate终结
:当模块终结时,这里进行终结前处理。
注意:也即是说,框架的所有初始化工作将先于任何自定义MonoBehaver脚本的Awake方法,你在任何地方的任何操作都可以直接访问框架资源,其自身初始化已确保最先完成(除非你的脚本执行顺序在框架之前,这样的话将没有意义)。
主循环
设置Pause
为true将使得框架主循环暂停,如下调用:
Main.Current.Pause = true;
注意:当框架暂停时,每个模块都会受到不同程度的影响,这取决于该模块具体的实现。
调用其他模块
调用其他任何主要模块都将从Main开始,可以直接输入m_以筛选出框架中所有主要模块。
也可以使用如下方式:
//获取FSM模块
Main.Current.GetInternalModule(HTFrameworkModule.FSM);
Scripting Define 脚本定义
在这里设置全局脚本定义。
点击New按钮,输入名称后再点击OK按钮,最后再点击Apply应用按钮,即可添加新的脚本定义,如下添加一个脚本定义Client。
在代码中判断这个脚本定义。
private void Start()
{
//如果定义了Client
#if Client
GlobalTools.LogInfo("这里是客户端!");
#endif
}
Data Model 数据模型
在这里加载全域数据模型。
请参阅如下文章:【Unity】 HTFramework框架(三十九)【进阶篇】UI的数据驱动模式(MVVM)。
License 授权许可
请参阅如下文章:【Unity】 HTFramework框架(三十二)License授权验证。
Parameter 全局参数
这里可以配置全局参数
,如下配置了一个DataSet(数据集)
参数,和一个String(字符串)
参数。
点击New
按钮可以新建参数,目前支持的参数类型为大部分常见类型。
获取全局参数的方式也非常简单,如下。
//获取全局参数 - 远程服务器地址
if (Main.Current.IsExistParameter("远程服务器地址"))
{
string serverUrl = Main.Current.GetStringParameter("远程服务器地址");
}
//获取全局参数 - 第一关配置文件
if (Main.Current.IsExistParameter("关卡配置表"))
{
DataSetBase dataSet = Main.Current.GetDataSetParameter("关卡配置表");
}
Setting 环境设置
这里可以进行一些针对此项目的环境设置,比如Log
类型的设置分栏,在框架中只有三种等级的日志,常规日志Info,警告日志Warning,错误日志Error,在这里分别可以开启或关闭这三种日志的打印接口:
注意:建议您在任何部位都使用框架的日志打印接口(Log),他只接收string类型的参数,且跳过了Debug类的拆装箱操作,而且在项目正式上线时可以在Setting面板直接禁用掉所有的日志打印。
Build
类型的设置分栏,为项目构建设置,设置项Allow Scene Add Build
为是否允许将其他场景添加到Build界面,不过,包含框架主环境的场景的Build索引必须为0。
注意:勾选了此设置项,则表示不再使用AB包模式加载场景,任何场景将被允许添加到Build界面,直接发布。
HybridCLR 热更新
【Unity】 HTFramework框架(五十二)使用 HybridCLR 热更新。
四、运行时检视面板
在编辑器中运行时将会出现运行时检视面板
(Runtime Data),主要用以调试或数据监测,目前面板如下:
1.Pause:框架主逻辑是否暂停。