Compare commits

..

309 Commits

Author SHA1 Message Date
ALEXTANG
8321e77421 Merge pull request #56 from AlanWeekend/main
fixed:looplistitem重复赋值问题
2023-11-13 13:09:25 +08:00
Weekend
1b6f80952e fixed:looplistitem重复赋值问题
fixed:looplistitem重复赋值问题
2023-11-12 19:49:02 +08:00
ALEXTANG
b52e655c30 更正错误注释
更正错误注释
2023-11-07 11:04:59 +08:00
ALEXTANG
8c0df95626 修正CancellationTokenSource重复Dispose问题
修正CancellationTokenSource重复Dispose问题
2023-11-03 16:58:42 +08:00
ALEXTANG
0d1e308f1c Update ResourceModule.cs 2023-11-03 10:07:25 +08:00
ALEXTANG
f8797538fd Update UIBase.cs 2023-11-03 09:55:36 +08:00
ALEXTANG
fe4e168041 Update ProcedurePreload.cs 2023-11-02 15:35:01 +08:00
ALEXTANG
8e9047d3a3 基于资源框架实现对标签WEBGL_PRELOAD、PRELOAD的预加载。 接口GameModule.Resource.GetPreLoadAsset<T>(location)
基于资源框架实现对标签WEBGL_PRELOAD、PRELOAD的预加载。 接口GameModule.Resource.GetPreLoadAsset<T>(location)
2023-11-02 13:16:05 +08:00
ALEXTANG
04bfaeccc8 示例CLI工作流
示例CLI工作流
2023-11-02 12:55:27 +08:00
ALEXTANG
d66c823c15 更新优化启用UpdateData时UILoadUpdate时序的问题
更新优化启用UpdateData时UILoadUpdate时序的问题
2023-11-02 11:48:47 +08:00
ALEXTANG
0ec1424f0a 升级HybridCLR 4.0.11=>4.0.12
升级HybridCLR 4.0.11=>4.0.12
2023-11-02 11:12:56 +08:00
ALEXTANG
01f8eb9d57 升级HybridCLR 4.0.10=>4.0.11 强烈建议升级,修复了若干bug
升级HybridCLR 4.0.10=>4.0.11 强烈建议升级,修复了若干bug
2023-11-02 10:01:30 +08:00
ALEXTANG
f5021a9688 修正Utility生命周期注入OnDestroy和OnDrawGizmos无效的问题
修正Utility生命周期注入OnDestroy和OnDrawGizmos无效的问题
2023-10-31 12:45:40 +08:00
ALEXTANG
a632f7a5ad Merge pull request #55 from AlanWeekend/main
修复demo流程的下载网速显示错误问题
2023-10-30 23:48:17 +08:00
Weekend
5f968f4154 优化网速计算
优化网速计算
2023-10-30 23:47:07 +08:00
Weekend
c9fe83c2bd Merge branch 'main' of https://github.com/AlanWeekend/TEngine 2023-10-30 23:04:05 +08:00
Weekend
2c00d103cb Update ProcedureDownloadFile.cs
fixed:demo流程的下载网速错误显示问题
2023-10-30 23:04:01 +08:00
ALEXTANG
1d56437d9f Update Utility.Http.cs 2023-10-30 11:15:52 +08:00
ALEXTANG
69db1ff977 修正音频模块音频代理类赋值问题
#54 修正音频模块音频代理类赋值问题
2023-10-30 10:40:22 +08:00
ALEXTANG
48887b1aee 框架支持Shudown不关闭游戏重启
框架支持Shudown不关闭游戏重启
2023-10-27 13:18:12 +08:00
ALEXTANG
381ea8bb8d 增加支持ComponentAutoBindTool自动绑定UI元素组件。
增加支持ComponentAutoBindTool自动绑定UI元素组件。
2023-10-27 10:48:21 +08:00
ALEXTANG
7401edac15 移除UIElement代码绑定工具,为后续AutoBind代码绑定工具做准备
移除UIElement代码绑定工具,为后续AutoBind代码绑定工具做准备
2023-10-27 00:13:04 +08:00
ALEXTANG
b1c7f30be9 ErrorLogger屏幕显示开启与DebugModule关联。
ErrorLogger屏幕显示开启与DebugModule关联。
2023-10-26 23:45:26 +08:00
ALEXTANG
cfaf82a623 释放资源判断资源是否有效
释放资源判断资源是否有效
2023-10-26 14:07:38 +08:00
ALEXTANG
6992d12c6c 修复循环列表主动GetItemByIndex和GetItemList的问题
修复循环列表主动GetItemByIndex和GetItemList的问题
2023-10-26 13:12:35 +08:00
ALEXTANG
119d9683ad Merge pull request #53 from AlanWeekend/main
修复UIListBase和UILoopListWidget赋值问题
2023-10-26 12:49:00 +08:00
ALEXTANG
9478868513 修正HttpDispose
修正HttpDispose
2023-10-26 12:28:06 +08:00
ALEXTANG
6ed32082e1 修正HttpDispose
修正HttpDispose
2023-10-26 11:43:32 +08:00
ALEXTANG
6ee515e8c5 增加局部单位事件分发器的封装。
增加局部单位事件分发器的封装。
2023-10-26 10:28:05 +08:00
ALEXTANG
b839afa76a 释放资源判断资源是否有效、支持YooAssets日志重定向
释放资源判断资源是否有效、支持YooAssets日志重定向
2023-10-26 00:22:02 +08:00
Weekend
d9605b348a 修复UILoopListWidget赋值问题 2023-10-25 22:34:02 +08:00
Weekend
dfef83919c 修复UIListBase和UIUILoopListWidget赋值问题 2023-10-25 22:18:57 +08:00
ALEXTANG
f5f983f220 移除资源模块加载场景,加载场景统一走场景管理模块。增加场景加载进度回调。
移除资源模块加载场景,加载场景统一走场景管理模块。增加场景加载进度回调。
2023-10-23 17:01:06 +08:00
ALEXTANG
d61b1206ee 通过CommandLineReader可以不前台开启Unity实现静默打包,详见CommandLineReader.cs example1
通过CommandLineReader可以不前台开启Unity实现静默打包,详见CommandLineReader.cs example1
2023-10-23 15:22:34 +08:00
ALEXTANG
3650ba1a8b 更新转表bat自动拷贝ConfigSystem
更新转表bat自动拷贝ConfigSystem
2023-10-23 13:00:40 +08:00
ALEXTANG
8f14a4d2cb 日志重定向相关的实用函数。
日志重定向相关的实用函数。
2023-10-23 11:41:44 +08:00
ALEXTANG
dc22e595c9 拓展支持AssetInspector,支持更多文件类型在Inspector显示
拓展支持AssetInspector,支持更多文件类型在Inspector显示
2023-10-23 11:41:33 +08:00
ALEXTANG
0e70f7d446 日志重定向相关的实用函数。
日志重定向相关的实用函数。
2023-10-23 11:27:06 +08:00
ALEXTANG
039569b2d4 提交配置表加载模板
提交配置表加载模板
2023-10-23 10:15:11 +08:00
ALEXTANG
ea38004ba2 luban-next支持懒加载 感谢半仙儿提供支持
luban-next支持懒加载 感谢半仙儿提供支持
2023-10-20 16:24:00 +08:00
ALEXTANG
cc97c0583a 升级luban-next
升级luban-next
2023-10-20 11:53:29 +08:00
ALEXTANG
887094a4b1 升级luban-next
升级luban-next
2023-10-20 11:38:51 +08:00
ALEXTANG
0d09a7e73b 增加场景管理模块。
增加场景管理模块。
2023-10-18 16:42:44 +08:00
ALEXTANG
d8f8514f9d WebGL下不对YooAssets.Destroy();
WebGL下不对YooAssets.Destroy();
2023-10-18 11:23:20 +08:00
ALEXTANG
f2f6b2422f 资源模块优化、UI模块优化,增加接口参数是否使用缓存资源操作句柄。
资源模块优化、UI模块优化,增加接口参数是否使用缓存资源操作句柄、如果需要则不会淘汰缓存队列中的资源清单。
2023-10-18 10:30:12 +08:00
ALEXTANG
3a9cad9397 Update ResourceManager.cs 2023-10-16 16:38:13 +08:00
ALEXTANG
5e70e7972e 更新资源模块接口
更新资源模块接口
2023-10-16 13:03:41 +08:00
ALEXTANG
8d2b4200d6 升级HybridCLR 4.0.8=>4.0.10
升级HybridCLR 4.0.8=>4.0.10
2023-10-13 16:09:34 +08:00
ALEXTANG
b983e85416 资源模块优化-使用资源缓存表以及资源淘汰算法,缓存常用资源,利于获取、淘汰不常用资源。
资源模块优化-使用资源缓存表以及资源淘汰算法,缓存常用资源,利于获取、淘汰不常用资源。
2023-10-13 15:53:16 +08:00
ALEXTANG
99d2afdbd7 事件模块通用命名。
事件模块通用命名。
2023-10-10 21:00:21 +08:00
ALEXTANG
57ce836b3c 升级HybridCLR 4.0.7=>4.0.8
升级HybridCLR 4.0.7=>4.0.8
2023-10-10 20:21:33 +08:00
ALEXTANG
8dce78d6fb 事件模块拓展参数支持。
事件模块拓展参数支持。
2023-10-10 18:13:51 +08:00
ALEXTANG
6d41adffd9 音频模块初始化可自定义音频混响器.
音频模块初始化可自定义音频混响器.
2023-10-10 18:09:35 +08:00
ALEXTANG
cb9129261b 增加通过Tag加载资源对象集合的接口。
增加通过Tag加载资源对象集合的接口。
2023-10-09 19:37:00 +08:00
ALEXTANG
89dd6214d4 修复首次图集导入bug
修复首次图集导入bug
2023-10-09 19:37:00 +08:00
ALEXTANG
1aec76d64c 更新packages
1.升级HybridCLR 4.0.6=>4.0.7
2.使用Unity新版MemoryProfiler
2023-10-09 19:37:00 +08:00
ALEXTANG
859f654f6d 关闭垂直同步,避免设置帧率失效
关闭垂直同步,避免设置帧率失效
2023-10-09 19:37:00 +08:00
ALEXTANG
391d690f9d Merge pull request #49 from ALEXTANGXIAO/TEngine_v4.0.0
TEngine v4.0.0
2023-10-08 16:02:59 +08:00
ALEXTANG
bb0b4104f9 Create about.txt 2023-10-08 15:49:30 +08:00
ALEXTANG
20d0ecd8da Init TEngine4.0.0
Init TEngine4.0.0
2023-10-08 15:47:33 +08:00
ALEXTANG
8c3d6308b9 Init TEngine4.0.0
Init TEngine4.0.0
2023-10-08 15:21:33 +08:00
ALEXTANGXIAO
4c8c37ffd8 异步加载原生文件接口问题修正。
异步加载原生文件接口问题修正。
2023-10-04 18:58:45 +08:00
ALEXTANG
5f694c2bed WebGL毛玻璃效果使用默认
WebGL毛玻璃效果使用默认
2023-09-18 16:41:08 +08:00
ALEXTANG
7ff74bb747 Update GameTime.cs 2023-09-18 16:40:51 +08:00
ALEXTANG
a5de63397a Update 3-4-对象池模块.md 2023-09-18 12:00:36 +08:00
ALEXTANG
13cc62f3f1 增加打印输出协议
增加打印输出协议
2023-09-15 14:07:26 +08:00
ALEXTANGXIAO
95dfac5294 支持普通协议对象数据结构不加入opcode
支持普通协议对象数据结构不加入opcode
2023-09-06 00:13:14 +08:00
ALEXTANGXIAO
14e95107c9 服务器ByteBuf消除警告
服务器ByteBuf消除警告
2023-09-05 23:57:12 +08:00
ALEXTANGXIAO
caf5b2b54e 导出网络协议增加了缓存文件保证一致性
导出网络协议增加了缓存文件保证一致性
2023-09-05 23:56:50 +08:00
ALEXTANG
285483034e Update Exporter.cs 2023-09-05 21:08:54 +08:00
ALEXTANG
1cdd8b63b4 同步服务器导出SceneType
同步服务器导出SceneType
2023-09-05 21:07:33 +08:00
ALEXTANG
4c748df7ac Update ProcedureInitPackage.cs 2023-09-05 20:53:56 +08:00
ALEXTANG
e1229b5a4b 移除无用Extension
移除无用Extension
2023-09-05 20:28:37 +08:00
ALEXTANG
b937fb1a37 [-] 移除Luban无用转表bat
[-] 移除Luban无用转表bat
2023-09-05 19:08:02 +08:00
ALEXTANG
87ab99b363 修复了KCPClientNetwork断开网络连接会发生异常的问题
修复了KCPClientNetwork断开网络连接会发生异常的问题
2023-09-05 14:39:53 +08:00
ALEXTANG
e3a47393f4 [+] 新增游戏物体缓存池ResourcePool
[+] 新增游戏物体缓存池ResourcePool
2023-09-05 14:35:19 +08:00
ALEXTANG
75725314ad FIxed 网络模块对象池复使用问题
FIxed 网络模块对象池复使用问题
2023-09-04 10:06:20 +08:00
ALEXTANG
d3ed2b21b9 Update AudioModule.cs 2023-08-28 20:53:40 +08:00
ALEXTANG
ec34dfbb16 Delete protobuf-net.csproj.meta 2023-08-28 20:41:10 +08:00
ALEXTANG
bd76e3a651 移除示例配置资源.
移除示例配置资源.
2023-08-28 20:35:30 +08:00
ALEXTANG
278c8f23be Update DefaultSettingSerializer.cs 2023-08-28 20:24:31 +08:00
ALEXTANG
42568db2ab Add System.Runtime.CompilerServices.Unsafe.dll
Add System.Runtime.CompilerServices.Unsafe.dll
2023-08-28 20:13:06 +08:00
ALEXTANG
b033c59b00 Aot程序集不查找热更域的Type
Aot程序集不查找热更域的Type
2023-08-28 15:08:18 +08:00
ALEXTANG
04a43a3f11 1.增加重启流程Procedure接口。2.增加进入热更域后的流程Procedure。
1.增加重启流程Procedure接口。2.增加进入热更域后的流程Procedure。
2023-08-26 11:08:46 +08:00
ALEXTANG
54214cdd0b 程序集AssemblyDefine增加对UniTask textmeshpro和dotween的拓展
程序集AssemblyDefine增加对UniTask textmeshpro和dotween的拓展
2023-08-25 14:50:20 +08:00
ALEXTANG
fa870b6228 DotNet支持自定义协议目录
DotNet支持自定义协议目录
2023-08-24 18:38:05 +08:00
ALEXTANG
8a49d3437b Delete proto_csOuterMessage.proto 2023-08-24 17:47:42 +08:00
ALEXTANG
f19b889deb DotNet支持自定义协议目录
DotNet支持自定义协议目录
2023-08-24 17:47:21 +08:00
ALEXTANG
d55f6e29d9 Update RootModule.cs 2023-08-22 11:27:58 +08:00
ALEXTANG
8e4af31f26 修改默认UI资源组的PackRule为PackSeparately
修改默认UI资源组的PackRule为PackSeparately
2023-08-21 20:21:59 +08:00
ALEXTANG
58a4b3e043 YooAsset增加补丁包导入工具和补丁包对比工具
YooAsset增加补丁包导入工具和补丁包对比工具
2023-08-21 20:21:03 +08:00
ALEXTANG
576bf3bb48 增加可选的JsonHelper - NewtonsoftJsonHelper
增加可选的JsonHelper - NewtonsoftJsonHelper
2023-08-21 20:20:28 +08:00
ALEXTANG
d282b81546 增加使用UniTask的常用资源加载接口
增加使用UniTask的常用资源加载接口
2023-08-19 16:23:19 +08:00
ALEXTANG
d6dcd8851c 更新文档
更新文档
2023-08-18 17:49:28 +08:00
ALEXTANG
bbea9c4cee Update UIExtension.cs 2023-08-18 17:10:41 +08:00
ALEXTANG
b1ccb1fd53 Update Utility.Http.cs 2023-08-18 16:54:17 +08:00
ALEXTANG
0f2ad3c71d [+] UI循环列表拓展Grid 用法和List一样
[+] UI循环列表拓展Grid 用法和List一样
2023-08-18 16:32:08 +08:00
ALEXTANG
0e6851e691 Remove unused ogg
Remove unused ogg
2023-08-18 15:24:33 +08:00
ALEXTANG
75b9956261 流程初始音效设置开启 2023-08-18 14:33:49 +08:00
ALEXTANG
401c397fc8 流程初始音效设置开启
流程初始音效设置开启
2023-08-18 14:25:10 +08:00
ALEXTANG
94b314e91f TEngine设置面板增加从Hybrid同步AOT与热更程序集的按钮
TEngine设置面板增加从Hybrid同步AOT与热更程序集的按钮
2023-08-18 13:06:08 +08:00
ALEXTANG
a6573d9336 Update ConfigLoader.cs 2023-08-18 13:05:02 +08:00
ALEXTANG
abf5357f49 给不支持WEBGL的增加宏定义
给不支持WEBGL的增加宏定义
2023-08-18 13:04:53 +08:00
ALEXTANG
aab353cca3 Remove Unused Codes.
Remove Unused Codes.
2023-08-17 23:11:11 +08:00
ALEXTANG
e13071c4db 移除调试luban残留的日志
移除调试luban残留的日志
2023-08-17 23:10:14 +08:00
ALEXTANG
e071c20214 拓展自定义鲁班加载配置,支持懒加载 默认使用懒加载,未使用的配置不会载入内存
拓展自定义鲁班加载配置,支持懒加载 默认使用懒加载,未使用的配置不会载入内存
2023-08-17 23:07:07 +08:00
ALEXTANG
bf73ce333b 拓展自定义鲁班加载配置,支持UniTask异步 默认使用同步加载
拓展自定义鲁班加载配置,支持UniTask异步 默认使用同步加载
2023-08-17 22:00:55 +08:00
ALEXTANG
d7a60002d4 ErrorLog使用异步显示UI
ErrorLog使用异步显示UI
2023-08-17 21:41:30 +08:00
ALEXTANG
61f657322d 增加WebGLUpdateDataUrl
增加WebGLUpdateDataUrl
2023-08-17 21:41:07 +08:00
ALEXTANG
33223dc02e 处理DotNet网络层对WebGL导出的兼容 2023-08-17 21:38:21 +08:00
ALEXTANG
0661c59877 处理DotNet网络层对WebGL导出的兼容
处理DotNet网络层对WebGL导出的兼容
2023-08-17 14:06:09 +08:00
ALEXTANG
7c74e10857 提供单独销毁UIWidget的接口。增加UIWidget异步创建接口。
提供单独销毁UIWidget的接口。增加UIWidget异步创建接口。
2023-08-17 10:59:37 +08:00
ALEXTANG
db935bfb5f DotNet 加入热更域,修正GameProto的依赖
DotNet 加入热更域,修正GameProto的依赖
2023-08-16 15:31:16 +08:00
ALEXTANG
dc6b7bb21e 增加使用UniTask的常用资源加载接口
增加使用UniTask的常用资源加载接口
2023-08-15 17:24:02 +08:00
ALEXTANG
d32f3cb768 增加使用UniTask的常用资源加载接口
增加使用UniTask的常用资源加载接口
2023-08-15 17:22:05 +08:00
ALEXTANG
a32ab30444 修改luban模板配置,支持异步加载配置实例,客户端使用UniTask异步加载配置,避免WebGL不支持原生Task
修改luban模板配置,支持异步加载配置实例,客户端使用UniTask异步加载配置,避免WebGL不支持原生Task
2023-08-15 12:54:15 +08:00
ALEXTANG
aa0d40c758 修改luban模板配置,支持异步加载配置实例
修改luban模板配置,支持异步加载配置实例
2023-08-15 12:07:21 +08:00
ALEXTANGXIAO
5239b89326 DotNet 加入热更域
DotNet 加入热更域
2023-08-12 23:39:21 +08:00
ALEXTANG
53f0ecb6c1 [+] UI循环列表拓展与示例
[+] UI循环列表拓展与示例
2023-08-10 23:25:43 +08:00
ALEXTANG
ea9447d0ea Update ClientGm.cs 2023-08-10 10:10:50 +08:00
ALEXTANG
0c6d59f53e Fixed BehaviourSingleton #45
Fixed BehaviourSingleton #45
2023-08-10 10:09:59 +08:00
ALEXTANG
9986e22d18 [-] Remove Old ProtoGenerate
[-] Remove Old Proto Generate
2023-08-09 14:22:39 +08:00
ALEXTANG
7deb049769 更新Entity接口 泛型获取父级、Define增加unit[]类型
更新Entity接口 泛型获取父级、Define增加unit[]类型
2023-08-09 11:09:38 +08:00
ALEXTANG
fce8bd4d60 Update DebuggerModule.SettingsWindow.cs 2023-08-08 19:54:37 +08:00
ALEXTANG
7ec14c670f Luban配置表拓展分组-分组为c和client的为仅客户端字段s和server为仅服务器字段
Luban配置表拓展分组-分组为c和client的为仅客户端字段s和server为仅服务器字段
2023-08-07 15:14:43 +08:00
ALEXTANGXIAO
efe3d2b25b Update README
Update README
2023-08-06 00:36:29 +08:00
ALEXTANGXIAO
2107282368 Update Readme
Update Readme
2023-08-05 00:54:25 +08:00
ALEXTANG
fb26ea2297 Update AddressableManageComponent.cs 2023-08-04 01:42:26 +08:00
ALEXTANG
9ac150425f Update IntDictionaryConfig.cs 2023-08-04 01:42:00 +08:00
ALEXTANG
36d2c146b0 1、修复了MongoDB在2.18.0以后需要自定义注册ObjectSerializer的问题。 2、Addressable的AddAddressable接口增加isLock参数、用来决定是否需要添加携程锁。 3、修复了APackInfo因为网络多线程的原因导致线程安全的问题。
1、修复了MongoDB在2.18.0以后需要自定义注册ObjectSerializer的问题。
2、Addressable的AddAddressable接口增加isLock参数、用来决定是否需要添加携程锁。
3、修复了APackInfo因为网络多线程的原因导致线程安全的问题。
2023-08-04 01:41:31 +08:00
ALEXTANG
774b73bbbf 注释防裁剪脚本中相机权限的引用
注释防裁剪脚本中相机权限的引用
2023-08-01 16:57:43 +08:00
ALEXTANG
32366eb127 移除防裁剪脚本中相机权限的引用
移除防裁剪脚本中相机权限的引用
2023-08-01 16:54:49 +08:00
ALEXTANG
a843617e5f Update README.md 2023-08-01 10:44:15 +08:00
ALEXTANGXIAO
46b139f7cf 补充IOS运行快照到Books下
补充IOS运行快照到Books下
2023-08-01 00:06:07 +08:00
ALEXTANG
e6ff1dec3f Update BuglyAgent.cs 2023-07-31 20:36:44 +08:00
ALEXTANG
4429732010 Update ConfigLoader.cs 2023-07-31 15:01:11 +08:00
ALEXTANGXIAO
60a5caebae 1、Scene.Create接口增加了一个泛型方法接口。 2、SceneConfig增加了SceneTypeConfig和SceneSubType
1、Scene.Create接口增加了一个泛型方法接口。 2、SceneConfig增加了SceneTypeConfig和SceneSubType
2023-07-29 01:03:35 +08:00
ALEXTANGXIAO
f7c95d8216 服务器启动防呆提示需要转表
服务器启动防呆提示需要转表
2023-07-29 00:12:52 +08:00
ALEXTANGXIAO
98dcb80942 更新编辑器MenuItem导表与导出协议
更新编辑器MenuItem导表与导出协议
2023-07-29 00:03:54 +08:00
ALEXTANG
30192d52cf 调整网络demo场景路径
调整网络demo场景路径
2023-07-27 10:18:02 +08:00
ALEXTANGXIAO
b7b2262d53 合理化服务器命名,使开发者更容易理解。
Scene的routeId更名为locationId
2023-07-27 00:33:39 +08:00
ALEXTANG
d1c93f15d6 Application.OpenURL 调用bat的cmd运行时问题
Application.OpenURL 调用bat的cmd运行时问题
2023-07-26 15:39:20 +08:00
ALEXTANGXIAO
1ac1ff7d56 [+] Update HybridCLR v3.4.0
[+] Update HybridCLR v3.4.0
2023-07-26 00:07:47 +08:00
ALEXTANG
863788f303 Update UIWidget.cs 2023-07-25 23:37:02 +08:00
ALEXTANG
74790c7486 Update UIWindow.cs 2023-07-25 23:34:42 +08:00
ALEXTANG
1c223c8ad0 [+] DOTweenExtension
[+] DOTweenExtension
2023-07-25 17:08:57 +08:00
ALEXTANG
e75b3a4e66 [+] UniTask External YooAsset、Dotween、TextMeshPro 2023-07-25 16:28:09 +08:00
ALEXTANG
91b0995911 [+] UniTask External YooAsset、Dotween、TextMeshPro
[+] UniTask External YooAsset、Dotween、TextMeshPro
2023-07-25 16:22:13 +08:00
ALEXTANG
14c886ea8f [+] UniTask External YooAsset、Dotween、TextMeshPro
[+] UniTask External YooAsset、Dotween、TextMeshPro
2023-07-25 16:20:26 +08:00
ALEXTANG
9babc0ba85 [+] 合理化目录结构 精简非必要插件如确定性物理库以及Recast插件。
[+] 合理化目录结构 精简非必要插件如确定性物理库以及Recast插件。
2023-07-25 14:34:05 +08:00
ALEXTANG
f8056aef32 调整服务器逻辑
1、调整Entity.AddComponent方法添加的组件Id为父组件的Id。
2、增加了ISupportedSingleCollection和ISingleCollectionRoot接口.
3、增加了SingleCollection、用于把子组件保存到单独的数据库表的功能,配合ISupportedSingleCollection和ISingleCollectionRoot。
2023-07-24 16:49:23 +08:00
ALEXTANG
846dc4d4bc Fixed the session dispose
Fixed the session dispose
2023-07-24 13:17:59 +08:00
ALEXTANG
03ab7fb353 Create start_export.bat 2023-07-23 22:18:47 +08:00
ALEXTANG
3c11980e7c Create start_develop.bat 2023-07-23 22:18:45 +08:00
ALEXTANG
c23aa0bd71 Revert "Update Core.csproj"
This reverts commit df76d0b77a.
2023-07-23 21:32:22 +08:00
ALEXTANG
df76d0b77a Update Core.csproj 2023-07-23 21:32:01 +08:00
ALEXTANG
35d2012546 1.替换了KCP为C#版本 2.KCP增加了Memery<T>支持。 3.框架增加了对Memery<T>的支持,服务器网络消息采用Memery<T>,性能得大幅度的提升 4.优化了消息调度执行逻辑
1.替换了KCP为C#版本
2.KCP增加了Memery<T>支持。
3.框架增加了对Memery<T>的支持,服务器网络消息采用Memery<T>,性能得大幅度的提升
4.优化了消息调度执行逻辑
2023-07-23 00:25:47 +08:00
ALEXTANG
c96d20a89a [+] GameFrameworkModuleSystem
[+] GameFrameworkModuleSystem
2023-07-22 17:53:00 +08:00
ALEXTANG
5787d0f9dc [+] GameModuleSystem
[+] GameModuleSystem
2023-07-22 17:51:24 +08:00
ALEXTANG
8b35c8ca07 Update ProjectSettings.asset 2023-07-22 17:50:06 +08:00
ALEXTANG
e5456da482 合理化Address协议逻辑
合理化Address协议逻辑
2023-07-21 17:50:47 +08:00
ALEXTANG
144ba9f222 完善AddressableManageComponent与ClientNetworkComponent
完善AddressableManageComponent与ClientNetworkComponent
2023-07-21 14:32:20 +08:00
ALEXTANG
889fbdc8e1 Update UIGaussianBlurLayer.cs 2023-07-19 17:34:02 +08:00
ALEXTANG
0d177e6868 Update AssetGroup.cs 2023-07-19 17:33:56 +08:00
ALEXTANG
29135228be Update AssetReference.cs 2023-07-19 17:33:52 +08:00
ALEXTANG
c1a1de73cd Update ResourceManager.cs 2023-07-19 17:33:48 +08:00
ALEXTANG
612e9b7eba Update ResourceModule.cs 2023-07-19 17:33:44 +08:00
ALEXTANG
5ed6b8c378 Update UIModule.cs 2023-07-19 17:33:41 +08:00
ALEXTANG
06dad5a68a Update UIWidget.cs 2023-07-19 17:33:28 +08:00
ALEXTANG
9e0462043c Update WindowAttribute.cs 2023-07-19 17:33:25 +08:00
ALEXTANG
c1178e284b Update DUnityUtil.cs 2023-07-19 17:33:21 +08:00
ALEXTANG
8e3dd138a6 Merge pull request #44 from ALEXTANGXIAO/3.0.0-network
TEngine-3.0.0 NetWork And Server
2023-07-19 16:32:03 +08:00
ALEXTANG
405253c507 Update BuildAssetsCommand.cs 2023-07-19 16:03:02 +08:00
ALEXTANG
66ef50a9e0 WebGL适配 2023-07-19 15:51:16 +08:00
ALEXTANG
413f4dcda7 Update GameClient.cs 2023-07-19 15:23:46 +08:00
ALEXTANG
75fdb4d7de Update GameClient.cs 2023-07-19 15:20:05 +08:00
ALEXTANG
1ada1e4e33 Update H_C2G_LoginAddressRequestHandler.cs 2023-07-19 15:20:01 +08:00
ALEXTANG
3848b6aaaa Create AddressableSceneHelper.cs 2023-07-19 15:19:57 +08:00
ALEXTANG
2b33b405c0 Update SceneConfig.cs 2023-07-19 15:19:44 +08:00
ALEXTANG
6766b930d7 更新机器内网配置
更新机器内网配置
2023-07-19 13:08:03 +08:00
ALEXTANG
526baf45fa 完善网络框架,增加服务器断开连接回调 2023-07-18 17:36:48 +08:00
ALEXTANG
a473971cfb Update H_C2G_LoginAddressRequestHandler.cs 2023-07-18 13:06:00 +08:00
ALEXTANG
51effd2c97 Update TCPClientNetwork.cs 2023-07-18 13:05:57 +08:00
ALEXTANG
4205220b64 Network Example2
Network Example2
2023-07-18 13:05:48 +08:00
ALEXTANG
e95c18ca67 Update README.md
Update README.md
2023-07-18 10:08:46 +08:00
ALEXTANG
f5571716a2 Update SkillDisplayData.cs 2023-07-17 20:59:13 +08:00
ALEXTANG
d61a8dfa4b GMPanel
GMPanel
2023-07-17 20:59:04 +08:00
ALEXTANG
068ec709d0 [+] Add GamePlayScene
[+] Add GamePlayScene
2023-07-17 19:00:24 +08:00
ALEXTANG
8b26b790ee GameServerScene
GameServerScene
2023-07-17 18:38:50 +08:00
ALEXTANG
da35b4306b EnumHelper
EnumHelper
2023-07-17 18:29:41 +08:00
ALEXTANG
ee2147e3d9 Update BattleDemo
Update BattleDemo
2023-07-17 18:09:07 +08:00
ALEXTANG
a273e9d5f8 Entitas
Entitas
2023-07-17 15:28:27 +08:00
ALEXTANG
31d4d6c0b8 Update
Update
2023-07-17 01:05:12 +08:00
ALEXTANG
6a6f0591f1 完善Entity状态
完善Entity状态
2023-07-17 01:00:33 +08:00
ALEXTANG
9cd0bac81e 完善登录注册Demo
完善登录注册Demo
2023-07-17 01:00:10 +08:00
ALEXTANG
4abe10eecf IDataBase Last
IDataBase Last
2023-07-16 19:06:45 +08:00
ALEXTANG
bd10297dfa [+] HybridCLR=》v3.3.0
[+] HybridCLR=》v3.3.0
2023-07-16 15:51:44 +08:00
ALEXTANG
7ce72b8aa8 合理化框架
合理化框架
2023-07-16 15:37:38 +08:00
ALEXTANG
c6ecb48944 注册登录Demo
注册登录Demo
2023-07-16 00:57:20 +08:00
ALEXTANG
c178f8bb75 配置目录同步程序集调整
配置目录同步程序集调整
2023-07-15 18:45:38 +08:00
ALEXTANG
d4f160d284 合理化程序集,服务器Logic无需共享的代码存放解决方案目录,无需走Unity目录
合理化程序集,服务器Logic无需共享的代码存放解决方案目录,无需走Unity目录
2023-07-15 18:39:42 +08:00
ALEXTANG
d87653a9fb 调整对于Linux打包的支持
调整对于Linux打包的支持
2023-07-15 00:58:40 +08:00
ALEXTANG
04a5a0e048 Update Demo
Update Demo
2023-07-14 14:23:51 +08:00
ALEXTANG
c825f4d920 Streamline Unity Engineering
Streamline Unity Engineering
2023-07-14 13:38:05 +08:00
ALEXTANG
b3e59b92d6 Update ThirdParty.csproj 2023-07-14 12:47:52 +08:00
ALEXTANG
37af620d71 Update RootNameSpace
Update RootNameSpace
2023-07-14 12:45:06 +08:00
ALEXTANG
493172a925 Update
Update
2023-07-13 23:54:38 +08:00
ALEXTANG
1382db8c61 Update
Update
2023-07-13 21:13:29 +08:00
ALEXTANG
72b7149aa1 Update
Update
2023-07-13 21:02:29 +08:00
ALEXTANG
0c51ae7bdd Update
Update
2023-07-13 19:40:12 +08:00
ALEXTANG
79dc302f14 Update Utility.Http.cs 2023-07-13 19:34:30 +08:00
ALEXTANG
95e4dd93a8 Update
Update
2023-07-13 19:05:40 +08:00
ALEXTANG
2b310c00f2 Update ThirdParty.csproj 2023-07-13 18:22:01 +08:00
ALEXTANG
fbb26ea9ea Update
Update
2023-07-13 18:20:39 +08:00
ALEXTANG
bff8f20af3 Refresh Plugins 2023-07-13 17:41:23 +08:00
ALEXTANG
0c7ce5f28c Refresh Plugins 2023-07-13 17:37:44 +08:00
ALEXTANG
31fc9abdf9 Update OdinModuleConfig.asset 2023-07-13 17:36:37 +08:00
ALEXTANG
a087f40e8a [-] Remove Cysharp.MemoryPack
[-] Remove Cysharp.MemoryPack
2023-07-13 17:31:53 +08:00
ALEXTANG
7b2fc7ce9f Update DotNet sln
Update DotNet sln
2023-07-13 17:27:57 +08:00
ALEXTANG
dc4bb8cc9c Unity低版本语法兼容
Unity低版本语法兼容
2023-07-13 17:24:37 +08:00
ALEXTANG
0c8f3a5f92 [+] TEngineServer
[+] TEngineServer
2023-07-13 17:17:26 +08:00
ALEXTANG
a69f53592e 移除 重构
移除 重构
2023-07-13 12:46:26 +08:00
ALEXTANG
8757e1f550 [+] add et8 csproject
[+] add et8 csproject
2023-07-13 12:26:12 +08:00
ALEXTANG
336d4b2eb9 [+] 接入ET8服务端
[+] 接入ET8服务端
2023-07-13 12:23:48 +08:00
ALEXTANG
e0be062006 Remove old networkmodule 2023-07-12 17:36:29 +08:00
ALEXTANG
5e69129667 Remove old networkmodule
Remove old networkmodule
2023-07-12 17:35:05 +08:00
ALEXTANG
4c39ab79ca [+] Books 2023-07-12 17:28:08 +08:00
ALEXTANG
a710d1cb76 [+] Books 2023-07-10 13:59:56 +08:00
ALEXTANG
8472839394 [+] Books 2023-07-10 13:51:32 +08:00
ALEXTANG
4988c99d31 [+] Books
[+] Books
2023-07-10 12:51:13 +08:00
ALEXTANG
4fa62b2d79 Update README.md 2023-07-10 12:35:48 +08:00
ALEXTANG
f549514d7c Update ResourceManager.cs 2023-07-09 00:07:32 +08:00
ALEXTANG
f588038848 Update UIButtonScale.cs 2023-07-06 19:17:16 +08:00
ALEXTANG
9e0e3ebd50 Fixed the bug of CreateWidgetByPath
Fixed the bug of CreateWidgetByPath
2023-07-06 19:07:45 +08:00
ALEXTANG
b07ef836a9 Update ProcedureLoadAssembly.cs 2023-07-05 15:20:18 +08:00
ALEXTANG
7a1d593195 Update UnityExtension.cs 2023-07-05 15:20:12 +08:00
ALEXTANG
bc113c5c6e [+] Update版本更新时CDN地址也可更新
[+] Update版本更新时CDN地址也可更新
2023-07-04 20:57:26 +08:00
ALEXTANG
753bbdfb82 [+] HybridCLR IOS相机权限问题
大坑 没有任何异常、警告、日志 如果不写这个,就是没有响应
2023-06-29 11:25:33 +08:00
ALEXTANG
6a6d33c536 Update AudioAgent.cs 2023-06-25 17:51:17 +08:00
ALEXTANG
57a014a83a [+] Fixed UIWidget
[+] Fixed UIWidget
2023-06-25 15:26:40 +08:00
ALEXTANG
9d1a8e8c9d Create UIEventItem.cs.meta 2023-06-25 15:26:17 +08:00
ALEXTANG
86c26cd21b Create UIEventItem.cs 2023-06-25 15:26:13 +08:00
ALEXTANG
b60b9fff42 Update UIExtension.cs 2023-06-25 15:26:08 +08:00
ALEXTANG
990e17a6cc [+] HybridCLR 补充元数据设置
[+] HybridCLR 补充元数据设置
2023-06-25 15:21:46 +08:00
ALEXTANG
be531bfad0 Fixed the bug for AssetsGroup
Fixed the bug for AssetsGroup
2023-06-23 00:00:58 +08:00
ALEXTANG
6c46f3e5fd [+] Update HybridCLR v3.2.0
[+] Update HybridCLR v3.2.0
2023-06-19 17:17:13 +08:00
ALEXTANG
e4b48e3c58 Update README.md 2023-06-16 14:27:56 +08:00
ALEXTANG
68e5b1d482 Update README.md 2023-06-09 11:40:59 +08:00
ALEXTANG
abd152b072 [+] SubAssetsOperationHandle LoadSubAssetsSync(string location)
[+] SubAssetsOperationHandle LoadSubAssetsSync(string location)
2023-06-06 19:28:44 +08:00
ALEXTANG
470e62d9c4 Update ResourceModule.cs 2023-06-06 15:19:28 +08:00
ALEXTANG
481b5911ab Update ResourceManager.cs 2023-06-06 15:19:24 +08:00
ALEXTANG
05d3aff05e Update IResourceManager.cs 2023-06-06 15:19:20 +08:00
ALEXTANG
86bb6353dc Update ResourceManager.Services.cs
同步修复IOS平台流解密失败的问题。
2023-06-06 09:55:01 +08:00
ALEXTANG
334698b6e6 Update RootModule.cs 2023-06-05 19:31:32 +08:00
ALEXTANG
2684bd29f5 Update GameClient.cs 2023-06-05 14:49:26 +08:00
ALEXTANG
c568c62404 [+] Update HybridCLR v2.4.2
[+] Update HybridCLR v2.4.2
2023-06-05 12:34:27 +08:00
ALEXTANG
699ccb3b09 [+] Update YooAssets v1.4.14
[+] Update YooAssets v1.4.14
2023-06-05 12:19:24 +08:00
ALEXTANG
f92bf5c602 Update GameClient.cs 2023-05-20 12:23:45 +08:00
ALEXTANG
cd87c71281 Update MsgDispatcher.cs 2023-05-20 12:23:41 +08:00
ALEXTANG
94c137b3c6 Update ILogicSys.cs 2023-05-20 11:27:11 +08:00
ALEXTANG
120a86b396 Create Redux.cs 2023-05-20 11:25:49 +08:00
ALEXTANG
383dc50fe3 Create Redux.cs.meta 2023-05-20 11:25:46 +08:00
ALEXTANG
2369e8723c Update TSingleton.cs 2023-05-20 11:25:44 +08:00
ALEXTANG
344f3293ad Update ILogicSys.cs 2023-05-20 11:25:37 +08:00
ALEXTANG
5d361dd188 Update BehaviourSingleton.cs 2023-05-20 11:25:09 +08:00
ALEXTANG
a2f7fe907a Update BaseLogicSys.cs 2023-05-20 11:25:02 +08:00
ALEXTANG
5b3f64689f Create Attribute.cs.meta 2023-05-20 11:24:58 +08:00
ALEXTANG
2258c13892 Create Attribute.cs 2023-05-20 11:24:55 +08:00
ALEXTANG
a70d2e7d17 Update main.unity 2023-05-20 11:11:14 +08:00
ALEXTANG
b15f51631a Update Network.cs 2023-05-20 11:10:46 +08:00
ALEXTANG
da12bd7cab Update GameClient.cs 2023-05-20 11:10:41 +08:00
ALEXTANG
98bcaef6b7 Update UnitySingleton.cs 2023-05-20 11:10:39 +08:00
ALEXTANG
71d1286144 Update TSingleton.cs 2023-05-20 11:10:34 +08:00
ALEXTANG
9359a81a96 Update ProtobufUtility.cs 2023-05-20 11:01:38 +08:00
ALEXTANG
a9542646c1 Update NetworkChannelHelper.cs 2023-05-20 11:01:33 +08:00
ALEXTANG
0890ca9bdb [+] Network
[+] Network
2023-05-19 19:40:05 +08:00
ALEXTANG
ec409c7e15 Update Network
Update Network
2023-05-19 17:01:04 +08:00
ALEXTANG
4bc63fafc8 Update gen_pb_code.bat 2023-05-19 00:43:28 +08:00
ALEXTANG
fe0f9afd6d Update gen_pb_code.bat 2023-05-19 00:42:38 +08:00
ALEXTANG
4632a0c099 [+] UpdateNetwork Module
[+] UpdateNetwork Module
2023-05-19 00:31:15 +08:00
ALEXTANG
60e57bb80b Update ProtoUtil.cs 2023-05-19 00:08:23 +08:00
ALEXTANG
b7c79d0438 [+] ProtoCs
[+] ProtoCs
2023-05-19 00:08:11 +08:00
ALEXTANG
62b7c9e4d6 [+] Protobuf.dll
[+] Protobuf.dll
2023-05-19 00:07:24 +08:00
ALEXTANG
75a6977afb [+] ProtobufUtility
[+] ProtobufUtility
2023-05-19 00:06:43 +08:00
ALEXTANG
659da836ac Update GameLogic.asmdef 2023-05-19 00:05:52 +08:00
ALEXTANG
07c459051f [+] Proto
[+] Proto
2023-05-19 00:03:18 +08:00
ALEXTANG
4253a81e78 Update
Update
2023-05-19 00:02:43 +08:00
ALEXTANG
e498abacd1 Update ICSharpCode.SharpZipLib.dll.meta 2023-05-19 00:02:17 +08:00
ALEXTANG
f16759483f [+] NetProto
[+] NetProto
2023-05-17 23:07:17 +08:00
ALEXTANG
899472a5db [+] Network
[+] Network
2023-05-17 23:06:29 +08:00
ALEXTANG
e65245371a Update TEngineLogHelper.cs 2023-05-17 23:05:58 +08:00
ALEXTANG
b04fff4ec9 [+] proto 2023-05-17 21:38:44 +08:00
ALEXTANG
d8f8fd01d9 [+] proto 2023-05-17 21:38:24 +08:00
ALEXTANG
9b1c5e6f0a [+] proto
[+] proto
2023-05-17 21:38:14 +08:00
ALEXTANG
b2b5c9274c Update RuleConfig.asset 2023-05-15 14:09:38 +08:00
ALEXTANG
b814d689d8 [-] AnimationHierarchyEditorTool
[-] AnimationHierarchyEditorTool
2023-05-14 10:31:33 +08:00
ALEXTANG
ca6de42d67 Update main.unity 2023-05-13 14:56:47 +08:00
ALEXTANG
c3e9b76fd6 Update main.unity 2023-05-13 14:56:02 +08:00
ALEXTANG
dca7b71457 [+] DisStripCode 防裁剪
[+] DisStripCode 防裁剪
2023-05-13 14:55:55 +08:00
ALEXTANG
7106454dfb Update ProjectSettings.asset 2023-05-13 22:22:01 +08:00
ALEXTANG
b97e24aa6d Create BurstAotSettings_iOS.json 2023-05-13 22:21:49 +08:00
ALEXTANG
bec4cba501 Update .gitignore 2023-05-13 22:13:50 +08:00
ALEXTANG
0568d5f8b2 Update ProcedureLaunch.cs 2023-05-13 21:21:03 +08:00
ALEXTANG
49db48e7fc Update GameModule.cs 2023-05-13 21:20:42 +08:00
ALEXTANG
92fc5e0bcd Update ProcedureLaunch.cs 2023-05-13 21:12:41 +08:00
ALEXTANG
11391e597e Update AudioModule.cs 2023-05-13 21:12:36 +08:00
ALEXTANG
6b64f3b261 Update Constant.cs 2023-05-13 21:12:29 +08:00
ALEXTANG
dff6ba4e6d Update GameApp_RegisterSystem.cs 2023-05-13 20:35:36 +08:00
ALEXTANG
036c89a6d1 Update BehaviourSingleton.cs 2023-05-13 20:35:34 +08:00
2641 changed files with 73224 additions and 233476 deletions

