微型调试器走访教程

*此内容使用人工智能(Beta)翻译,可能包含错误。若要查看英文页面,请点按 此处

本教程展示了如何使用微型调试器找到体验中的问题方面并识别根源。下载体验, 从文件中打开 在 Studio 中,然后继续。


识别问题

  1. 在 Studio 中打开体验后,开始使用 F5播放 按钮进行测试。

  2. 框架速率感觉不错,但不像应有的那样顺滑,适合这个尺寸和范围的体验。导航到 视图 选项卡,然后单击 摘要 下方的统计

    Debug stats summary showing 45 FPS.

    请注意,帧率低于每秒 60 帧(FPS)。

  3. 通过按下 Ctrl Alt F6 ( F6 ) 打开微调器。

    The MicroProfiler after opening it.

    请注意,框架时间是 一致 —条幅大约相同高度—因此,导致低帧率的任何东西都会运行每个框架,而不是仅偶尔运行并导致帧时间波动。

  4. Ctrl P P)暂停微调器。使用键盘快捷键暂停打开详细模式

  5. 单击并拖动以平移图表。注意工作线程中的一个特定任务似乎使用了大量的处理时间,比主线程多。将鼠标悬停在 RunService.Stepped 上,注意渲染需要多久。

    Detailed mode with long labels for processes.
  6. 时间线中的堆叠条表示代验证码的层次关系,因此继续在较低和较低层上悬停以尝试识别问题。

    On-hover details for various processes, with LocalScript highlighted. On-hover details for various processes, with Raycast highlighted.

    注意 LocalScript 标签,该标签表示脚本名称,以及 Raycast 标签,该标签表示问题可能与射线投射有关。

创建排故标签

现在,微型调试器提供了一个起点,你可以解决问题的代验证码。

  1. 停止播放测试,并过滤 Explorer 窗口以 localscript 找到文件。

    A view of filtering in the Explorer window.

    搜索 raycast 表明这段代码可能是体验糟糕表现的原因:


    local RAYS_PER_SECOND = 1500
    local function onStepped()
    for _ = 1, RAYS_PER_SECOND do
    local startPosition = getRandomPosition()
    local endPosition = getRandomPosition()
    local direction = endPosition - startPosition
    Workspace:Raycast(
    startPosition,
    endPosition
    )
    end
    end
    RunService.Stepped:Connect(onStepped)

    具体地,你可以看到代码每秒在随机方向投射 1,500 束光。

  2. 要验证这部分代码是否导致渲染延迟,请用 debug.profilebegin()debug.profileend() 包装函数的内容:


    local function onStepped()
    debug.profilebegin("Raycast Spam")
    for _ = 1, RAYS_PER_SECOND do
    local startPosition = getRandomPosition()
    local endPosition = getRandomPosition()
    local direction = endPosition - startPosition
    Workspace:Raycast(
    startPosition,
    endPosition
    )
    end
    debug.profileend()
    end

确认并解决问题

  1. 开始测试体验,然后再次打开微调器。

  2. 注意微调器现在显示了自定义标签,表明这个函数确实是根源。

    MicroProfiler detailed view with 'Raycast Spam' visible.
  3. 停止播放测试。

  4. 删除或评论出 onStepped() 函数和 RunService.Stepped:Connect(onStepped) 连接。

  5. 再次开始测试体验,然后再次检查调试统计摘要。

    Debug stats summary showing 60 FPS.

    注意微调调试器图上的框架速率和对应的框架时间下降的巨大改进。