Roblox Guidebook知识库
简体中文 ⌄
全部指南

开发 / ROBLOX

Roblox Studio Output:定位原因并验证修复

通过筛选器、客户端与服务器上下文、警告、运行时错误和两个代码练习,掌握可重复的排错流程。

更新日期:

从可重复的问题开始 #

按钮没有反应或奖励没有出现时,记录你的操作、预期结果和实际结果。例如:“启动测试,点击一次,预期看到购买消息,但没有消息。”这样,修改代码后就能重复同一个场景,而不是凭感觉判断是否好了。

请使用单独的练习项目。这里的代码只输出消息并比较局部变量,不访问玩家货币、商店或存档。目标是把程序发出的信号和具体操作联系起来。理解以后,再把这个流程用于自己项目的一小段功能。

1. 打开 Output 并准备显示 #

当前 Roblox 文档说明,可以通过 Window 菜单或 Script 标签页工具栏打开 Output。调整面板位置,让测试期间的新消息保持可见。如果你的界面布局不同,请按窗口名称寻找。

检查消息类型、上下文和文本筛选。第一次练习先清除文本搜索,并显示服务器消息、普通输出和警告。启用 Show Source,可在适用时看到脚本名和行号。清空窗口前保存重要记录;清空只移除显示的消息,修复代码还需要另一步操作。

2. 创建一个服务器 Script #

在 Explorer 的 ServerScriptService 中添加普通 Script,命名为 OutputPractice。默认的 Legacy RunContext 适合这个服务器练习,也可以明确设置为 Server。粘贴下面第一个示例,并确认脚本已启用。

启动 Studio 测试。预期看到包含数字 8 的 coins 消息,随后是 Unexpected coin count 警告。检查它来自服务器。如果有多组相同输出,查找是否复制了练习脚本。每份脚本都会产生自己的消息,一次执行可能因此看起来像重复发生了同一问题。

local expectedCoins = 10
local actualCoins = 8
print("coins", actualCoins)

if actualCoins ~= expectedCoins then
    warn("Unexpected coin count")
end

3. 区分消息、警告和运行时错误 #

print() 可以显示值或标记已完成的步骤。warn() 强调作者选择报告的条件。本例因为 8 不等于 10 而发出警告;先阅读触发条件,再判断它意味着什么。

运行时错误表示某项操作未能完成。请把错误文字、来源和测试步骤放在一起阅读。仅凭颜色无法确定哪个对象负责。先确认消息属于你的脚本、其他组件还是以前的测试,再修改代码。下面的图把三类信号分开说明。

三类信号:值、条件和失败的操作
根据消息选择问题:什么值、什么条件,或者哪项操作失败?

4. 修改一个值并重复测试 #

停止测试,在原始 OutputPractice 中把 actualCoins 从 8 改成 10,expectedCoins 保持 10。重新测试前清空旧记录,或者记下新的开始时间。普通消息现在应显示 10,这个比较条件产生的警告应消失。

这次只验证一个变化。如果同时修改条件、变量名和脚本位置,就难以知道哪一步起作用。测试期间修改的对象可能在 Stop 后恢复,所以应在停止后编辑原始项目。重复测试符合预期后,保存修复版本。

5. 分析安全的运行时错误练习 #

把同一个脚本替换成第二个示例并重新测试。inventory 被故意设置为 nil,因此 inventory.Coins 无法读取表字段。预期在这个访问位置出现错误。具体措辞可能不同,但来源应指向我们的示例。

停止测试,将 local inventory = nil 换成 local inventory = {Coins = 10}。再次运行时,字段访问得到数字,Output 应显示 10。修复改变了操作所用的输入;直接删除 print() 只会去掉练习,并不能解释先前访问为何无效。

local inventory = nil
print(inventory.Coins)

6. 没有消息时检查执行路径 #

回到第一个示例,在开头暂时添加 print("OutputPractice started")。如果这条也不出现,先检查测试是否启动、Script 是否启用、容器是否正确以及 RunContext 是否合适,再检查 Output 筛选和上下文。先确认代码执行到计算处,再分析计算值。

实际 LocalScript 还需要检查客户端执行和所在容器。服务器输出不能证明客户端处理函数也运行了。可以在操作前后放短标记:只看到前一个,说明应研究两者之间的代码;两个都没有,先检查启动或显示。

7. 阅读来源并保留有用记录 #

找到错误关联的脚本名和行号。Show Source 在适用时显示这种关系;可用的来源链接能够带你到代码。如果显示调用链,也阅读调用该片段的位置。行号只是起点,错误值可能更早就已经产生。

记录步骤、预期与实际行为、错误文字、脚本以及 Client 或 Server 上下文。求助时附上最小的相关代码片段。分享前删除凭据和玩家数据。避免每帧打印:持续刷新的消息会让第一条有用记录更难找到。

8. 同时验证行为和日志 #

重复最初的步骤,同时检查预期行为确实发生,以及相关错误没有再次出现。第一个练习的结果是数字 10,且比较不再产生警告;按钮则应执行预定动作。Output 空白本身不能证明按钮已经修好。

再试一个相邻场景,例如重复操作或另一组合法输入。移除过多的临时消息,保留有用诊断。如果问题仍在,记录新的观察,再调查一个原因。短循环让每一步都可理解,也保留了能返回的已验证项目版本。

重现、阅读、修改一个原因并重复测试
修改后同时检查预期行为和相关消息。

原始资料

Roblox Creator Hub
Roblox Creator Hub · Studio testing modes
Roblox Creator Hub · Script types and locations