29
Books/0-介绍.md Normal file
View File

@@ -0,0 +1,29 @@
# 介绍- Introduce
### TEngine
<a style="text-decoration:none">
<img src="https://img.shields.io/badge/Unity%20Ver-2021.3.20++-blue.svg?style=flat-square" alt="status" />
</a>
<a style="text-decoration:none">
<img src="https://img.shields.io/github/license/ALEXTANGXIAO/TEngine" alt="license" />
</a>
<a style="text-decoration:none">
<img src="https://img.shields.io/github/last-commit/ALEXTANGXIAO/TEngine" alt="last" />
</a>
<a style="text-decoration:none">
<img src="https://img.shields.io/github/issues/ALEXTANGXIAO/TEngine" alt="issue" />
</a>
<a style="text-decoration:none">
<img src="https://img.shields.io/github/languages/top/ALEXTANGXIAO/TEngine" alt="topLanguage" />
</a>
TEngine是一套用于Unity框架解决方案用于帮助研发团队快速进行开发。
### 开箱即用
开箱即用、用法简洁,即用即上手.高可读性和详细的文档说明帮助你更快更好的进行游戏开发。您不需要关心框架的底层分离独自实现您的GamePlay。
### 性能强大
TEngine 底层使用基于UniTask的异步以及事件分发可插件定制化把复杂游戏简单化切以高性能、低耦合度实现。
### 高内聚低耦合
内嵌了The Best 次时代热更新解决方案<a href="https://github.com/focus-creative-games/hybridclr"><strong>HybridCLR</strong></a>、百万DAU验证的资源解决方案<a href="https://github.com/tuyoogame/YooAsset"><strong>YooAsset</strong></a>、你的游戏最佳配置解决方案<a href="https://github.com/focus-creative-games/luban"><strong>Luban</strong></a>

