<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      ET6.0接Luban步驟的整理

      Luban是一個超級強大且易用的游戲配置解決方案,而且免費開源無限制

      具體了解可跳轉Github:https://github.com/focus-creative-games/luban,這里對自己在ET框架接入Luban的過程做一個總結

      基本步驟查看官方說明:https://focus-creative-games.github.io/lubandoc/start_up.html

      致謝:寶魚的相關項目和腳本文件,以及官方群SJ的指點,具體luban問題可以前往官方群692890842詢問。


      1、下載文件

      從luban_examples下載Lib文件和案例文件(https://github.com/focus-creative-games/luban_examples)


      2、生成數據

      找到MiniDesignerConfigsTemplate目錄,整個復制到自己的項目,比如根目錄,改個名叫Config,里面已經包含了一個示例item.xlsx。

      從\luban_examples\Tools目錄復制Luban.ClientServer到ET項目目錄下的Tools目錄。

      從luban_examples\Projects\Csharp_Unity_bin\Assets找C#對應的LubanLib

      ByteBuf.cs放到Unity.Mono/Core,其他放到Unity.Model/Core

      準備轉表腳本,隨便放到哪個目錄,根目錄或者Config都可以,方便就行

      注意腳本里面有一個CustomTemplate,對應的是自定義轉表模板enum.tpl,數值枚舉會用這個自動生成NumericType的bas、add等5項枚舉,如果不需要這個功能,可以不用這個文件。

      enum.tql文件內容和轉表腳本內容見下面兩個附帶的代碼

      查看代碼
      這里是tql文件
      
      {{~
              name = x.name
              namespace_with_top_module = x.namespace_with_top_module
              comment = x.comment
              items = x.items
      ~}}
      
      namespace {{namespace_with_top_module}}
      {
              {{~if comment != '' ~}}
                      /// <summary>
                      /// {{comment | html.escape}}
                      /// </summary>
              {{~end~}}
      
              {{~if x.is_flags~}}
                      [System.Flags]
              {{~end~}}
          
          public enum {{name}}
          {
              {{~ for item in items ~}}
                      {{~if item.comment != '' ~}}
                              /// <summary>
                              /// {{item.escape_comment}}
                              /// </summary>
                      {{~end~}}
                      
                      {{if (has_tag item 'range_attr')}}
                              [ET.NumericRange({{(get_tag item 'range_attr')}})]
                      {{~end~}}
                      
                      {{item.name}} = {{item.value}},
                      
                      {{if (has_tag item 'numeric')}}
                              {{item.name}}Base = {{item.value}} * 10 + 1,
                              {{item.name}}Add = {{item.value}} * 10 + 2,
                              {{item.name}}Pct = {{item.value}} * 10 + 3,
                              {{item.name}}FinalAdd = {{item.value}} * 10 + 4,
                              {{item.name}}FinalPct = {{item.value}} * 10 + 5,
                      {{~end~}}
              {{~end~}}
          }
      }
      查看代碼
      
      這里是轉表腳本文件
      
      set WORKSPACE=..\
      
      set GEN_CLIENT=%WORKSPACE%\Tools\Luban.ClientServer\Luban.ClientServer.exe
      set CONF_ROOT=%WORKSPACE%\Config
      
      @ECHO =======================SERVER==========================
      %GEN_CLIENT% --template_search_path %CONF_ROOT%\CustomTemplate -j cfg --^
       -d %CONF_ROOT%\Defines\__root__.xml ^
       --input_data_dir %CONF_ROOT%\Datas ^
       --output_code_dir %WORKSPACE%\Server\Model\Generate\Config ^
       --output_data_dir %WORKSPACE%\Server\ConfigBin ^
       --gen_types code_cs_bin,data_bin ^
       -s server
      
      
      @ECHO =======================CLIENT==========================
      %GEN_CLIENT% --template_search_path %CONF_ROOT%\CustomTemplate -j cfg --^
       -d %CONF_ROOT%\Defines\__root__.xml ^
       --input_data_dir %CONF_ROOT%\Datas ^
       --output_code_dir %WORKSPACE%\Unity\Codes\Model\Generate\Config ^
       --output_data_dir %WORKSPACE%\Unity\Assets\Bundles\ConfigBin ^
       --gen_types code_cs_bin,data_bin ^
       -s client
      
      
      @ECHO =======================JSONONLYVIEW==========================
      %GEN_CLIENT% -j cfg --^
       -d %CONF_ROOT%\Defines\__root__.xml ^
       --input_data_dir %CONF_ROOT%\Datas ^
       --output_data_dir %CONF_ROOT%\Output_Json\Server ^
       --gen_types data_json ^
       -s server
      
      %GEN_CLIENT% -j cfg --^
       -d %CONF_ROOT%\Defines\__root__.xml ^
       --input_data_dir %CONF_ROOT%\Datas ^
       --output_data_dir %CONF_ROOT%\Output_Json\Client ^
       --gen_types data_json ^
       -s client
      
      pause

      3、到此為止應該可以正常的轉表了,luban生成的文件分為Table和Bean兩種類型,具體文件名是自己在Define的xml文件里面,Excel也可以,看luban教程。

      一般來說Table會命名為TbXXX格式,Bean自己看著辦,Table關聯的Bean可以是XXXConfig,按實際需要和習慣。

      如果按ET風格,想完全一致,則Table可以命名為XXXConfigCategory,Table關聯的Bean會命名為XXXConfig,其他Bean看情況。


      4、調整ConfigComponent組件

      調用配置的代碼調整為ConfigComponent.Instance.Tables.TbXXX.Get

      public class ConfigComponent : Entity, IAwake, IDestroy
      {
          public static ConfigComponent Instance;
          public Tables Tables;
      }
      public static class ConfigComponentSystem
      {
          public static void LoadOneConfig(this ConfigComponent self, Type configType)
          {
          }
      
          public static async ETTask LoadAsync(this ConfigComponent self, Func<string, ByteBuf> loadFunc)
          {
              self.Tables = new Tables(loadFunc);
              await ETTask.CompletedTask;
          }
      }

      5、調整服務端和客戶端的AppStart_Init.cs,替換ET原本的加載配置代碼

      服務端

      await ConfigComponent.Instance.LoadAsync((file) =>
      {
          return new ByteBuf(File.ReadAllBytes($"../Server/ConfigBin/{file}.bytes"));
      });

      客戶端

      public class AppStart_Init : AEvent<EventType.AppStart>
      {
          protected override async ETTask Run(EventType.AppStart args)
          {
              Game.Scene.AddComponent<TimerComponent>();
              Game.Scene.AddComponent<CoroutineLockComponent>();
      
              Game.Scene.AddComponent<ResourcesComponent>();
              //await ResourcesComponent.Instance.LoadBundleAsync("config.unity3d");
      
              //加載配置
              Game.Scene.AddComponent<ConfigComponent>();
              await ConfigComponent.Instance.LoadAsync((file) =>
              {
                  return new ByteBuf(File.ReadAllBytes($"../Unity/Assets/Bundles/ConfigBin/{file}.bytes"));
              });
      
              //ResourcesComponent.Instance.UnloadBundle("config.unity3d");
      
              Game.Scene.AddComponent<OpcodeTypeComponent>();
              Game.Scene.AddComponent<MessageDispatcherComponent>();
      
              Game.Scene.AddComponent<NetThreadComponent>();
              Game.Scene.AddComponent<SessionStreamDispatcher>();
              Game.Scene.AddComponent<ZoneSceneManagerComponent>();
      
              Game.Scene.AddComponent<GlobalComponent>();
      
              Game.Scene.AddComponent<AIDispatcherComponent>();
              //await ResourcesComponent.Instance.LoadBundleAsync("unit.unity3d");
      
              Scene zoneScene = SceneFactory.CreateZoneScene(1, "Game", Game.Scene);
      
              await Game.EventSystem.PublishAsync(new EventType.AppStartInitFinish() { ZoneScene = zoneScene });
          }
      }

      6、把ET自帶的配置文件都調整為Luban格式,然后調整StartProcesConfig和StartSceneConfig這兩個partial類

      因為有PostInit和PostResolve兩個后處理方法,所以基本上沒什么調整成本,直接小改即可↓

      public override void EndInit() 調整為 partial void PostInit()

      public override void AfterEndInit() 調整為 partial void PostResolve()

      注意這兩個partial類的命名空間要和Tb類保持一致

      附帶我的Server相關Define文件

      <module name="StartServer">
      
          <!-- StartZoneConfig -->
          <bean name="StartZoneConfig">
              <var name="id" type="int"/>
              <var name="dB_connection" type="string"/>
              <var name="dB_name" type="string"/>
          </bean>
          
          <table name="TbStartZoneConfig" value="StartZoneConfig" input="Server/StartZoneConfig.xlsx"/>
      
          <!-- StartMachineConfig -->
          <bean name="StartMachineConfig">
              <var name="id" type="int"/>
              <var name="inner_iP" type="string"/>
              <var name="outer_iP" type="string"/>
              <var name="watcher_port" type="int"/>
          </bean>
          
          <table name="TbStartMachineConfig" value="StartMachineConfig" input="Server/StartMachineConfig.xlsx"/>
      
          <!-- StartProcessConfig -->
          <bean name="StartProcessConfig">
              <var name="id" type="int"/>
              <var name="machine_id" type="int"/>
              <var name="inner_port" type="int"/>
              <var name="app_name" type="string"/>
          </bean>
          
          <table name="TbStartProcessConfig" value="StartProcessConfig" input="Server/StartProcessConfig.xlsx"/>
          
          <!-- StartSceneConfig -->
          <bean name="StartSceneConfig">
              <var name="id" type="int"/>
              <var name="process" type="int"/>
              <var name="zone" type="int"/>
              <var name="scene_type" type="string"/>
              <var name="name" type="string"/>
              <var name="outer_port" type="string"/>
          </bean>
          
          <table name="TbStartSceneConfig" value="StartSceneConfig" input="Server/StartSceneConfig.xlsx"/>
          
          <!-- ServerInfoConfig -->
          <bean name="ServerInfoConfig">
              <var name="id" type="int" />
              <var name="server_name" type="string" />
          </bean>
          
          <table name="TbServerInfoConfig" value="ServerInfoConfig" input="Server/ServerInfoConfig.xlsx"/>
          
      </module>

      7、剩下的工作就是比較繁瑣的ConfigComponent調用處的手動替換,一個個排錯,就不多說了

      posted @ 2022-03-24 14:00  qianxun0975  閱讀(1246)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 精品熟女日韩中文十区| 无码人妻一区二区三区线| 日韩人妻少妇一区二区三区| 日韩蜜桃AV无码中文字幕不卡高清一区二区 | 亚洲国产日韩一区三区| 国产亚洲精品AA片在线爽| 国产成人女人在线观看| 最好看的中文字幕国语| 97精品久久天干天天天按摩| 欧美亚洲h在线一区二区| 国产美女裸身网站免费观看视频| 777米奇影视第四色| 激情综合网激情激情五月天| 国产成人亚洲欧美二区综合| 蜜臀av无码一区二区三区| 成人看的污污超级黄网站免费| 国产精品大片中文字幕| 锡林郭勒盟| 夜夜躁狠狠躁日日躁| 色老板精品无码免费视频| 国产精品区一区第一页| 一本久道久久综合狠狠躁av| 中文字幕人妻中文AV不卡专区| 久久综合色之久久综合色| 欧美老熟妇喷水| 亚洲午夜精品毛片成人播放| 日本午夜精品一区二区三区电影 | 人妻精品久久无码区| 中国农村真卖bbwbbw| 丁香花成人电影| 欧美视频网站www色| 亚洲精品韩国一区二区| 国产亚洲一二三区精品| 亚洲综合一区国产精品| 久久av色欲av久久蜜桃网| 成人午夜福利免费专区无码| 中文字幕日韩有码av| 国产综合视频精品一区二区| 肥臀浪妇太爽了快点再快点| 亚洲熟妇自偷自拍另类| 国产精品一区二区色综合|