刚开始写的,一键生成lua,c#,oc,java代码工具。未完待续…
Utils.py
import json
# json文件操作
def read_json_to_dict(path):
with open(path, 'r') as open_file:
ret_str = open_file.read()
parse_dict = json.loads(ret_str)
return parse_dict
def read_json_to_list(path):
parse_dict = read_json_to_dict(path)
return parse_dict.items()
AutoCreateSDKCode.py
import Utils
TabBlankStr = " "
ReturnStr = "return "
LuaFuncTemplate = '''
function {className}{isStatic}{funcName}({params})
{funcContent}
end
'''
CSFuncTemplate = '''
public static {returnType} {funcName}({params})
{funcContentStart}
#if UNITY_IOS
#elif UNITY_ANDROID
#endif
{funcContentEnd}
'''
funcContentStart = '{'
funcContentEnd = '}'
JavaFuncTemplate = ""
ObjectCFuncTemplate = ""
def parse_params(params_list):
index = 1
params_list_len = len(params_list)
ret_str = ''
for param_str in params_list:
blank = ' '
if index == 1:
blank = ''
if index % 2 != 0:
ret_str += blank + param_str
else:
if index < params_list_len:
ret_str += blank + param_str + ','
else:
ret_str += blank + param_str
break
index += 1
# print(ret_str)
return ret_str
def get_lua_func_content(func_name):
return TabBlankStr + ReturnStr + "SdkU3d." + func_name + "()"
def get_lua_func_str(func_config):
func_name = func_config[0]
tmp = func_config[1]
lua_str = LuaFuncTemplate.format(
className="SDKManager",
isStatic=".",
funcName=func_name,
params="obj, abc",
funcContent=get_lua_func_content(func_name)
)
return lua_str
def get_cs_func_str(func_config):
func_name = func_config[0]
tmp = func_config[1]
params = parse_params(tmp['params'])
return_type = tmp['returnType']
cs_str = CSFuncTemplate.format(
returnType=return_type,
funcName=func_name,
params=params,
funcContentStart=funcContentStart,
funcContentEnd=funcContentEnd
)
return cs_str
if __name__ == "__main__":
print("=========================")
func_config_list = Utils.read_json_to_list("./FuncList.json")
print(func_config_list)
for t in func_config_list:
func_config_elem = t
lua_str = get_lua_func_str(func_config_elem)
cs_str = get_cs_func_str(func_config_elem)
print(lua_str)
print(cs_str)
FuncList.json
{
"getName": {
"returnType": "string",
"params": ["string", "name", "int", "code"]
},
"getName1": {
"returnType": "void",
"params": ["string", "name1", "int", "code1"]
}
}