这里说一些辅助类的设计及介绍.
依然上类图先:
首先是日志类和Config,这个库以及Config库取自暗黑3的民间模拟器mooege, 当时看了写的简短小巧就直接拿过来用了.
后来虽然发现一些问题,进行简单修改和优化之后,在项目中进行使用了.
首先是日志类,看了下类图也就没几行,简单的就是一些输出层级,带有可外部加载的扩展方法,ExtensionLogTarget,通过反射加载,然后进行一些扩展目标的输出.
修改部分的话,比较简单,原先日志是同步输出,这样会导致卡掉一些时间比较敏感的运算,这边采用了独立线程和队列模式,异步写出,问题就是当心写入数据太多,吃大量内存问题.
Config采用Nini库进行Ini文件读写,这个也没什么好说的.
这边比较简单的扩展就是,允许进行继承.
比如类似这样配置
[ConfigA] Fps=60 MaxHp=100 [ConifgB] Fps=30
BHP = 100ConfigB继承于ConfigA,共享2个配置Fps,MaxHp,ConfigB多一个配置BHP,
但是ConfigB中的Fps值=30,用于控制多个模式和扩展,用起来还是比较方便的.
关于Excel使用,一般策划都比较喜欢用Excel,一般情况下都会采用Excel导出成XML后.手工匹配进行信息字段处理.
这里采用VS插件模式,直接把Excel考入程序库,类似这样
生成之类代码,类似这样
//Code Gen By FileGenLoaderDomain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=febbd3066b495fa3 //Start Run: //CodeBase file:///D:/Windows/Microsoft.Net/assembly/GAC_MSIL/FileGenLoaderDomain/v4.0_1.0.0.0__febbd3066b495fa3/FileGenLoaderDomain.exe //wszInputFilePath:E:\TankApp\TankApp\Config\得分难度.xlsx //wszDefaultNamespace:TankApp.Config //BasePath:D:\Windows\Microsoft.Net\assembly\GAC_MSIL\FileGenLoaderDomain\v4.0_1.0.0.0__febbd3066b495fa3 //Code Gen By ExcelCodeBuilder... using System; using CsvCodeGen; namespace TankApp.Config { [Serializable] public partial class 得分难度 { [Config(Index = 0, IsKey = true)] public Double 分值 { get;set; } [Config(Index = 1)] public Double 得分难度分 { get;set; } [Config(Index = 2)] public String 说明 { get;set; } public void Parse(Double 分值,Double 得分难度分,String 说明) { this.分值 = 分值; this.得分难度分 = 得分难度分; this.说明 = 说明; } } public partial class ConfigList : CsvCodeGen.CfsConfig { [ConfigAutoParse(File = "得分难度.xlsx", ParseType = "CsvCodeGen.ExcelParse")] public static Config<Double, 得分难度> 得分难度 = new Config<Double, 得分难度>(); } } //User Plug:CsvCodeGen.dll Type:CsvCodeGen.ExcelCodeBuilder
VS支持中文字段,用起来还是比较爽的,如果不支持中文,我们需要一些翻译,或者要求他们提供英文表格.
比较麻烦的地方,改了字段之后,都要重新拷贝编译一遍.
多人即时战斗游戏服务端系列[3]--日志类及Config类以及Excel生成类
原文:http://blog.csdn.net/icesun963/article/details/41077333