58
Books/1-快速开始.md Normal file
View File

@@ -0,0 +1,58 @@
# 快速开始- Quickly Start
快速上手
本教程引导从空项目开始体验TEngine。出于简化起见只演示目标平台为Windows的情况。
请在Standalone平台上正确跑通热更新流程后再自行尝试Android、iOS平台的热更新它们的流程非常相似。
### 1.使用Unity2021.3.20f1c1打开项目工程。
### 2.默认选择顶部栏目EditorMode编辑器下的模拟模式并点击Launcher开始运行
![image](src/1-1.png)
### 3.Editor编辑器下运行成功
![image](src/1-2.png)
### 4.打包运行
* 1.运行菜单 HybridCLR/Define Symbols/Enable HybridCLR 运行开启HybridCLR热更新
* 2.运行菜单 HybridCLR/Generate/All 进行必要的生成操作。这一步不可遗漏!!!
* 3.运行菜单 HybridCLR/Build/BuildAssets And CopyTo AssemblyPath生成热更新dll并copy到热更程序集中。
* 4.运行菜单 YooAsset/AssetBundle Builder 构建AB
* 5.打开Build Settings对话框点击Build And Run打包并且运行热更新示例工程。
### 遇到问题请查看HybridlCLR的<a href="https://hybridclr.doc.code-philosophy.com/docs/help/commonerrors"><strong>常见错误(commonerrors)</strong></a>
### 系统需求
默认版本Unity2021.3.20f1c1
支持版本: Unity2019.4 & Unity2020.3 & Unity2021.3 & Unity2022.3
支持平台: Windows、OSX、Android、iOS、WebGL
开发环境: .NET4.x
### 目录结构
```
Assets
├── AssetRaw 资源目录
├── Atlas 图集目录
├── GameScripts 热更程序集目录
├── Scenes 主场景目录
└── TEngine
├── AssetSetting YooAsset资源设置
├── Editor TEngine-Editor程序集
└── Runtime TEngine-Runtime程序集
```
### 热更新程序集划分
```
Assets/GameScripts
├── Editor 编辑器程序集
├── HotFix 游戏热更程序集目录 [Folder]
| ├── GameBase 游戏基础框架程序集 [Dll]
| ├── GameProto 游戏配置协议程序集 [Dll]
| ├── BattleCore 游戏核心战斗程序集 [Dll]
| └── GameLogic 游戏业务逻辑程序集 [Dll]
| ├── GameApp.cs 热更主入口
| └── GameApp_RegisterSystem.cs 热更主入口注册系统
└── Runtime Runtime程序集
```

