饥荒Mod 开发(七):调试技巧

饥荒Mod 开发(六):基础知识总结
饥荒Mod 开发(八):游戏所有食材和食物

开发Mod 过程中,能遇到各种各样的问题,有时候游戏会弹出错误提示把游戏搞崩溃,有些时候游戏根本没法启动也不报错误就卡着不动。有时候功能各种异常等。 所以需要一些调试排错的经验。在开发Mod 过程中总结了一些排查错误的经验

检查语法错误

由于lua代码并没有编译的过程,所以即使出现语法错误了也比较难发现,比如经常忘记括号,少写一个end 等等。要从一个大的lua文件找到这种语法错误真的是太难了。 并且 如果是出现了语法错误,游戏在一启动可能就崩溃了。这时可以使用luac.exe 工具来检测lua代码是否有语法错误。
lua语法检查工具

luac.exe -p yourfile.lua

故意删除源码中大括号,然后使用工具检测一下就能准确提示错误
饥荒Mod 开发(七):调试技巧_第1张图片

打印日志

排错最常用的方法就是打印日志,饥荒中提供的print方法,可以将日志打印在屏幕上。我们可以进入游戏之后打开控制台,就能显示使用printf方法打印的日志。如何打开控制台可以参考饥荒Mod 开发(四):制作一个物品

  print("这是打印日志")

  --可以用 .. 连接多个字符串, tostring 可以将数字,table,对象等 转换成字符串
  print("使用.. 连接多个字符串:" .. tostring(0.5) .. tostring(1))

打开控制台之后就可以看到使用print打印的日志
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/d99fb5ad850f4ca9ab6aa2b3a5b3957b.png

堆栈打印

有时候想知道代码是从哪里调用过来的,这个时候就需要打印调用堆栈。这样在控制台上就可以显示相应的调用

print(debug.traceback())

在这里插入图片描述

打印到文件

TheSim:SetPersistentString("log.txt", "打印内容到log.txt 文件")	

饥荒Mod 开发(七):调试技巧_第2张图片

在这里插入图片描述

控制台的简单使用

饥荒有很多命令可以参考源码\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 个金块。

饥荒Mod 开发(六):基础知识总结
饥荒Mod 开发(八):游戏所有食材和食物

你可能感兴趣的:(饥荒Mod,游戏,lua,饥荒Mod,饥荒)