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子类字段赋值
点击保存后,StartConfig是个Entity,Entity的Componet容器被标记了BsonElement,所以它包含的配置组件及其内容都会序列化成json保存在配置文件夹中。从项目根目录\Config\StartConfig中即可查看这些序列化出来的json配置文件,这些配置文件还包含了_t之类的bson特有字段,和通常的newtonsoft.json序列化出来的还是有点不同。
服务端进程启动时这些序列化好的配置文件会在Program.Main函数中的OptionComponent和StartConfigComponent被反序列化成*Config组件,然后就可以在代码中引用了。
egametang启动配置
原文地址:http://www.cnblogs.com/fancybit/p/et2.html