84
Books/2-框架概览.md Normal file
View File

@@ -0,0 +1,84 @@
# TEngine
## TEngine-Runtime
### AOT内核基于Gameframework,最简化以及商业化适配。
![image](src/2-1.png)
## AOT游戏框架模块基类。
#### 框架思路为面向接口编程如Resource资源模块开发白皮书为先定义IResourceManager的接口规范然后编写ResourceManager继承框架具体实现(GameFrameworkModule)以及实现接口。最后实现调用层GameFrameworkModuleBase调用层可以拓展编辑器供开发者自定义模块参数。
``` csharp
/// <summary>
/// 游戏框架模块抽象类。GameFrameworkModule为具体框架模块实现。
/// </summary>
internal abstract class GameFrameworkModule
{
/// <summary>
/// 获取游戏框架模块优先级。
/// </summary>
/// <remarks>优先级较高的模块会优先轮询,并且关闭操作会后进行。</remarks>
internal virtual int Priority => 0;
/// <summary>
/// 游戏框架模块轮询。
/// </summary>
/// <param name="elapseSeconds">逻辑流逝时间,以秒为单位。</param>
/// <param name="realElapseSeconds">真实流逝时间,以秒为单位。</param>
internal abstract void Update(float elapseSeconds, float realElapseSeconds);
/// <summary>
/// 关闭并清理游戏框架模块。
/// </summary>
internal abstract void Shutdown();
}
//=====================================================================//
/// <summary>
/// 游戏框架模块抽象类。GameFrameworkModuleBase 为Mono调用层。
/// </summary>
public abstract class GameFrameworkModuleBase : MonoBehaviour
{
/// <summary>
/// 游戏框架模块初始化。
/// </summary>
protected virtual void Awake()
{
GameEntry.RegisterModule(this);
}
}
```
## 热更域程序集设计与说明
```
Assets/GameScripts
├── Editor 编辑器程序集
├── HotFix 游戏热更程序集目录 [Folder]
| ├── GameBase 游戏基础框架程序集 [Dll]
| ├── GameProto 游戏配置协议程序集 [Dll]
| ├── BattleCore 游戏核心战斗程序集 [Dll]
| └── GameLogic 游戏业务逻辑程序集 [Dll]
| ├── GameApp.cs 热更主入口
| └── GameApp_RegisterSystem.cs 热更主入口注册系统
└── Runtime Runtime程序集
```
游戏内主要玩法逻辑包括UI会在GameLogic中编写GameBase则存放一些通用性的逻辑GameProto存放与服务区交互的协议以及配置表逻辑BattleCore为帧同步分离的逻辑层做预留。若有项目需求完全可以进行自定义增删HotFix程序集。
PS注意增删程序集后需要同步到HybridClr的Setting面板以及TEngineSetting的面板。TEngineSettings面板有按钮可以从HybridClr中同步AOT与热更程序集。
## 常用模块接口
<strong>[3-1-资源模块](./3-1-资源模块.md)<strong>
<strong>[3-2-事件模块](./3-2-事件模块.md)<strong>
<strong>[3-3-内存池模块](./3-3-内存池模块.md)<strong>
<strong>[3-4-对象池模块](./3-4-对象池模块.md)<strong>
<strong>[3-5-UI模块](./3-5-UI模块.md)<strong>
<strong>[3-6-配置表模块](./3-6-配置表模块.md)<strong>
<strong>[3-7-流程模块](./3-7-流程模块.md)<strong>
<strong>[3-8-网络模块](./3-8-网络模块.md)<strong>

200
Books/3-1-资源模块.md Normal file
View File

@@ -0,0 +1,200 @@
## 3-1.资源模块 - ResourceModule
#### 资源模块默认使用Addressable可寻址定位。(!注意需要打包的资源不可以重名)
资源模块运行模式有EditorSimulateMode、OfflinePlayMode以及HostPlayMode
编辑器模式下以顶部导航栏的选项卡为优先选项打包后以Scene场景中ResourceModule脚本的Enum选项卡为优先选项(打包后不会走EditorSimulateMode)
Scene窗口Resource对象可以设置一些资源模块的常用设置比如打包后的资源模式、资源校验等级以及自动卸载资源间隔等。
![image](src/3-1-1.png)
Menu窗口TEngineSetting可以设置一些资源模块的热更新设置比如资源服务器地址以及在线参数等。备注在Luban目录下有一个基于Node的静态文件服务器可以把在线参数以及AB放入用于做热更新测试。
![image](src/3-1-2.png)
## 重要拓展概念
* AssetReference (资源引用标识) 通用加载资源的时候绑定一个引用标识使你无需关心手动Dispose资源句柄。
* AssetGroup资源组数据进行资源分组绑定管理内存中的生命周期资源生命周期托管给资源组的根节点进行Dispose。
* LruCacheTable (Least Recently Used Cache缓存表)
* ArcCacheTable (Adaptive Replacement Cache缓存表)
## 加载资源示范
注意资源模块默认使用Addressable可寻址定位。传入资源名字无需后缀即可
``` csharp
//同步加载。
GameModule.Resource.LoadAsset<SkillDisplayData>(location);
//异步加载。
GameModule.Resource.LoadAssetAsync<SkillDisplayData>(location, OnLoadSuccess);
private void OnLoadSuccess(AssetOperationHandle assetOperationHandle){}
//使用UniTask异步加载。
await GameModule.Resource.LoadAssetAsync<SkillDisplayData>(location,CancellationToken.None);
```
## 常用接口
remark资源模块初始化的生命周期已经在流程模块实现了具体有需求可以自定义开发。
``` csharp
/// <summary>
/// 获取当前资源包版本。
/// </summary>
/// <returns>资源包版本。</returns>
public string GetPackageVersion();
/// <summary>
/// 异步更新最新包的版本。
/// </summary>
/// <param name="appendTimeTicks">请求URL是否需要带时间戳。</param>
/// <param name="timeout">超时时间。</param>
/// <returns>请求远端包裹的最新版本操作句柄。</returns>
public UpdatePackageVersionOperation UpdatePackageVersionAsync(bool appendTimeTicks = false, int timeout = 60);
/// <summary>
/// 向网络端请求并更新清单
/// </summary>
/// <param name="packageVersion">更新的包裹版本</param>
/// <param name="autoSaveVersion">更新成功后自动保存版本号,作为下次初始化的版本。</param>
/// <param name="timeout">超时时间默认值60秒</param>
public UpdatePackageManifestOperation UpdatePackageManifestAsync(string packageVersion, bool autoSaveVersion = true, int timeout = 60);
/// <summary>
/// 创建资源下载器,用于下载当前资源版本所有的资源包文件。
/// </summary>
public ResourceDownloaderOperation CreateResourceDownloader();
/// <summary>
/// 清理包裹未使用的缓存文件。
/// </summary>
public ClearUnusedCacheFilesOperation ClearUnusedCacheFilesAsync();
/// <summary>
/// 清理沙盒路径。
/// </summary>
public void ClearSandbox();
/// <summary>
/// 强制执行释放未被使用的资源。
/// </summary>
/// <param name="performGCCollect">是否使用垃圾回收。</param>
public void ForceUnloadUnusedAssets(bool performGCCollect);
/// <summary>
/// 检查资源是否存在。
/// </summary>
/// <param name="assetName">要检查资源的名称。</param>
/// <returns>检查资源是否存在的结果。</returns>
public HasAssetResult HasAsset(string assetName);
/// 同步加载资源。
/// </summary>
/// <param name="assetName">要加载资源的名称。</param>
/// <typeparam name="T">要加载资源的类型。</typeparam>
/// <returns>资源实例。</returns>
T LoadAsset<T>(string assetName) where T : Object;
/// <summary>
/// 同步加载资源。
/// </summary>
/// <param name="assetName">要加载资源的名称。</param>
/// <param name="parent">父节点位置。</param>
/// <typeparam name="T">要加载资源的类型。</typeparam>
/// <returns>资源实例。</returns>
T LoadAsset<T>(string assetName, Transform parent) where T :Object;
/// <summary>
/// 同步加载资源。
/// </summary>
/// <param name="handle">资源操作句柄。</param>
/// <param name="assetName">要加载资源的名称。</param>
/// <typeparam name="T">要加载资源的类型。</typeparam>
/// <returns>资源实例。</returns>
T LoadAsset<T>(string assetName,out AssetOperationHandle handle) where T : Object;
/// <summary>
/// 同步加载资源。
/// </summary>
/// <param name="assetName">要加载资源的名称。</param>
/// <param name="handle">资源操作句柄。</param>
/// <param name="parent">父节点位置。</param>
/// <typeparam name="T">要加载资源的类型。</typeparam>
/// <returns>资源实例。</returns>
T LoadAsset<T>(string assetName, Transform parent,out AssetOperationHandle handle) where T :Object;
/// <summary>
/// 异步加载资源。
/// </summary>
/// <param name="assetName">要加载资源的名称。</param>
/// <param name="cancellationToken">取消操作Token。</param>
/// <typeparam name="T">要加载资源的类型。</typeparam>
/// <returns>异步资源实例。</returns>
UniTask<T> LoadAssetAsync<T>(string assetName,CancellationToken cancellationToken) where T : Object;
/// <summary>
/// 异步加载游戏物体。
/// </summary>
/// <param name="assetName">要加载的游戏物体名称。</param>
/// <param name="cancellationToken">取消操作Token。</param>
/// <returns>异步游戏物体实例。</returns>
UniTask<UnityEngine.GameObject> LoadGameObjectAsync(string assetName,CancellationToken cancellationToken);
/// <summary>
/// 同步加载资源并获取句柄。
/// </summary>
/// <param name="assetName">要加载资源的名称。</param>
/// <typeparam name="T">要加载资源的类型。</typeparam>
/// <returns>同步加载资源句柄。</returns>
AssetOperationHandle LoadAssetGetOperation<T>(string assetName) where T : Object;
/// <summary>
/// 异步加载资源并获取句柄。
/// </summary>
/// <param name="assetName">要加载资源的名称。</param>
/// <typeparam name="T">要加载资源的类型。</typeparam>
/// <returns>异步加载资源句柄。</returns>
AssetOperationHandle LoadAssetAsyncHandle<T>(string assetName) where T : Object;
/// <summary>
/// 同步加载子资源对象
/// </summary>
/// <typeparam name="TObject">资源类型</typeparam>
/// <param name="location">资源的定位地址</param>
public SubAssetsOperationHandle LoadSubAssetsSync<TObject>(string location) where TObject : UnityEngine.Object;
/// <summary>
/// 异步加载子资源对象
/// </summary>
/// <typeparam name="TObject">资源类型</typeparam>
/// <param name="location">资源的定位地址</param>
public SubAssetsOperationHandle LoadSubAssetsAsync<TObject>(string location) where TObject : UnityEngine.Object;
/// <summary>
/// 同步加载子资源对象
/// </summary>
/// <param name="assetInfo">资源信息。</param>
public SubAssetsOperationHandle LoadSubAssetsSync(AssetInfo assetInfo);
/// <summary>
/// 异步加载场景。
/// </summary>
/// <param name="location">场景的定位地址</param>
/// <param name="sceneMode">场景加载模式</param>
/// <param name="activateOnLoad">加载完毕时是否主动激活</param>
/// <param name="priority">优先级</param>
/// <returns>异步加载场景句柄。</returns>
SceneOperationHandle LoadSceneAsync(string location, LoadSceneMode sceneMode = LoadSceneMode.Single, bool activateOnLoad = true, int priority = 100);
/// <summary>
/// 异步加载场景
/// </summary>
/// <param name="assetInfo">场景的资源信息</param>
/// <param name="sceneMode">场景加载模式</param>
/// <param name="activateOnLoad">加载完毕时是否主动激活</param>
/// <param name="priority">优先级</param>
/// <returns>异步加载场景句柄。</returns>
SceneOperationHandle LoadSceneAsync(AssetInfo assetInfo, LoadSceneMode sceneMode = LoadSceneMode.Single, bool activateOnLoad = true, int priority = 100);
```

