ET|04 ET接入LuBan
LuBan作为工具直接放在ET目录
ET/LuBan
客户端
GenClient.bat配置如下:
set GEN_CLIENT=dotnet .\Tools\Luban.ClientServer\Luban.ClientServer.dll
set CLIENT_CODE =..\Unity\Codes\Model\Generate\LuBan\Code #代码生成路径
set CLIENT_DATA =..\Unity\Codes\Model\Generate\LuBan\Data #json生成路径
%GEN_CLIENT% -j cfg --^
-d Defines\__root__.xml ^
--input_data_dir Datas ^
--output_data_dir %CLIENT_DATA %^
--output_code_dir %CLIENT_CODE %^
--gen_types code_cs_unity_json,data_json ^
-s client
pause
在数据层添加相应的组件
Model/Module/LuBan/LuBanComponent
[ComponentOf(typeof (Scene))]
public class LubanComponent: Entity, IAwake,IDestroy
{
public Tables Tables;
public static LubanComponent Instance;
}
在对应的HotFix层添加对应的System,为了兼容服务器一键使用,所以用宏区分一下代码
using System.IO;
#if SERVER
using System.Text.Json;
#else
using SimpleJSON;
#endif
using UnityEngine;
namespace ET
{
[FriendClass(typeof (LubanComponent))]
public static class LuBanSystem
{
[ObjectSystem]
public class LuBanAwakeSystem: AwakeSystem<LubanComponent>
{
public override void Awake(LubanComponent self)
{
LubanComponent.Instance = self;
}
}
[ObjectSystem]
public class LuBanDestroySystem: DestroySystem<LubanComponent>
{
public override void Destroy(LubanComponent self)
{
LubanComponent.Instance = null;
}
}
public static void Load(this LubanComponent self)
{
#if SERVER
self.Tables = new cfg.Tables(file =>
JsonDocument.Parse(File.ReadAllBytes("../Server/Model/Generate/LuBan/Data/" + file + ".json")).RootElement);
#else
self.Tables = new cfg.Tables(file =>
JSON.Parse(File.ReadAllText($"{Application.dataPath}/../Codes/Model/Generate/LuBan/Data/" + file + ".json")));
#endif
}
}
}
在初始化入口给Game.Scene添加组件,并初始化
public class AppStart_Init: AEvent<EventType.AppStart>
{
private async ETTask RunAsync(EventType.AppStart args)
{
...
Game.Scene.AddComponent<LubanComponent>();
LubanComponent.Instance.Load();
}
}
此时已经可以使用LuBan了
服务端
GenServer.bat配置如下,然后生成一下
set GEN_CLIENT=dotnet .\Tools\Luban.ClientServer\Luban.ClientServer.dll
set SERVER_CODE=..\Server\Model\Generate\LuBan\Code
set SERVER_DATA=..\Server\Model\Generate\LuBan\Data
%GEN_CLIENT% -j cfg --^
-d Defines\__root__.xml ^
--input_data_dir Datas ^
--output_data_dir %SERVER_DATA%^
--output_code_dir %SERVER_CODE%^
--gen_types code_cs_dotnet_json,data_json ^
-s server
pause
在ThirdParty中新建一个工程
拷贝LuBan示例工程中DotNet5所需要的核心代码到LuBanLib中
Projects\Csharp_DotNet5_json\Core
然后在Server.Model以HotFix中分别添加对客户端代码LuBan代码的引用,此时会报错,因为我们服务器找不到LuBanLib
手动添加即可