本教程展示了如何使用微型调试器找到体验中的问题方面并识别根源。下载体验, 从文件中打开 在 Studio 中,然后继续。
识别问题
在 Studio 中打开体验后,开始使用 F5 或 播放 按钮进行测试。
通过按下 Ctrl Alt F6 ( ⌘ ⌥ F6 ) 打开微调器。
请注意,框架时间是 一致 —条幅大约相同高度—因此,导致低帧率的任何东西都会运行每个框架,而不是仅偶尔运行并导致帧时间波动。
按Ctrl P (⌘ P)暂停微调器。使用键盘快捷键暂停打开详细模式。
单击并拖动以平移图表。注意工作线程中的一个特定任务似乎使用了大量的处理时间,比主线程多。将鼠标悬停在 RunService.Stepped 上,注意渲染需要多久。
时间线中的堆叠条表示代验证码的层次关系,因此继续在较低和较低层上悬停以尝试识别问题。
注意 LocalScript 标签,该标签表示脚本名称,以及 Raycast 标签,该标签表示问题可能与射线投射有关。
创建排故标签
现在,微型调试器提供了一个起点,你可以解决问题的代验证码。
停止播放测试,并过滤 Explorer 窗口以 localscript 找到文件。
搜索 raycast 表明这段代码可能是体验糟糕表现的原因:
local RAYS_PER_SECOND = 1500local function onStepped()for _ = 1, RAYS_PER_SECOND dolocal startPosition = getRandomPosition()local endPosition = getRandomPosition()local direction = endPosition - startPositionWorkspace:Raycast(startPosition,endPosition)endendRunService.Stepped:Connect(onStepped)具体地,你可以看到代码每秒在随机方向投射 1,500 束光。
要验证这部分代码是否导致渲染延迟,请用 debug.profilebegin() 和 debug.profileend() 包装函数的内容:
local function onStepped()debug.profilebegin("Raycast Spam")for _ = 1, RAYS_PER_SECOND dolocal startPosition = getRandomPosition()local endPosition = getRandomPosition()local direction = endPosition - startPositionWorkspace:Raycast(startPosition,endPosition)enddebug.profileend()end
确认并解决问题
开始测试体验,然后再次打开微调器。
注意微调器现在显示了自定义标签,表明这个函数确实是根源。
停止播放测试。
删除或评论出 onStepped() 函数和 RunService.Stepped:Connect(onStepped) 连接。
再次开始测试体验,然后再次检查调试统计摘要。
注意微调调试器图上的框架速率和对应的框架时间下降的巨大改进。