69
Books/3-2-事件模块.md Normal file
View File

@@ -0,0 +1,69 @@
# 3-2.事件模块 - GameEvent
高效且无GC的事件系统GameEvent可以指定事件ID/事件String监听和分发事件。通过事件来驱动模块如战斗的角色身上的事件流、UI和网络以及Model的数据流、开发中的绝大部分情况都可以通过事件来进行驱动。(配合UI模块或者拓展的战斗模块实现MVE[Model - View - Event]事件驱动架构)
事件模块支持string和int作为事件Id但推荐是使用int因为可以避免事件字典的哈希碰撞。这里实现了StringId.StringToHash的方法来定义事件ID达到事件系统的最佳性能。
<strong>UI模块的事件和UI生命周期存在绑定销毁UI时可以自动移除UI所监听的事件,开发过程中只需要关心添加事件避免了关闭UI但没有移除事件监听的问题角色模块也可以参考实现。(AddUIEvent)</strong>
``` csharp
public static readonly int Hellp = StringId.StringToHash("Hellp.Hellp");
class A
{
public A()
{
//添加事件监听string
GameEvent.AddEventListener("TEngine很好用",TodoSomeThings);
//添加事件监听int 事件ID
GameEvent.AddEventListener(Hellp,TodoSomeThings2);
}
}
class B
{
private void SaySomeThings()
{
//发送事件流
GameEvent.Send("TEngine很好用");
GameEvent.Send(Hellp);
}
}
【举个例子游戏中血量扣除的时候服务器发来了一个减少Hp的消息包
我们可以在收到这个消息包的时候发送一个事件流在玩家头顶的HP进度
条组件/左上角Hp的UI血条组件添加一个监听事件各个模块负责自己监听后的逻辑】
Server -> SendMessage(ReduceHP)
class ClientHandle
{
private void HandleMessage(MainPack mainpack)
{
...
HpPack hpPack = mainpack.hpPack;
int playerId = mainpack.playerId;
var player = PlayerMgr.Instance.GetPlayer(playerId);
if(player != null){
player.Event.Send("Hpchange",hpPack); //局部的事件管理器
GameEvent.Send("Hpchange",hpPack); //全局事件中心
}
}
}
class PlayerHp
{
public ECSEventCmpt Event { get; set; }
PlayerHp(){
Event.AddEventListener<HpPack>(Hellp,HandleUpChange);
}
}
[Window(UILayer.UI)]
class BattleMainUI: UIWindow
{
public override void RegisterEvent()
{
AddUIEvent<HpPack>(Hellp,HandleUpChange);
}
public void HandleUpChange(HpPack pack){}
}
```

View File

@@ -0,0 +1,23 @@
# 3-3.内存池模块 - MemoryPool
内存池更为轻量化,相对于对象池更适合一些更抽象碎片化的内存对象。
Scene窗口MemoryPool对象可以设置内存池检查防止回收问题与内存泄漏问题。
![image](src/3-3-1.png)
使用案例
``` csharp
/// <summary>
/// 资源组数据。
/// <remarks>DisposeGroup。</remarks>
/// </summary>
public class AssetGroup : IMemory
{
public void Clear(){}
}
//内存池中获取/生成内存对象。
AssetGroup assetGroup = MemoryPool.Acquire<AssetGroup>();
//释放内存对象还给内存池。
MemoryPool.Release(assetGroup);
```

View File

@@ -0,0 +1,64 @@
# 3-4.对象池模块 - ObjectModule
对象池较中量级,在客户端开发中是一个经常使用的技术,技术点我相信大家都懂,这里不过多讨论。
使用案例
``` csharp
/// <summary>
/// Actor对象。
/// </summary>
public class Actor : ObjectBase
{
/// <summary>
/// 释放对象。
/// </summary>
/// <param name="isShutdown">是否是关闭对象池时触发。</param>
protected override void Release(bool isShutdown){}
/// <summary>
/// 创建Actor对象。
/// </summary>
/// <param name="actorName">对象名称。</param>
/// <param name="target">对象持有实例。</param>
/// <returns></returns>
public static Actor Create(string name, object target)
{
var actor = MemoryPool.Acquire<Actor>();
actor.Initialize(name, target);
return actor;
}
}
/// <summary>
/// Actor对象池。
/// </summary>
private IObjectPool<Actor> _actorPool;
void Start()
{
//创建允许单次获取的对象池。
_actorPool = GameModule.ObjectPool.CreateSingleSpawnObjectPool<Actor>(Utility.Text.Format("Actor Instance Pool ({0})", name));
}
/// <summary>
/// 创建Actor对象。
/// </summary>
/// <param name="actorName">对象名称。</param>
/// <param name="target">对象持有实例。</param>
/// <returns>Actor对象实例</returns>
public Actor CreateActor(string actorName, GameObject target)
{
Actor ret = null;
if (_actorPool.CanSpawn())
{
ret = _actorPool.Spawn();
}
else
{
ret = Actor.Create(actorName, target);
_actorPool.Register(ret,true);
}
return ret;
}
```

126
Books/3-5-UI模块.md Normal file
View File

@@ -0,0 +1,126 @@
# 3-5.UI模块 - UIModule
一个游戏70%都是UI剩下30%才是GamePlay所以有一套简洁强大的商业化UI模块以及UI开发工作流将是项目的一大利器能够提高至少一倍的开发效率。(配合事件模块实现MVE[Model - View - Event]事件驱动架构)
UI脚本为纯C#实现脱离Mono的生命周期由UIModule的帧更新驱动并管理UI的生命周期。
IUIBehaviour为UI通用行为接口、UIBase为UI基类、UIWindow为UI窗口基类UIWidget为UI组件基类。
## 前期配置:
注意m_item节点为特殊节点表示是UI下的UIWidget组件不会继续往下遍历生成UI代码。若需要这个UIWidget组件m_item的代码则在m_item右键生成这个组件的UI脚本。
Scene窗口下右键ScriptGenerator菜单下About目录有默认UI命名前缀规范。
![image](src/3-5-1.png)
有自定义需求可以在TEngineSetting下进行自定义。
![image](src/3-5-2.png)
### 开发工作流:
1.遵守前期默认配置或者自定义配置进行UI编排
![image](src/3-5-3.png)
2.在UI的根节点右键ScriptGenerator生成UI代码到剪贴板上注-使用-UniTask的生成代码可以做异步事件流驱动的UI。
![image](src/3-5-4.png)
3.自行创建UI脚本到需要的目录下并复制UI脚本。
## 举例示范
``` csharp
// 同步打开面板
GameModule.UI.ShowUI<GameMainUI>([nullable]userData);
// 异步打开面板
GameModule.UI.ShowUIAsync<GameMainUI>([nullable]userData);
namespace GameLogic
{
/// <summary>
/// BattleMainUI面板
/// <remarks>UIWindow需要以下特性UILayer可以自行定义fullScreen表示为全屏面板会停止和隐藏这个面板堆栈后面的面板。</remarks>
/// </summary>
[Window(UILayer.Bottom,fullScreen:true)]
class BattleMainUI : UIWindow
{
private TouchMove m_touchView;
#region 脚本工具生成的代码
private RectTransform m_rectContainer;
private GameObject m_itemTouch;
private Button m_btnLeaveBattle;
private GameObject m_goTopInfo;
private Button m_btnPause;
public override void ScriptGenerator()
{
m_rectContainer = FindChildComponent<RectTransform>("m_rectContainer");
m_itemTouch = FindChild("m_rectContainer/m_itemTouch").gameObject;
m_btnLeaveBattle = FindChildComponent<Button>("m_btnLeaveBattle");
m_goTopInfo = FindChild("m_goTopInfo").gameObject;
m_btnPause = FindChildComponent<Button>("m_goTopInfo/m_btnPause");
m_btnLeaveBattle.onClick.AddListener(OnClickLeaveBattleBtn);
m_btnPause.onClick.AddListener(OnClickPauseBtn);
}
#endregion
#region 事件
private void OnClickPauseBtn()
{
BattleSys.Instance.Pause = !BattleSys.Instance.Pause;
}
private void OnClickLeaveBattleBtn()
{
BattleSys.Instance.StopBattle(isBattleEnd:false,isWin:false);
}
#endregion
//注册事件举例
public override void RegisterEvent()
{
//通过AddUIEvent这样注册事件会把事件的生命周期绑定给面板面板销毁的时候自动移除监听。
AddUIEvent(ActorLogicEventDefined.OnMainPlayerBagDataChange, RefreshUI);
}
public override void BindMemberProperty()
{
//特殊的m_item节点的域不属于父级UIWindows所以如注意所说需要同样创建这个UIWidget的脚本并生成代码过去。 可以如下创建或者走type、path创建。
m_touchView = CreateWidget<TouchMove>(m_itemTouch);
}
......
}
}
namespace GameLogic
{
/// <summary>
/// 移动操作UIWidget。
/// </summary>
class TouchMove : UIWidget, IUICtrlMove
{
public override void BindMemberProperty()
{
}
//注意Update只有在重写了此方法才会驱动这个Widget或者面板的Update。
public override void OnUpdate()
{
TProfiler.BeginSample("CheckMoveTouchFinger");
CheckMoveTouchFinger();
TProfiler.EndSample();
TProfiler.BeginSample("UpdateTouchMovePos");
UpdateTouchMovePos();
TProfiler.EndSample();
TProfiler.BeginSample("UpdateKeyMove");
UpdateKeyMove();
TProfiler.EndSample();
}
......
}
}
```
## UI进阶
UI面板需要标记UIWindowAttribute以标识层级(可以自行定义)和是否全屏。全屏面板则会把下层面板的Visible设置为false。
![image](src/3-5-5.png)

View File

@@ -0,0 +1,55 @@
# 3-6.配置表模块 - ConfigLoader
接入最佳游戏配置解决方案 - <a href="https://github.com/focus-creative-games/luban"><strong>Luban</strong></a>
<a href="https://luban.doc.code-philosophy.com/#/manual/traits"><strong>Luban文档 </strong></a>
### 在TEngine中Luban工具集位于以下目录
![image](src/3-6-1.png)
TEngine内置默认使用懒加载配置也支持基于UniTask的异步加载同步加载包括服务器的Task异步加载使用对应转表的bat即可。
### 介绍
luban是你的最佳游戏配置解决方案。
luban高效地处理游戏开发中常见的excel、json、xml之类的数据检查数据错误生成c#等各种语言的代码导出成bytes或json等多种格式。
luban统一了游戏配置开发工作流极大提升了策划和程序的工作效率。
核心特性
强大的数据解析和转换能力 {excel(csv,xls,xlsx)、json、bson、xml、yaml、lua、unity ScriptableObject} => {binary、json、bson、xml、lua、yaml、erlang、 custom format}
增强的excel格式可以简洁地配置出像简单列表、子结构、结构列表以及任意复杂的深层次的嵌套结构。
完备的类型系统支持OOP类型继承搭配excel、json、lua、xml等格式数据灵活优雅表达行为树、技能、剧情、副本之类复杂GamePlay数据
支持生成c#、java、go、c++、lua、python、javascript、typescript、erlang、rust、gdscript 代码
支持生成 protobuf(schema + binary + json)、flatbuffers(schema + json)、msgpack(binary)
强大的数据校验能力。ref引用检查、path资源路径、range范围检查等等
完善的本地化支持。静态文本值本地化、动态文本值本地化、时间本地化、main-patch多地区版本
强大灵活的自定义能力,支持自定义代码模板和数据模板
通用型生成和缓存工具。也可以用于生成协议、数据库之类的代码,甚至可以用作对象缓存服务。
---
使用案例
``` csharp
/// <summary>
/// 道具配置表管理器。
/// </summary>
public class ItemConfigMgr: Singleton<ItemConfigMgr>
{
/// <summary>
/// 道具Table。
/// </summary>
private TbItem TbItem => ConfigLoader.Instance.Tables.TbItem;
/// <summary>
/// 获取道具配置表。
/// </summary>
/// <param name="itemId">道具Id。</param>
/// <returns>道具配置表。</returns>
public ItemConfig GetItemConfig(int itemId)
{
TbItem.DataMap.TryGetValue(itemId, out var config);
return config;
}
}
```

