类参考入门

本页面将介绍如何编写类参考手册。你会学到去哪里为 Godot 内置节点类型的类、方法、属性编写新的描述。

参见

要学习如何使用 Git 版本控制系统向 Godot 项目提交你的修改,请参见 为类参考手册贡献

每个类的参考文档都被包含在一个如下的 XML 文件中:

  1. <class name="Node2D" inherits="CanvasItem" version="4.0">
  2. <brief_description>
  3. A 2D game object, inherited by all 2D-related nodes. Has a position, rotation, scale, and Z index.
  4. </brief_description>
  5. <description>
  6. A 2D game object, with a transform (position, rotation, and scale). All 2D nodes, including physics objects and sprites, inherit from Node2D. Use Node2D as a parent node to move, scale and rotate children in a 2D project. Also gives control of the node's render order.
  7. </description>
  8. <tutorials>
  9. <link title="Custom drawing in 2D">https://docs.godotengine.org/en/latest/tutorials/2d/custom_drawing_in_2d.html</link>
  10. <link title="All 2D Demos">https://github.com/godotengine/godot-demo-projects/tree/master/2d</link>
  11. </tutorials>
  12. <methods>
  13. <method name="apply_scale">
  14. <return type="void">
  15. </return>
  16. <argument index="0" name="ratio" type="Vector2">
  17. </argument>
  18. <description>
  19. Multiplies the current scale by the [code]ratio[/code] vector.
  20. </description>
  21. </method>
  22. [...]
  23. <method name="translate">
  24. <return type="void">
  25. </return>
  26. <argument index="0" name="offset" type="Vector2">
  27. </argument>
  28. <description>
  29. Translates the node by the given [code]offset[/code] in local coordinates.
  30. </description>
  31. </method>
  32. </methods>
  33. <members>
  34. <member name="global_position" type="Vector2" setter="set_global_position" getter="get_global_position">
  35. Global position.
  36. </member>
  37. [...]
  38. <member name="z_index" type="int" setter="set_z_index" getter="get_z_index" default="0">
  39. Z index. Controls the order in which the nodes render. A node with a higher Z index will display in front of others.
  40. </member>
  41. </members>
  42. <constants>
  43. </constants>
  44. </class>

开头是简介和详细描述。在生成的文档中,顶部总是简介,详细描述会放在方法、变量、常量列表之后。可以看到方法、成员变量、常量、信号都在各自单独的 XML 节点中。

你会想要在 Godot 的源代码中学习它们都有什么用。然后补全或者完善这些标签中的文本:

  • <brief_description>

  • <description>

  • <constant>

  • <method>(在其 <description> 标签中;返回类型和参数不带单独的文档字符串)

  • <member>

  • <signal>(在其 <description> 标签中;参数不带单独的文档字符串)

  • <constant>

用清晰简单的语言编写。始终遵循编写规范以使你的描述简短易读。在描述中不要留下空行:XML 文件中的每一行都将生成一个新段落,空行也是一样。

如何编辑类 XML

如果你想要更新某个类的类参考手册,编辑 doc/classes/ 中的对应文件即可。文件夹中包含了各个类的 XML 文件。在 XML 中,列出了类参考中的常量和方法。Godot 会自动生成并更新这些 XML。

备注

游戏引擎中某些模块的 XML 文件在 modules/<模块名称>/doc_classes/ 目录下。

用你喜欢的文本编辑器编辑它。如果你使用代码编辑器,请确保它不会改变缩进样式:XML 使用制表符,而 BBCode 风格的块内使用 4 个空格。下面有更多这方面的内容。

要检查你所做出的修改在生成后的文档中是否正确,请在 doc/ 文件夹中执行命令 make rst。这样就会将 XML 文件转换为在线文档的格式,存在错误时会有错误报告。

你也可以自行构建 Godot 然后在内置的类参考手册中打开被修改的页面。引擎的编译方法请查看 compilation guide

我们推荐使用 Vim、Atom、Visual Studio Code、Notepad++ 等支持 XML 的代码编辑器,或者其他能够方便编辑此类文件的编辑器。你还可以使用它们的搜索功能快速查找类和属性。

小技巧

如果你使用 Visual Studio Code,则可以安装 vscode-xml 扩展 <https://marketplace.visualstudio.com/items?itemName=redhat.vscode-xml&gt; 来纠察 XML 文件的类引用。

使用 BBCode 风格标签来改进格式

Godot 的 XML 类引用支持类似 BBCode 的标记,用于链接以及格式化文本和代码。在下表中,你可以找到可用的标记、用法示例以及转换为 reStructuredText 后的结果。

链接

每从其他类里链接一个成员,你都要在成员名前面加上该类的类名。而链接类内成员时,类名可省略。

描述

示例

结果

[Class]
链接类

移动 [Sprite]。

移动 Sprite2D

[annotation Class.name]
链接到注解

见 [annotation @GDScript.@rpc].

@GDScript.@export

[constant Class.name]
链接到常量

见 [constant Color.RED]。

Color.RED

[enum Class.name]
链接到枚举

见 [enum Mesh.ArrayType]。

Mesh.ArrayType

[member Class.name]
链接到成员

获取 [member Node2D.scale]。

获取 Node2D.scale.

[method Class.name]
链接到方法

调用 [method Node3D.hide].

调用 Node3D.hide()

[constructor Class.name]
链接到内置构造函数

使用 [constructor Color.Color].

使用 Color.Color

[operator Class.name]
链接到内置运算符

使用 [operator Color.operator ].

使用 Color.operator

[signal Class.name]
链接到信号

发送 [signal Node.renamed]。

发送 Node.renamed

