• egametang启动配置


    egametang的启动配置文件可以在Unity的Tools->命令行配置中修改保存然后启动

    如果需要添加自定义的启动配置项目,只需要修改客户端的

    ServerCommandLineEditor.cs

     1             if (GUILayout.Button("添加一行配置"))
     2             {
     3                 StartConfig newStartConfig = new StartConfig();
     4 
     5                 newStartConfig.AppType = this.AppType;
     6 
     7                 if (this.AppType.Is(AppType.Gate | AppType.Realm | AppType.Manager))
     8                 {
     9                     newStartConfig.AddComponent<OuterConfig>();
    10                 }
    11 
    12                 if (this.AppType.Is(AppType.Gate | AppType.Realm | AppType.Manager | AppType.Http | AppType.DB | AppType.Map | AppType.Location))
    13                 {
    14                     newStartConfig.AddComponent<InnerConfig>();
    15                 }
    16 
    17                 if (this.AppType.Is(AppType.Benchmark))
    18                 {
    19                     newStartConfig.AddComponent<ClientConfig>();
    20                 }
    21 
    22                 if (this.AppType.Is(AppType.Http))
    23                 {
    24                     newStartConfig.AddComponent<HttpConfig>();
    25                 }
    26 
    27                 if (this.AppType.Is(AppType.DB))
    28                 {
    29                     newStartConfig.AddComponent<DBConfig>();
    30                 }
    31 
    32                 this.startConfigs.Add(newStartConfig);
    33             }

    这段代码里可以修改AppType对应的startconfig包含的AConfigComponent子类

     1                 InnerConfig innerConfig = startConfig.GetComponent<InnerConfig>();
     2                 if (innerConfig != null)
     3                 {
     4                     GUILayout.Label($"InnerHost:");
     5                     innerConfig.Host = EditorGUILayout.TextField(innerConfig.Host);
     6                     GUILayout.Label($"InnerPort:");
     7                     innerConfig.Port = EditorGUILayout.IntField(innerConfig.Port);
     8                 }
     9 
    10                 OuterConfig outerConfig = startConfig.GetComponent<OuterConfig>();
    11                 if (outerConfig != null)
    12                 {
    13                     GUILayout.Label($"OuterHost:");
    14                     outerConfig.Host = EditorGUILayout.TextField(outerConfig.Host);
    15                     GUILayout.Label($"OuterHost2:");
    16                     outerConfig.Host2 = EditorGUILayout.TextField(outerConfig.Host2);
    17                     GUILayout.Label($"OuterPort:");
    18                     outerConfig.Port = EditorGUILayout.IntField(outerConfig.Port);
    19                 }
    20 
    21                 ClientConfig clientConfig = startConfig.GetComponent<ClientConfig>();
    22                 if (clientConfig != null)
    23                 {
    24                     GUILayout.Label($"Host:");
    25                     clientConfig.Host = EditorGUILayout.TextField(clientConfig.Host);
    26                     GUILayout.Label($"Port:");
    27                     clientConfig.Port = EditorGUILayout.IntField(clientConfig.Port);
    28                 }
    29 
    30                 HttpConfig httpConfig = startConfig.GetComponent<HttpConfig>();
    31                 if (httpConfig != null)
    32                 {
    33                     GUILayout.Label($"AppId:");
    34                     httpConfig.AppId = EditorGUILayout.IntField(httpConfig.AppId);
    35                     GUILayout.Label($"AppKey:");
    36                     httpConfig.AppKey = EditorGUILayout.TextField(httpConfig.AppKey);
    37                     GUILayout.Label($"Url:");
    38                     httpConfig.Url = EditorGUILayout.TextField(httpConfig.Url);
    39                     GUILayout.Label($"ManagerSystemUrl:");
    40                     httpConfig.ManagerSystemUrl = EditorGUILayout.TextField(httpConfig.ManagerSystemUrl);
    41                 }
    42 
    43                 DBConfig dbConfig = startConfig.GetComponent<DBConfig>();
    44                 if (dbConfig != null)
    45                 {
    46                     GUILayout.Label($"Connection:");
    47                     dbConfig.ConnectionString = EditorGUILayout.TextField(dbConfig.ConnectionString);
    48 
    49                     GUILayout.Label($"DBName:");
    50                     dbConfig.DBName = EditorGUILayout.TextField(dbConfig.DBName);
    51                 }

    修改这段代码即可给新增或者修改的AConfigComponent子类字段赋值

    注意如果派生新的AConfigComponent 子类,需要再AConfigComponent上使用BsonKnownTypes标记记录上去

     1 using MongoDB.Bson.Serialization.Attributes;
     2 
     3 namespace Model
     4 {
     5     /// <summary>
     6     /// 每个Config的基类
     7     /// </summary>
     8     [BsonKnownTypes(typeof(ClientConfig))]
     9     [BsonKnownTypes(typeof(InnerConfig))]
    10     [BsonKnownTypes(typeof(OuterConfig))]
    11     [BsonKnownTypes(typeof(HttpConfig))]
    12     [BsonKnownTypes(typeof(DBConfig))]
    13     [BsonKnownTypes(typeof(RunServerConfig))]
    14     public abstract class AConfigComponent: ComponentDB
    15     {
    16     }
    17 }

    点击保存后,StartConfig是个Entity,Entity的Componet容器被标记了BsonElement,所以它包含的配置组件及其内容都会序列化成json保存在配置文件夹中。从项目根目录ConfigStartConfig中即可查看这些序列化出来的json配置文件,这些配置文件还包含了_t之类的bson特有字段,和通常的newtonsoft.json序列化出来的还是有点不同。

    服务端进程启动时这些序列化好的配置文件会在Program.Main函数中的OptionComponent和StartConfigComponent被反序列化 服务端需要修改StartConfigComponent加入相关代码:

    改完上面2处就可以在代码中引用了。

  • 相关阅读:
    如何在winform的numericUpDown中显示小数点
    Jquery attr 和removeAttr 的简单使用
    Linux下的多进程编程初步(转载)
    扩展GCD和线性模方程组
    05、Flutter常用组件
    12、Flutter组件装饰
    10、Flutter资源和图片
    09、Flutter手势控制
    04、FlutterDart语法
    07、FluterCupertino
  • 原文地址:https://www.cnblogs.com/fancybit/p/et2.html
Copyright © 2020-2023  润新知