24
Books/3-7-流程模块.md Normal file
View File

@@ -0,0 +1,24 @@
# 7.流程模块 - ProcedureModule
### ProcedureLaunch - 流程启动
### ProcedureSplash - 流程闪屏
### ProcedureInitPackage - 流程初始化Package
### ProcedureInitResources - 流程初始化Resources
### ProcedureUpdateVersion - 流程更新版本Version
### ProcedureUpdateManifest - 流程更新Mainfest清单
### ProcedureCreateDownloader - 流程创建下载器
### ProcedureDownloadFile - 流程下载文件
### ProcedureDownloadOver - 流程下载文件结束
### ProcedureClearCache - 流程清理缓存
### ProcedureLoadAssembly - 流程加载进入热更新程序集

View File

@@ -0,0 +1,2 @@
# 8.网络模块 - Network
待补充

View File

@@ -0,0 +1,16 @@
# TEngine各平台下运行
### 日志记录编辑器下运行
![image](src/Editor-RunSuccessed.png)
---
### Win64位包运行
![image](src/Win64-RunSuccessed.png)
---
### 安卓真机运行
![image](src/Android-RunSuccessed.png)
### IOS真机运行
![image](src/Iphone-RunSuccessed.png)

BIN
Books/src/1-1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 133 KiB

BIN
Books/src/1-2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 218 KiB

BIN
Books/src/2-1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 140 KiB

BIN
Books/src/3-1-1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 222 KiB

BIN
Books/src/3-1-2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 181 KiB

BIN
Books/src/3-3-1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 315 KiB

BIN
Books/src/3-5-1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

BIN
Books/src/3-5-2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

BIN
Books/src/3-5-3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

BIN
Books/src/3-5-4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

BIN
Books/src/3-5-5.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 176 KiB

BIN
Books/src/3-6-1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 236 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 302 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

BIN
Books/src/TEngine512.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 308 KiB

View File

@@ -0,0 +1,9 @@
cd /d %~dp0
call path_define.bat
%UNITYEDITOR_PATH%/Unity.exe %WORKSPACE% -logFile %BUILD_LOGFILE% -executeMethod TEngine.ReleaseTools.AutomationBuildAndroid -quit -batchmode -CustomArgs:Language=en_US; %WORKSPACE%
@REM for /f "delims=[" %%i in (%BUILD_LOGFILE%) do echo %%i
pause

6
BuildCLI/path_define.bat Normal file
View File

@@ -0,0 +1,6 @@
cd /d %~dp0
set WORKSPACE=G:/github/TEngine/UnityProject
set UNITYEDITOR_PATH=G:/UnityEditor/2021.3.20f1c1/Editor
set BUILD_DLL_LOGFILE=./build_dll.log
set BUILD_LOGFILE=./build.log

View File

@@ -0,0 +1,57 @@
using Luban;
using GameBase;
using GameConfig;
using TEngine;
using UnityEngine;
/// <summary>
/// 配置加载器。
/// </summary>
public class ConfigSystem : Singleton<ConfigSystem>
{
private bool _init = false;
private Tables _tables;
public Tables Tables
{
get
{
if (!_init)
{
Load();
}
return _tables;
}
}
/// <summary>
/// 加载配置。
/// </summary>
public void Load()
{
_tables = new Tables(LoadByteBuf);
_init = true;
}
/// <summary>
/// 加载二进制配置。
/// </summary>
/// <param name="file">FileName</param>
/// <returns>ByteBuf</returns>
private ByteBuf LoadByteBuf(string file)
{
TextAsset textAsset = null;
textAsset = GameModule.Resource.GetPreLoadAsset<TextAsset>(file);
if (textAsset != null)
{
return new ByteBuf(textAsset.bytes);
}
else
{
textAsset = GameModule.Resource.LoadAsset<TextAsset>(file);
return new ByteBuf(textAsset.bytes);
}
}
}

View File

@@ -0,0 +1,55 @@
using Luban;
{{namespace_with_grace_begin __namespace}}
public partial class {{__name}}
{
#region The Tables
{{~for table in __tables ~}}
{{~if table.comment != '' ~}}
/// <summary>
/// {{escape_comment table.comment}}
/// </summary>
{{~end~}}
private {{table.full_name}} m_{{table.name}};
public {{table.full_name}} {{format_property_name __code_style table.name}}
{
get
{
if (m_{{table.name}} == null)
{
m_{{table.name}} = new {{table.full_name}}(defaultLoader("{{table.output_data_file}}"));
m_{{table.name}}.ResolveRef(this);
}
return m_{{table.name}};
}
set
{
m_{{table.name}} = value;
m_{{table.name}}.ResolveRef(this);
}
}
{{~end~}}
#endregion
System.Func<string, ByteBuf> defaultLoader;
public {{__name}}(System.Func<string, ByteBuf> loader)
{
SetDefaultLoader(loader);
Init();
}
public void SetDefaultLoader(System.Func<string, ByteBuf> loader)
{
defaultLoader = null;
defaultLoader = loader;
}
//public partial void Init();
public void Init(){}
}
{{namespace_with_grace_end __namespace}}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,17 @@
<module name="">
<bean name="vector2" valueType="1" sep=",">
<var name="x" type="float"/>
<var name="y" type="float"/>
</bean>
<bean name="vector3" valueType="1" sep=",">
<var name="x" type="float"/>
<var name="y" type="float"/>
<var name="z" type="float"/>
</bean>
<bean name="vector4" valueType="1" sep=",">
<var name="x" type="float"/>
<var name="y" type="float"/>
<var name="z" type="float"/>
<var name="w" type="float"/>
</bean>
</module>

View File

@@ -0,0 +1,17 @@
set WORKSPACE=../..
set LUBAN_DLL=%WORKSPACE%\Tools\Luban\Luban.dll
set CONF_ROOT=.
set DATA_OUTPATH=%WORKSPACE%/UnityProject/Assets/AssetRaw/Configs/bytes/
set CODE_OUTPATH=%WORKSPACE%/UnityProject/Assets/GameScripts/HotFix/GameProto/GameConfig/
xcopy /s /e /i /y "%CONF_ROOT%\CustomTemplate\ConfigSystem.cs" "%WORKSPACE%\UnityProject\Assets\GameScripts\HotFix\GameProto\ConfigSystem.cs"
dotnet %LUBAN_DLL% ^
-t client ^
-c cs-bin ^
-d bin^
--conf %CONF_ROOT%\luban.conf ^
-x outputCodeDir=%CODE_OUTPATH% ^
-x outputDataDir=%DATA_OUTPATH%
pause

View File

@@ -0,0 +1,18 @@
set WORKSPACE=../..
set LUBAN_DLL=%WORKSPACE%\Tools\Luban\Luban.dll
set CONF_ROOT=.
set DATA_OUTPATH=%WORKSPACE%/UnityProject/Assets/AssetRaw/Configs/bytes/
set CODE_OUTPATH=%WORKSPACE%/UnityProject/Assets/GameScripts/HotFix/GameProto/GameConfig/
xcopy /s /e /i /y "%CONF_ROOT%\CustomTemplate\ConfigSystem.cs" "%WORKSPACE%\UnityProject\Assets\GameScripts\HotFix\GameProto\ConfigSystem.cs"
dotnet %LUBAN_DLL% ^
-t client ^
-c cs-bin ^
-d bin^
--conf %CONF_ROOT%\luban.conf ^
--customTemplateDir %CONF_ROOT%\CustomTemplate\CustomTemplate_Client_LazyLoad ^
-x outputCodeDir=%CODE_OUTPATH% ^
-x outputDataDir=%DATA_OUTPATH%
pause

View File

@@ -0,0 +1,15 @@
set WORKSPACE=../../
set LUBAN_DLL=%WORKSPACE%/Tools/Luban/Luban.dll
set CONF_ROOT=.
set DATA_OUTPATH=%WORKSPACE%/Server/GameConfig
set CODE_OUTPATH=%WORKSPACE%/Server/Hotfix/Config/GameConfig
dotnet %LUBAN_DLL% ^
-t server^
-c cs-bin ^
-d bin^
--conf %CONF_ROOT%\luban.conf ^
-x outputCodeDir=%CODE_OUTPATH% ^
-x outputDataDir=%DATA_OUTPATH%
pause

View File

@@ -0,0 +1,22 @@
{
"groups":
[
{"names":["c"], "default":true},
{"names":["s"], "default":true},
{"names":["e"], "default":true}
],
"schemaFiles":
[
{"fileName":"Defines", "type":""},
{"fileName":"Datas/__tables__.xlsx", "type":"table"},
{"fileName":"Datas/__beans__.xlsx", "type":"bean"},
{"fileName":"Datas/__enums__.xlsx", "type":"enum"}
],
"dataDir": "Datas",
"targets":
[
{"name":"server", "manager":"Tables", "groups":["s"], "topModule":"GameConfig"},
{"name":"client", "manager":"Tables", "groups":["c"], "topModule":"GameConfig"},
{"name":"all", "manager":"Tables", "groups":["c,s,e"], "topModule":"GameConfig"}
]
}

View File

@@ -100,3 +100,6 @@ Assets
#### <a href="https://github.com/focus-creative-games/hybridclr"><strong>HybridCLR</strong></a> - 特性完整、零成本、高性能、低内存的近乎完美的Unity全平台原生c#热更方案
#### <a href="https://github.com/qq362946/Fantasy"><strong>Fantasy</strong></a> - Fantasy是一套源于ETServer但极为简洁性能更强更好上手的一套商业级服务器框架。
## <strong>交流群
### <a href="http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=MzOcQIzGVLQ5AC5LHaqqA3h_F6lZ_DX4&authKey=LctqAWGHkJ7voQvuj1oaSe5tsGrc1XmQG3U4QniieGUlxY3lC7FtDIpEvPOX0vT8&noverify=0&group_code=862987645">群 号862987645 </strong></a>

8
Tools/FileServer/.gitignore vendored Normal file
View File

@@ -0,0 +1,8 @@
node_modules
*.swap
.idea
.DS_Store
*.log
.vscode
*-lock.json
AssetsRoot

View File

@@ -0,0 +1,42 @@
## 使用node搭建静态资源服务器
### 安装
```bash
npm install yumu-static-server -g
```
### 使用
```bash
server # 会在当前目录下启动一个静态资源服务器默认端口为8080
server -p[port] 3000 # 会在当前目录下启动一个静态资源服务器端口为3000
server -i[index] index.html # 设置文件夹在默认加载的文件
server -c[charset] UTF-8 # 设置文件默认加载的字符编码
server -cors # 开启文件跨域
server -h[https] # 开启https服务
server --openindex # 是否打开默认页面
server --no-openbrowser # 关闭自动打开浏览器
```
### 基本功能
1. 启动静态资源服务器
2. 端口可配置
3. 字符编码可配置
4. 文件夹下默认加载文件可配置
5. 是否跨域可配置
6. 开启https服务
### TODO
- [x] 引入handlerbars编译模板
- [x] 支持文件是否跨域
- [x] 支持https服务

View File

@@ -0,0 +1,26 @@
const StaticServer = require('../src/static-server');
const options = require('yargs')
.option('p', { alias: 'port', describe: '设置服务启动的端口号', type: 'number' })
.option('i', { alias: 'index', describe: '设置默认打开的主页', type: 'string' })
.option('c', { alias: 'charset', describe: '设置文件的默认字符集', type: 'string' })
.option('o', { alias: 'openindex', describe: '是否打开默认页面', type: 'boolean' })
.option('h', { alias: 'https', describe: '是否启用https服务', type: 'boolean' })
.option('cors', { describe: '是否开启文件跨域', type: 'boolean' })
.option('openbrowser', { describe: '是否默认打开浏览器', type: 'boolean' })
// 默认参数
.default('openbrowser', true)
// .default('https', true)
.default('port', 8080)
.default('index', 'index.html')
.default('openindex', 'index.html')
.default('charset', 'UTF-8')
.help()
.alias('?', 'help')
.argv;
const server = new StaticServer(options);
server.start();

View File

@@ -0,0 +1,3 @@
#!/usr/bin/env node
module.exports = require('./bin/app.js');

View File

@@ -0,0 +1 @@
npm install yumu-static-server -g

View File

@@ -0,0 +1,30 @@
{
"name": "static-server",
"version": "0.0.1",
"description": "使用node搭建静态资源服务器",
"main": "index.js",
"scripts": {
"dev": "supervisor bin/app.js",
"start": "npm run dev"
},
"bin": {
"server": "index.js"
},
"author": "Alex",
"license": "ISC",
"keywords": [
"static-server",
"server"
],
"dependencies": {
"chalk": "^2.3.2",
"handlebars": "^4.0.11",
"mime": "^2.2.0",
"open": "^7.1.0",
"pem": "^1.12.5",
"yargs": "^6.6.0"
},
"devDependencies": {
"supervisor": "^0.12.0"
}
}

View File

@@ -0,0 +1,12 @@
const path = require('path');
const mime = require('mime');
const lookup = (pathName) => {
let ext = path.extname(pathName);
ext = ext.split('.').pop();
return mime.getType(ext) || mime.getType('txt');
}
module.exports = {
lookup
};

View File

