tgf v1.0.9 Help

ExcelToJson

Excel文件自动转化Json文件,Golang的.go文件,C#的.cs文件. all in one .

excel讲解

excel1

这是一份常规配置

第一行v1.0为当前配置的版本号, 用于区分当前配置的版本. 我们在程序中并不会对这个版本号做任何操作.

第二行,是配置的字段名,我们会根据这个字段名生成对应的golang结构中的字段名.所以我们首字母需要大写,并且遵循规范的命名规则.

第三行,这里是字段的类型,我们以golang的基础类型为准,支持 string, int all,uint all, [], bool, 其余数据类型会在后续陆续添加

第四行,这里是字段描述.我们会使用该行生成结构体字段对应的注释

第五行开始为配置数据,常规数据类型,可以直接填入所需数据即可,如果是一维数组,那么我们使用,分割,最终的效果如1,4,6,7,9

excel2

这是一份错误码配置,我们继续分析一下

我们可以看到,它与常规的配置是一样的, 唯一有区别的地方在于我们定义了一列FieldName数据,这一列数据在这里表示我们将要生成的错误码结构常量名.我们会在后面的自动生成中,解释它的用途

自动生成

package main import ( "github.com/thkhxm/tgf" "github.com/thkhxm/tgf/component" "github.com/thkhxm/tgf/db" "github.com/thkhxm/tgf/util" "github.com/thkhxm/tgf_example/common/conf" ) // *************************************************** // @Link https://github.com/thkhxm/tgf // @Link https://gitee.com/timgame/tgf // @QQ群 7400585 // author tim.huang<thkhxm@gmail.com> // @Description // 2023/4/18 // *************************************************** func main() { //关闭框架缓存 db.WithCacheModule(tgf.CacheModuleClose) //设置excel路径 util.SetExcelPath("./excel") //设置excel导出的go文件路径 util.SetExcelToGoPath("../common/conf") //设置excel导出的json文件路径 util.SetExcelToJsonPath("../common/conf/js") //给前端路径也导出一份 //util.SetExcelToJsonPath("E:\\unity\\project\\t2\\Assets\\Config\\js") //设置excel导出的unity文件路径 util.SetExcelToUnityPath("E:\\unity\\project\\t2\\Assets\\HotFix\\Config") //设置excel导出的unity命名空间 util.SetExcelToUnityNamespace("HotFix.Config") //开始导出excel util.ExcelExport() //设置配置源数据路径 component.WithConfPath("../common/conf/js") //初始化游戏配置到内存中 component.InitGameConfToMem() //获取配置数据 codes := component.GetAllGameConf[*conf.ErrorCodeConf]() //初始化结构化kv数据源 data := make([]util.TemplateKeyValueData, len(codes), len(codes)) for i, code := range codes { data[i] = util.TemplateKeyValueData{ FieldName: code.FieldName, Values: code.Code, } } //将数据源写入文件 生成kv结构文件 util.JsonToKeyValueGoFile("errorcodes", "error_code", "../common/define/errorcode", "int32", data) // //获取配置数据 c := component.GetAllGameConf[*conf.ConstantConf]() //初始化结构化kv数据源 d := make([]util.TemplateKeyValueData, len(c), len(c)) for i, code := range c { d[i] = util.TemplateKeyValueData{ FieldName: code.Key, Values: code.Key, } } //将数据源写入文件 生成kv结构文件 util.JsonToKeyValueGoFile("constant", "constant_key", "../common/define/constant", "string", d) }

上面的导出json和生成golang结构文件并没有什么特殊的地方, 只需要填入对应的路径即可, 后面的键值结构化文件生成,这里单独说一下,我们注意看一下代码

//设置配置源数据路径 component.WithConfPath("../common/conf/js") //初始化游戏配置到内存中 component.InitGameConfToMem() //获取配置数据 codes := component.GetAllGameConf[*conf.ErrorCodeConf]() //初始化结构化kv数据源 data := make([]util.TemplateKeyValueData, len(codes), len(codes)) for i, code := range codes { data[i] = util.TemplateKeyValueData{ FieldName: code.FieldName, Values: code.Code, } } //将数据源写入文件 生成kv结构文件 util.JsonToKeyValueGoFile("errorcodes", "error_code", "../common/define/errorcode", "int32", data)

我们可以看到,我们首先加载了配置文件,之后获取到我们需要结构化的配置列表,生成对应的util.TemplateKeyValueData结构数据,在这个结构数据中, FieldName 字段表示常量名, Values字段表示常量值,

我们继续看这行代码JsonToKeyValueGoFile(packageName, fileName, outPath, fieldType string, data []TemplateKeyValueData) 这里每个参数都有对应的描述,十分好理解.

最终我们就是依靠这些基础结构和脚本,生成我们所需要的结构化配置和js配置文件.

使用配置

我们提供了一套通过完整的配置相关操作的组件工具,开发人员只需要简单的调用,即可获取对应配置,而不需要去关注其他复杂的关系

c := rpc.NewRPCServer(). WithService(&ExcelConfigService{}). WithGameConfig("../common/conf/js"). WithRandomServicePort(8040, 8050). WithCache(tgf.CacheModuleClose). Run() <-c

首先,我们要保证在启动的service服务中对GameConfig的路径进行配置,这里的路基,为上面自动生成的json文件目录. WithGameConfig("../common/conf/js").

接着我们来看看,如何使用

// 获取单个配置 component.GetGameConf[*conf.PropConf]("100001") // 获取多个id相同的配置 component.GetGameConfBySlice[*conf.PropConf]("100002") // 修改配置文件之后,调用该函数可以重新刷新配置,做到配置在线热更 component.InitGameConfToMem() //通过键值对配置,生成自定义的常量结构,可以用于错误码,常量Key等配置 log.Info("print error code %d", errorcodes.SystemErr) cs, _ := component.GetGameConf[*conf.ConstantConf](constant.MapLevelInitId) log.Info("print constant key %s, value %s", cs.Key, cs.Value)

我们可以看到,我们只需要传入需要获取的配置结构类型,还有它对应的主键id,即可获得对应的配置数据,并且我们还提供了实时刷新配置的接口,通过这个接口,我们可以实现动态热更配置的需求.

并且,我们也发现,前面配置文件生成的错误码常量结构和通用配置常量,也在这里出现,并且可以很方便的使用.

至此,配置文件相关工具的使用方式,就全部完成

示例项目

Last modified: 02 March 2024