跳到主要内容

使用日志面板和性能分析面板

Dora SSR 的 Web IDE 内置了日志面板和性能分析面板。日志面板用于查看运行时输出,性能分析面板用于观察帧耗时、渲染开销、资源加载耗时、对象数量和内存占用。脚本无法运行、资源加载失败,或游戏在新增内容后变卡时,这两个面板通常是第一处排查入口。

1. 打开日志面板

在 Web IDE 右下角打开运行控制菜单,选择 View Log。也可以使用菜单中显示的 Mod+. 快捷键。构建或运行时报错时,IDE 的提示消息里也可能出现 View Log 链接,点击后会打开同一个日志面板。

面板会显示当前日志流。带有 [error][warning][info] 的日志会被高亮,日志区域支持选择文本,也支持在当前日志中搜索。

2. 清空、重载和保存日志

点击 Clear 可以清空当前面板中的日志文本。重新运行场景前先清空日志,可以更容易定位下一次出现的错误。

点击 Reload 可以在面板内容过期,或需要恢复完整运行时日志时使用。IDE 会先请求运行时保存当前日志快照,然后把保存下来的文本重新载入日志面板。日志面板没有单独的 Save 按钮;这个保存步骤是 Reload 流程的一部分。

如果需要在自己的脚本或命令中主动保存日志,可以使用引擎提供的日志保存 API,并传入输出文件路径:

local App <const> = require("App")

App:saveLog("debug.log")

3. 使用命令输入框

日志面板底部的命令输入框会把代码发送到正在运行的 Dora SSR 运行时。输入命令后按 Enter 即可执行。执行过的命令也会写入日志,方便确认刚才运行了什么。

面板最多保留 20 条最近使用过的命令。按上方向键可以回到更旧的命令,按下方向键可以回到更新的命令。反复查看变量、调整运行时设置,或重复执行诊断命令时,这个历史记录很有用。

示例:

Log("Info", "checking player state")
Director.profilerSending = true
App.targetFPS = 60

除非已经准备好重新运行场景,否则不要随意执行会重置全局状态的命令。

4. 使用性能分析面板

使用日志面板中的图标按钮可以在只显示日志的视图和性能分析视图之间切换。性能分析面板隐藏时,图表图标会打开它;性能分析面板可见时,终端图标会回到只显示日志的视图。这个开关会向运行时发送 Director.profilerSending = truefalse

性能分析面板分为几个区域:

  • Basic:渲染器名称、是否启用多线程渲染、后备缓冲区尺寸、Draw Call、三角形数量、线段数量、可视区域尺寸、VSync、FPS 限制、目标 FPS、当前 FPS 和固定更新 FPS。
  • Time:平均 CPU 耗时和 GPU 耗时,单位是毫秒。帧耗时曲线会把 CPU、GPU、Delta 时间和目标帧率基准线放在一起比较。60 FPS 的基准线约为 16.67 ms;超过基准线表示这一帧可能无法达到目标帧率。
  • Object:C++ 对象、Lua 对象、Lua 回调、纹理、字体和音频资源数量。离开场景后这些数量仍持续增长时,可能存在节点、回调或缓存资源没有释放的问题。
  • Memory:内存池、Lua、Teal、Wasm、纹理、字体和音频内存占用。加载场景或切换大资源时,可以观察这里是否出现异常增长。
  • Loader Time Costs:资源或模块加载耗时表,包含顺序、耗时、深度和模块名。按 Time 排序可以找出加载最慢的模块或资源。Depth 表示嵌套加载层级;表格上方还会汇总顶层加载耗时。

性能分析面板也可以直接调整 App.targetFPSDirector.scheduler.fixedFPSView.vsyncApp.fpsLimited。排查性能问题时,建议先固定目标帧率,再比较不同场景或修改前后的数据。

5. 常见问题

运行后出现脚本错误

先看场景启动后第一条 [error] 日志。脚本语法错误和运行时错误通常会包含文件路径与行号。先打开对应文件修复第一处报错,再清空日志并重新运行。如果修改后错误仍旧出现,确认文件已经保存。

资源加载失败

图片、字体、音频、.clip 文件或模型文件加载失败时,通常是资源路径错误或文件格式不支持。检查路径拼写、大小写、扩展名,以及文件是否位于项目资源根目录下。如果资源是外部工具生成的,重新生成后可以点击 Reload,确保正在查看最新的运行时日志。

帧率下降或画面卡顿

打开性能分析面板,对比 Current FPSAvg CPUAvg GPU 和帧耗时曲线。CPU 耗时高通常与更新逻辑、脚本、物理或资源加载有关。GPU 耗时高通常与渲染开销有关,例如 Draw Call 过多、大纹理、昂贵特效或过多重叠绘制。如果卡顿发生在场景打开或资源首次出现时,优先按耗时排序查看 Loader Time Costs

内存持续增长

反复进入和离开同一个场景,同时观察 Object 和 Memory 区域。如果 Lua 对象、回调、纹理或音频资源数量持续上升,需要检查节点是否被移除、回调是否断开,以及临时资源是否卸载或复用。

命令看起来没有生效

确认游戏仍在运行,并且输入的是运行时可以执行的有效代码。可以用命令历史调出上一条命令,修改后再次执行。如果命令用于修改性能分析设置,保持性能分析面板打开,方便立即确认数值是否变化。