@@ -0,0 +1,334 @@
const http = require('http');
const https = require('https');
const path = require('path');
const fs = require('fs');
const url = require('url');
const zlib = require('zlib');
const chalk = require('chalk');
const os = require('os');
const open = require("open");
const Handlebars = require('handlebars');
const pem = require('pem');
const mime = require('./mime');
const Template = require('./templates');
const _defaultTemplate = Handlebars.compile(Template.page_dafault);
const _404TempLate = Handlebars.compile(Template.page_404);
const hasTrailingSlash = url => url[url.length - 1] === '/';
const ifaces = os.networkInterfaces();
class StaticServer {
constructor(options) {
this.port = options.port;
this.indexPage = options.index;
this.openIndexPage = options.openindex;
this.openBrowser = options.openbrowser;
this.charset = options.charset;
this.cors = options.cors;
this.protocal = options.https ? 'https' : 'http';
this.zipMatch = '^\\.(css|js|html)$';
}
/**
* 响应错误
*
* @param {*} err
* @param {*} res
* @returns
* @memberof StaticServer
*/
respondError(err, res) {
res.writeHead(500);
return res.end(err);
}
/**
* 响应404
*
* @param {*} req
* @param {*} res
* @memberof StaticServer
*/
respondNotFound(req, res) {
res.writeHead(404, {
'Content-Type': 'text/html'
});
const html = _404TempLate();
res.end(html);
}
respond(pathName, req, res) {
fs.stat(pathName, (err, stat) => {
if (err) return respondError(err, res);
this.responseFile(stat, pathName, req, res);
});
}
/**
* 判断是否需要解压
*
* @param {*} pathName
* @returns
* @memberof StaticServer
*/
shouldCompress(pathName) {
return path.extname(pathName).match(this.zipMatch);
}
/**
* 解压文件
*
* @param {*} readStream
* @param {*} req
* @param {*} res
* @returns
* @memberof StaticServer
*/
compressHandler(readStream, req, res) {
const acceptEncoding = req.headers['accept-encoding'];
if (!acceptEncoding || !acceptEncoding.match(/\b(gzip|deflate)\b/)) {
return readStream;
} else if (acceptEncoding.match(/\bgzip\b/)) {
res.setHeader('Content-Encoding', 'gzip');
return readStream.pipe(zlib.createGzip());
}
}
/**
* 响应文件路径
*
* @param {*} stat
* @param {*} pathName
* @param {*} req
* @param {*} res
* @memberof StaticServer
*/
responseFile(stat, pathName, req, res) {
// 设置响应头
res.setHeader('Content-Type', `${mime.lookup(pathName)}; charset=${this.charset}`);
res.setHeader('Accept-Ranges', 'bytes');
// 添加跨域
if (this.cors) res.setHeader('Access-Control-Allow-Origin', '*');
let readStream;
readStream = fs.createReadStream(pathName);
if (this.shouldCompress(pathName)) { // 判断是否需要解压
readStream = this.compressHandler(readStream, req, res);
}
readStream.pipe(res);
}
/**
* 响应重定向
*
* @param {*} req
* @param {*} res
* @memberof StaticServer
*/
respondRedirect(req, res) {
const location = req.url + '/';
res.writeHead(301, {
'Location': location,
'Content-Type': 'text/html'
});
const html = _defaultTemplate({
htmlStr: `Redirecting to <a href='${location}'>${location}</a>`,
showFileList: false
})
res.end(html);
}
/**
* 响应文件夹路径
*
* @param {*} pathName
* @param {*} req
* @param {*} res
* @memberof StaticServer
*/
respondDirectory(pathName, req, res) {
const indexPagePath = path.join(pathName, this.indexPage);
// 如果文件夹下存在index.html则默认打开
if (this.openIndexPage && fs.existsSync(indexPagePath)) {
this.respond(indexPagePath, req, res);
} else {
fs.readdir(pathName, (err, files) => {
if (err) {
respondError(err, res);
}
const requestPath = url.parse(req.url).pathname;
const fileList = [];
files.forEach(fileName => {
let itemLink = path.join(requestPath, fileName);
let isDirectory = false;
const stat = fs.statSync(path.join(pathName, fileName));
if (stat && stat.isDirectory()) {
itemLink = path.join(itemLink, '/');
isDirectory = true;
}
fileList.push({
link: itemLink,
name: fileName,
isDirectory
});
});
// 排序,目录在前,文件在后
fileList.sort((prev, next) => {
if (prev.isDirectory && !next.isDirectory) {
return -1;
}
return 1;
});
res.writeHead(200, {
'Content-Type': 'text/html'
});
const html = _defaultTemplate({
requestPath,
fileList,
showFileList: true
})
res.end(html);
});
}
}
/**
* 路由处理
*
* @param {*} pathName
* @param {*} req
* @param {*} res
* @memberof StaticServer
*/
routeHandler(pathName, req, res) {
const realPathName = pathName.split('?')[0];
fs.stat(realPathName, (err, stat) => {
this.logGetInfo(err, pathName);
if (!err) {
const requestedPath = url.parse(req.url).pathname;
// 检查url
// 如果末尾有'/',且是文件夹,则读取文件夹
// 如果是文件夹,但末尾没'/',则重定向至'xxx/'
// 如果是文件,则判断是否是压缩文件,是则解压,不是则读取文件
if (hasTrailingSlash(requestedPath) && stat.isDirectory()) {
this.respondDirectory(realPathName, req, res);
} else if (stat.isDirectory()) {
this.respondRedirect(req, res);
} else {
this.respond(realPathName, req, res);
}
} else {
this.respondNotFound(req, res);
}
});
}
/**
* 打印ip地址
*
* @memberof StaticServer
*/
logUsingPort() {
const me = this;
console.log(`${chalk.yellow(`Starting up your server\nAvailable on:`)}`);
Object.keys(ifaces).forEach(function (dev) {
ifaces[dev].forEach(function (details) {
if (details.family === 'IPv4') {
console.log(` ${me.protocal}://${details.address}:${chalk.green(me.port)}`);
}
});
});
console.log(`${chalk.cyan(Array(50).fill('-').join(''))}`);
}
/**
* 打印占用端口
*
* @param {*} oldPort
* @param {*} port
* @memberof StaticServer
*/
logUsedPort(oldPort, port) {
const me = this;
console.log(`${chalk.red(`The port ${oldPort} is being used, change to port `)}${chalk.green(me.port)} `);
}
/**
* 打印https证书友好提示
*
* @memberof StaticServer
*/
logHttpsTrusted() {
console.log(chalk.green('Currently is using HTTPS certificate (Manually trust it if necessary)'));
}
/**
* 打印路由路径输出
*
* @param {*} isError
* @param {*} pathName
* @memberof StaticServer
*/
logGetInfo(isError, pathName) {
if (isError) {
console.log(chalk.red(`404 ${pathName}`));
} else {
console.log(chalk.cyan(`200 ${pathName}`));
}
}
startServer(keys) {
const me = this;
let isPostBeUsed = false;
const oldPort = me.port;
const protocal = me.protocal === 'https' ? https : http;
const options = me.protocal === 'https' ? { key: keys.serviceKey, cert: keys.certificate } : null;
const callback = (req, res) => {
const pathName = path.join(process.cwd(), path.normalize(decodeURI(req.url)));
me.routeHandler(pathName, req, res);
};
const params = [callback];
if (me.protocal === 'https') params.unshift(options);
const server = protocal.createServer(...params).listen(me.port);
server.on('listening', function () { // 执行这块代码说明端口未被占用
if (isPostBeUsed) {
me.logUsedPort(oldPort, me.port);
}
me.logUsingPort();
if (me.openBrowser) {
open(`${me.protocal}://127.0.0.1:${me.port}`);
}
});
server.on('error', function (err) {
if (err.code === 'EADDRINUSE') { // 端口已经被使用
isPostBeUsed = true;
me.port = parseInt(me.port) + 1;
server.listen(me.port);
} else {
console.log(err);
}
})
}
start() {
const me = this;
if (this.protocal === 'https') {
pem.createCertificate({ days: 1, selfSigned: true }, function (err, keys) {
if (err) {
throw err
}
me.logHttpsTrusted();
me.startServer(keys);
})
} else {
me.startServer();
}
}
}
module.exports = StaticServer;

View File

@@ -0,0 +1,44 @@
module.exports = `
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<meta http-equiv="X-UA-Compatible" content="ie=edge"/>
<title>node静态服务器</title>
<style>
.not-found-content {
display: flex;
justify-content: center;
min-height: 500px;
align-items: center;
}
.not-found-content .img-notfound {
margin-right: 50px;
}
.not-found-content h3 {
color: #333;
font-size: 24px;
margin: 20px 0;
font-weight: 400;
line-height: 24px;
}
.not-found-content p {
color: #666;
font-size: 16px;
line-height: 20px;
margin-bottom: 7px;
}
</style>
</head>
<body>
<div class="not-found-content">
<img src="https://img.alicdn.com/tfs/TB1txw7bNrI8KJjy0FpXXb5hVXa-260-260.png" class="img-notfound" alt="not found">
<div class="prompt">
<h3>抱歉,你访问的路径不存在</h3>
<p>您要找的页面没有找到,请返回<a class="link-font" href="/">首页</a>继续浏览</p>
</div>
</div>
</body>
</html>
`

View File

@@ -0,0 +1,93 @@
module.exports = `
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>node静态服务器</title>
<style>
html, body, ul, li, p{
padding: 0;
margin: 0;
}
html, body {
padding: 0;
margin: 0;
width: 100%;
height: 100%;
}
.app {
padding: 20px 50px 0;
min-height: calc(100% - 70px);
overflow: hidden;
color: #333;
}
.directory li {
list-style: circle;
margin-left: 20px;
}
.directory li p {
line-height: 1.7;
margin: 14px 0;
}
.directory li p a{
color: #333;
font-weight: 400;
text-decoration: none;
}
.directory li p span{
color: #3dcccc;
}
.directory li p a:hover {
color: red;
}
.footer {
text-align: center;
height: 50px;
font-size: 12px;
}
.footer span {
display: block;
line-height: 24px;
}
.footer .bold {
font-weight: 600;
}
.footer a {
color: #333;
}
.footer a:hover {
color: red;
}
</style>
</head>
<body>
<div class="app">
<h3>当前目录:<span>{{requestPath}}</span></h3>
{{#if showFileList}}
<ul class="directory">
{{#each fileList}}
<li>
<p>
{{#if isDirectory }}
<span>「目录」</span>
{{else}}
<span>「文件」</span>
{{/if}}
<a href='{{link}}'>{{name}}</a>
</p>
</li>
{{/each}}
</ul>
{{else}}
{{htmlStr}}
{{/if}}
</div>
<div class="footer">
<span>Github地址: <a target="_blank" href="https://github.com/WisestCoder/static-server">https://github.com/WisestCoder/static-server</a></span>
<span class="bold">By <a target="_blank" href="https://github.com/WisestCoder">WisestCoder</a></span>
</div>
</body>
</html>
`;

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@@ -0,0 +1,7 @@
const page_dafault = require('./default');
const page_404 = require('./404');
module.exports = {
page_dafault,
page_404
};

View File

@@ -0,0 +1 @@
server -p 8081 -cors

1
Tools/Luban/about.txt Normal file
View File

@@ -0,0 +1 @@
使用luban-next, 请前往Tools/build-luban编译或者自行导入

5
Tools/build-luban.bat Normal file
View File

@@ -0,0 +1,5 @@
rd /s /q Luban
dotnet build ../../luban/src/Luban/Luban.csproj -c Release -o Luban
pause

5
Tools/build-luban.sh Normal file
View File

@@ -0,0 +1,5 @@
#!/bin/bash
[ -d Luban ] && rm -rf Luban
dotnet build ../../luban/src/Luban/Luban.csproj -c Release -o Luban

View File

@@ -1,52 +0,0 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!612988286 &4096168566840163508
SpriteAtlasAsset:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: UIRaw_Atlas_Battle
m_MasterAtlas: {fileID: 0}
m_ImporterData:
serializedVersion: 2
textureSettings:
serializedVersion: 2
anisoLevel: 0
compressionQuality: 0
maxTextureSize: 0
textureCompression: 0
filterMode: 1
generateMipMaps: 0
readable: 0
crunchedCompression: 0
sRGB: 1
platformSettings:
- serializedVersion: 3
m_BuildTarget: iPhone
m_MaxTextureSize: 2048
m_ResizeAlgorithm: 0
m_TextureFormat: 49
m_TextureCompression: 1
m_CompressionQuality: 100
m_CrunchedCompression: 0
m_AllowsAlphaSplitting: 0
m_Overridden: 1
m_AndroidETC2FallbackOverride: 0
m_ForceMaximumCompressionQuality_BC6H_BC7: 0
packingSettings:
serializedVersion: 2
padding: 2
blockOffset: 1
allowAlphaSplitting: 0
enableRotation: 1
enableTightPacking: 0
enableAlphaDilation: 0
secondaryTextureSettings: {}
variantMultiplier: 1
packables:
- {fileID: 21300000, guid: b76b8b216adf64f4bbdb78f7977f0310, type: 3}
bindAsDefault: 1
isAtlasV2: 1
cachedData: {fileID: 0}
m_IsVariant: 0

View File

@@ -1,7 +0,0 @@
fileFormatVersion: 2
guid: 736bc06e2873e08418fef3194a34eeaf
SpriteAtlasImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,59 +0,0 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!612988286 &4096168566840163508
SpriteAtlasAsset:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: UIRaw_Atlas_arrows
m_MasterAtlas: {fileID: 0}
m_ImporterData:
serializedVersion: 2
textureSettings:
serializedVersion: 2
anisoLevel: 0
compressionQuality: 0
maxTextureSize: 0
textureCompression: 0
filterMode: 1
generateMipMaps: 0
readable: 0
crunchedCompression: 0
sRGB: 1
platformSettings:
- serializedVersion: 3
m_BuildTarget: iPhone
m_MaxTextureSize: 2048
m_ResizeAlgorithm: 0
m_TextureFormat: 49
m_TextureCompression: 1
m_CompressionQuality: 100
m_CrunchedCompression: 0
m_AllowsAlphaSplitting: 0
m_Overridden: 1
m_AndroidETC2FallbackOverride: 0
m_ForceMaximumCompressionQuality_BC6H_BC7: 0
packingSettings:
serializedVersion: 2
padding: 2
blockOffset: 1
allowAlphaSplitting: 0
enableRotation: 1
enableTightPacking: 0
enableAlphaDilation: 0
secondaryTextureSettings: {}
variantMultiplier: 1
packables:
- {fileID: 21300000, guid: 9871e4d5e19cea6419d057b79ce1a1a8, type: 3}
- {fileID: 21300000, guid: b1e9e5e05f0067f469e748e46985c269, type: 3}
- {fileID: 21300000, guid: 6d7b5d72581e8ca48b333e83a25d1514, type: 3}
- {fileID: 21300000, guid: e05004e4bcd8b3e49bb0cbaab0215760, type: 3}
- {fileID: 21300000, guid: a9ef9e2f50f97a84bbd269b5f7cc5ea4, type: 3}
- {fileID: 21300000, guid: 5d663ef25d3d5514a8d099e72353244b, type: 3}
- {fileID: 21300000, guid: e9b8cd94ede145942a15f9e164af30a9, type: 3}
- {fileID: 21300000, guid: 36909c7c187739945aecb80f7c59fa4c, type: 3}
bindAsDefault: 1
isAtlasV2: 1
cachedData: {fileID: 0}
m_IsVariant: 0

View File

@@ -1,7 +0,0 @@
fileFormatVersion: 2
guid: 30b2151baa80324468b12076c6025e5c
SpriteAtlasImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,55 +0,0 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!612988286 &4096168566840163508
SpriteAtlasAsset:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: UIRaw_Atlas_bars
m_MasterAtlas: {fileID: 0}
m_ImporterData:
serializedVersion: 2
textureSettings:
serializedVersion: 2
anisoLevel: 0
compressionQuality: 0
maxTextureSize: 0
textureCompression: 0
filterMode: 1
generateMipMaps: 0
readable: 0
crunchedCompression: 0
sRGB: 1
platformSettings:
- serializedVersion: 3
m_BuildTarget: iPhone
m_MaxTextureSize: 2048
m_ResizeAlgorithm: 0
m_TextureFormat: 49
m_TextureCompression: 1
m_CompressionQuality: 100
m_CrunchedCompression: 0
m_AllowsAlphaSplitting: 0
m_Overridden: 1
m_AndroidETC2FallbackOverride: 0
m_ForceMaximumCompressionQuality_BC6H_BC7: 0
packingSettings:
serializedVersion: 2
padding: 2
blockOffset: 1
allowAlphaSplitting: 0
enableRotation: 1
enableTightPacking: 0
enableAlphaDilation: 0
secondaryTextureSettings: {}
variantMultiplier: 1
packables:
- {fileID: 21300000, guid: ba523fd85bea1e448944fe8cabed4b59, type: 3}
- {fileID: 21300000, guid: 20960a9e1f7b68c4f80d5078f5964057, type: 3}
- {fileID: 21300000, guid: be40ff228ca528248b495d5025a1e327, type: 3}
- {fileID: 21300000, guid: fcabe002e685bc147918c97e9538d17f, type: 3}
bindAsDefault: 1
isAtlasV2: 1
cachedData: {fileID: 0}
m_IsVariant: 0

