饥荒Mod 开发(六):基础知识总结
饥荒Mod 开发(八):游戏所有食材和食物
开发Mod 过程中,能遇到各种各样的问题,有时候游戏会弹出错误提示把游戏搞崩溃,有些时候游戏根本没法启动也不报错误就卡着不动。有时候功能各种异常等。 所以需要一些调试排错的经验。在开发Mod 过程中总结了一些排查错误的经验
检查语法错误
由于lua代码并没有编译的过程,所以即使出现语法错误了也比较难发现,比如经常忘记括号,少写一个end 等等。要从一个大的lua文件找到这种语法错误真的是太难了。 并且 如果是出现了语法错误,游戏在一启动可能就崩溃了。这时可以使用luac.exe 工具来检测lua代码是否有语法错误。
lua语法检查工具
luac.exe -p yourfile.lua
故意删除源码中大括号,然后使用工具检测一下就能准确提示错误
打印日志
排错最常用的方法就是打印日志,饥荒中提供的print方法,可以将日志打印在屏幕上。我们可以进入游戏之后打开控制台,就能显示使用printf方法打印的日志。如何打开控制台可以参考饥荒Mod 开发(四):制作一个物品
print("这是打印日志")
--可以用 .. 连接多个字符串, tostring 可以将数字,table,对象等 转换成字符串
print("使用.. 连接多个字符串:" .. tostring(0.5) .. tostring(1))
打开控制台之后就可以看到使用print打印的日志
)
打印到文件
TheSim:SetPersistentString("log.txt", "打印内容到log.txt 文件")
控制台的简单使用
饥荒有很多命令可以参考源码\data\scripts\screens\consolescreen.lua。进入游戏之后按下 “`”(ESC 下面那个按键) 就会打开控制台的,在按一次可以关闭输入框。按CTRL+L 可以打开/关闭日志打印。 打开控制台之后有一个输入框,我们可以输入指令
local PREFAB_TESTS = {
"c_spawn\"",
"c_give\"",
"c_list\"",
"c_findnext\"",
"c_find\"",
"c_spawn_ds\"",
"c_countprefabs\"",
"c_countprefabsinrange\"",
"c_prefabexists\"",
"c_selectnear\"",
"c_removeall\"",
"c_gonext\"",
"c_warp\"",
"c_gonear\"",
"c_circle\"",
"c_mat\"",
"c_mats\"",
"c_material\"",
"c_materials\"",
"c_swapcharacter\"",
}
"c_spawn\"":生成一个指定的游戏对象。例如,c_spawn("pigman") 将在游戏中生成一个猪人。
"c_give\"":给玩家一个指定的物品。例如,c_give("goldnugget", 10) 将给玩家 10 个金块。