Tengine基本使用(fantasy分支)

2024.07.29:由于Fantasy框架近期即将更新,所以TEngine该分支可能会有变动。故本文只做上手的参考文档,可以关注后续更新

为什么使用Tengine?

优点

1.Tengine是一款优秀的unity框架解决方案,该框架整合了GameFramework、fantasy、HybridCLR等优秀框架或解决方案为一体,使双端开发都变得简单友好。
2.框架也有商业项目正在使用,是经过验证的可靠方案,足以满足基本的商业需求。
3.社群活跃,一个长期使用的项目来说,活跃的社群或社区是很重要的。

TEngine Version: 2023.04.31

Tengine目录结构

TEngineFantasy目录结构

1
2
3
4
├─ Assets           资产目录
├─ Books 手册
├─ DotNet 后端服务器
├─ Luban luban目录(文件服务器目录)

Asset目录结构

1
2
3
4
5
6
7
8
9
Assets
├── AssetRaw 资源目录
├── Atlas 图集目录
├── GameScripts 游戏脚本目录
├── Scenes 主场景目录
└── TEngine
├── AssetSetting YooAsset资源设置
├── Editor TEngine-Editor程序集
└── Runtime TEngine-Runtime程序集

Tengine双端测试[1]

1.在Tengine–gitee官网clone一份项目库,切换到fantasy分支,然后在Unity2021.3以上的版本中,打开Tengine文件夹。

需要注意的是,unity需要提前安装IL2cpp模块才能使用YooAsset、Hybridclr等功能

2.在EditorMode下运行network-demo场景
3.在luban文件夹里,运行gen_code_bin_to_server,生成一下服务端代码
4.在Donet文件夹里开启server解决方案,运行启动项目

(1)vs可能会生成解决方案失败,一般原因是由于ThirdParty的MongoDb.Driver包版本落后导致,将其更新为一致的版本。
(2)生成解决方案之后,也可以运行start_develop来更方便的开启服务端,这个bat文件已经填好了运行需要的参数,可以自行更改。

5.进行双端的消息传输测试
双端测试截图

Tengine热更测试

准备工作

在热更之前,需求做一些准备工作来确保环境正常
1.确保安装了Hybridclr,且环境配置正确

Hybridclr配置

如果Hybridclr Enable未开启,需要开启Hybridclr/Define Symbols/Enable Hybridclr,来在Tengine逻辑里打开预编译常量

2.确认Tengine的设置是你想要的

Tengine配置

3.打开main场景,确保其中的ResourceModule模块中,ResourceMode设置为联机运行模式(最好将运行模式也改为联机运行模式)

ResourceModule设置

4.运行菜单 HybridCLR/Generate/All 进行必要的生成操作。这一步不可遗漏!!!
5.运行菜单 HybridCLR/Build/BuildAssets And CopyTo AssemblyPath,生成热更新dll并copy到热更程序集中。
6.第一次先设置YooAsset/AssetBundle Builder为SBP

首次配置SBP构建

然后运行菜单 TEngine/QuickBuild/一键打包AssetBandle 构建AB
7.打开Build Settings对话框,点击Build,打包热更新示例工程。

文件服务器开启

1.安装node.js,配置好npm环境变量(网上自己查)
2.打开文件服务器目录,运行install.bat进行npm安装
3.新建AssetsRoot文件夹,在里面放入AB包生成的文件和GameScripts\Main\Launcher\Resources\AssetLoad\UpdataData.json文件

UpdataData.json文件可以改变热更新的服务器地址和热更新显示方式,这样可以通过配置这个文件来实时更新配置

4.运行start.bat开启文件服务器

打包验证

1.首次打包可以发现在框架内置debug窗口里可以看到下图内容

首次打包截图

2.我们可以给输出日志增加一条来验证热更是否成功。在GameLogic文件夹里的GameApp.cs文件中添加一句打印日志的代码。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public static void Entrance(object[] objects)
{
_hotfixAssembly = (List<Assembly>)objects[0];
Log.Warning("======= 看到此条日志代表你成功运行了热更新代码 =======");
Log.Warning("======= Entrance GameApp =======");
Log.Warning("======= 验证热更 ======="); //加一条日志验证
Instance.Init();
Instance.Start();
Utility.Unity.AddUpdateListener(Instance.Update);
Utility.Unity.AddFixedUpdateListener(Instance.FixedUpdate);
Utility.Unity.AddLateUpdateListener(Instance.LateUpdate);
Utility.Unity.AddDestroyListener(Instance.OnDestroy);
Utility.Unity.AddOnDrawGizmosListener(Instance.OnDrawGizmos);
Utility.Unity.AddOnApplicationPauseListener(Instance.OnApplicationPause);
GameModule.Procedure.RestartProcedure(new GameLogic.OnEnterGameAppProcedure());
Instance.StartGameLogic();
}

3.运行菜单 HybridCLR/Generate/All 重新生成dll,然后再运行菜单 BuildAssets And CopyTo AssemblyPath。

4.重新构建AB,然后再把更新后的AB包上传到文件服务器里。

5.打开之前打包的工程,查看是否处于热更模式,且代码更新成功
热更状态截图
代码更新截图

参考


Tengine基本使用(fantasy分支)
https://www.liu2dream.fun/post/Tengine基本使用/
作者
刘老师 MrLiu
发布于
2024年4月5日
许可协议