View File

@@ -1,7 +0,0 @@
fileFormatVersion: 2
guid: 7180c75b26a0aa046b5743fbddb78c45
SpriteAtlasImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,57 +0,0 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!612988286 &4096168566840163508
SpriteAtlasAsset:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: UIRaw_Atlas_buttons
m_MasterAtlas: {fileID: 0}
m_ImporterData:
serializedVersion: 2
textureSettings:
serializedVersion: 2
anisoLevel: 0
compressionQuality: 0
maxTextureSize: 0
textureCompression: 0
filterMode: 1
generateMipMaps: 0
readable: 0
crunchedCompression: 0
sRGB: 1
platformSettings:
- serializedVersion: 3
m_BuildTarget: iPhone
m_MaxTextureSize: 2048
m_ResizeAlgorithm: 0
m_TextureFormat: 49
m_TextureCompression: 1
m_CompressionQuality: 100
m_CrunchedCompression: 0
m_AllowsAlphaSplitting: 0
m_Overridden: 1
m_AndroidETC2FallbackOverride: 0
m_ForceMaximumCompressionQuality_BC6H_BC7: 0
packingSettings:
serializedVersion: 2
padding: 2
blockOffset: 1
allowAlphaSplitting: 0
enableRotation: 1
enableTightPacking: 0
enableAlphaDilation: 0
secondaryTextureSettings: {}
variantMultiplier: 1
packables:
- {fileID: 21300000, guid: fcab35236e33438448805a9211b0cc19, type: 3}
- {fileID: 21300000, guid: 8a6f536f4b2392f40afb62df609f6e40, type: 3}
- {fileID: 21300000, guid: 67c34bb955c72e6419b7528e10e73c53, type: 3}
- {fileID: 21300000, guid: 03cbfa7fbded80a479f24add4a997757, type: 3}
- {fileID: 21300000, guid: 379c45e0c5ba5e54e8df03f52e4c7680, type: 3}
- {fileID: 21300000, guid: 3b8db7241fc8ff54e9dea6fc64cfd7e5, type: 3}
bindAsDefault: 1
isAtlasV2: 1
cachedData: {fileID: 0}
m_IsVariant: 0

View File

@@ -1,7 +0,0 @@
fileFormatVersion: 2
guid: d6c291e122fdd1b4f8338aa5a955cc67
SpriteAtlasImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,53 +0,0 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!612988286 &4096168566840163508
SpriteAtlasAsset:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: UIRaw_Atlas_window
m_MasterAtlas: {fileID: 0}
m_ImporterData:
serializedVersion: 2
textureSettings:
serializedVersion: 2
anisoLevel: 0
compressionQuality: 0
maxTextureSize: 0
textureCompression: 0
filterMode: 1
generateMipMaps: 0
readable: 0
crunchedCompression: 0
sRGB: 1
platformSettings:
- serializedVersion: 3
m_BuildTarget: iPhone
m_MaxTextureSize: 2048
m_ResizeAlgorithm: 0
m_TextureFormat: 49
m_TextureCompression: 1
m_CompressionQuality: 100
m_CrunchedCompression: 0
m_AllowsAlphaSplitting: 0
m_Overridden: 1
m_AndroidETC2FallbackOverride: 0
m_ForceMaximumCompressionQuality_BC6H_BC7: 0
packingSettings:
serializedVersion: 2
padding: 2
blockOffset: 1
allowAlphaSplitting: 0
enableRotation: 1
enableTightPacking: 0
enableAlphaDilation: 0
secondaryTextureSettings: {}
variantMultiplier: 1
packables:
- {fileID: 21300000, guid: 06edc4e02f9c48647adfed0a778cb8aa, type: 3}
- {fileID: 21300000, guid: 78e3daf76621d66448e594d6993adbd8, type: 3}
bindAsDefault: 1
isAtlasV2: 1
cachedData: {fileID: 0}
m_IsVariant: 0

View File

@@ -1,7 +0,0 @@
fileFormatVersion: 2
guid: acf10131b937dab4c86d63939aecd2ab
SpriteAtlasImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: 9f9f9848e17e5eb46b596a07391a42cc
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,29 +0,0 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name: fx_bolt_cyan_mat
m_Shader: {fileID: 10720, guid: 0000000000000000f000000000000000, type: 0}
m_ShaderKeywords:
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _MainTex:
m_Texture: {fileID: 2800000, guid: 6e3730451fa077346abd4ac642ea71d8, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- _InvFade: 1
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _TintColor: {r: 0.5, g: 0.5, b: 0.5, a: 0.5}

View File

@@ -1,6 +0,0 @@
fileFormatVersion: 2
guid: 63fe6ff9ab9e1433f8db4ebd940f2442
NativeFormatImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,29 +0,0 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name: fx_bolt_orange_mat
m_Shader: {fileID: 10720, guid: 0000000000000000f000000000000000, type: 0}
m_ShaderKeywords:
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _MainTex:
m_Texture: {fileID: 2800000, guid: fd3cbf51780694849b9b019b36a3938e, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- _InvFade: 1
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _TintColor: {r: 0.5, g: 0.5, b: 0.5, a: 0.5}

View File

@@ -1,6 +0,0 @@
fileFormatVersion: 2
guid: 8e27380ee68aa4a219b4db9018e7da31
NativeFormatImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,29 +0,0 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name: fx_enemyShip_engines_mat
m_Shader: {fileID: 10720, guid: 0000000000000000f000000000000000, type: 0}
m_ShaderKeywords:
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _MainTex:
m_Texture: {fileID: 2800000, guid: eabb37cb6d738b443b398b701a64cd88, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- _InvFade: 1
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _TintColor: {r: 0.5, g: 0.5, b: 0.5, a: 0.5}

View File

@@ -1,6 +0,0 @@
fileFormatVersion: 2
guid: 1b4bad6cea5a94611b21f9757fe41444
NativeFormatImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,53 +0,0 @@
fileFormatVersion: 2
guid: 6e3730451fa077346abd4ac642ea71d8
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 2
mipmaps:
mipMapMode: 0
enableMipMap: 1
linearTexture: 0
correctGamma: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: .25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 0
cubemapConvolution: 0
cubemapConvolutionSteps: 8
cubemapConvolutionExponent: 1.5
seamlessCubemap: 0
textureFormat: -1
maxTextureSize: 128
textureSettings:
filterMode: 1
aniso: 0
mipBias: -1
wrapMode: 1
nPOTScale: 1
lightmap: 0
rGBM: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: .5, y: .5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaIsTransparency: 0
textureType: -1
buildTargetSettings: []
spriteSheet:
sprites: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,53 +0,0 @@
fileFormatVersion: 2
guid: fd3cbf51780694849b9b019b36a3938e
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 2
mipmaps:
mipMapMode: 0
enableMipMap: 1
linearTexture: 0
correctGamma: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: .25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 0
cubemapConvolution: 0
cubemapConvolutionSteps: 8
cubemapConvolutionExponent: 1.5
seamlessCubemap: 0
textureFormat: -1
maxTextureSize: 128
textureSettings:
filterMode: 1
aniso: 0
mipBias: -1
wrapMode: 1
nPOTScale: 1
lightmap: 0
rGBM: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: .5, y: .5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaIsTransparency: 0
textureType: -1
buildTargetSettings: []
spriteSheet:
sprites: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,39 +0,0 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name: part_blast_mat
m_Shader: {fileID: 200, guid: 0000000000000000f000000000000000, type: 0}
m_ShaderKeywords:
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _DecalTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 2800000, guid: 3e504a46a8fcec34db3c4776530c6eb2, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _Mask:
m_Texture: {fileID: 2800000, guid: fe79948256c8b8e44a175b9ec97c6f07, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- _InvFade: 1
- _ScrollSpeed: 10
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _EmisColor: {r: 0.2, g: 0.2, b: 0.2, a: 0}
- _TintColor: {r: 1, g: 1, b: 1, a: 0.49803922}

View File

@@ -1,6 +0,0 @@
fileFormatVersion: 2
guid: 1cfe02ffd0b74854ea5bcd1a3c63ac3c
NativeFormatImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,53 +0,0 @@
fileFormatVersion: 2
guid: eabb37cb6d738b443b398b701a64cd88
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 2
mipmaps:
mipMapMode: 0
enableMipMap: 1
linearTexture: 0
correctGamma: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: .25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 0
cubemapConvolution: 0
cubemapConvolutionSteps: 8
cubemapConvolutionExponent: 1.5
seamlessCubemap: 0
textureFormat: -1
maxTextureSize: 128
textureSettings:
filterMode: 1
aniso: 0
mipBias: -1
wrapMode: 1
nPOTScale: 1
lightmap: 0
rGBM: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: .5, y: .5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaIsTransparency: 0
textureType: -1
buildTargetSettings: []
spriteSheet:
sprites: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,53 +0,0 @@
fileFormatVersion: 2
guid: 3e504a46a8fcec34db3c4776530c6eb2
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 2
mipmaps:
mipMapMode: 0
enableMipMap: 1
linearTexture: 0
correctGamma: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: .25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 0
cubemapConvolution: 0
cubemapConvolutionSteps: 8
cubemapConvolutionExponent: 1.5
seamlessCubemap: 0
textureFormat: -1
maxTextureSize: 128
textureSettings:
filterMode: 1
aniso: 0
mipBias: -1
wrapMode: 1
nPOTScale: 1
lightmap: 0
rGBM: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: .5, y: .5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaIsTransparency: 0
textureType: -1
buildTargetSettings: []
spriteSheet:
sprites: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,29 +0,0 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name: part_glow_mat
m_Shader: {fileID: 200, guid: 0000000000000000f000000000000000, type: 0}
m_ShaderKeywords:
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _MainTex:
m_Texture: {fileID: 10300, guid: 0000000000000000f000000000000000, type: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- _InvFade: 1
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _TintColor: {r: 0.82089555, g: 0.82089555, b: 0.82089555, a: 0.5019608}

View File

@@ -1,6 +0,0 @@
fileFormatVersion: 2
guid: 0ed73dc47f4cb38489020d05e9f02c99
NativeFormatImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,53 +0,0 @@
fileFormatVersion: 2
guid: 0963e6c65b2b1f74d9f455e21901e2dc
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 2
mipmaps:
mipMapMode: 0
enableMipMap: 1
linearTexture: 0
correctGamma: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: .25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 0
cubemapConvolution: 0
cubemapConvolutionSteps: 8
cubemapConvolutionExponent: 1.5
seamlessCubemap: 0
textureFormat: -1
maxTextureSize: 128
textureSettings:
filterMode: 1
aniso: 0
mipBias: -1
wrapMode: 1
nPOTScale: 1
lightmap: 0
rGBM: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: .5, y: .5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaIsTransparency: 0
textureType: -1
buildTargetSettings: []
spriteSheet:
sprites: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,29 +0,0 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name: part_jet_core_mat
m_Shader: {fileID: 10720, guid: 0000000000000000f000000000000000, type: 0}
m_ShaderKeywords:
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _MainTex:
m_Texture: {fileID: 2800000, guid: 0963e6c65b2b1f74d9f455e21901e2dc, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- _InvFade: 1
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _TintColor: {r: 0.5, g: 0.5, b: 0.5, a: 0.5}

View File

@@ -1,6 +0,0 @@
fileFormatVersion: 2
guid: c58c9afddbd36d14d837fa218d772996
NativeFormatImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,53 +0,0 @@
fileFormatVersion: 2
guid: 2cb5eef4d7d7bf6459dd13a3f8d90246
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 2
mipmaps:
mipMapMode: 0
enableMipMap: 1
linearTexture: 0
correctGamma: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: .25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 0
cubemapConvolution: 0
cubemapConvolutionSteps: 8
cubemapConvolutionExponent: 1.5
seamlessCubemap: 0
textureFormat: -1
maxTextureSize: 128
textureSettings:
filterMode: 1
aniso: 0
mipBias: -1
wrapMode: 1
nPOTScale: 1
lightmap: 0
rGBM: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: .5, y: .5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaIsTransparency: 0
textureType: -1
buildTargetSettings: []
spriteSheet:
sprites: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,29 +0,0 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name: part_jet_flare_mat
m_Shader: {fileID: 200, guid: 0000000000000000f000000000000000, type: 0}
m_ShaderKeywords:
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _MainTex:
m_Texture: {fileID: 2800000, guid: 2cb5eef4d7d7bf6459dd13a3f8d90246, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- _InvFade: 0.46607143
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _TintColor: {r: 0.17647058, g: 0.17647058, b: 0.17647058, a: 0.5019608}

View File

@@ -1,6 +0,0 @@
fileFormatVersion: 2
guid: a7b030cffa2dc44478c14e49a22771c2
NativeFormatImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,53 +0,0 @@
fileFormatVersion: 2
guid: 04dbc0581071c254ea6564b2ff06ff9b
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 2
mipmaps:
mipMapMode: 0
enableMipMap: 1
linearTexture: 0
correctGamma: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: .25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 0
cubemapConvolution: 0
cubemapConvolutionSteps: 8
cubemapConvolutionExponent: 1.5
seamlessCubemap: 0
textureFormat: -1
maxTextureSize: 128
textureSettings:
filterMode: 1
aniso: 0
mipBias: -1
wrapMode: 1
nPOTScale: 1
lightmap: 0
rGBM: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: .5, y: .5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaIsTransparency: 0
textureType: -1
buildTargetSettings: []
spriteSheet:
sprites: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,29 +0,0 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name: part_shockwave_mat
m_Shader: {fileID: 10720, guid: 0000000000000000f000000000000000, type: 0}
m_ShaderKeywords:
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _MainTex:
m_Texture: {fileID: 2800000, guid: 04dbc0581071c254ea6564b2ff06ff9b, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- _InvFade: 1
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _TintColor: {r: 1, g: 1, b: 1, a: 0.5019608}

View File

@@ -1,6 +0,0 @@
fileFormatVersion: 2
guid: 1d46a17a95a444c08830612bc1146d1d
NativeFormatImporter:
userData:
assetBundleName:
assetBundleVariant:

Some files were not shown because too many files have changed in this diff Show More