[theme_item Class.name]
链接到主题项

见 [theme_item Label.font]。

Label.font

[param name]
参数名(用作代码)

用 [param size] 来表示大小。

size 表示大小。

备注

目前只有 @GDScript 有注解。

格式化文本

描述

示例

结果

[br]
换行
行 1。[br]
行 2。
行 1。
行 2。
[lb] [rb]
分别为 []

[lb]b[rb]text[lb]/b[rb]

[b]text[/b]

[b] [/b]
粗体

[b]请勿[/b] 调用该方法

请勿调用该方法。

[i] [/i]
斜体

返回 [i]全局[/i] 位置。

返回 全局位置。

[u] [/u]
下划线

[u]始终[/u] 调用该方法。

Always use this method.
[s] [/s]
删除线

[s]过期信息。[/s]

Outdated information.
[url] [/url]
超链接
[center] [/center]
水平居中

[center]2 + 2 = 4[/center]

2 + 2 = 4
[kbd] [/kbd]
键盘和鼠标快捷键

按下 [kbd]Ctrl + C[/kbd] 组合键。

按下 :kbd:</a>Ctrl + C组合键。

[code] [/code]
嵌入式代码片段

返回[code]true[/code]。

返回 true

备注

  1. Some supported tags like [color] and [font] are not listed here because they are not recommended in the engine documentation.

  2. [kbd][/kbd] 之间的 BBCode 代码均无效。

  3. [code][/code] 之间的 BBCode 代码均无效。

格式化代码块

格式化代码块有两种方法:

  1. 如果要添加特定语言的示例,请使用 [codeblock]

  2. 如果要添加相同示例的 GDScript 和 C# 的版本,请使用 [codeblocks][gdscript][csharp]

[codeblock] 默认会高亮 GDScript 语法,用 lang 修饰符即可对其语法高亮所用的语言进行修改。目前支持下列语言的高亮:

  • [codeblock lang=text] 禁用语法高亮;

  • [codeblock lang=gdscript] 高亮 GDScript 语法;

  • [codeblock lang=csharp] 高亮 C# 语法(仅.NET版本有效)。

备注

[codeblock][/codeblock] 之间的 BBCode 代码均无效。

警告

对预格式化的代码块使用 [codeblock]。在 [codeblock] 中,请始终使用四个空格进行缩进。解析器将删除制表符。

例如:

  1. [codeblock]
  2. func _ready():
  3. var sprite = get_node("Sprite2D")
  4. print(sprite.get_pos())
  5. [/codeblock]

将显示为:

  1. func _ready():
  2. var sprite = get_node("Sprite2D")
  3. print(sprite.get_pos())

如果你有针对 GDScript 和 C# 的不同版本的代码,请换用 [codeblocks]。使用 [codeblocks],你还需要至少一个语言标签,即 [gdscript][csharp]

请先写 GDScript 代码示例!你可以使用这个实验性的代码翻译工具来加速工作流程。

  1. [codeblocks]
  2. [gdscript]
  3. func _ready():
  4. var sprite = get_node("Sprite2D")
  5. print(sprite.get_pos())
  6. [/gdscript]
  7. [csharp]
  8. public override void _Ready()
  9. {
  10. var sprite = GetNode("Sprite2D");
  11. GD.Print(sprite.GetPos());
  12. }
  13. [/csharp]
  14. [/codeblocks]

上述内容将显示为:

GDScriptC#

  1. func _ready():
  2. var sprite = get_node("Sprite2D")
  3. print(sprite.get_pos())
  1. public override void _Ready()
  2. {
  3. var sprite = GetNode("Sprite2D");
  4. GD.Print(sprite.GetPos());
  5. }

Formatting notes and warnings

要表示重要信息,请在描述末尾添加一段以“[b]Note:[/b]”开头的内容:

  1. [b]Note:[/b] Only available when using the Vulkan renderer.

为了表示如果不仔细遵循可能导致安全问题或数据丢失的关键信息,请在描述末尾添加一段以“[b]Warning:[/b]”开头的内容:

  1. [b]Warning:[/b] If this property is set to [code]true[/code], it allows clients to execute arbitrary code on the server.

在上面描述的所有段落中, 确保标点符号是BBCode标签的一部分, 以保持一致性.

将 API 标记为已弃用/实验性

To mark an API as deprecated or experimental, you need to add the corresponding XML attribute. The attribute value must be a message explaining why the API is not recommended (BBCode markup is supported) or an empty string (the default message will be used). If an API element is marked as deprecated/experimental, then it is considered documented even if the description is empty.

  1. <class name="Parallax2D" inherits="Node2D" experimental="This node is meant to replace [ParallaxBackground] and [ParallaxLayer]. The implementation may change in the future." xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
  2. [...]
  3. </class>
  4. <constant name="RESPONSE_USE_PROXY" value="305" enum="ResponseCode" deprecated="Many clients ignore this response code for security reasons. It is also deprecated by the HTTP standard.">
  5. HTTP status code [code]305 Use Proxy[/code].
  6. </constant>
  7. <member name="auto_translate" type="bool" setter="set_auto_translate" getter="is_auto_translating" deprecated="Use [member Node.auto_translate_mode] instead.">
  8. Toggles if any text should automatically change to its translated version depending on the current locale.
  9. </member>
  10. <method name="get_method_call_mode" qualifiers="const" deprecated="Use [member AnimationMixer.callback_mode_method] instead.">
  11. <return type="int" enum="AnimationPlayer.AnimationMethodCallMode" />
  12. <description>
  13. Returns the call mode used for "Call Method" tracks.
  14. </description>
  15. </method>