跳转到内容

Godot 游戏引擎指南/调试

来自维基教科书,开放世界中的开放书籍

调试器坞

[编辑 | 编辑源代码]

调试器坞是默认的也是最好的调试方式。如果它旁边显示一个红色圆圈,则表示有错误需要阅读。如果有黄色圆圈,则表示有新的警告需要阅读。

当你打开它时,你会看到几个选项卡

调试器

[编辑 | 编辑源代码]

当脚本错误发生时,这个选项卡会打开。对于致命错误,它不会显示,游戏只会崩溃。在这种情况下,请参见 下方

它显示了“堆栈帧”。这是一个堆栈 函数调用,让你能够找到错误的来源。这非常宝贵。在堆栈帧的右侧,显示了脚本可以访问的所有变量以及它们的值。在它的上方是几个按钮

  • 跳过断点:在按下此按钮之前,游戏会暂停在断点处。.
  • 复制错误:将错误复制到你的剪贴板。
  • 单步进入:运行下一个表达式。进入它本来会进入的缩进块。
  • 单步执行:运行下一个表达式。跳过缩进块。
  • 中断:暂停游戏,就像使用断点一样。
  • 继续:恢复游戏。

允许你查看在运行游戏期间遇到的所有致命和非致命错误以及警告。有几个按钮

  • 清除:清空此列表。
  • 展开全部:展开每个错误以查看更多信息。
  • 折叠全部:折叠每个错误以查看更少的信息。

可以按每个错误跳转到产生该错误的脚本和行。双击它可以展开或折叠。你也可以点击箭头来展开/折叠。展开它会显示错误和代码堆栈。

分析器

[编辑 | 编辑源代码]

这允许你记录函数调用次数以及使用了多少帧时间。在优化游戏时它非常宝贵,并且也可以用于调试。

首先,你必须按下开始。在右侧,会生成一个图表。较高的线条意味着某些东西占用了大量的游戏处理时间。它们应该在某些时候尽可能地进行优化。

要检查是什么导致了游戏运行缓慢,请点击图表中峰值较高的地方,然后向下滚动左侧。你会看到每个函数调用花费了多少秒以及它被调用了多少次。如果你想要百分比,请点击Mesure:值,然后选择Frame %

Time:有两个值

  • 包含:显示帧时间或对某个函数的所有调用的百分比
  • 自身:显示单个调用期间最大的帧时间或百分比。

网络分析器

[编辑 | 编辑源代码]

这允许你查看每个节点使用了多少互联网流量。包括发送和接收的流量。

监视器

[编辑 | 编辑源代码]

这允许你通过图表检查性能。最有用的显示选项是

  • 时间
    • FPS:每秒帧数。
    • 进程:每个空闲帧花费的时间。
    • 物理进程:物理帧花费的时间。
  • 内存
    • 静态:用于不变事物的内存量。
    • 动态:正在使用的内存量始终在变化,或者代码正在运行。
    • 静态最大值:已达到的最大静态内存。
    • 动态最大值:已达到的最大动态内存。
    • 消息缓冲区最大值:输出使用的内存,包括错误和警告。
  • 对象
    • 对象:存在的对象总数。
    • 资源:存在的资源数量。
    • 节点:存在的节点数量。
    • 孤儿节点:不在场景树中的节点数量。一般来说,这应该始终为零。如果故意这样,请尝试使用资源或对象。否则,如果可能的话,你应该释放它,在完成它后在该节点上调用free()

视频内存

[编辑 | 编辑源代码]

这允许你查看有多少图像占用了内存以及哪些图像占用了内存。

这允许你查看游戏关闭之前最后激活的控制节点及其节点路径。

脚本调试

[编辑 | 编辑源代码]

打开脚本编辑器后,按下顶部的“调试”按钮。它靠近“文件”和“搜索”。

你有一些上面已经解释过的选项:单步进入、单步执行、中断和继续。

你还有两个其他选项

  • 保持调试器打开:运行游戏会减慢编辑器的速度,因此必须关闭它。但关闭游戏也会关闭调试器。选中此选项以在关闭游戏时保持调试器打开。
  • 使用外部编辑器调试:允许你使用另一个编辑器进行调试。

调试选项

[编辑 | 编辑源代码]

在屏幕的最顶部,按下“调试”按钮。它出现在“场景”和“项目”附近。你有以下选项

  • 使用远程调试部署:导出时,生成的执行文件将尝试连接到要调试的计算机。
  • 使用网络文件系统进行小型部署:导出会生成一个最小的执行文件。文件系统通过互联网提供。
  • 可见碰撞形状:是否显示碰撞形状。
  • 可见导航:在运行的游戏中是否可见导航网格和多边形。
  • 同步场景更改:如果选中,对场景的更改将复制到运行的游戏中。
  • 同步脚本更改:如果选中,对脚本的更改将导致它在运行的游戏中重新加载。

调试编辑器插件

[编辑 | 编辑源代码]

调试编辑器插件的最佳方法是关注输出面板。 如果这没有帮助,添加临时的print() 调用可以帮助您查看调用了什么以及变量的值。

捕获致命错误

[编辑 | 编辑源代码]

致命错误是不会抛出错误消息的崩溃。 它通常是由引擎错误引起的,有时与您的代码无关。 您也可以尝试另一种方式来完成代码崩溃时正在执行的操作,或者在此处报告错误。 您可能需要发送发生崩溃时正在运行的代码的副本。

确切地记下发生崩溃时您在做什么。 尝试找出正在运行的代码,并在该区域周围添加断点。 如果这次没有崩溃,请再次删除断点。 如果在播放时它仍然没有崩溃,请确保您正在执行您写下的操作。

如果您仍然无法重现崩溃,请假设这不是您可以修复的问题,而是一个编辑器错误。 考虑发送错误报告。 这可能需要提供您认为问题所在的代码示例,并且您可能需要提供您正在执行的操作的准确说明。 也要考虑上传任何有用的日志文件。


Godot 游戏引擎指南

入门 [编辑]
安装
什么是节点?
编程
资源和导入
信号和方法
你的第一个游戏
让它工作
调试
输入
物理
保存和加载
多人游戏
让它看起来好
UI 皮肤
动画
高级帮助
服务器(单例)
平台特定
优化
加密
导出
插件
其他
有用的链接
作者和贡献者
印刷版


<-- 上一个 回到顶部 下一个 -->

华夏公益教科书