跳至内容
DST-MOD
用户工具
注册
登录
站点工具
搜索
工具
显示页面
修订记录
反向链接
最近更改
媒体管理器
网站地图
注册
登录
>
最近更改
媒体管理器
网站地图
您的足迹:
•
双牌
06mod教程区:高级技巧:调试代码
本页面只读。您可以查看源文件,但不能更改它。如果您觉得这是系统错误,请联系管理员。
==== 测试代码 ==== 假如你制作了一个新的boss,它有10000的血量,当血量低于一半时会狂暴。 在测试时,为了让它更快进入狂暴状态,暂时调低了boss的血量。 <code lua> AddPrefabPostInit("myboss", function(inst) if inst.components.health then inst.components.health:SetMaxHealth(1000) end end) </code> 但是在发布mod前,这段测试代码忘记注释了,导致这个boss只有1000血。 如何避免忘删测试代码引起的这类问题呢?通过一些技巧,可以让测试代码只在开发环境中运行。 === 判断文件夹 === 在开发时,mod文件夹名字通常是一个普通的单词或者词组,而发布版本是 workshop-xxxxxxx。 以晓美焰mod为例,开发时所在的文件夹名字叫 AkemiHomura,发布版本文件夹名字是 workshop-1837053004。 你可以**在 modmain 或 modworldgenmain 环境**中判断文件夹的名字,选择性的运行一些测试代码。 <code lua> -- modmain.lua if modname == "AkemiHomura" then -- 如果文件夹名字是 "AkemiHomura" GLOBAL.PRINT_SOURCE = true -- 在打印时显示文件行数 end </code> <code lua> -- modmain.lua if string.sub(modname, 1, #"workshop-") ~= "workshop-" then -- 如果文件夹名字不以 workshop- 开头(发布版本) GLOBAL.PRINT_SOURCE = true -- 在打印时显示文件行数 end </code> === 判读用户名(仅适用于联机版) === 有时你需要把mod发给几个玩家进行内部测试,但只想让测试代码运行在自己的开发环境。 可以通过判断用户名来实现这一点。 <code lua> -- modmain.lua if GLOBAL.TheNet:GetLocalUserName() == "老王天天写bug" then modimport "debug" end </code> 如果不知道自己的用户名,可以启动饥荒,在控制台输入: <code lua> print(TheNet:GetLocalUserName()) </code> === 判断用户ID === 比判断用户名显得更加专业一些。 联机版: <code lua> -- modmain.lua if GLOBAL.TheSim:GetUsersName() == "xxxxxxxxx@steam" then modimport "debug" end </code> 单机版: <code lua> -- modmain.lua if GLOBAL.TheSim:GetUserID() == "xxxxxxxxx@steam" then modimport "debug" end </code> 联机版有两个获取id的函数,TheSim:GetUsersName() 和 TheNet:GetLocalUserID(),第二个函数在离线模式和在线模式返回的id值不同。
06mod教程区/高级技巧/调试代码.txt
· 最后更改: 2021/11/09 18:57 (外部编辑)
页面工具
显示页面
修订记录
反向链接
回到顶部