微型分析器使用者指南

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

此示例演示了如何使用 MicroProfiler 找到体验中的问题并确定根本原因。下载体验, 从文件 在 Studio 中打开,并跟随。


识别问题

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

  2. 画面帧率感觉很棒,但不像应该在这样的体验和范围的体验。导航到视图选项卡,单击概览选项卡下的概览。

    Debug stats summary showing 45 FPS.

    注意,帧率小于 60 每秒钟(FPS)。

  3. 按下 CtrlAltF6 ( 1> ⌥1> 3> F63> ) 来打开微型分析器。

    The MicroProfiler after opening it.

    注意,框架时间是 一致的 — 条是大约相同的高度 — 所以无论是什么导致低框率的问题,都会在每个框架上运行,而不是在特定时间段内运行并导致框架时间 spikes。

  4. 按下 Ctrl P ( P) 暂停微型分析器。使用键盘快捷方式暂停会打开 2> 详细模式2> 。

  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 标签,该标签表示问题可能与射线投射有关。

创建问题标签

现在 MicroProfiler 已提供一个起始点,您可以解决问题的代验证码。

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

    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. 开始测试体验,然后再次打开 MicroProfiler。

  2. 注意微调器现在显示自定义标签,表明这个功能确实是根本原因。

    MicroProfiler detailed view with 'Raycast Spam' visible.
  3. 停止游戏测试。

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

  5. 重新启动体验测试,并检查调试统计。

    Debug stats summary showing 60 FPS.

    注意微波纹理图表中的大幅提升以及相应的掉落时间。