diff options
author | Rémi Verschelde <rverschelde@gmail.com> | 2023-04-20 13:26:36 +0200 |
---|---|---|
committer | Rémi Verschelde <rverschelde@gmail.com> | 2023-04-20 13:26:36 +0200 |
commit | 90b4ca2e506c6a0d432770d59f62ae7eea565ad0 (patch) | |
tree | 673ef3810bfe5268e0a60ec15a3c6eadf841b800 /doc/translations | |
parent | 16a6bdd423aa85272837d0bc6b9e709febdb4ec0 (diff) |
i18n: Sync translations with Weblate
Diffstat (limited to 'doc/translations')
-rw-r--r-- | doc/translations/es.po | 26 | ||||
-rw-r--r-- | doc/translations/zh_CN.po | 15392 |
2 files changed, 15023 insertions, 395 deletions
diff --git a/doc/translations/es.po b/doc/translations/es.po index b85284ee31..398698fc4b 100644 --- a/doc/translations/es.po +++ b/doc/translations/es.po @@ -48,12 +48,13 @@ # Adrian Migueles <adrianmigueles14@gmail.com>, 2023. # Joinner Medina <devjoi2018@gmail.com>, 2023. # Denis Anfruns <daanfruns@gmail.com>, 2023. +# Luis Ortiz <luisortiz66@hotmail.com>, 2023. msgid "" msgstr "" "Project-Id-Version: Godot Engine class reference\n" "Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n" -"PO-Revision-Date: 2023-03-26 03:46+0000\n" -"Last-Translator: Denis Anfruns <daanfruns@gmail.com>\n" +"PO-Revision-Date: 2023-04-12 08:56+0000\n" +"Last-Translator: Luis Ortiz <luisortiz66@hotmail.com>\n" "Language-Team: Spanish <https://hosted.weblate.org/projects/godot-engine/" "godot-class-reference/es/>\n" "Language: es\n" @@ -424,6 +425,27 @@ msgstr "" "0.1\n" "[/codeblock]" +msgid "" +"Mark the following property as exported (editable in the Inspector dock and " +"saved to disk). To control the type of the exported property, use the type " +"hint notation.\n" +"[codeblock]\n" +"@export var string = \"\"\n" +"@export var int_number = 5\n" +"@export var float_number: float = 5\n" +"@export var image: Image\n" +"[/codeblock]" +msgstr "" +"Marca la siguiente propiedad como exportada (editable en el panel Inspector " +"y guardado al disco). Para controlar el tipo de la propiedad exportada, use " +"la notación de sugerencia de tipo.\n" +"[codeblock]\n" +"@export var string = \"\"\n" +"@export var int_number = 5\n" +"@export var float_number: float = 5\n" +"@export var image: Image\n" +"[/codeblock]" + msgid "Converts from decibels to linear energy (audio)." msgstr "Convierte de decibeles a energía lineal (audio)." diff --git a/doc/translations/zh_CN.po b/doc/translations/zh_CN.po index 5633338520..a5957c9be4 100644 --- a/doc/translations/zh_CN.po +++ b/doc/translations/zh_CN.po @@ -74,12 +74,13 @@ # Wisdom Salee <whoruifinethanku@gmail.com>, 2023. # mengyu <1093697597@qq.com>, 2023. # long li <2361520824@qq.com>, 2023. +# yisui <hechugetqiufrost@outlook.com>, 2023. msgid "" msgstr "" "Project-Id-Version: Godot Engine class reference\n" "Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n" -"PO-Revision-Date: 2023-04-03 18:21+0000\n" -"Last-Translator: 风青山 <idleman@yeah.net>\n" +"PO-Revision-Date: 2023-04-19 00:40+0000\n" +"Last-Translator: Haoyu Qiu <timothyqiu32@gmail.com>\n" "Language-Team: Chinese (Simplified) <https://hosted.weblate.org/projects/" "godot-engine/godot-class-reference/zh_Hans/>\n" "Language: zh_CN\n" @@ -87,7 +88,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Weblate 4.17-dev\n" +"X-Generator: Weblate 4.18-dev\n" msgid "Description" msgstr "描述" @@ -196,6 +197,36 @@ msgid "GDScript exports" msgstr "GDScript的导出" msgid "" +"Returns a [Color] constructed from red ([param r8]), green ([param g8]), " +"blue ([param b8]), and optionally alpha ([param a8]) integer channels, each " +"divided by [code]255.0[/code] for their final value. Using [method Color8] " +"instead of the standard [Color] constructor is useful when you need to match " +"exact color values in an [Image].\n" +"[codeblock]\n" +"var red = Color8(255, 0, 0) # Same as Color(1, 0, 0).\n" +"var dark_blue = Color8(0, 0, 51) # Same as Color(0, 0, 0.2).\n" +"var my_color = Color8(306, 255, 0, 102) # Same as Color(1.2, 1, 0, 0.4).\n" +"[/codeblock]\n" +"[b]Note:[/b] Due to the lower precision of [method Color8] compared to the " +"standard [Color] constructor, a color created with [method Color8] will " +"generally not be equal to the same color created with the standard [Color] " +"constructor. Use [method Color.is_equal_approx] for comparisons to avoid " +"issues with floating-point precision error." +msgstr "" +"返回一个由整数红通道([param r8])、绿通道([param g8])、蓝通道([param " +"b8])和可选的 Alpha 通道([param a8])构造的 [Color],每个通道的最终值都会除" +"以 [code]255.0[/code]。如果你需要精确匹配 [Image] 中的颜色值,[method " +"Color8] 比标准的 [Color] 构造函数更有用。\n" +"[codeblock]\n" +"var red = Color8(255, 0, 0) # 与 Color(1, 0, 0) 相同\n" +"var dark_blue = Color8(0, 0, 51) # 与 Color(0, 0, 0.2) 相同。\n" +"var my_color = Color8(306, 255, 0, 102) # 与 Color(1.2, 1, 0, 0.4) 相同。\n" +"[/codeblock]\n" +"[b]注意:[/b]因为 [method Color8] 比标准 [Color] 构造函数精度更低,所以使用 " +"[method Color8] 创建的颜色通常与使用标准 [Color] 构造函数创建的相同颜色不相" +"等。请使用 [method Color.is_equal_approx] 进行比较,避免浮点数精度误差。" + +msgid "" "Asserts that the [param condition] is [code]true[/code]. If the [param " "condition] is [code]false[/code], an error is generated. When running from " "the editor, the running project will also be paused until you resume it. " @@ -1055,6 +1086,54 @@ msgstr "" "[/codeblock]" msgid "" +"Define a new group for the following exported properties. This helps to " +"organize properties in the Inspector dock. Groups can be added with an " +"optional [param prefix], which would make group to only consider properties " +"that have this prefix. The grouping will break on the first property that " +"doesn't have a prefix. The prefix is also removed from the property's name " +"in the Inspector dock.\n" +"If no [param prefix] is provided, then every following property will be " +"added to the group. The group ends when then next group or category is " +"defined. You can also force end a group by using this annotation with empty " +"strings for parameters, [code]@export_group(\"\", \"\")[/code].\n" +"Groups cannot be nested, use [annotation @export_subgroup] to add subgroups " +"within groups.\n" +"See also [constant PROPERTY_USAGE_GROUP].\n" +"[codeblock]\n" +"@export_group(\"Racer Properties\")\n" +"@export var nickname = \"Nick\"\n" +"@export var age = 26\n" +"\n" +"@export_group(\"Car Properties\", \"car_\")\n" +"@export var car_label = \"Speedy\"\n" +"@export var car_number = 3\n" +"\n" +"@export_group(\"\", \"\")\n" +"@export var ungrouped_number = 3\n" +"[/codeblock]" +msgstr "" +"为以下导出的属性定义一个新分组。分组有助于在检查器面板中组织属性。添加新分组" +"时可以选择性地提供 [param prefix] 前缀,分组将仅考虑具有此前缀的属性。分组将" +"在第一个没有该前缀的属性处结束。前缀也将从检查器面板中的属性名称中移除。\n" +"如果未提供 [param prefix],后续的每个属性都将添加到该分组中。定义下一个分组或" +"类别时,该分组结束。你还可以通过将此注解与空字符串的参数一起使用来强制结束分" +"组,[code]@export_group(\"\", \"\")[/code]。\n" +"分组不能嵌套,请使用 [annotation @export_subgroup] 在分组内添加子分组。\n" +"另见 [constant PROPERTY_USAGE_GROUP]。\n" +"[codeblock]\n" +"@export_group(\"Racer Properties\")\n" +"@export var nickname = \"Nick\"\n" +"@export var age = 26\n" +"\n" +"@export_group(\"Car Properties\", \"car_\")\n" +"@export var car_label = \"Speedy\"\n" +"@export var car_number = 3\n" +"\n" +"@export_group(\"\", \"\")\n" +"@export var ungrouped_number = 3\n" +"[/codeblock]" + +msgid "" "Export a [String] property with a large [TextEdit] widget instead of a " "[LineEdit]. This adds support for multiline content and makes it easier to " "edit large amount of text stored in the property.\n" @@ -1855,8 +1934,7 @@ msgid "" msgstr "" "将 [param x] 向下舍入(向负无穷大),返回不超过 [param x] 的最大整数。\n" "是 [method floor] 的类型安全版本,返回一个 [int]。\n" -"[b] 注意:[/b]这个函数与 [code]int(x)[/code] [i]不[/i] 一样,后者是向 0 取" -"整。" +"[b]注意:[/b]这个函数与 [code]int(x)[/code] [i]不[/i] 一样,后者是向 0 取整。" msgid "" "Returns the floating-point remainder of [param x] divided by [param y], " @@ -2120,12 +2198,12 @@ msgstr "" "is_same(arr_a, arr_a) # true\n" "is_same(arr_a, arr_b) # false\n" "[/codeblock]\n" -"[Varient] 值类型有:[code]null[/code],[bool],[int],[float],[String]," +"[Variant] 值类型有:[code]null[/code],[bool],[int],[float],[String]," "[StringName],[Vector2],[Vector2i],[Vector3],[Vector3i],[Vector4]," "[Vector4i],[Rect2],[Rect2i],[Transform2D],[Transform3D],[Plane]," "[Quaternion],[AABB],[Basis],[Projection],[Color],[NodePath],[RID]," "[Callable] 和 [Signal]。\n" -"[Varient] 引用类型有:[Object],[Dictionary],[Array],[PackedByteArray]," +"[Variant] 引用类型有:[Object],[Dictionary],[Array],[PackedByteArray]," "[PackedInt32Array],[PackedInt64Array],[PackedFloat32Array]," "[PackedFloat64Array],[PackedStringArray],[PackedVector2Array]," "[PackedVector3Array] 和 [PackedColorArray]。" @@ -2163,8 +2241,8 @@ msgid "" msgstr "" "通过 [param weight] 中定义的因子在两个值之间进行线性插值。要执行插值,[param " "weight] 应介于 [code]0.0[/code] 和 [code]1.0[/code] 之间(包含)。但是,超出" -"此范围的值也是允许的,并可用于执行[i]外推 [/i]。如果不需要,请在该函数的结果" -"上使用 [method clamp]。\n" +"此范围的值也是允许的,并可用于执行[i]外推[/i]。如果不需要,请在该函数的结果上" +"使用 [method clamp]。\n" "[param from] 和 [param to] 必须是同一类型。支持的类型:[int]、[float]、" "[Vector2]、[Vector3]、[Vector4]、[Color]、[Quaternion]、[Basis]。\n" "[codeblock]\n" @@ -2173,9 +2251,9 @@ msgstr "" "另请参阅执行本操作的逆操作的 [method inverse_lerp]。要使用 [method lerp] 执行" "缓动插值,请将其与 [method ease] 或 [method smoothstep] 结合使用。另见 " "[method remap],可将一系列连续的值映射到另一个值。\n" -"[b]注意:[/b]为了更好的类型安全,使用 [method lerpf]、[method Vector2.lerp]、" -"[method Vector3.lerp]、[method Vector4.lerp]、[method Color.lerp]、[method " -"Quaternion.slerp] 或 [method Basis.slerp]。" +"[b]注意:[/b]为了更好的类型安全,请使用 [method lerpf]、[method Vector2." +"lerp]、[method Vector3.lerp]、[method Vector4.lerp]、[method Color.lerp]、" +"[method Quaternion.slerp] 或 [method Basis.slerp]。" msgid "" "Linearly interpolates between two angles (in radians) by a [param weight] " @@ -2220,6 +2298,29 @@ msgstr "" "PI + 5 * TAU, weight)[/code] 则会顺时针插值。" msgid "" +"Linearly interpolates between two values by the factor defined in [param " +"weight]. To perform interpolation, [param weight] should be between " +"[code]0.0[/code] and [code]1.0[/code] (inclusive). However, values outside " +"this range are allowed and can be used to perform [i]extrapolation[/i]. If " +"this is not desired, use [method clampf] on the result of this function.\n" +"[codeblock]\n" +"lerpf(0, 4, 0.75) # Returns 3.0\n" +"[/codeblock]\n" +"See also [method inverse_lerp] which performs the reverse of this operation. " +"To perform eased interpolation with [method lerp], combine it with [method " +"ease] or [method smoothstep]." +msgstr "" +"通过 [param weight] 中定义的因子在两个值之间进行线性插值。要执行插值,[param " +"weight] 应介于 [code]0.0[/code] 和 [code]1.0[/code] 之间(包含)。但是,超出" +"此范围的值是允许的,并可用于执行 [i]外推[/i]。如果不需要,请对此函数的结果使" +"用 [method clampf]。\n" +"[codeblock]\n" +"lerpf(0, 4, 0.75) # 返回 3.0\n" +"[/codeblock]\n" +"另请参阅执行本操作的逆运算的 [method inverse_lerp]。要使用 [method lerp] 执行" +"缓动插值,请将其与 [method ease] 或 [method smoothstep] 结合使用。" + +msgid "" "Converts from linear energy to decibels (audio). This can be used to " "implement volume sliders that behave as expected (since volume isn't " "linear).\n" @@ -2246,6 +2347,33 @@ msgstr "" "[/codeblock]" msgid "" +"Returns the [url=https://en.wikipedia.org/wiki/Natural_logarithm]natural " +"logarithm[/url] of [param x] (base [url=https://en.wikipedia.org/wiki/" +"E_(mathematical_constant)][i]e[/i][/url], with [i]e[/i] being approximately " +"2.71828). This is the amount of time needed to reach a certain level of " +"continuous growth.\n" +"[b]Note:[/b] This is not the same as the \"log\" function on most " +"calculators, which uses a base 10 logarithm. To use base 10 logarithm, use " +"[code]log(x) / log(10)[/code].\n" +"[codeblock]\n" +"log(10) # Returns 2.302585\n" +"[/codeblock]\n" +"[b]Note:[/b] The logarithm of [code]0[/code] returns [code]-inf[/code], " +"while negative values return [code]-nan[/code]." +msgstr "" +"返回 [param x] 的[url=https://zh.wikipedia.org/zh-cn/" +"%E8%87%AA%E7%84%B6%E5%B0%8D%E6%95%B8]自然对数[/url](底数为 [url=https://zh." +"wikipedia.org/zh-cn/E_(%E6%95%B0%E5%AD%A6%E5%B8%B8%E6%95%B0)][i]e[/i][/url]," +"[i]e[/i] 约为 2.71828)。这是持续增长到一定程度所需的时间。\n" +"[b]注意:[/b]这个函数与大多数计算器上的对数“log”函数不同,他们适用的底数是 " +"10。要使用底数为 10 的对数,请使用 [code]log(x) / log(10)[/code]。\n" +"[codeblock]\n" +"log(10) # 返回 2.302585\n" +"[/codeblock]\n" +"[b]注意:[/b][code]0[/code] 的对数返回 [code]-inf[/code],负值返回 [code]-" +"nan[/code]。" + +msgid "" "Returns the maximum of the given numeric values. This function can take any " "number of arguments.\n" "[codeblock]\n" @@ -3028,6 +3156,40 @@ msgstr "" "[method Vector3i.sign]、[method Vector4.sign]、或 [method Vector4i.sign]。" msgid "" +"Returns [code]-1.0[/code] if [param x] is negative, [code]1.0[/code] if " +"[param x] is positive, and [code]0.0[/code] if [param x] is zero.\n" +"[codeblock]\n" +"signf(-6.5) # Returns -1.0\n" +"signf(0.0) # Returns 0.0\n" +"signf(6.5) # Returns 1.0\n" +"[/codeblock]" +msgstr "" +"如果 [param x] 为负,则返回 [code]-1.0[/code];如果 [param x] 为正,则返回 " +"[code]1.0[/code];如果 [param x] 为零,则返回 [code]0.0[/code]。\n" +"[codeblock]\n" +"signf(-6.5) # 返回 -1.0\n" +"signf(0.0) # 返回 0.0\n" +"signf(6.5) # 返回 1.0\n" +"[/codeblock]" + +msgid "" +"Returns [code]-1[/code] if [param x] is negative, [code]1[/code] if [param " +"x] is positive, and [code]0[/code] if if [param x] is zero.\n" +"[codeblock]\n" +"signi(-6) # Returns -1\n" +"signi(0) # Returns 0\n" +"signi(6) # Returns 1\n" +"[/codeblock]" +msgstr "" +"如果 [param x] 为负,则返回 [code]-1[/code];如果 [param x] 为正,则返回 " +"[code]1[/code];如果 [param x] 为零,则返回 [code]0[/code]。\n" +"[codeblock]\n" +"signi(-6) # 返回 -1\n" +"signi(0) # 返回 0\n" +"signi(6) # 返回 1\n" +"[/codeblock]" + +msgid "" "Returns the sine of angle [param angle_rad] in radians.\n" "[codeblock]\n" "sin(0.523599) # Returns 0.5\n" @@ -3134,6 +3296,39 @@ msgstr "" "[method Vector4i.snapped]。" msgid "" +"Returns the multiple of [param step] that is the closest to [param x]. This " +"can also be used to round a floating point number to an arbitrary number of " +"decimals.\n" +"A type-safe version of [method snapped], returning a [float].\n" +"[codeblock]\n" +"snappedf(32.0, 2.5) # Returns 32.5\n" +"snappedf(3.14159, 0.01) # Returns 3.14\n" +"[/codeblock]" +msgstr "" +"返回最接近 [param x] 的 [param step] 的倍数。也可用于将浮点数四舍五入为任意的" +"小数位数。\n" +"[method snapped] 的类型安全版本,返回一个 [float]。\n" +"[codeblock]\n" +"snappedf(32.0, 2.5) # 返回 32.5\n" +"snappedf(3.14159, 0.01) # 返回 3.14\n" +"[/codeblock]" + +msgid "" +"Returns the multiple of [param step] that is the closest to [param x].\n" +"A type-safe version of [method snapped], returning an [int].\n" +"[codeblock]\n" +"snappedi(53, 16) # Returns 48\n" +"snappedi(4096, 100) # Returns 4100\n" +"[/codeblock]" +msgstr "" +"返回最接近 [param x] 的 [param step] 的倍数。\n" +"[method snapped] 的类型安全版本,返回一个 [int]。\n" +"[codeblock]\n" +"snappedi(53, 16) # 返回 48\n" +"snappedi(4096, 100) # 返回 4100\n" +"[/codeblock]" + +msgid "" "Returns the square root of [param x], where [param x] is a non-negative " "number.\n" "[codeblock]\n" @@ -5097,6 +5292,9 @@ msgstr "将属性序列化并保存到场景文件中(默认)。" msgid "The property is shown in the [EditorInspector] (default)." msgstr "该属性将被显示在 [EditorInspector](默认)中。" +msgid "The property is excluded from the class reference." +msgstr "该属性排除在类参考手册之外。" + msgid "The property can be checked in the [EditorInspector]." msgstr "该属性可以在 [EditorInspector] 中被勾选。" @@ -5607,6 +5805,15 @@ msgstr "" "如果大小为负,可以用 [method abs] 修正。" msgid "" +"Returns [code]true[/code] if the AABBs are not equal.\n" +"[b]Note:[/b] Due to floating-point precision errors, consider using [method " +"is_equal_approx] instead, which is more reliable." +msgstr "" +"如果 AABB 不相等,则返回 [code]true[/code]。\n" +"[b]注意:[/b]由于浮点数精度误差,请考虑改用 [method is_equal_approx],会更可" +"靠。" + +msgid "" "Inversely transforms (multiplies) the [AABB] by the given [Transform3D] " "transformation matrix." msgstr "通过给定的 [Transform3D] 变换矩阵对该 [AABB] 进行逆变换(相乘)。" @@ -5688,8 +5895,8 @@ msgid "" "or [signal canceled] signals." msgstr "" "从对话框中移除 [param button]。但不释放该 [param button] 对象。[param " -"button] 必须是用 [method add_button] 或 [method add_cancel] 方法添加的 " -"[Button]。移除后,按下该 [param button] 将不再发出该对话框的 [signal " +"button] 必须是用 [method add_button] 或 [method add_cancel_button] 方法添加" +"的 [Button]。移除后,按下该 [param button] 将不再发出该对话框的 [signal " "custom_action] 或 [signal canceled] 信号。" msgid "Sets autowrapping for the text in the dialog." @@ -8735,12 +8942,12 @@ msgid "" "However, if the animation loops, an unintended discrete change may occur, so " "this is only useful for some simple use cases." msgstr "" -"检索具有 [member root_motion_track] 的位置轨道的混合值,作为一个 [Vector3]," -"可以在其他地方使用。\n" -"这在重视动画的初始键值的情况下很有用。\n" -"例如,如果一个只有单个键的动画 [code]Vector3(0, 0, 0)[/code] 在前一帧播放,然" -"后一个只有单个键的动画[code]Vector3(1, 0, 1)[/code] 在下一帧播放,其差异可以" -"被计算如下。\n" +"检索具有 [member root_motion_track] 的位置轨道的混合值,返回的是可以在其他地" +"方使用的 [Vector3]。\n" +"在想要遵循动画的初始动画帧值的情况下很有用。\n" +"例如,如果前一帧播放的是一个只有单个动画帧 [code]Vector3(0, 0, 0)[/code] 的动" +"画,然后下一帧播放的是一个只有单个动画帧[code]Vector3(1, 0, 1)[/code] 的动" +"画,它们之间的差异可以这样计算:\n" "[codeblocks]\n" "[gdscript]\n" "var prev_root_motion_position_accumulator: Vector3\n" @@ -8757,8 +8964,8 @@ msgstr "" " transform.origin += difference\n" "[/gdscript]\n" "[/codeblocks]\n" -"然而,如果动画循环播放,可能会发生意外的不连续变化,所以这种方法只在一些简单" -"的使用场景里好用。" +"不过,如果动画是循环播放的,就可能会发生预料之外的不连续变化,所以这只对一些" +"简单的情况有用。" msgid "" "Retrieve the motion delta of rotation with the [member root_motion_track] as " @@ -8872,15 +9079,15 @@ msgid "" "[/gdscript]\n" "[/codeblocks]" msgstr "" -"检索具有[member root_motion_track]的scale的运动,作为一个[Vector3],可以在其" -"他地方使用。\n" -"如果[member root_motion_track]不是一个类型为[constant Animation." -"TYPE_SCALE_3D]的轨迹的路径,返回[code]Vector3(0, 0, 0)[/code] 。\n" -"另见[成员root_motion_track]和[RootMotionView]。\n" -"最基本的例子是对[CharacterBody3D]应用缩放。\n" -"[codeblocks]。\n" +"获取 [member root_motion_track] 的缩放运动增量,类型为 [Vector3],可以在其他" +"地方使用。\n" +"如果 [member root_motion_track] 不是类型为 [constant Animation." +"TYPE_SCALE_3D] 的轨道的路径,则返回 [code]Vector3(0, 0, 0)[/code] 。\n" +"另见 [member root_motion_track] 和 [RootMotionView]。\n" +"最基本的例子是对 [CharacterBody3D] 应用缩放。\n" +"[codeblocks]\n" "[gdscript]\n" -"var current_scale:Vector3 = Vector3(1, 1, 1)\n" +"var current_scale: Vector3 = Vector3(1, 1, 1)\n" "var scale_accum: Vector3 = Vector3(1, 1, 1)\n" "\n" "func _process(delta):\n" @@ -9274,12 +9481,12 @@ msgid "" "[/gdscript]\n" "[/codeblocks]" msgstr "" -"当收到的 [param area] 的 [Shape2D] 进入这个区域的形状时发出。要求[成员监控]被" -"设置为 [code]true[/code] 。\n" +"当收到的 [param area] 的 [Shape2D] 进入这个区域的形状时发出。要求 [member " +"monitoring] 被设置为 [code]true[/code] 。\n" "[param local_shape_index] 和 [param area_shape_index] 分别包含来自这个区域和" "另一个区域的交互形状的索引。[param area_rid] 包含另一个区域的 [RID]。这些值可" "以与 [PhysicsServer2D] 一起使用。\n" -"[b]从形状索引中获取[/b] [CollisionShape2D][b]节点的例子。[/b]\n" +"[b]从形状索引中获取[/b] [CollisionShape2D][b]节点的例子:[/b]\n" "[codeblocks]\n" "[gdscript]\n" "var other_shape_owner = area.shape_find_owner( area_shape_index)\n" @@ -9939,11 +10146,11 @@ msgid "" "[b]Note:[/b] For an empty array, this method always returns [code]false[/" "code]." msgstr "" -"对数组中的每个元素调用提供的 [Callable],如果 [Callable] 为数组中的 [i] 一个" -"或多个 [/i] 元素返回 [code]true[/code],则返回 [code]true[/code]。如果 " +"对数组中的每个元素调用提供的 [Callable],如果 [Callable] 为数组中的[i] 一个或" +"多个[/i]元素返回 [code]true[/code],则返回 [code]true[/code]。如果 " "[Callable] 为数组中的所有元素返回 [code]false[/code],则此方法返回 " "[code]false[/code]。\n" -"可调用的方法应采用一个 [Variant] 参数(当前数组元素)并返回一个布尔值。\n" +"可调用体的方法应接受一个 [Variant] 参数(当前数组元素)并返回一个布尔值。\n" "[codeblock]\n" "func _ready():\n" " print([6, 10, 6].any(greater_than_5)) # 输出 True(3 个元素评估为 " @@ -14583,9 +14790,9 @@ msgid "" msgstr "" "材质的基础颜色。\n" "[b]注意:[/b]如果 [member detail_enabled] 为 [code]true[/code] 并且指定了 " -"[member detail_albedo] 纹理,则 [member detail_albedo_color] 将[i]不[/i]会调" -"制细节纹理。这可用于通过不指定反照率纹理并使用透明 [member detail_albedo] 纹" -"理,来为材质的部分区域着色。" +"[member detail_albedo] 纹理,则 [member albedo_color] [i]不会[/i]调制细节纹" +"理。可用于通过不指定反照率纹理并使用透明 [member detail_albedo] 纹理,来为材" +"质的部分区域着色。" msgid "" "Texture to multiply by [member albedo_color]. Used for basic texturing of " @@ -15487,6 +15694,16 @@ msgid "Repeat flags for the texture. See [enum TextureFilter] for options." msgstr "纹理的重复标志。可选项见 [enum TextureFilter]。" msgid "" +"The material's transparency mode. Some transparency modes will disable " +"shadow casting. Any transparency mode other than [constant " +"TRANSPARENCY_DISABLED] has a greater performance impact compared to opaque " +"rendering. See also [member blend_mode]." +msgstr "" +"该材质的透明模式。一些透明模式将禁用阴影投射。除了 [constant " +"TRANSPARENCY_DISABLED] 以外的任何透明模式都会对性能产生较大的影响。另见 " +"[member blend_mode]。" + +msgid "" "If [code]true[/code], enables parts of the shader required for " "[GPUParticles3D] trails to function. This also requires using a mesh with " "appropriate skinning, such as [RibbonTrailMesh] or [TubeTrailMesh]. Enabling " @@ -17210,7 +17427,7 @@ msgid "" "alignment. If centered, text will draw on top of the icon." msgstr "" "指定图标应该在按钮上左对齐、右对齐、还是居中。请使用与文本对齐相同的 [enum " -"TextAlign] 常量。如果居中,则文本将被绘制在图标之上。" +"HorizontalAlignment] 常量。如果居中,则文本将被绘制在图标之上。" msgid "" "Language code used for line-breaking and text shaping algorithms, if left " @@ -17780,7 +17997,7 @@ msgid "" "[code]false[/code]." msgstr "" "将相机的位置立即设置为其当前平滑的目标位置。\n" -"当 [member smoothing_enabled] 为 [code]false[/code] 时,本方法无效。" +"当 [member position_smoothing_enabled] 为 [code]false[/code] 时,本方法无效。" msgid "" "Sets the specified [enum Side]'s margin. See also [member " @@ -19596,6 +19813,32 @@ msgid "" "The rendering layers in which this [CanvasItem] responds to [Light2D] nodes." msgstr "该 [CanvasItem] 的渲染层,用于响应 [Light2D] 节点。" +msgid "The material applied to this [CanvasItem]." +msgstr "应用于这个 [CanvasItem] 的材质。" + +msgid "" +"The color applied to this [CanvasItem]. This property does affect child " +"[CanvasItem]s, unlike [member self_modulate] which only affects the node " +"itself." +msgstr "" +"应用于这个 [CanvasItem] 的颜色。这个属性会影响子级 [CanvasItem],与只会影响节" +"点自身的 [member self_modulate] 不同。" + +msgid "" +"The color applied to this [CanvasItem]. This property does [b]not[/b] affect " +"child [CanvasItem]s, unlike [member modulate] which affects both the node " +"itself and its children.\n" +"[b]Note:[/b] Internal children (e.g. sliders in [ColorPicker] or tab bar in " +"[TabContainer]) are also not affected by this property (see " +"[code]include_internal[/code] parameter of [method Node.get_child] and other " +"similar methods)." +msgstr "" +"应用于这个 [CanvasItem] 的颜色。这个属性[b]不会[/b]影响子级 [CanvasItem],与" +"会同时影响节点自身和子级的 [member modulate] 不同。\n" +"[b]注意:[/b]内部子节点(例如 [ColorPicker] 中的滑动条、[TabContainer] 中的选" +"项卡栏)也不受这个属性的影响(见 [method Node.get_child] 等类似方法的 " +"[code]include_internal[/code] 参数)。" + msgid "If [code]true[/code], the object draws behind its parent." msgstr "如果为 [code]true[/code],则对象在其父对象后面绘制。" @@ -20227,6 +20470,14 @@ msgid "2D Kinematic Character Demo" msgstr "2D 运动学角色演示" msgid "" +"Allows to manually apply a snap to the floor regardless of the body's " +"velocity. This function does nothing when [method is_on_floor] returns " +"[code]true[/code]." +msgstr "" +"允许手动应用向地板的吸附,无论该物体的速度多大。[method is_on_floor] 返回 " +"[code]true[/code] 时这个函数什么都不做。" + +msgid "" "Returns the floor's collision angle at the last collision point according to " "[param up_direction], which is [code]Vector2.UP[/code] by default. This " "value is always positive and only valid after calling [method " @@ -20286,6 +20537,47 @@ msgstr "" "的 [member velocity] 相对。" msgid "" +"Returns a [KinematicCollision2D], which contains information about a " +"collision that occurred during the last call to [method move_and_slide]. " +"Since the body can collide several times in a single call to [method " +"move_and_slide], you must specify the index of the collision in the range 0 " +"to ([method get_slide_collision_count] - 1).\n" +"[b]Example usage:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"for i in get_slide_collision_count():\n" +" var collision = get_slide_collision(i)\n" +" print(\"Collided with: \", collision.get_collider().name)\n" +"[/gdscript]\n" +"[csharp]\n" +"for (int i = 0; i < GetSlideCollisionCount(); i++)\n" +"{\n" +" KinematicCollision2D collision = GetSlideCollision(i);\n" +" GD.Print(\"Collided with: \", (collision.GetCollider() as Node).Name);\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回 [KinematicCollision2D],包含最近一次调用 [method move_and_slide] 时发生" +"的碰撞信息。因为单次调用 [method move_and_slide] 可能发生多次碰撞,所以你必须" +"指定碰撞索引,范围为 0 到 ([method get_slide_collision_count] - 1)。\n" +"[b]用法示例:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"for i in get_slide_collision_count():\n" +"var collision = get_slide_collision(i)\n" +"print(\"碰到了:\", collision.get_collider().name)\n" +"[/gdscript]\n" +"[csharp]\n" +"for (int i = 0; i < GetSlideCollisionCount(); i++)\n" +"{\n" +" KinematicCollision2D collision = GetSlideCollision(i);\n" +" GD.Print(\"碰到了:\", (collision.GetCollider() as Node).Name);\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" "Returns the number of times the body collided and changed direction during " "the last call to [method move_and_slide]." msgstr "" @@ -20419,6 +20711,27 @@ msgstr "" "角度(单位为弧度)。默认值等于 45 度。" msgid "" +"Sets a snapping distance. When set to a value different from [code]0.0[/" +"code], the body is kept attached to slopes when calling [method " +"move_and_slide]. The snapping vector is determined by the given distance " +"along the opposite direction of the [member up_direction].\n" +"As long as the snapping vector is in contact with the ground and the body " +"moves against [member up_direction], the body will remain attached to the " +"surface. Snapping is not applied if the body moves along [member " +"up_direction], meaning it contains vertical rising velocity, so it will be " +"able to detach from the ground when jumping or when the body is pushed up by " +"something. If you want to apply a snap without taking into account the " +"velocity, use [method apply_floor_snap]." +msgstr "" +"设置吸附距离。设为非 [code]0.0[/code] 值时,该物体在调用 [method " +"move_and_slide] 时会保持附着到斜坡上。吸附向量会根据给定的距离和 [member " +"up_direction] 反方向决定。\n" +"只要吸附向量与地面有接触,该物体就会逆 [member up_direction] 移动,保持附着到" +"表面。如果该物体是沿着 [member up_direction] 移动的,则不会应用吸附,这样跳跃" +"时或者被其他物体推动时就能够不再附着地面。如果想要在应用吸附时无视速度,请使" +"用 [method apply_floor_snap]。" + +msgid "" "If [code]true[/code], the body will not slide on slopes when calling [method " "move_and_slide] when the body is standing still.\n" "If [code]false[/code], the body will slide on floor's slopes when [member " @@ -22102,7 +22415,7 @@ msgid "" "Based on [param value], enables or disables the specified layer in the " "[member collision_mask], given a [param layer_number] between 1 and 32." msgstr "" -"根据 [param value],启用或禁用 [member collision_layer] 中指定的层,给定的 " +"根据 [param value],启用或禁用 [member collision_mask] 中指定的层,给定的 " "[param layer_number] 应在 1 和 32 之间。" msgid "Returns the [code]owner_id[/code] of the given shape." @@ -22482,6 +22795,28 @@ msgstr "" "体的影响。\n" "当该 [Node] 再次被处理时,自动将 [PhysicsBody3D] 设置回其原始模式。" +msgid "Node that represents a 2D collision polygon." +msgstr "代表 2D 碰撞多边形的节点。" + +msgid "" +"Provides a 2D collision polygon to a [CollisionObject2D] parent. Polygons " +"can be drawn in the editor or specified by a list of vertices.\n" +"Depending on the build mode, this node effectively provides several convex " +"shapes (by convex decomposition of the polygon) or a single concave shape " +"made of the polygon's segments.\n" +"In the editor, a [CollisionPolygon2D] can be generated from a [Sprite2D]'s " +"outline by selecting a [Sprite2D] node, going to the [b]Sprite2D[/b] menu at " +"the top of the 2D editor viewport then choosing [b]Create CollisionPolygon2D " +"Sibling[/b]." +msgstr "" +"为 [CollisionObject2D] 父节点提供 2D 碰撞多边形。多边形可以在编辑器中绘制,或" +"使用顶点列表指定。\n" +"根据构建模式的不同,这个节点可能会提供一些凸面形状(将该多边形进行凸面分解)" +"也可能只提供一个由多边形线段组成的凹面形状。\n" +"在编辑器中,可以从 [Sprite2D] 的轮廓生成 [CollisionPolygon2D],方法是选中 " +"[Sprite2D] 节点,转到 2D 编辑器视图顶部的 [b]Sprite2D[/b] 菜单,然后选择[b]创" +"建 CollisionPolygon2D 兄弟节点[/b]。" + msgid "Collision build mode. Use one of the [enum BuildMode] constants." msgstr "碰撞构建模式。使用 [enum BuildMode] 常量之一。" @@ -22507,6 +22842,70 @@ msgstr "" "用于单向碰撞的边距(以像素为单位)。较高的值将使形状更厚,并且对于以高速进入" "多边形的对撞机来说效果更好。" +msgid "" +"The polygon's list of vertices. Each point will be connected to the next, " +"and the final point will be connected to the first.\n" +"[b]Warning:[/b] The returned value is a clone of the [PackedVector2Array], " +"not a reference." +msgstr "" +"该多边形的顶点列表。每个点都与下一个点相连,最后一个点与第一个点相连。\n" +"[b]警告:[/b]返回值是 [PackedVector2Array] 的副本,不是引用。" + +msgid "" +"Collisions will include the polygon and its contained area. In this mode the " +"node has the same effect as several [ConvexPolygonShape2D] nodes, one for " +"each convex shape in the convex decomposition of the polygon (but without " +"the overhead of multiple nodes)." +msgstr "" +"碰撞包含多边形及其内部区域。在这个模式下,该节点的效果与使用若干 " +"[ConvexPolygonShape2D] 节点相同,其中的每个节点都包含该多边形凸分解后的凸形状" +"(但不会有使用多个节点的负担)。" + +msgid "" +"Collisions will only include the polygon edges. In this mode the node has " +"the same effect as a single [ConcavePolygonShape2D] made of segments, with " +"the restriction that each segment (after the first one) starts where the " +"previous one ends, and the last one ends where the first one starts (forming " +"a closed but hollow polygon)." +msgstr "" +"碰撞经包含多边形的边缘。在这个模式下,该节点的效果与单个由若干线段组成的 " +"[ConcavePolygonShape2D] 相同,其中(第一条以后的)每条线段都从上一条的终点开" +"始,最后一条线段在第一条的起点结束(构成闭合但中空的多边形)。" + +msgid "" +"Node that represents a 3D collision polygon, given by the thickening of a 2D " +"polygon in the local XY plane along the local Z axis." +msgstr "" +"代表 3D 碰撞多边形的节点,使用局部 XY 平面上的 2D 多边形及局部 Z 轴上的厚度来" +"定义。" + +msgid "" +"Provides a 3D collision polygon to a [CollisionObject3D] parent, by " +"thickening a 2D (convex or concave) polygon in the local XY plane along the " +"local Z axis. The 2D polygon in the local XY plane can be drawn in the " +"editor or specified by a list of vertices. That 2D polygon is thickened " +"evenly in the local Z and -Z directions.\n" +"This node has the same effect as several [ConvexPolygonShape3D] nodes, " +"created by thickening the 2D convex polygons in the convex decomposition of " +"the given 2D polygon (but without the overhead of multiple nodes).\n" +"[b]Warning:[/b] A non-uniformly scaled CollisionPolygon3D node will probably " +"not function as expected. Please make sure to keep its scale uniform (i.e. " +"the same on all axes), and change its [member polygon]'s vertices instead." +msgstr "" +"为 [CollisionObject3D] 父节点提供 3D 碰撞多边形,使用局部 XY 平面上的 2D 多边" +"形(凹凸均可)及局部 Z 轴上的厚度来定义。局部 XY 屏幕中的 2D 多边形可以在编辑" +"器中绘制,也可以由顶点列表指定。该 2D 多边形会在局部 Z 和 -Z 方向上均匀加" +"厚。\n" +"这个节点的效果与使用若干 [ConvexPolygonShape3D] 节点相同,其中的每个节点都包" +"含将该 2D 多边形凸分解后的凸多边形(但不会有使用多个节点的负担)。\n" +"[b]警告:[/b]非均匀缩放的 CollisionPolygon3D 节点可能无法按预期运行。请确保保" +"持其比例统一(即在所有轴上相同),并改为更改其 [member polygon] 的顶点。" + +msgid "" +"Length that the resulting collision extends in either direction " +"perpendicular to its 2D polygon." +msgstr "产生的碰撞沿着与 2D 多边形垂直的任意方向深入的长度。" + msgid "If [code]true[/code], no collision will be produced." msgstr "如果为 [code]true[/code],将不会产生碰撞。" @@ -22515,8 +22914,33 @@ msgid "" "margin] for more details." msgstr "生成的 [Shape3D] 的碰撞边距。详情见 [member Shape3D.margin]。" +msgid "" +"Array of vertices which define the 2D polygon in the local XY plane.\n" +"[b]Note:[/b] The returned value is a copy of the original. Methods which " +"mutate the size or properties of the return value will not impact the " +"original polygon. To change properties of the polygon, assign it to a " +"temporary variable and make changes before reassigning the [code]polygon[/" +"code] member." +msgstr "" +"顶点数组,定义局部 XY 平面上的 2D 多边形。\n" +"[b]注意:[/b]返回值为原始值的副本。修改返回值大小或属性的方法不会影响原始的多" +"边形。要修改该多边形的属性,请先将其赋值给临时变量,修改完成后再重新赋值给 " +"[code]polygon[/code] 成员。" + msgid "Node that represents collision shape data in 2D space." -msgstr "表示2D空间中的碰撞形状数据的节点。" +msgstr "表示 2D 空间中的碰撞形状数据的节点。" + +msgid "" +"Editor facility for creating and editing collision shapes in 2D space. Set " +"the [member shape] property to configure the shape.\n" +"You can use this node to represent all sorts of collision shapes, for " +"example, add this to an [Area2D] to give it a detection shape, or add it to " +"a [PhysicsBody2D] to create a solid object." +msgstr "" +"用于创建和编辑 2D 空间中碰撞形状的编辑器设施。请将 [member shape] 属性设置为" +"要配置的形状。\n" +"你可以使用这个节点来代表各种碰撞形状,例如,将这个节点加到 [Area2D] 节点可以" +"给它检测形状,将这个节点加到 [PhysicsBody2D] 可以创建实体对象。" msgid "Physics introduction" msgstr "物理介绍" @@ -22564,6 +22988,24 @@ msgid "Node that represents collision shape data in 3D space." msgstr "表示 3D 空间中的碰撞形状数据的节点。" msgid "" +"Editor facility for creating and editing collision shapes in 3D space. Set " +"the [member shape] property to configure the shape.\n" +"You can use this node to represent all sorts of collision shapes, for " +"example, add this to an [Area3D] to give it a detection shape, or add it to " +"a [PhysicsBody3D] to create a solid object.\n" +"[b]Warning:[/b] A non-uniformly scaled CollisionShape3D node will probably " +"not function as expected. Please make sure to keep its scale uniform (i.e. " +"the same on all axes), and change the size of its [member shape] resource " +"instead." +msgstr "" +"用于创建和编辑 3D 空间中碰撞形状的编辑器设施。请将 [member shape] 属性设置为" +"要配置的形状。\n" +"你可以使用这个节点来代表各种碰撞形状,例如,将这个节点加到 [Area3D] 节点可以" +"给它检测形状,将这个节点加到 [PhysicsBody3D] 可以创建实体对象。\n" +"[b]警告:[/b]非均匀缩放的 CollisionShape3D 节点可能无法按预期运行。请确保保持" +"其比例统一(即在所有轴上相同),并改为更改其 [member shape] 资源的大小。" + +msgid "" "Sets the collision shape's shape to the addition of all its convexed " "[MeshInstance3D] siblings geometry." msgstr "将碰撞形状的形状设置为其所有凸面 [MeshInstance3D] 兄弟几何体的相加。" @@ -24254,112 +24696,13 @@ msgid "6-sided texture typically used in 3D rendering, optionally compressed." msgstr "6 面纹理,通常用于 3D 渲染,可选择压缩。" msgid "" -"A cubemap that is loaded from a [code].ccube[/code] file. This file format " -"is internal to Godot; it is created by importing other image formats with " -"the import system. [CompressedCubemap] can use one of 4 compresson methods:\n" -"- Uncompressed (uncompressed on the GPU)\n" -"- Lossless (WebP or PNG, uncompressed on the GPU)\n" -"- Lossy (WebP, uncompressed on the GPU)\n" -"- VRAM Compressed (compressed on the GPU)\n" -"Only [b]VRAM Compressed[/b] actually reduces the memory usage on the GPU. " -"The [b]Lossless[/b] and [b]Lossy[/b] compression methods will reduce the " -"required storage on disk, but they will not reduce memory usage on the GPU " -"as the texture is sent to the GPU uncompressed.\n" -"Using [b]VRAM Compressed[/b] also improves loading times, as VRAM-compressed " -"textures are faster to load compared to textures using lossless or lossy " -"compression. VRAM compression can exhibit noticeable artifacts and is " -"intended to be used for 3D rendering, not 2D.\n" -"See [Cubemap] for a general description of cubemaps." -msgstr "" -"一种从 [code].ccube[/code] 文件加载的立方体贴图。这种文件格式是 Godot 内部使" -"用的;它是通过导入系统导入其他图像格式创建的。[CompressedCubemap] 可以使用 4 " -"种压缩方法中的一种:\n" -"- 无压缩(在 GPU 上不压缩)\n" -"- 无损(WebP 或 PNG,在 GPU 上不压缩)\n" -"- 有损(WebP,在 GPU 上不压缩)\n" -"- VRAM 压缩(在 GPU 上压缩)\n" -"只有 [b]VRAM 压缩[/b]实际上减少了 GPU 上的内存使用。[b]无损[/b]和[b]有损[/b]" -"压缩方法将减少磁盘上所需的存储空间,但它们不会减少 GPU 上的内存使用,因为纹理" -"未经压缩地被发送到 GPU。\n" -"使用 [b]VRAM 压缩[/b]还可以缩短加载时间,因为与使用无损或有损压缩的纹理相比," -"VRAM 压缩的纹理加载速度更快。VRAM 压缩会表现出明显的伪影,并且它旨在用于 3D " -"渲染,而不是 2D。\n" -"有关立方体贴图的一般描述,请参阅 [Cubemap]。" - -msgid "" "Array of 6-sided textures typically used in 3D rendering, optionally " "compressed." msgstr "6 面纹理的数组,通常用于 3D 渲染,可选择压缩。" -msgid "" -"A cubemap array that is loaded from a [code].ccubearray[/code] file. This " -"file format is internal to Godot; it is created by importing other image " -"formats with the import system. [CompressedCubemapArray] can use one of 4 " -"compresson methods:\n" -"- Uncompressed (uncompressed on the GPU)\n" -"- Lossless (WebP or PNG, uncompressed on the GPU)\n" -"- Lossy (WebP, uncompressed on the GPU)\n" -"- VRAM Compressed (compressed on the GPU)\n" -"Only [b]VRAM Compressed[/b] actually reduces the memory usage on the GPU. " -"The [b]Lossless[/b] and [b]Lossy[/b] compression methods will reduce the " -"required storage on disk, but they will not reduce memory usage on the GPU " -"as the texture is sent to the GPU uncompressed.\n" -"Using [b]VRAM Compressed[/b] also improves loading times, as VRAM-compressed " -"textures are faster to load compared to textures using lossless or lossy " -"compression. VRAM compression can exhibit noticeable artifacts and is " -"intended to be used for 3D rendering, not 2D.\n" -"See [CubemapArray] for a general description of cubemap arrays." -msgstr "" -"一种从 [code].ccubearray[/code] 文件加载的立方体贴图数组。这种文件格式是 " -"Godot 内部使用的;它是通过导入系统导入其他图像格式创建的。" -"[CompressedCubemapArray] 可以使用 4 种压缩方法中的一种:\n" -"- 无压缩(在 GPU 上不压缩)\n" -"- 无损(WebP 或 PNG,在 GPU 上不压缩)\n" -"- 有损(WebP,在 GPU 上不压缩)\n" -"- VRAM 压缩(在 GPU 上压缩)\n" -"只有 [b]VRAM 压缩[/b]实际上减少了 GPU 上的内存使用。[b]无损[/b]和[b]有损[/b]" -"压缩方法将减少磁盘上所需的存储空间,但它们不会减少 GPU 上的内存使用,因为纹理" -"未经压缩地被发送到 GPU。\n" -"使用 [b]VRAM 压缩[/b]还可以缩短加载时间,因为与使用无损或有损压缩的纹理相比," -"VRAM 压缩的纹理加载速度更快。VRAM 压缩会表现出明显的伪影,并且它旨在用于 3D " -"渲染,而不是 2D。\n" -"有关立方体贴图数组的一般说明,请参阅 [CubemapArray]。" - msgid "Texture with 2 dimensions, optionally compressed." msgstr "二维纹理,可选择压缩。" -msgid "" -"A texture that is loaded from a [code].ctex[/code] file. This file format is " -"internal to Godot; it is created by importing other image formats with the " -"import system. [CompressedTexture2D] can use one of 4 compression methods " -"(including a lack of any compression):\n" -"- Uncompressed (uncompressed on the GPU)\n" -"- Lossless (WebP or PNG, uncompressed on the GPU)\n" -"- Lossy (WebP, uncompressed on the GPU)\n" -"- VRAM Compressed (compressed on the GPU)\n" -"Only [b]VRAM Compressed[/b] actually reduces the memory usage on the GPU. " -"The [b]Lossless[/b] and [b]Lossy[/b] compression methods will reduce the " -"required storage on disk, but they will not reduce memory usage on the GPU " -"as the texture is sent to the GPU uncompressed.\n" -"Using [b]VRAM Compressed[/b] also improves loading times, as VRAM-compressed " -"textures are faster to load compared to textures using lossless or lossy " -"compression. VRAM compression can exhibit noticeable artifacts and is " -"intended to be used for 3D rendering, not 2D." -msgstr "" -"一种从 [code].ctex[/code] 文件加载的纹理。这种文件格式是 Godot 内部使用的;它" -"是通过导入系统导入其他图像格式创建的。[CompressedTexture2D] 可以使用 4 种压缩" -"方法中的一种(包括没有任何压缩):\n" -"- 无压缩(在 GPU 上不压缩)\n" -"- 无损(WebP 或 PNG,在 GPU 上不压缩)\n" -"- 有损(WebP,在 GPU 上不压缩)\n" -"- VRAM 压缩(在 GPU 上压缩)\n" -"只有 [b]VRAM 压缩[/b]实际上减少了 GPU 上的内存使用。[b]无损[/b]和[b]有损[/b]" -"压缩方法将减少磁盘上所需的存储空间,但它们不会减少 GPU 上的内存使用,因为纹理" -"未经压缩地被发送到 GPU。\n" -"使用 [b]VRAM 压缩[/b]还可以缩短加载时间,因为与使用无损或有损压缩的纹理相比," -"VRAM 压缩的纹理加载速度更快。VRAM 压缩会表现出明显的伪影,并且它旨在用于 3D " -"渲染,而不是 2D。" - msgid "Loads the texture from the specified [param path]." msgstr "从指定的路径 [param path] 加载纹理。" @@ -24369,40 +24712,6 @@ msgstr "该 [CompressedTexture2D] 的文件路径,指向 [code].ctex[/code] msgid "Array of 2-dimensional textures, optionally compressed." msgstr "二维纹理的数组,可选择压缩。" -msgid "" -"A texture array that is loaded from a [code].ctexarray[/code] file. This " -"file format is internal to Godot; it is created by importing other image " -"formats with the import system. [CompressedTexture2DArray] can use one of 4 " -"compresson methods:\n" -"- Uncompressed (uncompressed on the GPU)\n" -"- Lossless (WebP or PNG, uncompressed on the GPU)\n" -"- Lossy (WebP, uncompressed on the GPU)\n" -"- VRAM Compressed (compressed on the GPU)\n" -"Only [b]VRAM Compressed[/b] actually reduces the memory usage on the GPU. " -"The [b]Lossless[/b] and [b]Lossy[/b] compression methods will reduce the " -"required storage on disk, but they will not reduce memory usage on the GPU " -"as the texture is sent to the GPU uncompressed.\n" -"Using [b]VRAM Compressed[/b] also improves loading times, as VRAM-compressed " -"textures are faster to load compared to textures using lossless or lossy " -"compression. VRAM compression can exhibit noticeable artifacts and is " -"intended to be used for 3D rendering, not 2D.\n" -"See [Texture2DArray] for a general description of texture arrays." -msgstr "" -"一种从 [code].ctexarray[/code] 文件加载的纹理数组。这种文件格式是 Godot 内部" -"使用的;它是通过导入系统导入其他图像格式创建的。[CompressedTexture2DArray] 可" -"以使用 4 种压缩方法中的一种:\n" -"- 无压缩(在 GPU 上不压缩)\n" -"- 无损(WebP 或 PNG,在 GPU 上不压缩)\n" -"- 有损(WebP,在 GPU 上不压缩)\n" -"- VRAM 压缩(在 GPU 上压缩)\n" -"只有 [b]VRAM 压缩[/b]实际上减少了 GPU 上的内存使用。[b]无损[/b]和[b]有损[/b]" -"压缩方法将减少磁盘上所需的存储空间,但它们不会减少 GPU 上的内存使用,因为纹理" -"未经压缩地被发送到 GPU。\n" -"使用 [b]VRAM 压缩[/b]还可以缩短加载时间,因为与使用无损或有损压缩的纹理相比," -"VRAM 压缩的纹理加载速度更快。VRAM 压缩会表现出明显的伪影,并且它旨在用于 3D " -"渲染,而不是 2D。\n" -"有关纹理数组的一般描述,请参阅 [Texture2DArray]。" - msgid "Texture with 3 dimensions, optionally compressed." msgstr "三维纹理,可选择压缩。" @@ -24432,38 +24741,6 @@ msgstr "该 [CompressedTexture3D] 的文件路径,指向 [code].ctex3d[/code] msgid "Base class for texture arrays that can optionally be compressed." msgstr "可压缩纹理数组的基类。" -msgid "" -"A texture array that is loaded from a [code].ctexarray[/code] file. This " -"file format is internal to Godot; it is created by importing other image " -"formats with the import system. [CompressedTexture2D] can use one of 4 " -"compresson methods:\n" -"- Uncompressed (uncompressed on the GPU)\n" -"- Lossless (WebP or PNG, uncompressed on the GPU)\n" -"- Lossy (WebP, uncompressed on the GPU)\n" -"- VRAM Compressed (compressed on the GPU)\n" -"Only [b]VRAM Compressed[/b] actually reduces the memory usage on the GPU. " -"The [b]Lossless[/b] and [b]Lossy[/b] compression methods will reduce the " -"required storage on disk, but they will not reduce memory usage on the GPU " -"as the texture is sent to the GPU uncompressed.\n" -"Using [b]VRAM Compressed[/b] also improves loading times, as VRAM-compressed " -"textures are faster to load compared to textures using lossless or lossy " -"compression. VRAM compression can exhibit noticeable artifacts and is " -"intended to be used for 3D rendering, not 2D." -msgstr "" -"一种从 [code].ctexarray[/code] 文件加载的纹理数组。这种文件格式是 Godot 内部" -"使用的;它是通过导入系统导入其他图像格式创建的。[CompressedTexture2D] 可以使" -"用 4 种压缩方法中的一种:\n" -"- 无压缩(在 GPU 上不压缩)\n" -"- 无损(WebP 或 PNG,在 GPU 上不压缩)\n" -"- 有损(WebP,在 GPU 上不压缩)\n" -"- VRAM 压缩(在 GPU 上压缩)\n" -"只有 [b]VRAM 压缩[/b]实际上减少了 GPU 上的内存使用。[b]无损[/b]和[b]有损[/b]" -"压缩方法将减少磁盘上所需的存储空间,但它们不会减少 GPU 上的内存使用,因为纹理" -"未经压缩地被发送到 GPU。\n" -"使用 [b]VRAM 压缩[/b]还可以缩短加载时间,因为与使用无损或有损压缩的纹理相比," -"VRAM 压缩的纹理加载速度更快。VRAM 压缩会表现出明显的伪影,并且它旨在用于 3D " -"渲染,而不是 2D。" - msgid "Loads the texture at [param path]." msgstr "从路径 [param path] 加载纹理。" @@ -24474,8 +24751,167 @@ msgid "Concave polygon shape resource for 2D physics." msgstr "用于 2D 物理的凹多边形形状资源。" msgid "" +"2D concave polygon shape to be added as a [i]direct[/i] child of a " +"[PhysicsBody2D] or [Area2D] using a [CollisionShape2D] node.\n" +"The shape consists of a collection of line segments, and as such it does not " +"include any \"inside\" that the segments might be enclosing. If the segments " +"do enclose anything, then the shape is [i]hollow[/i], as opposed to a " +"[ConvexPolygonShape2D] which is solid. See also [CollisionPolygon2D].\n" +"Being made out of line segments, this shape is the most freely configurable " +"single 2D shape. It can be used to form (hollow) polygons of any nature, " +"convex or concave.\n" +"[b]Note:[/b] When used for collision, [b]ConcavePolygonShape2D[/b] is " +"intended to work with static [PhysicsBody2D] nodes like [StaticBody2D] and " +"is not recommended to use with [RigidBody2D] nodes in a mode other than " +"Static. A [CollisionPolygon2D] in convex decomposition mode (solids) or " +"several convex objects are advised for that instead. Otherwise, a concave " +"polygon 2D shape is better suited for static bodies.\n" +"[b]Warning:[/b] The nature of this shape makes it extra prone to being " +"tunneled through by (small) fast physics bodies. For example, consider a " +"(small) rigid body [i]Ball[/i] traveling toward a static body [i]Box[/i] at " +"high speed. If the box uses a [b]ConcavePolygonShape2D[/b] consisting of " +"four segments, then the ball might end up inside the box or tunnel all the " +"way through the box, if it goes fast enough. This is (partly) because the " +"ball can only collide against the individual segments of the hollow box. In " +"interactions with rigid bodies tunneling can be avoided by enabling " +"continuous collision detection on the rigid body.\n" +"[b]Warning:[/b] Using this shape for an [Area2D] (via a [CollisionShape2D] " +"node) may give unexpected results: the area will only detect collisions with " +"the segments in the [ConcavePolygonShape2D] (and not with any \"inside\" of " +"the shape, for example).\n" +"[b]Performance:[/b] Due to its complexity, [ConcavePolygonShape2D] is the " +"slowest collision shape to check collisions against. Its use should " +"generally be limited to level geometry. For convex geometry, using " +"[ConvexPolygonShape2D] will perform better. For dynamic physics bodies that " +"need concave collision, several [ConvexPolygonShape2D]s can be used to " +"represent its collision by using convex decomposition; see " +"[ConvexPolygonShape2D]'s documentation for instructions. However, consider " +"using primitive collision shapes such as [CircleShape2D] or " +"[RectangleShape2D] first." +msgstr "" +"需要使用 [CollisionShape2D] 节点添加为 [PhysicsBody2D] 或 [Area2D] 的[i]直接" +"[/i]子节点的 2D 凹多边形形状。\n" +"该形状由一组线段构成,本身不包含由这些线段所包围的“内部”区域。如果这些线段确" +"实包围了某个区域,那么该形状是[i]空心[/i]的,与实心的 [ConvexPolygonShape2D] " +"相反。另见 [CollisionPolygon2D]。\n" +"由于是线段构成的,这种形状是最能够自由配置的独立 2D 形状。可以用来构成任何" +"(空心的)多边形,包括凸多边形和凹多边形。\n" +"[b]注意:[/b]用于碰撞时,[b]ConcavePolygonShape2D[/b] 是针对 [StaticBody2D] " +"等静态 [PhysicsBody2D] 节点设计的,不推荐用于非静态模式的 [RigidBody2D] 节" +"点。这种情况下建议改为凸分解模式的 [CollisionPolygon2D] 或者多个凸对象。其他" +"情况下,凹多边形 2D 形状更适合静态物体。\n" +"[b]警告:[/b]这种形状的本质决定了它极易被快速运动的(较小)物体穿透。例如,假" +"设有一个(较小的)刚体[i]小球[/i]在向静态物体[i]盒子[/i]高速移动。如果盒子使" +"用由四条线段构成的 [b]ConcavePolygonShape2D[/b],那么该小球可能会进入这个盒" +"子,走得足够快的话也可能直接穿透这个盒子。(部分)原因是小球只能与空心盒子的" +"边发生碰撞。与刚体交互时,在刚体上启用连续碰撞检测可以避免穿透。\n" +"[b]警告:[/b]在 [Area2D] 上(通过 [CollisionShape2D] 节点)使用这种形状可能得" +"到出乎预料的结果:该区域只会检测与 [ConcavePolygonShape2D] 中线段的碰撞(比如" +"不会检测与形状“内部”的碰撞)。\n" +"[b]性能:[/b]由于其复杂性,[ConcavePolygonShape2D] 是碰撞检查最慢的碰撞形状。" +"通常应该仅限于关卡几何体使用。对于凸几何体而言,使用 [ConvexPolygonShape2D] " +"的性能更高。对于需要凹碰撞的动态物理物体而言,可以利用凸分解使用多个 " +"[ConvexPolygonShape2D] 来代表想要的碰撞;方法见 [ConvexPolygonShape2D] 的文" +"档。不过,还是请先考虑 [CircleShape2D]、[RectangleShape2D] 等基本碰撞形状。" + +msgid "" +"The array of points that make up the [ConcavePolygonShape2D]'s line " +"segments. The array (of length divisible by two) is naturally divided into " +"pairs (one pair for each segment); each pair consists of the starting point " +"of a segment and the endpoint of a segment." +msgstr "" +"顶点数组,构成 [ConcavePolygonShape2D] 的线段。该(长度能被二整除的)数组自然" +"两两分组(每组代表一条线段);每组都由一条线段的起点和终点构成。" + +msgid "" "Concave polygon shape resource (also called \"trimesh\") for 3D physics." -msgstr "用于 3D 物理的凹多边形形状资源(也称为“trimesh”)。" +msgstr "用于 3D 物理的凹多边形形状资源(也称为“三角网格”)。" + +msgid "" +"3D concave polygon shape resource (also called \"trimesh\") to be added as a " +"[i]direct[/i] child of a [PhysicsBody3D] or [Area3D] using a " +"[CollisionShape3D] node.\n" +"The shape consists of a collection of triangle faces, and as such it does " +"not include any \"inside\" that the faces might be enclosing. If the faces " +"enclose anything, then the shape is [i]hollow[/i], as opposed to a " +"[ConvexPolygonShape3D] which is solid. See also [CollisionPolygon3D].\n" +"Being made out of triangle faces, this shape is the most freely configurable " +"single 3D shape. Despite its name, it can be used to form (hollow) polyhedra " +"of any nature, convex or concave.\n" +"[b]Note:[/b] When used for collision, [b]ConcavePolygonShape3D[/b] is " +"intended to work with static [PhysicsBody3D] nodes like [StaticBody3D] and " +"will not work with [CharacterBody3D] or [RigidBody3D] in a mode other than " +"Static.\n" +"[b]Warning:[/b] The nature of this shape makes it extra prone to being " +"tunneled through by (small) fast physics bodies. For example, consider a " +"(small) rigid body [i]Ball[/i] traveling toward a static body [i]Box[/i] at " +"high speed. If the box uses a [b]ConcavePolygonShape3D[/b] consisting of " +"twelve triangle faces (two triangle faces for each of the six sides of the " +"box), then the ball might end up inside the box or tunnel all the way " +"through the box, if it goes fast enough. This is (partly) because the ball " +"can only collide against the individual faces of the hollow box. In " +"interactions with rigid bodies tunneling can be avoided by enabling " +"continuous collision detection on the rigid body.\n" +"[b]Warning:[/b] Using this shape for an [Area3D] (via a [CollisionShape3D] " +"node, created e.g. by using the [i]Create Trimesh Collision Sibling[/i] " +"option in the [i]Mesh[/i] menu that appears when selecting a " +"[MeshInstance3D] node) may give unexpected results: the area will only " +"detect collisions with the triangle faces in the [ConcavePolygonShape3D] " +"(and not with any \"inside\" of the shape, for example); moreover it will " +"only detect all such collisions if [member backface_collision] is " +"[code]true[/code].\n" +"[b]Performance:[/b] Due to its complexity, [ConcavePolygonShape3D] is the " +"slowest collision shape to check collisions against. Its use should " +"generally be limited to level geometry. For convex geometry, using " +"[ConvexPolygonShape3D] will perform better. For dynamic physics bodies that " +"need concave collision, several [ConvexPolygonShape3D]s can be used to " +"represent its collision by using convex decomposition; see " +"[ConvexPolygonShape3D]'s documentation for instructions. However, consider " +"using primitive collision shapes such as [SphereShape3D] or [BoxShape3D] " +"first." +msgstr "" +"需要使用 [CollisionShape3D] 节点添加为 [PhysicsBody3D] 或 [Area3D] 的[i]直接" +"[/i]子节点的 3D 凹多边形形状资源(也叫“三角网格”)。\n" +"该形状由一组三角形面构成,本身不包含由这些面所包围的“内部”区域。如果这些面确" +"实包围了某个区域,那么该形状是[i]空心[/i]的,与实心的 [ConvexPolygonShape3D] " +"相反。另见 [CollisionPolygon3D]。\n" +"由于是三角形面构成的,这种形状是最能够自由配置的独立 3D 形状。可以用来构成任" +"何(空心的)多边形,包括凸多边形和凹多边形。\n" +"[b]注意:[/b]用于碰撞时,[b]ConcavePolygonShape3D[/b] 是针对 [StaticBody3D] " +"等静态 [PhysicsBody3D] 节点设计的,不推荐用于非静态模式的 [CharacterBody3D] " +"或 [RigidBody3D] 节点。\n" +"[b]警告:[/b]这种形状的本质决定了它极易被快速运动的(较小)物体穿透。例如,假" +"设有一个(较小的)刚体[i]小球[/i]在向静态物体[i]盒子[/i]高速移动。如果盒子使" +"用由四条线段构成的 [b]ConcavePolygonShape3D[/b],那么该小球可能会进入这个盒" +"子,走得足够快的话也可能直接穿透这个盒子。(部分)原因是小球只能与空心盒子的" +"面发生碰撞。与刚体交互时,在刚体上启用连续碰撞检测可以避免穿透。\n" +"[b]警告:[/b]在 [Area3D] 上(通过 [CollisionShape3D] 节点,例如可以使用在选" +"中 [MeshInstance3D] 节点后出现的 [i]Mesh[/i] 菜单中的[i]创建三角网格碰撞同级" +"[/i]选项来创建)使用这种形状,可能得到出乎预料的结果:该区域只会检测与 " +"[ConcavePolygonShape3D] 中三角形面的碰撞(比如不会检测与形状“内部”的碰撞);" +"此外,[member backface_collision] 为 [code]true[/code] 时才能检测到这种碰" +"撞。\n" +"[b]性能:[/b]由于其复杂性,[ConcavePolygonShape3D] 是碰撞检查最慢的碰撞形状。" +"通常应该仅限于关卡几何体使用。对于凸几何体而言,使用 [ConvexPolygonShape3D] " +"的性能更高。对于需要凹碰撞的动态物理物体而言,可以利用凸分解使用多个 " +"[ConvexPolygonShape3D] 来代表想要的碰撞;方法见 [ConvexPolygonShape2D] 的文" +"档。不过,还是请先考虑 [SphereShape3D]、[BoxShape3D] 等基本碰撞形状。" + +msgid "" +"Returns the faces of the trimesh shape as an array of vertices. The array " +"(of length divisible by three) is naturally divided into triples; each " +"triple of vertices defines a triangle." +msgstr "" +"以顶点数组的形式返回三角网格形状中的面。该(长度能被三整除的)数组自然三三分" +"组;每组中的三个顶点定义一个三角形。" + +msgid "" +"Sets the faces of the trimesh shape from an array of vertices. The [param " +"faces] array should be composed of triples such that each triple of vertices " +"defines a triangle." +msgstr "" +"根据顶点数组设置三角网格形状的面。[param faces] 数组应更多由若干三元组构成," +"每三个顶点定义一个三角形。" msgid "" "If set to [code]true[/code], collisions occur on both sides of the concave " @@ -25708,6 +26144,14 @@ msgid "" "Returns the minimum size for this control. See [member custom_minimum_size]." msgstr "返回该控件的最小尺寸。见 [member custom_minimum_size]。" +msgid "" +"Returns the offset for the specified [enum Side]. A getter method for " +"[member offset_bottom], [member offset_left], [member offset_right] and " +"[member offset_top]." +msgstr "" +"返回指定 [enum Side] 的偏移。这是 [member offset_bottom]、[member " +"offset_left]、[member offset_right] 和 [member offset_top] 的 getter 方法。" + msgid "Returns the width/height occupied in the parent control." msgstr "返回父控件中占用的宽度/高度。" @@ -26271,6 +26715,16 @@ msgid "Sets [member offset_right] and [member offset_bottom] at the same time." msgstr "同时设置 [member offset_right] 和 [member offset_bottom]。" msgid "" +"Sets the focus neighbor for the specified [enum Side] to the [Control] at " +"[param neighbor] node path. A setter method for [member " +"focus_neighbor_bottom], [member focus_neighbor_left], [member " +"focus_neighbor_right] and [member focus_neighbor_top]." +msgstr "" +"将指定 [enum Side] 的焦点邻居设置为节点路径 [param neighbor] 处的 [Control]。" +"这是 [member focus_neighbor_bottom]、[member focus_neighbor_left]、[member " +"focus_neighbor_right] 和 [member focus_neighbor_top] 的 setter 方法。" + +msgid "" "Sets the [member global_position] to given [param position].\n" "If [param keep_offsets] is [code]true[/code], control's anchors will be " "updated instead of offsets." @@ -27384,9 +27838,116 @@ msgstr "从右至左的文本书写方向。" msgid "Convex polygon shape resource for 2D physics." msgstr "用于 2D 物理的凸多边形形状资源。" +msgid "" +"2D convex polygon shape to be added as a [i]direct[/i] child of a " +"[PhysicsBody2D] or [Area2D] using a [CollisionShape2D] node.\n" +"The shape is a [i]solid[/i] that includes all the points that it encloses, " +"as opposed to [ConcavePolygonShape2D] which is hollow if it encloses " +"anything. See also [CollisionPolygon2D].\n" +"The solid nature of the shape makes it well-suited for both detection and " +"physics; in physics body interactions this allows depenetrating even those " +"shapes which end up (e.g. due to high speed) fully inside the convex shape " +"(similarly to primitive shapes, but unlike [ConcavePolygonShape2D]). The " +"convexity limits the possible geometric shape of a single " +"[ConvexPolygonShape2D]: it cannot be concave.\n" +"[b]Convex decomposition:[/b] Concave objects' collisions can be represented " +"accurately using [i]several[/i] convex shapes. This allows dynamic physics " +"bodies to have complex concave collisions (at a performance cost). It can be " +"achieved using several [ConvexPolygonShape2D] nodes or by using the " +"[CollisionPolygon2D] node in Solids build mode. To generate a collision " +"polygon from a sprite, select the [Sprite2D] node, go to the [b]Sprite2D[/b] " +"menu that appears above the viewport, and choose [b]Create Polygon2D " +"Sibling[/b].\n" +"[b]Performance:[/b] [ConvexPolygonShape2D] is faster to check collisions " +"against compared to [ConcavePolygonShape2D], but it is slower than primitive " +"collision shapes such as [CircleShape2D] or [RectangleShape2D]. Its use " +"should generally be limited to medium-sized objects that cannot have their " +"collision accurately represented by primitive shapes." +msgstr "" +"需要使用 [CollisionShape2D] 节点添加为 [PhysicsBody2D] 或 [Area2D] 的[i]直接" +"[/i]子节点的 2D 凸多边形形状。\n" +"该形状是[i]实心[/i]的,包括它所包围的所有点,与围起来是空心的 " +"[ConcavePolygonShape2D] 相反。另见 [CollisionPolygon2D]。\n" +"因为该形状是实心的,所以非常适合检测和物理;与物理物体交互时,能够消除穿透问" +"题,即便那些形状(例如由于速度较快)最终完全位于凸形状内部(类似于基础形状," +"不同于 [ConcavePolygonShape2D])。凸形状的要求限制了单个 " +"[ConvexPolygonShape2D] 所能定义的几何形状:无法定义凹形状。\n" +"[b]凸分解:[/b]凹对象的碰撞可以使用[i]多个[/i]凸形状来精确表示。这样就能够让" +"动态物理物体拥有复杂的凹碰撞(以消耗性能为代价)。做法是使用多个 " +"[ConvexPolygonShape2D] 节点,或者使用 Solids 构建模式的 [CollisionPolygon2D] " +"节点。要根据精灵生成碰撞多边形,请选中 [Sprite2D] 节点,前往出现在视口上方的 " +"[b]Sprite2D[/b] 菜单,然后选择[b]创建 Polygon2D 同级[/b]。\n" +"[b]性能:[/b][ConvexPolygonShape2D] 检查碰撞的速度比 [ConcavePolygonShape2D] " +"要快,但比 [CircleShape2D]、[RectangleShape2D] 等基础碰撞形状要慢。通常应该仅" +"限于中等大小的对象,在无法使用基础形状精确表示碰撞时使用。" + +msgid "" +"Based on the set of points provided, this assigns the [member points] " +"property using the convex hull algorithm, removing all unneeded points. See " +"[method Geometry2D.convex_hull] for details." +msgstr "" +"根据提供的点集,使用凸包算法分配 [member points] 属性,移除所有不必要的点。详" +"见 [method Geometry2D.convex_hull]。" + +msgid "" +"The polygon's list of vertices that form a convex hull. Can be in either " +"clockwise or counterclockwise order.\n" +"[b]Warning:[/b] Only set this property to a list of points that actually " +"form a convex hull. Use [method set_point_cloud] to generate the convex hull " +"of an arbitrary set of points." +msgstr "" +"该多边形构成凸包的顶点列表。顺时针顺序或逆时针顺序都有可能。\n" +"[b]警告:[/b]请务必将这个属性设置为能够形成凸包的顶点列表。可以使用 [method " +"set_point_cloud] 从任意顶点集生成凸包。" + msgid "Convex polygon shape resource for 3D physics." msgstr "用于 3D 物理的凸多边形形状资源。" +msgid "" +"3D convex polygon shape resource to be added as a [i]direct[/i] child of a " +"[PhysicsBody3D] or [Area3D] using a [CollisionShape3D] node.\n" +"The shape is a [i]solid[/i] that includes all the points that it encloses, " +"as opposed to [ConcavePolygonShape3D] which is hollow if it encloses " +"anything. See also [CollisionPolygon3D].\n" +"The solid nature of the shape makes it well-suited for both detection and " +"physics; in physics body interactions this allows depenetrating even those " +"shapes which end up (e.g. due to high speed) fully inside the convex shape " +"(similarly to primitive shapes, but unlike [ConcavePolygonShape3D] and " +"[HeightMapShape3D]). The convexity restricts the possible geometric shape of " +"a single [ConvexPolygonShape3D]: it cannot be concave.\n" +"[b]Convex decomposition:[/b] Concave objects' collisions can be represented " +"accurately using [i]several[/i] convex shapes. This allows dynamic physics " +"bodies to have complex concave collisions (at a performance cost). It can be " +"achieved by using several [ConvexPolygonShape3D] nodes or by using the " +"[CollisionPolygon3D] node. To generate a collision polygon from a mesh, " +"select the [MeshInstance3D] node, go to the [b]Mesh[/b] menu that appears " +"above the viewport and choose [b]Create Multiple Convex Collision Siblings[/" +"b]. Alternatively, [method MeshInstance3D.create_multiple_convex_collisions] " +"can be called in a script to perform this decomposition at run-time.\n" +"[b]Performance:[/b] [ConvexPolygonShape3D] is faster to check collisions " +"against compared to [ConcavePolygonShape3D], but it is slower than primitive " +"collision shapes such as [SphereShape3D] or [BoxShape3D]. Its use should " +"generally be limited to medium-sized objects that cannot have their " +"collision accurately represented by primitive shapes." +msgstr "" +"需要使用 [CollisionShape3D] 节点添加为 [PhysicsBody3D] 或 [Area3D] 的[i]直接" +"[/i]子节点的 3D 凸多边形形状。\n" +"该形状是[i]实心[/i]的,包括它所包围的所有点,与围起来是空心的 " +"[ConcavePolygonShape3D] 相反。另见 [CollisionPolygon3D]。\n" +"因为该形状是实心的,所以非常适合检测和物理;与物理物体交互时,能够消除穿透问" +"题,即便那些形状(例如由于速度较快)最终完全位于凸形状内部(类似于基础形状," +"不同于 [ConcavePolygonShape3D] 和 [HeightMapShape3D])。凸形状的要求限制了单" +"个 [ConvexPolygonShape3D] 所能定义的几何形状:无法定义凹形状。\n" +"[b]凸分解:[/b]凹对象的碰撞可以使用[i]多个[/i]凸形状来精确表示。这样就能够让" +"动态物理物体拥有复杂的凹碰撞(以消耗性能为代价)。做法是使用多个 " +"[ConvexPolygonShape3D] 节点,或者使用 [CollisionPolygon3D] 节点。要根据网格生" +"成碰撞多边形,请选中 [MeshInstance3D] 节点,前往出现在视口上方的 [b]Mesh[/b] " +"菜单,然后选择[b]创建多个凸碰撞同级[/b]。另外也可以在脚本中调用 [method " +"MeshInstance3D.create_multiple_convex_collisions],在运行时进行分解。\n" +"[b]性能:[/b][ConvexPolygonShape3D] 检查碰撞的速度比 [ConcavePolygonShape3D] " +"要快,但比 [SphereShape3D]、[BoxShape3D] 等基础碰撞形状要慢。通常应该仅限于中" +"等大小的对象,在无法使用基础形状精确表示碰撞时使用。" + msgid "The list of 3D points forming the convex polygon shape." msgstr "形成凸多边形的 3D 点列表。" @@ -28150,6 +28711,12 @@ msgid "Curve for the scale over life, along the z axis." msgstr "生命周期内,沿 Z 轴的缩放曲线。" msgid "" +"If set to [code]true[/code], three different scale curves can be specified, " +"one per scale axis." +msgstr "" +"如果设置为 [code]true[/code],则可以指定三条不同的缩放曲线,每个缩放轴一条。" + +msgid "" "Each particle's initial direction range from [code]+spread[/code] to [code]-" "spread[/code] degrees. Applied to X/Z plane and Y/Z planes." msgstr "" @@ -30108,7 +30675,7 @@ msgid "" msgstr "" "更改贴花的 [Color],将其反照率和自发光颜色乘以这个值。仅在与反照率颜色相乘时" "才会考虑 Alpha 分量,与自发光颜色相乘时则不会。如果要独立更改自发光和反照率强" -"度,请参阅 [member emit_energy] 和 [member albedo_mix]。" +"度,请参阅 [member emission_energy] 和 [member albedo_mix]。" msgid "" "Fades the Decal if the angle between the Decal's [AABB] and the target " @@ -30599,7 +31166,7 @@ msgid "" "If the [param key] does not exist, returns [param default], or [code]null[/" "code] if the parameter is omitted." msgstr "" -"返回该字典中与给定的键 [parma key] 对应的值。如果 [param key] 不存在,则返回 " +"返回该字典中与给定的键 [param key] 对应的值。如果 [param key] 不存在,则返回 " "[param default],如果省略了该参数则返回 [code]null[/code]。" msgid "" @@ -30738,8 +31305,8 @@ msgid "" "make_read_only]. Dictionaries are automatically read-only if declared with " "[code]const[/code] keyword." msgstr "" -"如果该字典是只读的,则返回 [code]true[/code] 。见 [method set_read_only]。用 " -"[code]const[/code] 关键字声明的字典自动只读。" +"如果该字典是只读的,则返回 [code]true[/code] 。见 [method make_read_only]。" +"用 [code]const[/code] 关键字声明的字典自动只读。" msgid "Returns the list of keys in the dictionary." msgstr "返回该字典中的键列表。" @@ -30790,7 +31357,7 @@ msgid "" "If the entry does not exist, fails and returns [code]null[/code]. For safe " "access, use [method get] or [method has]." msgstr "" -"返回该字典中与给定的键 [parma key] 对应的值。如果条目不存在或者失败,则返回 " +"返回该字典中与给定的键 [param key] 对应的值。如果条目不存在或者失败,则返回 " "[code]null[/code]。为了更安全的访问,请使用 [method get] 或 [method has]。" msgid "Type used to handle the filesystem." @@ -32541,6 +33108,14 @@ msgstr "" "screen_get_orientation]。" msgid "" +"Sets the window icon (usually displayed in the top-left corner) with an " +"[Image]. To use icons in the operating system's native format, use [method " +"set_native_icon] instead." +msgstr "" +"使用 [Image] 设置窗口图标(通常显示在左上角)。要使用操作系统的原生格式设置图" +"标,请改用 [method set_native_icon]。" + +msgid "" "Sets the window icon (usually displayed in the top-left corner) in the " "operating system's [i]native[/i] format. The file at [param filename] must " "be in [code].ico[/code] format on Windows or [code].icns[/code] on macOS. By " @@ -32666,6 +33241,28 @@ msgstr "" "上实现。" msgid "" +"Adds a callback, which is called when the utterance has started, finished, " +"canceled or reached a text boundary.\n" +"- [constant TTS_UTTERANCE_STARTED], [constant TTS_UTTERANCE_ENDED], and " +"[constant TTS_UTTERANCE_CANCELED] callable's method should take one [int] " +"parameter, the utterance ID.\n" +"- [constant TTS_UTTERANCE_BOUNDARY] callable's method should take two [int] " +"parameters, the index of the character and the utterance ID.\n" +"[b]Note:[/b] The granularity of the boundary callbacks is engine dependent.\n" +"[b]Note:[/b] This method is implemented on Android, iOS, Web, Linux (X11), " +"macOS, and Windows." +msgstr "" +"添加回调,会在发言开始、结束、取消、到达文本边界时调用。\n" +"- [constant TTS_UTTERANCE_STARTED]、[constant TTS_UTTERANCE_ENDED]、" +"[constant TTS_UTTERANCE_CANCELED] 可调用体的方法应接受一个 [int] 参数,即发" +"言 ID。\n" +"- [constant TTS_UTTERANCE_BOUNDARY] 可调用体的方法应接受两个 [int] 参数:字符" +"索引和发言 ID。\n" +"[b]注意:[/b]边界回调的颗粒度由引擎决定。\n" +"[b]注意:[/b]这个方法在 Android、iOS、Web、Linux(X11)、macOS 以及 Windows " +"上实现。" + +msgid "" "Adds an utterance to the queue. If [param interrupt] is [code]true[/code], " "the queue is cleared first.\n" "- [param voice] identifier is one of the [code]\"id\"[/code] values returned " @@ -32800,12 +33397,12 @@ msgstr "返回给定窗口当前的 [param flag] 值。" msgid "" "Returns the window's maximum size (in pixels). See also [method " "window_set_max_size]." -msgstr "返回该窗口的最大尺寸,单位为像素。另见 [member window_set_max_size]。" +msgstr "返回该窗口的最大尺寸,单位为像素。另见 [method window_set_max_size]。" msgid "" "Returns the window's minimum size (in pixels). See also [method " "window_set_min_size]." -msgstr "返回该窗口的最小尺寸,单位为像素。另见 [member window_set_min_size]。" +msgstr "返回该窗口的最小尺寸,单位为像素。另见 [method window_set_min_size]。" msgid "Returns the mode of the given window." msgstr "返回给定窗口的模式。" @@ -32966,14 +33563,14 @@ msgid "" "Sets the [param callback] that should be called when any [InputEvent] is " "sent to the window specified by [param window_id]." msgstr "" -"设置回调 [param callback],向由 [param windows_id] 指定的窗口发送任何 " +"设置回调 [param callback],向由 [param window_id] 指定的窗口发送任何 " "[InputEvent] 时会进行回调。" msgid "" "Sets the [param callback] that should be called when text is entered using " "the virtual keyboard to the window specified by [param window_id]." msgstr "" -"设置回调 [param callback],使用虚拟键盘向由 [param windows_id] 指定的窗口输入" +"设置回调 [param callback],使用虚拟键盘向由 [param window_id] 指定的窗口输入" "文本时会进行回调。" msgid "" @@ -33129,7 +33726,7 @@ msgid "" "Sets the [param callback] that will be called when the window specified by " "[param window_id] is moved or resized." msgstr "" -"设置回调 [param callback],由 [param windows_id] 指定的窗口发生移动或调整大小" +"设置回调 [param callback],由 [param window_id] 指定的窗口发生移动或调整大小" "时会进行回调。" msgid "" @@ -33201,7 +33798,7 @@ msgid "" "Sets the [param callback] that will be called when an event occurs in the " "window specified by [param window_id]." msgstr "" -"设置回调 [param callback],由 [param windows_id] 指定的窗口发生事件时会进行回" +"设置回调 [param callback],由 [param window_id] 指定的窗口发生事件时会进行回" "调。" msgid "" @@ -36358,7 +36955,7 @@ msgstr "" msgid "" "Sets the reference [Node3D] node for the gizmo. [param node] must inherit " "from [Node3D]." -msgstr "设置该小工具参考的 [Node3D] 节点。[parma node] 必须继承自 [Node3D]。" +msgstr "设置该小工具参考的 [Node3D] 节点。[param node] 必须继承自 [Node3D]。" msgid "Used by the editor to define Node3D gizmo types." msgstr "被编辑器用来定义 Node3D 小工具类型。" @@ -36745,6 +37342,41 @@ msgstr "" "果当前 Godot 编辑器实例不是自包含的,则返回一个空字符串。另见 [method " "is_self_contained]。" +msgid "" +"Returns [code]true[/code] if the editor is marked as self-contained, " +"[code]false[/code] otherwise. When self-contained mode is enabled, user " +"configuration, data and cache files are saved in an [code]editor_data/[/" +"code] folder next to the editor binary. This makes portable usage easier and " +"ensures the Godot editor minimizes file writes outside its own folder. Self-" +"contained mode is not available for exported projects.\n" +"Self-contained mode can be enabled by creating a file named [code]._sc_[/" +"code] or [code]_sc_[/code] in the same folder as the editor binary or macOS ." +"app bundle while the editor is not running. See also [method " +"get_self_contained_file].\n" +"[b]Note:[/b] On macOS, quarantine flag should be manually removed before " +"using self-contained mode, see [url=https://docs.godotengine.org/en/stable/" +"tutorials/export/running_on_macos.html]Running on macOS[/url].\n" +"[b]Note:[/b] On macOS, placing [code]_sc_[/code] or any other file inside ." +"app bundle will break digital signature and make it non-portable, consider " +"placing it in the same folder as the .app bundle instead.\n" +"[b]Note:[/b] The Steam release of Godot uses self-contained mode by default." +msgstr "" +"如果编辑器被标记为是自包含的,则返回 [code]true[/code],否则返回 " +"[code]false[/code]。启用自包含模式后,用户配置、数据和缓存文件将保被存在编辑" +"器二进制文件旁边的 [code]editor_data/[/code] 文件夹中。这使得便携使用更容易," +"并确保 Godot 编辑器最大限度地减少将文件写入到它自己的文件夹之外的情况。自包含" +"模式不适用于导出的项目。\n" +"当编辑器未运行时,可以通过在与编辑器二进制文件或 macOS .app 捆绑包相同的文件" +"夹中创建名为 [code]._sc_[/code] 或 [code]_sc_[/code] 的文件来启用自包含模式。" +"另见 [method get_self_contained_file]。\n" +"[b]注意:[/b]在 macOS 上,应当在使用自包含模式前手动移除隔离标志,见" +"[url=https://docs.godotengine.org/en/stable/tutorials/export/" +"running_on_macos.html]《在 macOS 上运行》[/url]。\n" +"[b]注意:[/b]在 macOS 上,将 [code]_sc_[/code] 或任何其他文件放入 .app 捆绑包" +"中会破坏其数字签名,使其不再便携,请考虑改为放在与 .app 捆绑包相同的文件夹" +"中。\n" +"[b]注意:[/b]Godot 的 Steam 版本默认使用自包含模式。" + msgid "Used by the editor to extend its functionality." msgstr "由编辑器使用,用于扩展其功能。" @@ -37644,7 +38276,7 @@ msgstr "" "保存在修改给定属性时可能丢失的其他属性。\n" "该回调函数应该有 4 个参数:[Object] [code]undo_redo[/code]、[Object] " "[code]modified_object[/code]、[String] [code]property[/code]、和 [Variant] " -"[code]new_value [/code]。它们分别是检查器使用的 [UndoRedo] 对象、当前修改的对" +"[code]new_value[/code]。它们分别是检查器使用的 [UndoRedo] 对象、当前修改的对" "象、修改的属性的名称、和该属性即将采用的新值。" msgid "" @@ -41298,6 +41930,47 @@ msgid "Manages undo history of scenes opened in the editor." msgstr "管理编辑器中打开场景的撤销历史。" msgid "" +"[EditorUndoRedoManager] is a manager for [UndoRedo] objects associated with " +"edited scenes. Each scene has its own undo history and " +"[EditorUndoRedoManager] ensures that each action performed in the editor " +"gets associated with a proper scene. For actions not related to scenes " +"([ProjectSettings] edits, external resources, etc.), a separate global " +"history is used.\n" +"The usage is mostly the same as [UndoRedo]. You create and commit actions " +"and the manager automatically decides under-the-hood what scenes it belongs " +"to. The scene is deduced based on the first operation in an action, using " +"the object from the operation. The rules are as follows:\n" +"- If the object is a [Node], use the currently edited scene;\n" +"- If the object is a built-in resource, use the scene from its path;\n" +"- If the object is external resource or anything else, use global history.\n" +"This guessing can sometimes yield false results, so you can provide a custom " +"context object when creating an action.\n" +"[EditorUndoRedoManager] is intended to be used by Godot editor plugins. You " +"can obtain it using [method EditorPlugin.get_undo_redo]. For non-editor uses " +"or plugins that don't need to integrate with the editor's undo history, use " +"[UndoRedo] instead.\n" +"The manager's API is mostly the same as in [UndoRedo], so you can refer to " +"its documentation for more examples. The main difference is that " +"[EditorUndoRedoManager] uses object + method name for actions, instead of " +"[Callable]." +msgstr "" +"[EditorUndoRedoManager] 是将 [UndoRedo] 对象与编辑场景相关联的管理器。每个场" +"景都有自己的撤销历史,[EditorUndoRedoManager] 能够确保编辑器中执行的每个动作" +"都与正确的场景相关联。与场景无关的动作(对 [ProjectSettings]、外部资源等对象" +"的编辑)使用单独的全局历史。\n" +"用法与 [UndoRedo] 基本一致。需要创建并提交动作,然后管理器会自动决定这个动作" +"属于哪个场景。场景是根据该动作中第一个操作所使用的对象来推断的。规则如下:\n" +"- 如果该对象为 [Node],则使用当前编辑的场景;\n" +"- 如果该对象为内置资源,则使用其路径上的场景;\n" +"- 如果该对象为外部资源或任何其他对象,则使用全局历史。\n" +"推断的结果有时并不准确,所以在创建动作时你可以提供自定义的上下文对象。\n" +"[EditorUndoRedoManager] 是为 Godot 编辑器插件使用而设计的。你可以使用 " +"[method EditorPlugin.get_undo_redo] 获取。对于非编辑器使用场景或者不需要与编" +"辑器撤销历史记录集成的插件,请改用 [UndoRedo]。\n" +"管理器的 API 与 [UndoRedo] 基本一致,它的文档中有更多示例。主要区别在于 " +"[EditorUndoRedoManager] 的动作使用对象 + 方法名,而不是 [Callable]。" + +msgid "" "Register a method that will be called when the action is committed (i.e. the " "\"do\" action).\n" "If this is the first operation, the [param object] will be used to deduce " @@ -41548,6 +42221,13 @@ msgstr "" msgid "Pulls changes from the remote. This can give rise to merge conflicts." msgstr "从远程仓库拉取修改。这可能会导致合并冲突。" +msgid "" +"Pushes changes to the [param remote]. If [param force] is [code]true[/code], " +"a force push will override the change history already present on the remote." +msgstr "" +"将修改推送至远程仓库 [param remote]。如果 [param force] 为 [code]true[/" +"code],则会进行强制推送,覆盖远程仓库中现有的修改历史。" + msgid "Remove a branch from the local VCS." msgstr "从本地 VCS 中移除一个分支。" @@ -43257,7 +43937,7 @@ msgstr "" "如果设置大于 [code]0.0[/code](不含),会在雾的颜色和背景 [Sky] 的颜色之间进" "行混合。设置大于 [code]0.0[/code] 时有较小的性能代价。必须将 [member " "background_mode] 设置为 [constant BG_SKY]。\n" -"对于模拟雾密度较低的大场景中的[https://zh.wikipedia.org/wiki/" +"对于模拟雾密度较低的大场景中的[url=https://zh.wikipedia.org/wiki/" "%E7%A9%BA%E6%B0%94%E9%80%8F%E8%A7%86]空气透视[/url]很有用。但对于高密度的雾来" "说不是很有用,因为天空会被照亮。设置为 [code]1.0[/code] 时,雾的颜色完全来自 " "[Sky]。设置为 [code]0.0[/code] 时,会禁用空气透视。" @@ -44458,7 +45138,7 @@ msgid "" "Blend of [constant DISTANCE_EUCLIDEAN] and [constant DISTANCE_MANHATTAN] to " "give curved cell boundaries" msgstr "" -"[constant DISTANCE EUCLIDEAN] 和 [constant DISTANCE MANHATTAN] 的混合,以给出" +"[constant DISTANCE_EUCLIDEAN] 和 [constant DISTANCE_MANHATTAN] 的混合,以给出" "弯曲的单元格边界" msgid "" @@ -45388,6 +46068,56 @@ msgstr "重新加载按钮的自定义图标。" msgid "Custom icon for the toggle hidden button." msgstr "切换隐藏按钮的自定义图标。" +msgid "Editor dock for managing files in the project." +msgstr "管理项目中文件的编辑器停靠面板。" + +msgid "" +"This class is available only in [EditorPlugin]s and can't be instantiated. " +"You can access it using [method EditorInterface.get_file_system_dock].\n" +"While FileSystemDock doesn't expose any methods for file manipulation, you " +"can listen for various file-related signals." +msgstr "" +"这个类仅在 [EditorPlugin] 中可用,无法实例化。可以使用 [method " +"EditorInterface.get_file_system_dock] 访问。\n" +"FileSystemDock 没有暴露任何操作文件的方法,但是你可以监听各种与文件相关的信" +"号。" + +msgid "" +"Sets the given [param path] as currently selected, ensuring that the " +"selected file/directory is visible." +msgstr "" +"将给定的 [param path] 设置为当前选定的路径,能够确保选中的文件/目录可见。" + +msgid "Emitted when the user switches file display mode or split mode." +msgstr "用户切换文件显示模式或分隔模式时发出。" + +msgid "Emitted when the given [param file] was removed." +msgstr "给定的文件 [param file] 被移除时发出。" + +msgid "" +"Emitted when a file is moved from [param old_file] path to [param new_file] " +"path." +msgstr "文件从 [param old_file] 路径移动到 [param new_file] 路径时发出。" + +msgid "" +"Emitted when a folder is moved from [param old_folder] path to [param " +"new_folder] path." +msgstr "文件夹从 [param old_folder] 路径移动到 [param new_folder] 路径时发出。" + +msgid "Emitted when the given [param folder] was removed." +msgstr "给定的文件夹 [param folder] 被移除时发出。" + +msgid "" +"Emitted when a new scene is created that inherits the scene at [param file] " +"path." +msgstr "创建新场景,且该场景继承自位于 [param file] 路径的场景时发出。" + +msgid "Emitted when the given scenes are being instantiated in the editor." +msgstr "在编辑器中实例化给定场景时发出。" + +msgid "Emitted when an external [param resource] had its file removed." +msgstr "外部资源 [param resource] 的对应文件被移除时发出。" + msgid "Float built-in type." msgstr "浮点数内置类型。" @@ -46816,8 +47546,8 @@ msgid "" "The lower, the longer an impulse from one side takes to travel to the other " "side." msgstr "" -"X 轴上的旋转阻尼量。\n" -"越低,来自一侧的冲力到达另一侧的时间越长。" +"跨 X 轴的旋转阻尼量。\n" +"越低,来自一侧的冲量到达另一侧的时间越长。" msgid "If [code]true[/code], rotation across the X axis is limited." msgstr "如果为 [code]true[/code],则跨越 X 轴的旋转将受到限制。" @@ -48172,7 +48902,7 @@ msgstr "" "导出过程的一部分。该方法在 [method _export_preflight] 之后和 [method " "_export_node] 之前运行。\n" "在转换来自 Godot 场景节点的数据时运行。该方法可用于将 Godot 场景节点的数据," -"处理成可以被 [method_export_node] 使用的格式。" +"处理成可以被 [method _export_node] 使用的格式。" msgid "" "Part of the export process. This method is run after [method " @@ -48282,8 +49012,8 @@ msgstr "" "导入过程的一部分。该方法在 [method _get_supported_extensions] 之后和 [method " "_generate_scene_node] 之前运行。\n" "在解析 GLTFNode 的节点扩展时运行。该方法可用于将扩展 JSON 数据,处理成可被 " -"[method_generate_scene_node] 使用的格式。该返回值应该是 [enum Error] 枚举中的" -"一个成员。" +"[method _generate_scene_node] 使用的格式。该返回值应该是 [enum Error] 枚举中" +"的一个成员。" msgid "Represents a GLTF light." msgstr "代表 GLTF 灯光。" @@ -48844,13 +49574,13 @@ msgid "" "2D particles can optionally collide with [LightOccluder2D] nodes (note: they " "don't collide with [PhysicsBody2D] nodes)." msgstr "" -"2D粒子节点,用于创建各种粒子系统和效果。[GPUParticles2D]是一个发射器,特点是" -"以给定的速度生成一定数量的粒子。\n" -"使用[member_process_material]属性来添加一个配置粒子的外观和行为的" -"[ParticleProcessMaterial]。或者,你可以添加一个应用于所有粒子的" +"2D 粒子节点,用于创建各种粒子系统和效果。[GPUParticles2D] 是一个发射器,特点" +"是以给定的速度生成一定数量的粒子。\n" +"使用 [member process_material] 属性来添加一个配置粒子的外观和行为的 " +"[ParticleProcessMaterial]。或者,你可以添加一个应用于所有粒子的 " "[ShaderMaterial]。\n" -"2D粒子可以与[LightOccluder2D]节点碰撞(注意:它们不会与[PhysicsBody2D]节点碰" -"撞)。" +"2D 粒子可以与 [LightOccluder2D] 节点碰撞(注意:它们不会与 [PhysicsBody2D] 节" +"点碰撞)。" msgid "2D Particles Demo" msgstr "2D 粒子演示" @@ -48902,7 +49632,7 @@ msgid "" "[Material] for processing particles. Can be a [ParticleProcessMaterial] or a " "[ShaderMaterial]." msgstr "" -"用于处理粒子的 [Material] 。可以是一个 [ParticlesMaterial] 或一个 " +"用于处理粒子的 [Material] 。可以是 [ParticleProcessMaterial] 或 " "[ShaderMaterial] 。" msgid "The [NodePath] to the [GPUParticles2D] used for sub-emissions." @@ -49243,7 +49973,7 @@ msgid "" msgstr "" "要使用的 3D 纹理。会在纹理像素之间进行线性插值。\n" "[b]注意:[/b]为了获得更好的性能,3D 纹理的分辨率应该反映该吸引器的 [member " -"extents]。由于粒子吸引力通常是低频数据,因此可以将纹理保持在较低分辨率,例如 " +"size]。由于粒子吸引力通常是低频数据,因此可以将纹理保持在较低分辨率,例如 " "64×64×64。" msgid "" @@ -50344,7 +51074,7 @@ msgid "Disables all input and output slots of the GraphNode." msgstr "禁用 GraphNode 的所有输入和输出槽。" msgid "Disables input and output slot whose index is [param slot_index]." -msgstr "禁用索引为 [param set_index] 的输入和输出插槽。" +msgstr "禁用索引为 [param slot_index] 的输入和输出插槽。" msgid "Returns the [Color] of the input connection [param port]." msgstr "返回输入连接端口 [param port] 的 [Color]。" @@ -55219,10 +55949,32 @@ msgstr "" "等于 0。通过将事件强度设置为手柄轴的弯曲或按压强度,可以仿造模拟手柄的移动事" "件。" +msgid "Base class for [Viewport]-based input events." +msgstr "基于 [Viewport] 的输入事件的基类。" + +msgid "" +"InputEventFromWindow represents events specifically received by windows. " +"This includes mouse events, keyboard events in focused windows or touch " +"screen actions." +msgstr "" +"InputEventFromWindow 代表明确由窗口接收的事件。包括鼠标事件、聚焦窗口中的键盘" +"事件或触屏动作。" + +msgid "The ID of a [Window] that received this event." +msgstr "接收这个事件的 [Window] 的 ID。" + msgid "Base class for touch control gestures." msgstr "触摸控制手势的基类。" msgid "" +"InputEventGesture is sent when a user performs a supported gesture on a " +"touch screen. Gestures can't be emulated using mouse, because they typically " +"require multi-touch." +msgstr "" +"用户在触摸屏上执行支持的手势时会发送 InputEventGesture。手势无法用鼠标模拟," +"因为一般都要求多点触控。" + +msgid "" "The local gesture position relative to the [Viewport]. If used in [method " "Control._gui_input], the position is relative to the current [Control] that " "received this gesture." @@ -55308,7 +56060,7 @@ msgstr "返回该事件 [member key_label] 及修饰键的 [String] 字符串表 msgid "" "Returns a [String] representation of the event's [member keycode] and " "modifiers." -msgstr "返回该事件 [member key_keycode] 及修饰键的 [String] 字符串表示。" +msgstr "返回该事件 [member keycode] 及修饰键的 [String] 字符串表示。" msgid "" "Returns a [String] representation of the event's [member physical_keycode] " @@ -55447,6 +56199,19 @@ msgstr "" "态,否则复合字符和复杂文字的 Unicode 字符代码可能不可用。有关详细信息,请参" "阅 [method Window.set_ime_active]。" +msgid "[InputEvent] that represents a magnifying touch gesture." +msgstr "代表放大触摸手势的 [InputEvent]。" + +msgid "" +"Magnify gesture is performed when the user pinches the touch screen. It's " +"typically used for zooming." +msgstr "用户在触摸屏上将双指捏合,就执行了放大手势。一般用于缩放。" + +msgid "" +"The amount (or delta) of the event. This value is higher the faster the " +"gesture is performed." +msgstr "该事件的量(或增量)。这个值越高,手势执行地越快。" + msgid "Input event for MIDI inputs." msgstr "MIDI 输入的输入事件。" @@ -55790,6 +56555,17 @@ msgstr "" msgid "The mouse velocity in pixels per second." msgstr "鼠标速度,以像素每秒为单位。" +msgid "[InputEvent] that represents a panning touch gesture." +msgstr "代表平移触摸手势的 [InputEvent]。" + +msgid "" +"Pan gesture is performed when the user swipes the touch screen with two " +"fingers. It's typically used for panning/scrolling." +msgstr "用户在触摸屏上滑动双指,就执行了平移手势。一般用于平移/滚动。" + +msgid "Panning amount since last pan event." +msgstr "上一次平移事件以来的平移量。" + msgid "" "Input event type for screen drag events. Only available on mobile devices." msgstr "屏幕拖动事件的输入事件类型。仅适用于移动设备。" @@ -55845,6 +56621,26 @@ msgstr "" "如果为 [code]true[/code],触摸的状态为按下。如果为 [code]false[/code],触摸的" "状态被释放。" +msgid "[InputEvent] that signifies a triggered keyboard [Shortcut]." +msgstr "表示触发键盘 [Shortcut] 的 [InputEvent]。" + +msgid "" +"InputEventShortcut is a special event that can be received in [method Node." +"_unhandled_key_input]. It's typically sent by the editor's Command Palette " +"to trigger actions, but can also be sent manually using [method Viewport." +"push_unhandled_input]." +msgstr "" +"InputEventShortcut 是一种可以在 [method Node._unhandled_key_input] 中收到的特" +"殊事件。通常由编辑器的“命令面板”发送,用于触发动作,但也可以使用 [method " +"Viewport.push_unhandled_input] 手动发送。" + +msgid "" +"The [Shortcut] represented by this event. Its [method Shortcut." +"matches_event] method will always return [code]true[/code] for this event." +msgstr "" +"这个事件代表的 [Shortcut]。它的 [method Shortcut.matches_event] 方法对这个事" +"件始终返回 [code]true[/code]。" + msgid "Base class for keys events with modifiers." msgstr "带有修饰符的键事件的基类。" @@ -56043,8 +56839,343 @@ msgstr "" "code] 字段(注意有个前缀的点)。这个 [code].order[/code] 字段是属性名称 " "[String] 的 [Array],指定属性的应用顺序(索引为 0 的是第一个)。" +msgid "Built-in integer Variant type." +msgstr "内置字符串 Variant 类型。" + +msgid "" +"Signed 64-bit integer type. This means that it can take values from " +"[code]-2^63[/code] to [code]2^63 - 1[/code], i.e. from " +"[code]-9223372036854775808[/code] to [code]9223372036854775807[/code]. When " +"it exceeds these bounds, it will wrap around.\n" +"[int]s can be automatically converted to [float]s when necessary, for " +"example when passing them as arguments in functions. The [float] will be as " +"close to the original integer as possible.\n" +"Likewise, [float]s can be automatically converted into [int]s. This will " +"truncate the [float], discarding anything after the floating point.\n" +"[b]Note:[/b] In a boolean context, an [int] will evaluate to [code]false[/" +"code] if it equals [code]0[/code], and to [code]true[/code] otherwise.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var x: int = 1 # x is 1\n" +"x = 4.2 # x is 4, because 4.2 gets truncated\n" +"var max_int = 9223372036854775807 # Biggest value an int can store\n" +"max_int += 1 # max_int is -9223372036854775808, because it wrapped around\n" +"[/gdscript]\n" +"[csharp]\n" +"int x = 1; // x is 1\n" +"x = 4.2; // x is 4, because 4.2 gets truncated\n" +"// We use long below, because GDScript's int is 64-bit while C#'s int is 32-" +"bit.\n" +"long maxLong = 9223372036854775807; // Biggest value a long can store\n" +"maxLong++; // maxLong is now -9223372036854775808, because it wrapped " +"around.\n" +"\n" +"// Alternatively with C#'s 32-bit int type, which has a smaller maximum " +"value.\n" +"int maxInt = 2147483647; // Biggest value an int can store\n" +"maxInt++; // maxInt is now -2147483648, because it wrapped around\n" +"[/csharp]\n" +"[/codeblocks]\n" +"In GDScript, you can use the [code]0b[/code] literal for binary " +"representation, the [code]0x[/code] literal for hexadecimal representation, " +"and the [code]_[/code] symbol to separate long numbers and improve " +"readability.\n" +"[codeblock]\n" +"var x = 0b1001 # x is 9\n" +"var y = 0xF5 # y is 245\n" +"var z = 10_000_000 # z is 10000000\n" +"[/codeblock]" +msgstr "" +"带符号 64 位整数类型。这意味着它能够接受从 [code]-2^63[/code] 到 [code]2^63 " +"- 1[/code] 的值,即从 [code]-9223372036854775808[/code] 到 " +"[code]9223372036854775807[/code]。超出这个范围后,值会绕回到另一端。\n" +"[int] 可以在需要时自动转换为 [float],例如在作为函数的参数传递的时候。" +"[float] 会尽可能与原始整数接近。\n" +"类似地,[float] 可以自动转换为 [int]。这样会截断该 [float],丢弃小数点之后的" +"部分。\n" +"[b]注意:[/b]布尔环境中会将等于 [code]0[/code] 的 [int] 评估为 [code]false[/" +"code],其他值则为 [code]true[/code]。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var x: int = 1 # x 为 1\n" +"x = 4.2 # x 为 4,因为 4.2 发生了截断\n" +"var max_int = 9223372036854775807 # int 所能存储的最大值\n" +"max_int += 1 # max_int 现在是 -9223372036854775808,因为它绕到了另一端\n" +"[/gdscript]\n" +"[csharp]\n" +"int x = 1; // x 为 1\n" +"x = 4.2; // x 为 4,因为 4.2 发生了截断\n" +"// 下面使用 long,因为 GDScript 的 int 为 64 位,而 C# 的 int 为 32 位。\n" +"long maxLong = 9223372036854775807; // long 所能存储的最大值\n" +"maxLong++; // maxLong 现在是 -9223372036854775808,因为它绕到了另一端。\n" +"\n" +"// 也可以使用 C# 的 32 位 int 类型,最大值较小。\n" +"int maxInt = 2147483647; // int 所能存储的最大值\n" +"maxInt++; // maxInt 现在是 -2147483648,因为它绕到了另一端。\n" +"[/csharp]\n" +"[/codeblocks]\n" +"在 GDScript 中,你可以使用 [code]0b[/code] 字面量书写二进制值,使用 " +"[code]0x[/code] 字面量书写十六进制值,使用 [code]_[/code] 符号分隔较长的数" +"字,提升可读性。\n" +"[codeblock]\n" +"var x = 0b1001 # x 为 9\n" +"var y = 0xF5 # y 为 245\n" +"var z = 10_000_000 # z 为 10000000\n" +"[/codeblock]" + +msgid "Constructs an [int] set to [code]0[/code]." +msgstr "构造设为 [code]0[/code] 的 [int]。" + msgid "Constructs an [int] as a copy of the given [int]." -msgstr "构造给定 [int] 的副本。" +msgstr "构造给定 [int] 的副本 [int]。" + +msgid "" +"Constructs a new [int] from a [String], following the same rules as [method " +"String.to_int]." +msgstr "从 [String] 构造新的 [int],遵循与 [method String.to_int] 相同的规则。" + +msgid "" +"Constructs a new [int] from a [bool]. [code]true[/code] is converted to " +"[code]1[/code] and [code]false[/code] is converted to [code]0[/code]." +msgstr "" +"从 [bool] 构造新的 [int]。[code]true[/code] 会转换为 [code]1[/code]," +"[code]false[/code] 会转换为 [code]0[/code]。" + +msgid "" +"Constructs a new [int] from a [float]. This will truncate the [float], " +"discarding anything after the floating point." +msgstr "" +"从 [float] 构造新的 [int]。这样会截断该 [float],丢弃小数点之后的部分。" + +msgid "" +"Returns [code]true[/code] if the [int] is not equivalent to the [float]." +msgstr "如果该 [int] 与该 [float] 不等价,则返回 [code]true[/code]。" + +msgid "Returns [code]true[/code] if the [int]s are not equal." +msgstr "如果 [int] 不相等,则返回 [code]true[/code]。" + +msgid "" +"Returns the remainder after dividing two [int]s. Uses truncated division, " +"which returns a negative number if the dividend is negative. If this is not " +"desired, consider using [method @GlobalScope.posmod].\n" +"[codeblock]\n" +"print(6 % 2) # Prints 0\n" +"print(11 % 4) # Prints 3\n" +"print(-5 % 3) # Prints -2\n" +"[/codeblock]" +msgstr "" +"返回两个 [int] 相除后的余数。该操作使用截断除法,被除数为负数时会返回负数。如" +"果不希望如此,请考虑使用 [method @GlobalScope.posmod]。\n" +"[codeblock]\n" +"print(6 % 2) # 输出 0\n" +"print(11 % 4) # 输出 3\n" +"print(-5 % 3) # 输出 -2\n" +"[/codeblock]" + +msgid "" +"Performs the bitwise [code]AND[/code] operation.\n" +"[codeblock]\n" +"print(0b1100 & 0b1010) # Prints 8 (binary 1000)\n" +"[/codeblock]\n" +"This is useful for retrieving binary flags from a variable.\n" +"[codeblock]\n" +"var flags = 0b101\n" +"# Check if the first or second bit are enabled.\n" +"if flags & 0b011:\n" +" do_stuff() # This line will run.\n" +"[/codeblock]" +msgstr "" +"执行按位 [code]AND[/code] 运算。\n" +"[codeblock]\n" +"print(0b1100 & 0b1010) # 输出 8(二进制 1000)\n" +"[/codeblock]\n" +"可用于从变量中检索二进制标志。\n" +"[codeblock]\n" +"var flags = 0b101\n" +"# 检查是否启用了第一或第二个比特位。\n" +"if flags & 0b011:\n" +" do_stuff() # 会执行这一行。\n" +"[/codeblock]" + +msgid "Multiplies each component of the [Color] by the [int]." +msgstr "将 [Color] 的每个分量乘以该 [int]。" + +msgid "" +"Multiplies each component of the [Quaternion] by the [int]. This operation " +"is not meaningful on its own, but it can be used as a part of a larger " +"expression." +msgstr "" +"将 [Quaternion] 的每个分量乘以该 [int]。此操作本身没有意义,但可以用作更大表" +"达式的一部分。" + +msgid "" +"Multiplies each component of the [Vector2] by the [int].\n" +"[codeblock]\n" +"print(2 * Vector2(1, 4)) # Prints (2, 8)\n" +"[/codeblock]" +msgstr "" +"将 [Vector2] 的每个分量乘以该 [float]。\n" +"[codeblock]\n" +"print(2 * Vector2(1, 4)) # 输出 (2, 8)\n" +"[/codeblock]" + +msgid "Multiplies each component of the [Vector2i] by the [int]." +msgstr "将 [Vector2i] 的每个分量乘以该 [int]。" + +msgid "Multiplies each component of the [Vector3] by the [int]." +msgstr "将 [Vector3] 的每个分量乘以该 [int]。" + +msgid "Multiplies each component of the [Vector3i] by the [int]." +msgstr "将 [Vector3i] 的每个分量乘以该 [int]。" + +msgid "Multiplies each component of the [Vector4] by the [int]." +msgstr "将 [Vector4] 的每个分量乘以该 [int]。" + +msgid "Multiplies each component of the [Vector4i] by the [int]." +msgstr "将 [Vector4i] 的每个分量乘以该 [int]。" + +msgid "Multiplies the [float] by the [int]. The result is a [float]." +msgstr "将 [float] 和该 [int] 相乘。结果为 [float]。" + +msgid "Multiplies the two [int]s." +msgstr "将两个 [int] 相乘。" + +msgid "" +"Raises an [int] to a power of a [float]. The result is a [float].\n" +"[codeblock]\n" +"print(2 ** 0.5) # Prints 1.4142135623731\n" +"[/codeblock]" +msgstr "" +"将 [int] 提升到 [float] 次幂。结果为 [float]。\n" +"[codeblock]\n" +"print(2 ** 0.5) # 输出 1.4142135623731\n" +"[/codeblock]" + +msgid "" +"Raises the left [int] to a power of the right [int].\n" +"[codeblock]\n" +"print(3 ** 4) # Prints 81\n" +"[/codeblock]" +msgstr "" +"将左侧的 [int] 提升到右侧的 [int] 次幂。\n" +"[codeblock]\n" +"print(3 ** 4) # 输出 81\n" +"[/codeblock]" + +msgid "Adds the [int] and the [float]. The result is a [float]." +msgstr "将该 [int] 加上该 [float]。结果为 [float]。" + +msgid "Adds the two [int]s." +msgstr "将两个 [int] 相加。" + +msgid "Subtracts the [float] from the [int]. The result is a [float]." +msgstr "将该 [int] 减去该 [float]。结果为 [float]。" + +msgid "Subtracts the two [int]s." +msgstr "将两个 [int] 相减。" + +msgid "" +"Divides the [int] by the [float]. The result is a [float].\n" +"[codeblock]\n" +"print(10 / 3.0) # Prints 3.33333333333333\n" +"[/codeblock]" +msgstr "" +"将该 [int] 除以该 [float]。结果为 [float]。\n" +"[codeblock]\n" +"print(10 / 3.0) # 输出 3.33333333333333\n" +"[/codeblock]" + +msgid "" +"Divides the two [int]s. The result is an [int]. This will truncate the " +"[float], discarding anything after the floating point.\n" +"[codeblock]\n" +"print(6 / 2) # Prints 3\n" +"print(5 / 3) # Prints 1\n" +"[/codeblock]" +msgstr "" +"将两个 [int] 相除。结果为 [int]。这样会截断该 [float],丢弃小数点后的部分。\n" +"[codeblock]\n" +"print(6 / 2) # 输出 3\n" +"print(5 / 3) # 输出 1\n" +"[/codeblock]" + +msgid "Returns [code]true[/code] if the [int] is less than the [float]." +msgstr "如果该 [int] 小于该 [float],则返回 [code]true[/code]。" + +msgid "" +"Returns [code]true[/code] if the left [int] is less than the right [int]." +msgstr "如果左侧的 [int] 小于右侧的 [int],则返回 [code]true[/code]。" + +msgid "" +"Performs the bitwise shift left operation. Effectively the same as " +"multiplying by a power of 2.\n" +"[codeblock]\n" +"print(0b1010 << 1) # Prints 20 (binary 10100)\n" +"print(0b1010 << 3) # Prints 80 (binary 1010000)\n" +"[/codeblock]" +msgstr "" +"执行按位左移操作。效果上与乘以 2 的幂相同。\n" +"[codeblock]\n" +"print(0b1010 << 1) # 输出 20(二进制 10100)\n" +"print(0b1010 << 3) # 输出 80(二进制 1010000)\n" +"[/codeblock]" + +msgid "" +"Returns [code]true[/code] if the [int] is less than or equal to the [float]." +msgstr "如果该 [int] 小于等于该 [float],则返回 [code]true[/code]。" + +msgid "" +"Returns [code]true[/code] if the left [int] is less than or equal to the " +"right [int]." +msgstr "如果左侧的 [int] 小于等于右侧的 [int],则返回 [code]true[/code]。" + +msgid "Returns [code]true[/code] if the [int] is equal to the [float]." +msgstr "如果该 [int] 等于该 [float],则返回 [code]true[/code]。" + +msgid "Returns [code]true[/code] if the two [int]s are equal." +msgstr "如果两个 [int] 相等,则返回 [code]true[/code]。" + +msgid "Returns [code]true[/code] if the [int] is greater than the [float]." +msgstr "如果该 [int] 大于该 [float],则返回 [code]true[/code]。" + +msgid "" +"Returns [code]true[/code] if the left [int] is greater than the right [int]." +msgstr "如果左侧的 [int] 大于右侧的 [int],则返回 [code]true[/code]。" + +msgid "" +"Returns [code]true[/code] if the [int] is greater than or equal to the " +"[float]." +msgstr "如果该 [int] 大于等于该 [float],则返回 [code]true[/code]。" + +msgid "" +"Returns [code]true[/code] if the left [int] is greater than or equal to the " +"right [int]." +msgstr "如果左侧的 [int] 大于等于右侧的 [int],则返回 [code]true[/code]。" + +msgid "" +"Performs the bitwise shift right operation. Effectively the same as dividing " +"by a power of 2.\n" +"[codeblock]\n" +"print(0b1010 >> 1) # Prints 5 (binary 101)\n" +"print(0b1010 >> 2) # Prints 2 (binary 10)\n" +"[/codeblock]" +msgstr "" +"执行按位右移操作。效果上与除以 2 的幂相同。\n" +"[codeblock]\n" +"print(0b1010 >> 1) # 输出 5(二进制 101)\n" +"print(0b1010 >> 2) # 输出 2(二进制 10)\n" +"[/codeblock]" + +msgid "" +"Performs the bitwise [code]XOR[/code] operation.\n" +"[codeblock]\n" +"print(0b1100 ^ 0b1010) # Prints 6 (binary 110)\n" +"[/codeblock]" +msgstr "" +"执行按位 [code]XOR[/code](异或)运算。\n" +"[codeblock]\n" +"print(0b1100 ^ 0b1010) # 输出 6(二进制 110)\n" +"[/codeblock]" msgid "" "Returns the negated value of the [int]. If positive, turns the number " @@ -56053,6 +57184,44 @@ msgstr "" "返回该 [int] 的相反值。如果为正数,则该将数变为负数。如果为负数,则将该数变为" "正数。如果为零,则不执行任何操作。" +msgid "" +"Performs the bitwise [code]OR[/code] operation.\n" +"[codeblock]\n" +"print(0b1100 | 0b1010) # Prints 14 (binary 1110)\n" +"[/codeblock]\n" +"This is useful for storing binary flags in a variable.\n" +"[codeblock]\n" +"var flags = 0\n" +"flags |= 0b101 # Turn the first and third bits on.\n" +"[/codeblock]" +msgstr "" +"执行按位 [code]OR[/code](或)运算。\n" +"[codeblock]\n" +"print(0b1100 | 0b1010) # 输出 14(二进制 1110)\n" +"[/codeblock]\n" +"可用于在变量中存储二进制标记。\n" +"[codeblock]\n" +"var flags = 0\n" +"flags |= 0b101 # 置第一和第三位。\n" +"[/codeblock]" + +msgid "" +"Performs the bitwise [code]NOT[/code] operation on the [int]. Due to " +"[url=https://en.wikipedia.org/wiki/Two%27s_complement/]2's complement[/url], " +"it's effectively equal to [code]-(int + 1)[/code].\n" +"[codeblock]\n" +"print(~4) # Prints -5\n" +"print(~(-7)) # Prints 6\n" +"[/codeblock]" +msgstr "" +"执行按位 [code]NOT[/code](反)运算。由于[url=https://zh.wikipedia.org/zh-cn/" +"%E4%BA%8C%E8%A3%9C%E6%95%B8]补码[/url],效果上与 [code]-(int + 1)[/code] 相" +"同。\n" +"[codeblock]\n" +"print(~4) # 输出 -5\n" +"print(~(-7)) # 输出 6\n" +"[/codeblock]" + msgid "Creates an idle interval in a [Tween] animation." msgstr "在 [Tween] 动画中创建空闲间隔。" @@ -58257,7 +59426,7 @@ msgstr "" "与 [member light_energy] 相乘的次级乘数,然后与 [Environment] 的体积雾(如果" "启用)一起使用。如果设置为 [code]0.0[/code],将用于该灯的体积雾计算将被跳过," "这可以在启用体积雾时提高大量灯光的性能。\n" -"[b]注意:[/b]除非 [member Environment. " +"[b]注意:[/b]除非 [member Environment." "volumetric_fog_temporal_reprojection_enabled] 被禁用(或者除非重投影的量显著" "降低),否则为防止短暂的动态光效与体积雾的互动性差,这些效果中使用的光应将 " "[member light_volumetric_fog_energy] 设置为 [code]0.0[/code]。" @@ -62468,7 +63637,7 @@ msgid "" "Returns the ID of the [MultiplayerPeer] who sent the next available packet. " "See [method PacketPeer.get_available_packet_count]." msgstr "" -"返回发送下一个可用数据包的 [MultiplayerPee] 的 ID。见 [method PacketPeer." +"返回发送下一个可用数据包的 [MultiplayerPeer] 的 ID。见 [method PacketPeer." "get_available_packet_count]。" msgid "Returns the ID of this [MultiplayerPeer]." @@ -62685,21 +63854,19 @@ msgid "" "Called when the \"refuse new connections\" status is requested on this " "[MultiplayerPeer] (see [member MultiplayerPeer.refuse_new_connections])." msgstr "" -"请求 [MultiplayerPeer] 的“拒绝新连接”状态时调用(见 [method MultiplayerPeer." +"请求 [MultiplayerPeer] 的“拒绝新连接”状态时调用(见 [member MultiplayerPeer." "refuse_new_connections])。" msgid "" "Called when the \"is server\" status is requested on the [MultiplayerAPI]. " "See [method MultiplayerAPI.is_server]." msgstr "" -"请求 [MultiplayerPeer] 的“是否为服务器”状态时调用(见 [method " -"MultiplayerPeer.refuse_new_connections])。" +"请求 [MultiplayerPeer] 的“是否为服务器”状态时调用。见 [method MultiplayerAPI." +"is_server]。" msgid "" "Called when the [MultiplayerAPI] is polled. See [method MultiplayerAPI.poll]." -msgstr "" -"轮询 [MultiplayerPeer] 时调用(见 [method MultiplayerPeer." -"refuse_new_connections])。" +msgstr "轮询 [MultiplayerPeer] 时调用。见 [method MultiplayerAPI.poll]。" msgid "" "Called when a packet needs to be sent by the [MultiplayerAPI], with [param " @@ -62720,7 +63887,7 @@ msgid "" "Called when the \"refuse new connections\" status is set on this " "[MultiplayerPeer] (see [member MultiplayerPeer.refuse_new_connections])." msgstr "" -"设置 [MultiplayerPeer] 的“拒绝新连接”状态时调用(见 [method MultiplayerPeer." +"设置 [MultiplayerPeer] 的“拒绝新连接”状态时调用(见 [member MultiplayerPeer." "refuse_new_connections])。" msgid "" @@ -62734,14 +63901,14 @@ msgid "" "Called when the channel to use is set for this [MultiplayerPeer] (see " "[member MultiplayerPeer.transfer_channel])." msgstr "" -"设置 [MultiplayerPeer] 所使用的通道时调用(见 [method MultiplayerPeer." +"设置 [MultiplayerPeer] 所使用的通道时调用(见 [member MultiplayerPeer." "transfer_channel])。" msgid "" "Called when the transfer mode is set on this [MultiplayerPeer] (see [member " "MultiplayerPeer.transfer_mode])." msgstr "" -"设置 [MultiplayerPeer] 所使用的传输模式时调用(见 [method MultiplayerPeer." +"设置 [MultiplayerPeer] 所使用的传输模式时调用(见 [member MultiplayerPeer." "transfer_mode])。" msgid "" @@ -63013,8 +64180,8 @@ msgstr "" "物使用的是 RVO(Reciprocal Velocity Obstacles,相对速度障碍物)防撞算法。代理" "需要导航数据才能正确工作。[NavigationAgent2D] 是物理安全的。\n" "[b]注意:[/b]设置 [member target_position] 之后,必须在每个物理帧使用一次 " -"[method get_next_location] 函数来更新 NavigationAgent 的内部路径逻辑。这个函" -"数返回的向量位置应该用作该代理的父节点的下一次移动位置。" +"[method get_next_path_position] 函数来更新 NavigationAgent 的内部路径逻辑。这" +"个函数返回的向量位置应该用作该代理的父节点的下一次移动位置。" msgid "Using NavigationAgents" msgstr "使用 NavigationAgent" @@ -63108,15 +64275,15 @@ msgid "" "the final position though. See [method get_final_position]." msgstr "" "如果已到达 [member target_position],则返回 true。目标位置并不总是可达。终点" -"位置应该总是可达的。见 [method get_final_location]。" +"位置应该总是可达的。见 [method get_final_position]。" msgid "" "Based on [param value], enables or disables the specified layer in the " "[member navigation_layers] bitmask, given a [param layer_number] between 1 " "and 32." msgstr "" -"根据 [param value],启用或禁用 [member navigation_layer] 中指定的层,给定的 " -"[param layer_number] 应在 1 和 32 之间。" +"根据 [param value],启用或禁用 [member navigation_layers] 位掩码中指定的层," +"给定的 [param layer_number] 应在 1 和 32 之间。" msgid "" "Sets the [RID] of the navigation map this NavigationAgent node should use " @@ -63133,6 +64300,19 @@ msgstr "" "将传入的速度发送给防撞算法。算法会为了防止撞击而调整速度。速度的调整完成后," "会触发 [signal velocity_computed] 信号。" +msgid "" +"If [code]true[/code] the agent is registered for an RVO avoidance callback " +"on the [NavigationServer2D]. When [method set_velocity] is used and the " +"processing is completed a [code]safe_velocity[/code] Vector2 is received " +"with a signal connection to [signal velocity_computed]. Avoidance processing " +"with many registered agents has a significant performance cost and should " +"only be enabled on agents that currently require it." +msgstr "" +"如果为 [code]true[/code],该代理被注册以用于在 [NavigationServer2D] 上的 RVO " +"回避回调。当使用 [method set_velocity] 并且处理完成时,会接收到一个 " +"[code]safe_velocity[/code] Vector2,带有众多已注册代理的回避处理会具有显著的" +"性能成本,应该只在当前需要它的代理上启用。" + msgid "If [code]true[/code] shows debug visuals for this agent." msgstr "如果为 [code]true[/code],则为该代理显示调试内容。" @@ -63207,6 +64387,15 @@ msgid "Additional information to return with the navigation path." msgstr "与导航路径一起返回的附加信息。" msgid "" +"The path postprocessing applied to the raw path corridor found by the " +"[member pathfinding_algorithm]." +msgstr "" +"对 [member pathfinding_algorithm] 找到的原始路径走廊应用的路径后期处理。" + +msgid "The pathfinding algorithm used in the path query." +msgstr "路径查询中使用的寻路算法。" + +msgid "" "The radius of the avoidance agent. This is the \"body\" of the avoidance " "agent and not the avoidance maneuver starting radius (which is controlled by " "[member neighbor_distance]).\n" @@ -63215,7 +64404,7 @@ msgid "" "agent_radius] property and use different navigation maps for each actor size." msgstr "" "该避障代理的半径。这是该避障代理的“身体”,不是避障机制的起始半径(由 [member " -"neighbor_dist] 控制)。\n" +"neighbor_distance] 控制)。\n" "不会影响正常的寻路。要修改角色的寻路半径,请在烘焙 [NavigationMesh] 资源时使" "用不同的 [member NavigationMesh.agent_radius] 属性,针对不同的角色大小使用不" "同的导航地图。" @@ -63286,6 +64475,14 @@ msgid "Notifies when the player-defined [member target_position] is reached." msgstr "抵达玩家定义的目标位置 [member target_position] 时发出通知。" msgid "" +"Notifies when the collision avoidance velocity is calculated. Emitted at the " +"end of the physics frame in which [method set_velocity] is called. Only " +"emitted when [member avoidance_enabled] is true." +msgstr "" +"计算出避障速度时发出通知。会在调用 [method set_velocity] 的那一个物理帧的末尾" +"发出。仅在 [member avoidance_enabled] 为 true 时发出。" + +msgid "" "Notifies when a waypoint along the path has been reached.\n" "The details dictionary may contain the following keys depending on the value " "of [member path_metadata_flags]:\n" @@ -63322,8 +64519,8 @@ msgstr "" "物使用的是 RVO(Reciprocal Velocity Obstacles,相对速度障碍物)防撞算法。代理" "需要导航数据才能正确工作。[NavigationAgent3D] 是物理安全的。\n" "[b]注意:[/b]设置 [member target_position] 之后,必须在每个物理帧使用一次 " -"[method get_next_location] 函数来更新 NavigationAgent 的内部路径逻辑。这个函" -"数返回的向量位置应该用作该代理的父节点的下一次移动位置。" +"[method get_next_path_position] 函数来更新 NavigationAgent 的内部路径逻辑。这" +"个函数返回的向量位置应该用作该代理的父节点的下一次移动位置。" msgid "" "Returns which index the agent is currently on in the navigation path's " @@ -63347,6 +64544,20 @@ msgstr "" "对其进行了烘焙,那么就必须支持不同大小的代理。" msgid "" +"If [code]true[/code] the agent is registered for an RVO avoidance callback " +"on the [NavigationServer3D]. When [method set_velocity] is used and the " +"processing is completed a [code]safe_velocity[/code] Vector3 is received " +"with a signal connection to [signal velocity_computed]. Avoidance processing " +"with many registered agents has a significant performance cost and should " +"only be enabled on agents that currently require it." +msgstr "" +"如果为 [code]true[/code],该代理被注册,以用于在 [NavigationServer3D] 上的 " +"RVO 避免回调。当使用 [method set_velocity] 并完成处理时,将接收到一个 " +"[code]safe_velocity[/code] Vector3,并带有一个与 [signal velocity_computed] " +"的信号连接。带有众多已注册代理的回避处理会具有显著的性能成本,应该只在当前需" +"要它的代理上启用。" + +msgid "" "Ignores collisions on the Y axis. Must be true to move on a horizontal plane." msgstr "忽略 Y 轴上的碰撞。必须为 true 才能在水平面上移动。" @@ -64020,15 +65231,6 @@ msgstr "包含在导航路径中的额外信息。" msgid "The navigation layers the query will use (as a bitmask)." msgstr "查询所使用的导航层(形式为位掩码)。" -msgid "" -"The path postprocessing applied to the raw path corridor found by the " -"[member pathfinding_algorithm]." -msgstr "" -"对 [member pathfinding_algorithm] 找到的原始路径走廊应用的路径后期处理。" - -msgid "The pathfinding algorithm used in the path query." -msgstr "路径查询中使用的寻路算法。" - msgid "The pathfinding start position in global coordinates." msgstr "寻路起始点,使用全局坐标。" @@ -65326,6 +66528,43 @@ msgstr "" "到 [signal tree_exited]。" msgid "" +"The elements in the array returned from this method are displayed as " +"warnings in the Scene dock if the script that overrides it is a [code]tool[/" +"code] script.\n" +"Returning an empty array produces no warnings.\n" +"Call [method update_configuration_warnings] when the warnings need to be " +"updated for this node.\n" +"[codeblock]\n" +"@export var energy = 0:\n" +" set(value):\n" +" energy = value\n" +" update_configuration_warnings()\n" +"\n" +"func _get_configuration_warnings():\n" +" if energy < 0:\n" +" return [\"Energy must be 0 or greater.\"]\n" +" else:\n" +" return []\n" +"[/codeblock]" +msgstr "" +"如果覆盖这个方法的脚本是 [code]tool[/code] 脚本,那么这个函数所返回的数组中的" +"元素会在“场景”面板中显示为警告。\n" +"返回空数组不会生成警告。\n" +"这个节点的警告需要更新时,请调用 [method update_configuration_warnings]。\n" +"[codeblock]\n" +"@export var energy = 0:\n" +" set(value):\n" +" energy = value\n" +" update_configuration_warnings()\n" +"\n" +"func _get_configuration_warnings():\n" +" if energy < 0:\n" +" return [\"Energy 必须大于等于 0。\"]\n" +" else:\n" +" return []\n" +"[/codeblock]" + +msgid "" "Called when there is an input event. The input event propagates up through " "the node tree until a node consumes it.\n" "It is only called if input processing is enabled, which is done " @@ -65411,9 +66650,9 @@ msgstr "" "另请参阅用于变量的 [code]@onready[/code] 注解。\n" "通常用于初始化。对于更早的初始化,可以使用 [method Object._init]。另见 " "[method _enter_tree]。\n" -"[b]注意:[/b] 对于每个节点可能仅调用一次 [method_ready]。从场景树中移除一个节" -"点后,并再次添加该节点时,将不会第二次调用 [code]_ready[/code]。这时可以通过" -"使用 [method request_ready],它可以在再次添加节点之前的任何地方被调用。" +"[b]注意:[/b] 对于每个节点可能仅调用一次 [method _ready]。从场景树中移除一个" +"节点后,并再次添加该节点时,将不会第二次调用 [code]_ready[/code]。这时可以通" +"过使用 [method request_ready],它可以在再次添加节点之前的任何地方被调用。" msgid "" "Called when an [InputEventKey] or [InputEventShortcut] hasn't been consumed " @@ -65502,6 +66741,93 @@ msgstr "" "被调用。" msgid "" +"Adds a child [param node]. Nodes can have any number of children, but every " +"child must have a unique name. Child nodes are automatically deleted when " +"the parent node is deleted, so an entire scene can be removed by deleting " +"its topmost node.\n" +"If [param force_readable_name] is [code]true[/code], improves the " +"readability of the added [param node]. If not named, the [param node] is " +"renamed to its type, and if it shares [member name] with a sibling, a number " +"is suffixed more appropriately. This operation is very slow. As such, it is " +"recommended leaving this to [code]false[/code], which assigns a dummy name " +"featuring [code]@[/code] in both situations.\n" +"If [param internal] is different than [constant INTERNAL_MODE_DISABLED], the " +"child will be added as internal node. Such nodes are ignored by methods like " +"[method get_children], unless their parameter [code]include_internal[/code] " +"is [code]true[/code]. The intended usage is to hide the internal nodes from " +"the user, so the user won't accidentally delete or modify them. Used by some " +"GUI nodes, e.g. [ColorPicker]. See [enum InternalMode] for available modes.\n" +"[b]Note:[/b] If the child node already has a parent, the function will fail. " +"Use [method remove_child] first to remove the node from its current parent. " +"For example:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var child_node = get_child(0)\n" +"if child_node.get_parent():\n" +" child_node.get_parent().remove_child(child_node)\n" +"add_child(child_node)\n" +"[/gdscript]\n" +"[csharp]\n" +"Node childNode = GetChild(0);\n" +"if (childNode.GetParent() != null)\n" +"{\n" +" childNode.GetParent().RemoveChild(childNode);\n" +"}\n" +"AddChild(childNode);\n" +"[/csharp]\n" +"[/codeblocks]\n" +"If you need the child node to be added below a specific node in the list of " +"children, use [method add_sibling] instead of this method.\n" +"[b]Note:[/b] If you want a child to be persisted to a [PackedScene], you " +"must set [member owner] in addition to calling [method add_child]. This is " +"typically relevant for [url=$DOCS_URL/tutorials/plugins/" +"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/" +"tutorials/plugins/editor/index.html]editor plugins[/url]. If [method " +"add_child] is called without setting [member owner], the newly added [Node] " +"will not be visible in the scene tree, though it will be visible in the " +"2D/3D view." +msgstr "" +"将 [param node] 添加为子节点。节点可以有任意数量的子节点,但子节点的名称必须" +"唯一。删除父节点时会自动删除子节点,因此可以通过删除最顶层的节点来删除整个场" +"景。\n" +"如果 [param force_readable_name] 为 [code]true[/code],则将提高所添加的 " +"[param node] 的可读性。如果尚未命名,[param node] 将重命名为它的类型,如果存" +"在 [member name] 相同的兄弟节点,则会添加合适的数字后缀。这个操作很慢。因此," +"建议将其保留为 [code]false[/code],在这两种情况下会分配包含 [code]@[/code] 的" +"虚拟名称。\n" +"如果 [param internal] 不同于 [constant INTERNAL_MODE_DISABLED],则该子节点将" +"被添加为内部节点。[method get_children] 等方法会忽略这种节点,除非它们的参数 " +"[code]include_internal[/code] 为 [code]true[/code]。这种功能的设计初衷是对用" +"户隐藏内部节点,这样用户就不会意外删除或修改这些节点。部分 GUI 节点会使用这个" +"功能,例如 [ColorPicker]。可用的模式见 [enum InternalMode]。\n" +"[b]注意:[/b]如果子节点已经有父节点,则该函数会失败。请先使用 [method " +"remove_child] 将节点从当前父节点中移除。例如:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var child_node = get_child(0)\n" +"if child_node.get_parent():\n" +" child_node.get_parent().remove_child(child_node)\n" +"add_child(child_node)\n" +"[/gdscript]\n" +"[csharp]\n" +"Node childNode = GetChild(0);\n" +"if (childNode.GetParent() != null)\n" +"{\n" +" childNode.GetParent().RemoveChild(childNode);\n" +"}\n" +"AddChild(childNode);\n" +"[/csharp]\n" +"[/codeblocks]\n" +"如果你需要将子节点添加到子节点列表中特定节点的下方,请使用 [method " +"add_sibling] 而不是该方法。\n" +"[b]注意:[/b]如果想让子节点持久化到某个 [PackedScene] 的,除了调用 [method " +"add_child] 之外,还必须设置 [member owner]。通常在[url=$DOCS_URL/tutorials/" +"plugins/running_code_in_the_editor.html]工具脚本[/url]和[url=$DOCS_URL/" +"tutorials/plugins/editor/index.html]编辑器插件[/url]中会用到。如果在没有设置 " +"[member owner],只调用了 [method add_child],则新添加的 [Node] 在场景树中将不" +"可见,但在 2D/3D 视图中却是可见的。" + +msgid "" "Adds a [param sibling] node to current's node parent, at the same level as " "that node, right below it.\n" "If [param force_readable_name] is [code]true[/code], improves the " @@ -65599,6 +66925,96 @@ msgstr "" "下被复制。" msgid "" +"Finds the first descendant of this node whose name matches [param pattern] " +"as in [method String.match]. Internal children are also searched over (see " +"[code]internal[/code] parameter in [method add_child]).\n" +"[param pattern] does not match against the full path, just against " +"individual node names. It is case-sensitive, with [code]\"*\"[/code] " +"matching zero or more characters and [code]\"?\"[/code] matching any single " +"character except [code]\".\"[/code]).\n" +"If [param recursive] is [code]true[/code], all child nodes are included, " +"even if deeply nested. Nodes are checked in tree order, so this node's first " +"direct child is checked first, then its own direct children, etc., before " +"moving to the second direct child, and so on. If [param recursive] is " +"[code]false[/code], only this node's direct children are matched.\n" +"If [param owned] is [code]true[/code], this method only finds nodes who have " +"an assigned [member Node.owner]. This is especially important for scenes " +"instantiated through a script, because those scenes don't have an owner.\n" +"Returns [code]null[/code] if no matching [Node] is found.\n" +"[b]Note:[/b] As this method walks through all the descendants of the node, " +"it is the slowest way to get a reference to another node. Whenever possible, " +"consider using [method get_node] with unique names instead (see [member " +"unique_name_in_owner]), or caching the node references into variable.\n" +"[b]Note:[/b] To find all descendant nodes matching a pattern or a class " +"type, see [method find_children]." +msgstr "" +"查找此节点的后代中,其名称与 [method String.match] 中的 [param pattern] 匹配" +"的第一个节点。也会查找内部子节点(见 [method add_child] 的 [code]internal[/" +"code] 参数)。\n" +"[param pattern] 不匹配完整路径,只匹配单个节点名称。它区分大小写," +"[code]\"*\"[/code] 匹配零个或多个字符,[code]\"?\"[/code] 匹配除 [code]\"." +"\"[/code] 之外的任意单个字符。\n" +"如果 [param recursive] 为 [code]true[/code],则查找范围包括所有子节点,即使嵌" +"套很深。节点按树顺序检查,因此首先检查该节点的第一个直接子节点,然后是该直接" +"子节点的直接子节点,等等,然后移动到第二个直接子节点,依此类推。如果 [param " +"recursive] 为 [code]false[/code],则仅匹配该节点的直接子节点。\n" +"如果 [param owned] 为 [code]true[/code],则该方法仅查找分配有 [member Node." +"owner] 的节点。这对于通过脚本实例化的场景尤其重要,因为这些场景没有所有者。\n" +"如果找不到匹配的 [Node],则返回 [code]null[/code]。\n" +"[b]注意:[/b]由于该方法会遍历节点的所有后代,因此它是获取对另一个节点的引用的" +"最慢方法。只要有可能,请考虑改用使用唯一名称的 [method get_node](请参阅 " +"[member unique_name_in_owner]),或将该节点引用缓存到变量中。\n" +"[b]注意:[/b]要查找匹配一个模式或类类型的所有后代节点,请参阅 [method " +"find_children]。" + +msgid "" +"Finds descendants of this node whose name matches [param pattern] as in " +"[method String.match], and/or type matches [param type] as in [method Object." +"is_class]. Internal children are also searched over (see [code]internal[/" +"code] parameter in [method add_child]).\n" +"[param pattern] does not match against the full path, just against " +"individual node names. It is case-sensitive, with [code]\"*\"[/code] " +"matching zero or more characters and [code]\"?\"[/code] matching any single " +"character except [code]\".\"[/code]).\n" +"[param type] will check equality or inheritance, and is case-sensitive. " +"[code]\"Object\"[/code] will match a node whose type is [code]\"Node\"[/" +"code] but not the other way around.\n" +"If [param recursive] is [code]true[/code], all child nodes are included, " +"even if deeply nested. Nodes are checked in tree order, so this node's first " +"direct child is checked first, then its own direct children, etc., before " +"moving to the second direct child, and so on. If [param recursive] is " +"[code]false[/code], only this node's direct children are matched.\n" +"If [param owned] is [code]true[/code], this method only finds nodes who have " +"an assigned [member Node.owner]. This is especially important for scenes " +"instantiated through a script, because those scenes don't have an owner.\n" +"Returns an empty array if no matching nodes are found.\n" +"[b]Note:[/b] As this method walks through all the descendants of the node, " +"it is the slowest way to get references to other nodes. Whenever possible, " +"consider caching the node references into variables.\n" +"[b]Note:[/b] If you only want to find the first descendant node that matches " +"a pattern, see [method find_child]." +msgstr "" +"查找该节点的后代节点,其名称与 [method String.match] 中的 [param pattern] 匹" +"配,和/或类型与 [method Object.is_class] 中的 [param type] 匹配。也会查找内部" +"子节点(见 [method add_child] 的 [code]internal[/code] 参数)。\n" +"[param pattern] 不匹配完整路径,只匹配单个节点名称。它区分大小写," +"[code]\"*\"[/code] 匹配零个或多个字符,[code]\"?\"[/code] 匹配除 [code]\"." +"\"[/code] 之外的任意单个字符。\n" +"[param type] 将检查相等性或继承关系,并且区分大小写。[code]\"Object\"[/code] " +"会匹配类型为 [code]\"Node\"[/code] 的节点,但反之则不然。\n" +"如果 [param recursive] 为 [code]true[/code],则匹配范围包括所有子节点,即使嵌" +"套很深。节点按树顺序检查,因此首先检查该节点的第一个直接子节点,然后是该直接" +"子节点的直接子节点,等等,然后移动到第二个直接子节点,依此类推。如果 [param " +"recursive] 为 [code]false[/code],则仅匹配该节点的直接子节点。\n" +"如果 [param owned] 为 [code]true[/code],则该方法仅查找分配有 [member Node." +"owner] 的节点。这对于通过脚本实例化的场景尤其重要,因为这些场景没有所有者。\n" +"如果找不到匹配的节点,则返回空数组。\n" +"[b]注意:[/b]由于该方法会遍历节点的所有后代,因此它是获取对其他节点的引用的最" +"慢方法。只要有可能,请考虑将节点引用缓存到变量中。\n" +"[b]注意:[/b]如果只想查找匹配模式的第一个后代节点,请参阅 [method " +"find_child]。" + +msgid "" "Finds the first parent of the current node whose name matches [param " "pattern] as in [method String.match].\n" "[param pattern] does not match against the full path, just against " @@ -66738,8 +68154,8 @@ msgid "" "the window with a \"Close\" button or [kbd]Alt + F4[/kbd]).\n" "Implemented on desktop platforms." msgstr "" -"当发出关闭请求时,从操作系统收到该通知(例如,使用一个“关闭”按钮、或按下 " -"[kbd]Alt + F4[/kbd] 关闭窗口时)。\n" +"当发出关闭请求时,从操作系统收到的通知(例如使用“关闭”按钮或按下 [kbd]Alt + " +"F4[/kbd] 关闭窗口时)。\n" "在桌面平台上实现。" msgid "" @@ -66751,6 +68167,14 @@ msgstr "" "钮)。\n" "仅限 Android 平台。" +msgid "Notification received from the OS when the window is resized." +msgstr "当窗口大小发生改变时,从操作系统收到的通知。" + +msgid "" +"Notification received from the OS when the screen's DPI has been changed. " +"Only implemented on macOS." +msgstr "当屏幕的 DPI 发生更改时,从操作系统受到的通知。仅在 macOS 上实现。" + msgid "Notification received when the mouse enters the viewport." msgstr "当鼠标进入视口时收到的通知。" @@ -67368,6 +68792,17 @@ msgstr "" "用户需要使用 [method set_notify_local_transform] 手动申请才能够收到 " "[constant NOTIFICATION_LOCAL_TRANSFORM_CHANGED]。" +msgid "The rotation is edited using [Vector3] Euler angles." +msgstr "旋转量以 [Vector3] 欧拉角的形式编辑。" + +msgid "The rotation is edited using a [Quaternion]." +msgstr "旋转量以 [Quaternion] 的形式编辑。" + +msgid "" +"The rotation is edited using a [Basis]. In this mode, [member scale] can't " +"be edited separately." +msgstr "旋转量以 [Basis] 的形式编辑。此模式下无法单独编辑 [member scale]。" + msgid "Pre-parsed scene tree path." msgstr "预先解析的场景树路径。" @@ -67619,6 +69054,41 @@ msgstr "" "例如,[code]\"Path2D/PathFollow2D/Sprite2D\"[/code] 中有 3 个名称。" msgid "" +"Gets the resource or property name indicated by [param idx] (0 to [method " +"get_subname_count] - 1).\n" +"[codeblocks]\n" +"[gdscript]\n" +"var node_path = NodePath(\"Path2D/PathFollow2D/Sprite2D:texture:" +"load_path\")\n" +"print(node_path.get_subname(0)) # texture\n" +"print(node_path.get_subname(1)) # load_path\n" +"[/gdscript]\n" +"[csharp]\n" +"var nodePath = new NodePath(\"Path2D/PathFollow2D/Sprite2D:texture:" +"load_path\");\n" +"GD.Print(nodePath.GetSubname(0)); // texture\n" +"GD.Print(nodePath.GetSubname(1)); // load_path\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"获取由 [param idx] 表示的资源或属性名称(0 到 [method get_subname_count] - " +"1)。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var node_path = NodePath(\"Path2D/PathFollow2D/Sprite2D:texture:" +"load_path\")\n" +"print(node_path.get_subname(0)) # texture\n" +"print(node_path.get_subname(1)) # load_path\n" +"[/gdscript]\n" +"[csharp]\n" +"var nodePath = new NodePath(\"Path2D/PathFollow2D/Sprite2D:texture:" +"load_path\");\n" +"GD.Print(nodePath.GetSubname(0)); // texture\n" +"GD.Print(nodePath.GetSubname(1)); // load_path\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" "Gets the number of resource or property names (\"subnames\") in the path. " "Each subname is listed after a colon character ([code]:[/code]) in the node " "path.\n" @@ -70650,6 +72120,18 @@ msgid "Operating System functions." msgstr "操作系统函数。" msgid "" +"Operating System functions. [OS] wraps the most common functionality to " +"communicate with the host operating system, such as the video driver, " +"delays, environment variables, execution of binaries, command line, etc.\n" +"[b]Note:[/b] In Godot 4, [OS] functions related to window management were " +"moved to the [DisplayServer] singleton." +msgstr "" +"操作系统函数。[OS] 封装了与主机操作系统通信的最常见功能,如视频驱动、延时、环" +"境变量、二进制文件的执行、命令行等。\n" +"[b]注意:[/b]在 Godot 4 中,窗口管理相关的 [OS] 函数已移动至 [DisplayServer] " +"单例。" + +msgid "" "Displays a modal dialog box using the host OS' facilities. Execution is " "blocked until the dialog is closed." msgstr "" @@ -71164,13 +72646,13 @@ msgid "" "words. Currency, calendar, sort order and numbering system information." msgstr "" "将主机操作系统区域设置为 [code]language_Script_COUNTRY_VARIANT@extra[/code] " -"形式的字符串。如果您只想要语言代码而不是操作系统中完全指定的语言环境,您可以" -"使用 [method get_locale_language]。\n" +"形式的字符串。如果你只想要语言代码而不是操作系统中完全指定的语言环境,可以使" +"用 [method get_locale_language]。\n" "[code]language[/code] - 2 个或 3 个字母的[url=https://en.wikipedia.org/wiki/" "List_of_ISO_639-1_codes]语言代码[/url],小写。\n" "[code]Script[/code] - 可选,4 个字母的[url=https://en.wikipedia.org/wiki/" -"ISO_15924]文字代码 [/url],首字母大写。\n" -"[code]COUNTRY[/code] - 可选,2 个或 3 个字母 [url=https://en.wikipedia.org/" +"ISO_15924]文字代码[/url],首字母大写。\n" +"[code]COUNTRY[/code] - 可选,2 个或 3 个字母的[url=https://en.wikipedia.org/" "wiki/ISO_3166-1]国家地区代码[/url],大写。\n" "[code]VARIANT[/code] - 可选,语言变体,地区和排序顺序。变体可以有任意数量的带" "下划线的关键字。\n" @@ -71493,7 +72975,7 @@ msgstr "" "\\[custom_name][/code]。[code]%AppData%[/code] 扩展为 [code]%UserProfile%" "\\AppData\\Roaming[/code]。\n" "在 macOS 上,这是 [code]~/Library/Application Support/Godot/app_userdata/" -"[project_name][/code];如果已设置 [code]use_custom_user_dir [/code],则为 " +"[project_name][/code];如果已设置 [code]use_custom_user_dir[/code],则为 " "[code]~/Library/Application Support/[custom_name][/code] 。\n" "在 Linux 和 BSD 上,这是 [code]~/.local/share/godot/app_userdata/" "[project_name][/code];如果已设置 [code]use_custom_user_dir[/code],则为 " @@ -71632,7 +73114,7 @@ msgid "" "See also [method @GlobalScope.print_verbose]." msgstr "" "如果引擎是使用 [code]--verbose[/code] 或 [code]-v[/code] 命令行参数执行的,或" -"者如果 [member ProjectSettings.debug/settings/ stdout/verbose_stdout] 为 " +"者如果 [member ProjectSettings.debug/settings/stdout/verbose_stdout] 为 " "[code]true[/code],则返回 [code]true[/code]。另请参阅 [method @GlobalScope." "print_verbose]。" @@ -72290,7 +73772,7 @@ msgid "" "for [code]arr.slice(0, arr.size() - 2)[/code])." msgstr "" "返回该 [PackedByteArray] 的切片,是从 [param begin](含)到 [param end](不" -"含)的全新 [PackedVecPackedByteArraytor3Array]。\n" +"含)的全新 [PackedByteArray]。\n" "[param begin] 和 [param end] 的绝对值会按数组大小进行限制,所以 [param end] " "的默认值会切到数组大小为止(即 [code]arr.slice(1)[/code] 是 [code]arr." "slice(1, arr.size())[/code] 的简写)。\n" @@ -73282,6 +74764,24 @@ msgstr "" msgid "Abstraction and base class for packet-based protocols." msgstr "基于包的协议的抽象和基类。" +msgid "" +"PacketPeer is an abstraction and base class for packet-based protocols (such " +"as UDP). It provides an API for sending and receiving packets both as raw " +"data or variables. This makes it easy to transfer data over a protocol, " +"without having to encode data as low-level bytes or having to worry about " +"network ordering.\n" +"[b]Note:[/b] When exporting to Android, make sure to enable the " +"[code]INTERNET[/code] permission in the Android export preset before " +"exporting the project or using one-click deploy. Otherwise, network " +"communication of any kind will be blocked by Android." +msgstr "" +"PacketPeer 是基于数据包的协议(如 UDP)的抽象和基类。它提供了用于发送和接收数" +"据包的 API,可以发送原始数据或变量。这使得在协议之间传输数据变得容易,不必将" +"数据编码为低级字节或担心网络排序问题。\n" +"[b]注意:[/b]导出到安卓时,在导出项目、或使用一键部署之前,请务必在安卓导出预" +"设中,开启 [code]INTERNET[/code] 权限。否则,任何类型的网络通信,都将被 " +"Android 阻止。" + msgid "Returns the number of packets currently available in the ring-buffer." msgstr "返回环形缓冲区中当前可用的数据包数。" @@ -73360,6 +74860,19 @@ msgstr "" "[b]警告:[/b]目前不支持 TLS 证书撤销和证书绑定。只要撤销的证书在其他方面有" "效,就会被接受。如果这是一个问题,可以使用有效期较短的自动管理证书。" +msgid "" +"Connects a [param packet_peer] beginning the DTLS handshake using the " +"underlying [PacketPeerUDP] which must be connected (see [method " +"PacketPeerUDP.connect_to_host]). You can optionally specify the [param " +"client_options] to be used while verifying the TLS connections. See [method " +"TLSOptions.client] and [method TLSOptions.client_unsafe]." +msgstr "" +"连接 [param packet_peer] 并开始使用底层的 [PacketPeerUDP] 进行 DTLS 握手,进" +"行握手时 [PacketPeerUDP] 必须已连接(见 [method PacketPeerUDP." +"connect_to_host])。你还可以指定验证 TLS 连接时使用的 [param " +"client_options]。见 [method TLSOptions.client] 和 [method TLSOptions." +"client_unsafe]。" + msgid "Disconnects this peer, terminating the DTLS session." msgstr "断开此对等体的连接,终止 DTLS 会话。" @@ -73395,6 +74908,23 @@ msgstr "显示主机提供的 DTLS 证书域与请求验证的域不匹配的错 msgid "Wrapper to use a PacketPeer over a StreamPeer." msgstr "在 StreamPeer 上使用 PacketPeer 的包装器。" +msgid "" +"PacketStreamPeer provides a wrapper for working using packets over a stream. " +"This allows for using packet based code with StreamPeers. PacketPeerStream " +"implements a custom protocol over the StreamPeer, so the user should not " +"read or write to the wrapped StreamPeer directly.\n" +"[b]Note:[/b] When exporting to Android, make sure to enable the " +"[code]INTERNET[/code] permission in the Android export preset before " +"exporting the project or using one-click deploy. Otherwise, network " +"communication of any kind will be blocked by Android." +msgstr "" +"PacketStreamPeer 提供了一个在流中使用数据包的包装器。这样就能够在基于数据包的" +"代码中使用 StreamPeer。PacketPeerStream 在 StreamPeer 的基础上实现了自定义协" +"议,因此用户不应该直接读取或写入被包装的 StreamPeer。\n" +"[b]注意:[/b]导出到安卓时,在导出项目、或使用一键部署之前,请务必在安卓导出预" +"设中,开启 [code]INTERNET[/code] 权限。否则,任何类型的网络通信,都将被 " +"Android 阻止。" + msgid "The wrapped [StreamPeer] object." msgstr "被包装的 [StreamPeer] 对象。" @@ -73505,6 +75035,13 @@ msgstr "" "code] 权限才能进行多播。" msgid "" +"Removes the interface identified by [param interface_name] from the " +"multicast group specified by [param multicast_address]." +msgstr "" +"从 [param multicast_address] 指定的组播组中移除 [param interface_name] 标识的" +"接口。" + +msgid "" "Enable or disable sending of broadcast packets (e.g. " "[code]set_dest_address(\"255.255.255.255\", 4343)[/code]. This option is " "disabled by default.\n" @@ -73528,6 +75065,76 @@ msgstr "" "[b]注意:[/b]在向广播地址(例如:[code]255.255.255.255[/code])发送数据包之" "前,必须启用 [method set_broadcast_enabled]。" +msgid "" +"Waits for a packet to arrive on the bound address. See [method bind].\n" +"[b]Note:[/b] [method wait] can't be interrupted once it has been called. " +"This can be worked around by allowing the other party to send a specific " +"\"death pill\" packet like this:\n" +"[codeblocks]\n" +"[gdscript]\n" +"socket = PacketPeerUDP.new()\n" +"# Server\n" +"socket.set_dest_address(\"127.0.0.1\", 789)\n" +"socket.put_packet(\"Time to stop\".to_ascii())\n" +"\n" +"# Client\n" +"while socket.wait() == OK:\n" +" var data = socket.get_packet().get_string_from_ascii()\n" +" if data == \"Time to stop\":\n" +" return\n" +"[/gdscript]\n" +"[csharp]\n" +"var socket = new PacketPeerUDP();\n" +"// Server\n" +"socket.SetDestAddress(\"127.0.0.1\", 789);\n" +"socket.PutPacket(\"Time to stop\".ToAscii());\n" +"\n" +"// Client\n" +"while (socket.Wait() == OK)\n" +"{\n" +" string data = socket.GetPacket().GetStringFromASCII();\n" +" if (data == \"Time to stop\")\n" +" {\n" +" return;\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"等待数据包到达绑定的地址。见 [method bind]。\n" +"[b]注意:[/b][method wait] 一旦被调用就无法中断。解决方法是让对方发送一个特定" +"的“毒药”数据包,如下所示:\n" +"[codeblocks]\n" +"[gdscript]\n" +"socket = PacketPeerUDP.new()\n" +"# 服务端\n" +"socket.set_dest_address(\"127.0.0.1\", 789)\n" +"socket.put_packet(\"Time to stop\".to_ascii())\n" +"\n" +"# 客户端\n" +"while socket.wait() == OK:\n" +" var data = socket.get_packet().get_string_from_ascii()\n" +" if data == \"Time to stop\":\n" +" return\n" +"[/gdscript]\n" +"[csharp]\n" +"var socket = new PacketPeerUDP();\n" +"// 服务端\n" +"socket.SetDestAddress(\"127.0.0.1\", 789);\n" +"socket.PutPacket(\"Time to stop\".ToAscii());\n" +"\n" +"// 客户端\n" +"while (socket.Wait() == OK)\n" +"{\n" +" string data = socket.GetPacket().GetStringFromASCII();\n" +" if (data == \"Time to stop\")\n" +" {\n" +" return;\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" + msgid "Provides an opaque background for [Control] children." msgstr "为 [Control] 子控件提供不透明的背景。" @@ -73733,6 +75340,24 @@ msgid "Each particle's rotation will be animated along this [CurveTexture]." msgstr "每个粒子的旋转将沿着这个 [CurveTexture] 动画。" msgid "" +"Maximum initial rotation applied to each particle, in degrees.\n" +"Only applied when [member particle_flag_disable_z] or [member " +"particle_flag_rotate_y] are [code]true[/code] or the [BaseMaterial3D] being " +"used to draw the particle is using [constant BaseMaterial3D." +"BILLBOARD_PARTICLES]." +msgstr "" +"应用于每个粒子的最大初始旋转,以度为单位。\n" +"仅在 [member particle_flag_disable_z] 或 [member particle_flag_rotate_y] 为 " +"[code]true[/code],或 [BaseMaterial3D] 使用 [constant BaseMaterial3D." +"BILLBOARD_PARTICLES] 绘制粒子时应用。" + +msgid "" +"Each particle's angular velocity (rotation speed) will vary along this " +"[CurveTexture] over its lifetime." +msgstr "" +"在每个粒子生命周期内,其角速度(旋转速度)将沿着此 [CurveTexture] 变化。" + +msgid "" "Maximum initial angular velocity (rotation speed) applied to each particle " "in [i]degrees[/i] per second.\n" "Only applied when [member particle_flag_disable_z] or [member " @@ -73762,6 +75387,29 @@ msgstr "" "粒子的弹性。值范围从 [code]0[/code](无弹跳)到 [code]1[/code](完全弹跳)。" "仅当 [member collision_mode] 为 [constant COLLISION_RIGID] 时有效。" +msgid "" +"The particles' friction. Values range from [code]0[/code] (frictionless) to " +"[code]1[/code] (maximum friction). Only effective if [member collision_mode] " +"is [constant COLLISION_RIGID]." +msgstr "" +"粒子的摩擦。值范围从 [code]0[/code](无摩擦)到 [code]1[/code](最大摩擦)。" + +msgid "" +"The particles' collision mode.\n" +"[b]Note:[/b] 3D Particles can only collide with [GPUParticlesCollision3D] " +"nodes, not [PhysicsBody3D] nodes. To make particles collide with various " +"objects, you can add [GPUParticlesCollision3D] nodes as children of " +"[PhysicsBody3D] nodes.\n" +"[b]Note:[/b] 2D Particles can only collide with [LightOccluder2D] nodes, not " +"[PhysicsBody2D] nodes." +msgstr "" +"粒子的碰撞模式。\n" +"[b]注意:[/b]3D 粒子只能与 [GPUParticlesCollision3D] 节点碰撞,无法与 " +"[PhysicsBody3D] 节点碰撞。要使粒子与不同的物体碰撞,可以将 " +"[GPUParticlesCollision3D] 节点添加为 [PhysicsBody3D] 节点的子节点。\n" +"[b]注意:[/b]2D 粒子只能与 [LightOccluder2D] 节点碰撞,无法与 " +"[PhysicsBody2D] 节点碰撞。" + msgid "Should collision take scale into account." msgstr "碰撞是否应该考虑缩放。" @@ -73794,6 +75442,25 @@ msgstr "" "的范围。" msgid "" +"Particle color will be modulated by color determined by sampling this " +"texture at the same point as the [member emission_point_texture].\n" +"[b]Note:[/b] [member emission_color_texture] multiplies the particle mesh's " +"vertex colors. To have a visible effect on a [BaseMaterial3D], [member " +"BaseMaterial3D.vertex_color_use_as_albedo] [i]must[/i] be [code]true[/code]. " +"For a [ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/code] must be inserted " +"in the shader's [code]fragment()[/code] function. Otherwise, [member " +"emission_color_texture] will have no visible effect." +msgstr "" +"粒子颜色将被调制,调制使用的颜色将通过对该纹理在与 [member " +"emission_point_texture] 相同的点处进行采样来确定。\n" +"[b]注意:[/b][member emission_color_texture] 乘以粒子网格的顶点颜色。要在 " +"[BaseMaterial3D] 上产生可见效果,[member BaseMaterial3D." +"vertex_color_use_as_albedo] [i]必须[/i]为 [code]true[/code]。对于 " +"[ShaderMaterial],必须在着色器的 [code]fragment()[/code] 函数中插入 " +"[code]ALBEDO *= COLOR.rgb;[/code]。否则,[member emission_color_texture] 将没" +"有可见效果。" + +msgid "" "Particle velocity and rotation will be set by sampling this texture at the " "same point as the [member emission_point_texture]. Used only in [constant " "EMISSION_SHAPE_DIRECTED_POINTS]. Can be created automatically from mesh or " @@ -73843,12 +75510,32 @@ msgid "Each particle's hue will vary along this [CurveTexture]." msgstr "每个粒子的色调将沿着这个 [CurveTexture] 变化。" msgid "" +"Particle lifetime randomness ratio. The lifetime will be multiplied by a " +"value interpolated between [code]1.0[/code] and a random number less than " +"one. For example a random ratio of [code]0.4[/code] would scale the original " +"lifetime between [code]0.4-1.0[/code] of its original value." +msgstr "" +"粒子寿命随机性比率。生命周期将乘以一个介于 [code]1.0[/code] 和小于 1 的随机数" +"之间的插值。例如,[code]0.4[/code] 的随机比率将在其原始生命周期的 " +"[code]0.4-1.0[/code] 之间缩放原始生命周期。" + +msgid "" "Each particle's linear acceleration will vary along this [CurveTexture]." msgstr "每个粒子的线性加速度将沿着这个 [CurveTexture] 变化。" msgid "Each particle's orbital velocity will vary along this [CurveTexture]." msgstr "每个粒子的轨道速度将沿着这个 [CurveTexture] 变化。" +msgid "" +"Maximum orbital velocity applied to each particle. Makes the particles " +"circle around origin. Specified in number of full rotations around origin " +"per second.\n" +"Only available when [member particle_flag_disable_z] is [code]true[/code]." +msgstr "" +"应用于每个粒子的最大轨道速度。使粒子围绕原点环绕。以每秒围绕原点的完整旋转次" +"数指定。\n" +"仅当 [member particle_flag_disable_z] 为 [code]true[/code] 时可用。" + msgid "If [code]true[/code], particles will not move on the z axis." msgstr "如果为 [code]true[/code],则粒子将不会在 z 轴上移动。" @@ -73856,13 +75543,112 @@ msgid "" "Each particle's radial acceleration will vary along this [CurveTexture]." msgstr "每个粒子的径向加速度将沿着这个 [CurveTexture] 变化。" +msgid "" +"Each particle's scale will vary along this [CurveTexture]. If a " +"[CurveXYZTexture] is supplied instead, the scale will be separated per-axis." +msgstr "" +"每个粒子的缩放将沿着这个 [CurveTexture] 变化。如果改为提供一个 " +"[CurveXYZTexture],则缩放将按轴分离。" + msgid "Minimum equivalent of [member scale_max]." msgstr "[member scale_max] 对应的最小值。" msgid "" +"Sub particle amount on collision.\n" +"Maximum amount set in the sub particles emitter." +msgstr "" +"碰撞时子粒子的数量。\n" +"子粒子发射器中设置的最大数量。" + +msgid "" "Each particle's tangential acceleration will vary along this [CurveTexture]." msgstr "每个粒子的切向加速度将沿着这个 [CurveTexture] 变化。" +msgid "Enables and disables Turbulence for the particle system." +msgstr "启用和禁用粒子系统的湍流。" + +msgid "" +"Maximum turbulence influence on each particle.\n" +"The actual amount of turbulence influence on each particle is calculated as " +"a random value between [member turbulence_influence_min] and [member " +"turbulence_influence_max] and multiplied by the amount of turbulence " +"influence from [member turbulence_influence_over_life]." +msgstr "" +"对每个粒子的最大湍流影响。\n" +"对每个粒子的实际湍流影响量,计算为介于 [member turbulence_influence_min] 和 " +"[member turbulence_influence_max] 之间的一个随机值,并乘以来自 [member " +"turbulence_influence_over_life] 的湍流影响量。" + +msgid "" +"Minimum turbulence influence on each particle.\n" +"The actual amount of turbulence influence on each particle is calculated as " +"a random value between [member turbulence_influence_min] and [member " +"turbulence_influence_max] and multiplied by the amount of turbulence " +"influence from [member turbulence_influence_over_life]." +msgstr "" +"对每个粒子的最小湍流影响。\n" +"对每个粒子的实际湍流影响量,计算为介于 [member turbulence_influence_min] 和 " +"[member turbulence_influence_max] 之间的一个随机值,并乘以来自 [member " +"turbulence_influence_over_life] 的湍流影响量。" + +msgid "" +"Each particle's amount of turbulence will be influenced along this " +"[CurveTexture] over its life time." +msgstr "每个粒子的湍流量,将在其生命周期内沿这条 [CurveTexture] 受到影响。" + +msgid "" +"Maximum displacement of each particles spawn position by the turbulence.\n" +"The actual amount of displacement will be a factor of the underlying " +"turbulence multiplied by a random value between [member " +"turbulence_initial_displacement_min] and [member " +"turbulence_initial_displacement_max]." +msgstr "" +"湍流对每个粒子出生位置的最大位移。\n" +"实际位移量将是基础湍流乘以一个介于 [member " +"turbulence_initial_displacement_min] 和 [member " +"turbulence_initial_displacement_max] 之间的随机值的系数。" + +msgid "" +"Minimum displacement of each particles spawn position by the turbulence.\n" +"The actual amount of displacement will be a factor of the underlying " +"turbulence multiplied by a random value between [member " +"turbulence_initial_displacement_min] and [member " +"turbulence_initial_displacement_max]." +msgstr "" +"湍流对每个粒子出生位置的最小位移。\n" +"实际位移量将是基础湍流乘以一个介于 [member " +"turbulence_initial_displacement_min] 和 [member " +"turbulence_initial_displacement_max] 之间的随机值的系数。" + +msgid "" +"This value controls the overall scale/frequency of the turbulence noise " +"pattern.\n" +"A small scale will result in smaller features with more detail while a high " +"scale will result in smoother noise with larger features." +msgstr "" +"该值控制湍流噪声图案的整体比例/频率。\n" +"小的比例会产生更小的特征具有更多细节,而高的比例会产生具有更大特征的更平滑的" +"噪声。" + +msgid "" +"The movement speed of the turbulence pattern. This changes how quickly the " +"noise changes over time.\n" +"A value of [code]Vector3(0.0, 0.0, 0.0)[/code] will freeze the turbulence " +"pattern in place." +msgstr "" +"湍流图案的移动速度。这会改变噪声随时间变化的速度。\n" +"[code]Vector3(0.0, 0.0, 0.0)[/code] 的值,会将湍流图案冻结在适当的位置。" + +msgid "" +"Use to influence the noise speed in a random pattern. This helps to break up " +"visible movement patterns." +msgstr "用于以随机图案影响噪声速度。这有助于打破可见的移动图案。" + +msgid "" +"The turbulence noise strength. Increasing this will result in a stronger, " +"more contrasting, noise pattern." +msgstr "湍流噪声强度。增加此值将导致更强、更具对比的噪声图案。" + msgid "" "Use with [method set_param_min], [method set_param_max], and [method " "set_param_texture] to set initial velocity properties." @@ -73965,6 +75751,25 @@ msgstr "" "度和旋转将基于 [member emission_normal_texture] 进行设置。粒子颜色将由 " "[member emission_color_texture] 调节。" +msgid "" +"Use with [method set_param_min] and [method set_param_max] to set the " +"turbulence minimum und maximum influence on each particles velocity." +msgstr "" +"与 [method set_param_min] 和 [method set_param_max] 一起使用,以设置湍流对每" +"个粒子速度的最小和最大影响。" + +msgid "" +"Use with [method set_param_min] and [method set_param_max] to set the " +"turbulence minimum and maximum displacement of the particles spawn position." +msgstr "" +"与 [method set_param_min] 和 [method set_param_max] 一起使用,以设置粒子出生" +"位置的湍流最小和最大位移。" + +msgid "" +"Use with [method set_param_texture] to set the turbulence influence over the " +"particles life time." +msgstr "与 [method set_param_texture] 一起使用,以设置湍流对粒子寿命的影响。" + msgid "Represents the size of the [enum SubEmitterMode] enum." msgstr "代表 [enum SubEmitterMode] 枚举的大小。" @@ -73974,6 +75779,12 @@ msgid "" msgstr "粒子没有碰撞。粒子会穿过 [GPUParticlesCollision3D] 节点。" msgid "" +"[RigidBody3D]-style collision for particles using [GPUParticlesCollision3D] " +"nodes." +msgstr "" +"为使用 [GPUParticlesCollision3D] 节点的粒子设置 [RigidBody3D] 风格的碰撞。" + +msgid "" "Hide particles instantly when colliding with a [GPUParticlesCollision3D] " "node. This can be combined with a subemitter that uses the [constant " "COLLISION_RIGID] collision mode to \"replace\" the parent particle with the " @@ -74003,6 +75814,21 @@ msgstr "" msgid "A [Curve2D] describing the path." msgstr "描述路径的 [Curve2D]。" +msgid "Contains a [Curve3D] path for [PathFollow3D] nodes to follow." +msgstr "包含 [PathFollow3D] 节点要跟随的的一条 [Curve3D] 路径。" + +msgid "" +"Can have [PathFollow3D] child nodes moving along the [Curve3D]. See " +"[PathFollow3D] for more information on the usage.\n" +"Note that the path is considered as relative to the moved nodes (children of " +"[PathFollow3D]). As such, the curve should usually start with a zero vector " +"[code](0, 0, 0)[/code]." +msgstr "" +"可以让 [PathFollow3D] 子节点沿着 [Curve3D] 移动。有关用法的更多信息,请参见 " +"[PathFollow3D]。\n" +"注意,该路径被认为是相对于移动的节点([PathFollow3D] 的子节点)。因此,该曲线" +"通常应以零向量 [code](0, 0, 0)[/code] 开始。" + msgid "A [Curve3D] describing the path." msgstr "描述路径的 [Curve3D]。" @@ -74013,6 +75839,19 @@ msgid "Point sampler for a [Path2D]." msgstr "对 [Path2D] 的点取样的取样器。" msgid "" +"This node takes its parent [Path2D], and returns the coordinates of a point " +"within it, given a distance from the first vertex.\n" +"It is useful for making other nodes follow a path, without coding the " +"movement pattern. For that, the nodes must be children of this node. The " +"descendant nodes will then move accordingly when setting the [member " +"progress] in this node." +msgstr "" +"这个节点接受它的父节点 [Path2D] 并返回其中一个点的坐标,需要给定到第一个顶点" +"的距离。\n" +"在不编码移动图案的情况下,它可以使其他节点遵循一条路径。为此,节点必须是该节" +"点的子节点。在该节点中设置 [member progress] 后,后代节点会随之移动。" + +msgid "" "If [code]true[/code], the position between two cached points is interpolated " "cubically, and linearly otherwise.\n" "The points along the [Curve2D] of the [Path2D] are precomputed before use, " @@ -74066,6 +75905,12 @@ msgstr "" "示。这只是表示路径内偏移量的另一种方式,提供的偏移量在内部会与路径的长度相" "乘。" +msgid "" +"If [code]true[/code], this node rotates to follow the path, with the +X " +"direction facing forward on the path." +msgstr "" +"如果为 [code]true[/code],则该节点会跟随路径旋转,+X 方向朝向路径前方。" + msgid "The node's offset perpendicular to the curve." msgstr "节点垂直于曲线的偏移量。" @@ -74073,11 +75918,70 @@ msgid "Point sampler for a [Path3D]." msgstr "[Path3D] 的点采样器。" msgid "" +"This node takes its parent [Path3D], and returns the coordinates of a point " +"within it, given a distance from the first vertex.\n" +"It is useful for making other nodes follow a path, without coding the " +"movement pattern. For that, the nodes must be children of this node. The " +"descendant nodes will then move accordingly when setting the [member " +"progress] in this node." +msgstr "" +"这个节点接受它的父节点 [Path3D] 并返回其中一个点的坐标,需要给定到第一个顶点" +"的距离。\n" +"在不编码移动图案的情况下,它可以使其他节点遵循一条路径。为此,节点必须是该节" +"点的子节点。在该节点中设置 [member progress] 后,后代节点会随之移动。" + +msgid "" +"Correct the [code]transform[/code]. [code]rotation_mode[/code] implicitly " +"specifies how posture (forward, up and sideway direction) is calculated." +msgstr "" +"校正 [code]transform[/code]。[code]rotation_mode[/code] 隐式指定如何计算姿势" +"(向前、向上和侧向)。" + +msgid "" +"If [code]true[/code], the position between two cached points is interpolated " +"cubically, and linearly otherwise.\n" +"The points along the [Curve3D] of the [Path3D] are precomputed before use, " +"for faster calculations. The point at the requested offset is then " +"calculated interpolating between two adjacent cached points. This may " +"present a problem if the curve makes sharp turns, as the cached points may " +"not follow the curve closely enough.\n" +"There are two answers to this problem: either increase the number of cached " +"points and increase memory consumption, or make a cubic interpolation " +"between two points at the cost of (slightly) slower calculations." +msgstr "" +"如果为 [code]true[/code],则两个缓存点之间的位置将被三次插值,否则将被线性插" +"值。\n" +"沿着 [Path3D] 的 [Curve3D] 的点在使用前已被预先计算,以便更快地计算。然后在两" +"个相邻缓存点之间,插值计算请求的偏移处的点。如果曲线急转弯,这可能会出现问" +"题,因为缓存的点可能没有足够紧密地跟随曲线。\n" +"这个问题有两个答案:要么增加缓存点的数量,并增加内存消耗;要么在两个点之间进" +"行三次插值,代价是(稍微)降低计算速度。" + +msgid "" +"The distance from the first vertex, measured in 3D units along the path. " +"Changing this value sets this node's position to a point within the path." +msgstr "" +"到第一个顶点的距离,单位为沿路径经过的 3D 单位数。改变这个值会将这个节点的位" +"置设置为路径上的某个点。" + +msgid "" +"The distance from the first vertex, considering 0.0 as the first vertex and " +"1.0 as the last. This is just another way of expressing the progress within " +"the path, as the progress supplied is multiplied internally by the path's " +"length." +msgstr "" +"到第一个顶点的距离,将 0.0 作为第一个顶点,1.0 作为最后一个顶点。这只是表示路" +"径内偏移量的另一种方式,提供的偏移量在内部会与路径的长度相乘。" + +msgid "" "Allows or forbids rotation on one or more axes, depending on the [enum " "RotationMode] constants being used." msgstr "" "允许或禁止在一个或多个轴上旋转,这取决于使用的 [enum RotationMode] 常量。" +msgid "If [code]true[/code], the tilt property of [Curve3D] takes effect." +msgstr "如果为 [code]true[/code],则 [Curve3D] 的倾斜属性生效。" + msgid "Forbids the PathFollow3D to rotate." msgstr "禁止该 PathFollow3D 旋转。" @@ -74090,10 +75994,57 @@ msgstr "允许该 PathFollow3D 同时在 X 和 Y 轴上旋转。" msgid "Allows the PathFollow3D to rotate in any axis." msgstr "允许该 PathFollow3D 在任意轴上旋转。" +msgid "" +"Uses the up vector information in a [Curve3D] to enforce orientation. This " +"rotation mode requires the [Path3D]'s [member Curve3D.up_vector_enabled] " +"property to be set to [code]true[/code]." +msgstr "" +"使用 [Curve3D] 中的向上向量信息来强制定向。该旋转模式需要将 [Path3D] 的 " +"[member Curve3D.up_vector_enabled] 属性设置为 [code]true[/code]。" + msgid "Creates packages that can be loaded into a running project." msgstr "创建可以加载到正在运行的项目中的包。" msgid "" +"The [PCKPacker] is used to create packages that can be loaded into a running " +"project using [method ProjectSettings.load_resource_pack].\n" +"[codeblocks]\n" +"[gdscript]\n" +"var packer = PCKPacker.new()\n" +"packer.pck_start(\"test.pck\")\n" +"packer.add_file(\"res://text.txt\", \"text.txt\")\n" +"packer.flush()\n" +"[/gdscript]\n" +"[csharp]\n" +"var packer = new PCKPacker();\n" +"packer.PckStart(\"test.pck\");\n" +"packer.AddFile(\"res://text.txt\", \"text.txt\");\n" +"packer.Flush();\n" +"[/csharp]\n" +"[/codeblocks]\n" +"The above [PCKPacker] creates package [code]test.pck[/code], then adds a " +"file named [code]text.txt[/code] at the root of the package." +msgstr "" +"[PCKPacker] 可以创建打包文件,项目运行时可以使用 [method ProjectSettings." +"load_resource_pack] 来加载打包文件。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var packer = PCKPacker.new()\n" +"packer.pck_start(\"test.pck\")\n" +"packer.add_file(\"res://text.txt\", \"text.txt\")\n" +"packer.flush()\n" +"[/gdscript]\n" +"[csharp]\n" +"var packer = new PCKPacker();\n" +"packer.PckStart(\"test.pck\");\n" +"packer.AddFile(\"res://text.txt\", \"text.txt\");\n" +"packer.Flush();\n" +"[/csharp]\n" +"[/codeblocks]\n" +"上面的例子中,[PCKPacker] 创建了打包文件 [code]test.pck[/code],但后将名为 " +"[code]text.txt[/code] 的文件添加到了包的根目录。" + +msgid "" "Adds the [param source_path] file to the current PCK package at the [param " "pck_path] internal path (should start with [code]res://[/code])." msgstr "" @@ -74121,6 +76072,227 @@ msgid "Exposes performance-related data." msgstr "公开与性能相关的数据。" msgid "" +"This class provides access to a number of different monitors related to " +"performance, such as memory usage, draw calls, and FPS. These are the same " +"as the values displayed in the [b]Monitor[/b] tab in the editor's " +"[b]Debugger[/b] panel. By using the [method get_monitor] method of this " +"class, you can access this data from your code.\n" +"You can add custom monitors using the [method add_custom_monitor] method. " +"Custom monitors are available in [b]Monitor[/b] tab in the editor's " +"[b]Debugger[/b] panel together with built-in monitors.\n" +"[b]Note:[/b] Some of the built-in monitors are only available in debug mode " +"and will always return [code]0[/code] when used in a project exported in " +"release mode.\n" +"[b]Note:[/b] Some of the built-in monitors are not updated in real-time for " +"performance reasons, so there may be a delay of up to 1 second between " +"changes.\n" +"[b]Note:[/b] Custom monitors do not support negative values. Negative values " +"are clamped to 0." +msgstr "" +"该类提供对许多与性能相关的不同监视器的访问,例如内存使用情况、绘制调用、和 " +"FPS。这些值与编辑器的[b]调试器[/b]面板中的[b]监视[/b]选项卡中显示的值相同。通" +"过使用该类的 [method get_monitor] 方法,你可以从代码中访问该数据。\n" +"可以使用 [method add_custom_monitor] 方法添加自定义监视器。在编辑器的[b]调试" +"器[/b]面板的[b]监视[/b]选项卡中,自定义监视器可以与内置监视器一起使用。\n" +"[b]注意:[/b]某些内置监视器仅在调试模式下可用,并且在以发布模式导出的项目中使" +"用时,将始终返回 [code]0[/code]。\n" +"[b]注意:[/b]出于性能原因,某些内置监视器不会实时更新,所以在更改之间可能会有" +"长达 1 秒的延迟。\n" +"[b]注意:[/b]自定义监视器不支持负值。负值被钳制为 0。" + +msgid "" +"Adds a custom monitor with the name [param id]. You can specify the category " +"of the monitor using slash delimiters in [param id] (for example: " +"[code]\"Game/NumberOfNPCs\"[/code]). If there is more than one slash " +"delimiter, then the default category is used. The default category is " +"[code]\"Custom\"[/code]. Prints an error if given [param id] is already " +"present.\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _ready():\n" +" var monitor_value = Callable(self, \"get_monitor_value\")\n" +"\n" +" # Adds monitor with name \"MyName\" to category \"MyCategory\".\n" +" Performance.add_custom_monitor(\"MyCategory/MyMonitor\", monitor_value)\n" +"\n" +" # Adds monitor with name \"MyName\" to category \"Custom\".\n" +" # Note: \"MyCategory/MyMonitor\" and \"MyMonitor\" have same name but " +"different IDs, so the code is valid.\n" +" Performance.add_custom_monitor(\"MyMonitor\", monitor_value)\n" +"\n" +" # Adds monitor with name \"MyName\" to category \"Custom\".\n" +" # Note: \"MyMonitor\" and \"Custom/MyMonitor\" have same name and same " +"category but different IDs, so the code is valid.\n" +" Performance.add_custom_monitor(\"Custom/MyMonitor\", monitor_value)\n" +"\n" +" # Adds monitor with name \"MyCategoryOne/MyCategoryTwo/MyMonitor\" to " +"category \"Custom\".\n" +" Performance.add_custom_monitor(\"MyCategoryOne/MyCategoryTwo/" +"MyMonitor\", monitor_value)\n" +"\n" +"func get_monitor_value():\n" +" return randi() % 25\n" +"[/gdscript]\n" +"[csharp]\n" +"public override void _Ready()\n" +"{\n" +" var monitorValue = new Callable(this, MethodName.GetMonitorValue);\n" +"\n" +" // Adds monitor with name \"MyName\" to category \"MyCategory\".\n" +" Performance.AddCustomMonitor(\"MyCategory/MyMonitor\", monitorValue);\n" +" // Adds monitor with name \"MyName\" to category \"Custom\".\n" +" // Note: \"MyCategory/MyMonitor\" and \"MyMonitor\" have same name but " +"different ids so the code is valid.\n" +" Performance.AddCustomMonitor(\"MyMonitor\", monitorValue);\n" +"\n" +" // Adds monitor with name \"MyName\" to category \"Custom\".\n" +" // Note: \"MyMonitor\" and \"Custom/MyMonitor\" have same name and same " +"category but different ids so the code is valid.\n" +" Performance.AddCustomMonitor(\"Custom/MyMonitor\", monitorValue);\n" +"\n" +" // Adds monitor with name \"MyCategoryOne/MyCategoryTwo/MyMonitor\" to " +"category \"Custom\".\n" +" Performance.AddCustomMonitor(\"MyCategoryOne/MyCategoryTwo/MyMonitor\", " +"monitorValue);\n" +"}\n" +"\n" +"public int GetMonitorValue()\n" +"{\n" +" return GD.Randi() % 25;\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"The debugger calls the callable to get the value of custom monitor. The " +"callable must return a zero or positive integer or floating-point number.\n" +"Callables are called with arguments supplied in argument array." +msgstr "" +"添加一个名为 [param id] 的自定义监视器。可以在 [param id] 中使用斜线分隔符指" +"定监视器的类别(例如:[code]\"Game/NumberOfNPCs\"[/code])。如果有多个斜线分" +"隔符,则使用默认的类别。默认类别是 [code]\"Custom\"[/code]。如果给定的 " +"[param id] 已经存在,则打印一个错误。\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _ready():\n" +" var monitor_value = Callable(self, \"get_monitor_value\")\n" +"\n" +" # 将名称为“MyName”的监视器添加到类别“MyCategory”。\n" +" Performance.add_custom_monitor(\"MyCategory/MyMonitor\", monitor_value)\n" +"\n" +" # 将名称为“MyName”的监视器添加到类别“Custom”。\n" +" # 注意:“MyCategory/MyMonitor”和“MyMonitor”同名但不同 ID,所以代码有" +"效。\n" +" Performance.add_custom_monitor(\"MyMonitor\", monitor_value)\n" +"\n" +" # 将名称为“MyName”的监视器添加到类别“Custom”。\n" +" # 注意:“MyMonitor”和“Custom/MyMonitor”名称相同,类别相同,但 ID 不同,所" +"以代码有效。\n" +" Performance.add_custom_monitor(\"Custom/MyMonitor\", monitor_value)\n" +"\n" +" # 将名称为“MyCategoryOne/MyCategoryTwo/MyMonitor”的监视器添加到类" +"别“Custom”。\n" +" Performance.add_custom_monitor(\"MyCategoryOne/MyCategoryTwo/" +"MyMonitor\", monitor_value)\n" +"\n" +"func get_monitor_value():\n" +" return randi() % 25\n" +"[/gdscript]\n" +"[csharp]\n" +"public override void _Ready()\n" +"{\n" +" var monitorValue = new Callable(this, MethodName.GetMonitorValue);\n" +"\n" +" // 将名称为“MyName”的监视器添加到类别“MyCategory”。\n" +" Performance.AddCustomMonitor(\"MyCategory/MyMonitor\", monitorValue);\n" +" // 将名称为“MyName”的监视器添加到类别“Custom”。\n" +" // 注意:“MyCategory/MyMonitor”和“MyMonitor”同名但不同 ID,所以代码有" +"效。\n" +" Performance.AddCustomMonitor(\"MyMonitor\", monitorValue);\n" +"\n" +" // 将名称为“MyName”的监视器添加到类别“Custom”。\n" +" // 注意:“MyMonitor”和“Custom/MyMonitor”名称相同,类别相同,但 ID 不同," +"所以代码有效。\n" +" Performance.AddCustomMonitor(\"Custom/MyMonitor\", monitorValue);\n" +"\n" +" // 将名称为“MyCategoryOne/MyCategoryTwo/MyMonitor”的监视器添加到类" +"别“Custom”。\n" +" Performance.AddCustomMonitor(\"MyCategoryOne/MyCategoryTwo/MyMonitor\", " +"monitorValue);\n" +"}\n" +"\n" +"public int GetMonitorValue()\n" +"{\n" +" return GD.Randi() % 25;\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"调试器调用可调用对象来获取自定义监视器的值。可调用对象必须返回一个零或正整数" +"或浮点数。\n" +"使用参数数组中提供的参数来调用可调用对象。" + +msgid "" +"Returns the value of custom monitor with given [param id]. The callable is " +"called to get the value of custom monitor. See also [method " +"has_custom_monitor]. Prints an error if the given [param id] is absent." +msgstr "" +"返回具有给定 [param id] 的自定义监视器的值。调用这个可调用对象以获取自定义监" +"视器的值。另请参阅 [method has_custom_monitor]。如果给定的 [param id] 不存" +"在,则打印一个错误。" + +msgid "Returns the names of active custom monitors in an [Array]." +msgstr "以一个 [Array],返回活动自定义监视器的名称。" + +msgid "" +"Returns the value of one of the available built-in monitors. You should " +"provide one of the [enum Monitor] constants as the argument, like this:\n" +"[codeblocks]\n" +"[gdscript]\n" +"print(Performance.get_monitor(Performance.TIME_FPS)) # Prints the FPS to the " +"console.\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.Print(Performance.GetMonitor(Performance.Monitor.TimeFps)); // Prints the " +"FPS to the console.\n" +"[/csharp]\n" +"[/codeblocks]\n" +"See [method get_custom_monitor] to query custom performance monitors' values." +msgstr "" +"返回任一可用的内置监视器的值。应该提供任一 [enum Monitor] 常量作为参数,如下" +"所示:\n" +"[codeblocks]\n" +"[gdscript]\n" +"print(Performance.get_monitor(Performance.TIME_FPS)) # 将 FPS 打印到控制" +"台。\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.Print(Performance.GetMonitor(Performance.Monitor.TimeFps)); // 将 FPS 打印" +"到控制台。\n" +"[/csharp]\n" +"[/codeblocks]\n" +"请参阅 [method get_custom_monitor],以查询自定义性能监视器的值。" + +msgid "" +"Returns the last tick in which custom monitor was added/removed (in " +"microseconds since the engine started). This is set to [method Time." +"get_ticks_usec] when the monitor is updated." +msgstr "" +"返回自定义监视器被添加/删除时的最后一个刻度(自引擎启动以来的微秒数)。当该监" +"视器更新时,它被设置为 [method Time.get_ticks_usec]。" + +msgid "" +"Returns [code]true[/code] if custom monitor with the given [param id] is " +"present, [code]false[/code] otherwise." +msgstr "" +"如果存在具有给定 [param id] 的自定义监视器,则返回 [code]true[/code],否则返" +"回 [code]false[/code]。" + +msgid "" +"Removes the custom monitor with given [param id]. Prints an error if the " +"given [param id] is already absent." +msgstr "" +"移除具有给定 [param id] 的自定义监视器。如果给定的 [param id] 已经不存在,则" +"打印一个错误。" + +msgid "" "The number of frames rendered in the last second. This metric is only " "updated once per second, even if queried more often. [i]Higher is better.[/i]" msgstr "" @@ -74179,6 +76351,35 @@ msgid "" msgstr "孤立节点的数量,即父节点不是场景树节点的节点。[i]越低越好。[/i]" msgid "" +"The total number of objects in the last rendered frame. This metric doesn't " +"include culled objects (either via hiding nodes, frustum culling or " +"occlusion culling). [i]Lower is better.[/i]" +msgstr "" +"在上一个渲染帧中的对象总数。该指标不包括剔除的对象(通过隐藏节点、视锥剔除、" +"或遮挡剔除)。[i]越低越好。[/i]" + +msgid "" +"The total number of vertices or indices rendered in the last rendered frame. " +"This metric doesn't include primitives from culled objects (either via " +"hiding nodes, frustum culling or occlusion culling). Due to the depth " +"prepass and shadow passes, the number of primitives is always higher than " +"the actual number of vertices in the scene (typically double or triple the " +"original vertex count). [i]Lower is better.[/i]" +msgstr "" +"在上一个渲染帧中渲染的顶点或索引的总数。该指标不包括来自被剔除对象的图元(通" +"过隐藏节点、视锥剔除、或遮挡剔除)。由于预深度阶段和阴影阶段,图元的数量总是" +"高于场景中的实际顶点数量(通常是原始顶点数量的两倍或三倍)。[i]越低越好。[/i]" + +msgid "" +"The total number of draw calls performed in the last rendered frame. This " +"metric doesn't include culled objects (either via hiding nodes, frustum " +"culling or occlusion culling), since they do not result in draw calls. " +"[i]Lower is better.[/i]" +msgstr "" +"在上一个渲染帧中执行的绘制调用的总数。该指标不包括剔除对象(通过隐藏节点、视" +"锥剔除、或遮挡剔除),因为它们不会导致绘制调用。[i]越低越好。[/i]" + +msgid "" "The amount of video memory used (texture and vertex memory combined, in " "bytes). Since this metric also includes miscellaneous allocations, this " "value is always greater than the sum of [constant RENDER_TEXTURE_MEM_USED] " @@ -74247,9 +76448,73 @@ msgstr "[NavigationServer3D] 中导航网格多边形的数量。" msgid "Number of navigation mesh polygon edges in the [NavigationServer3D]." msgstr "[NavigationServer3D] 中导航网格多边形边缘的数量。" +msgid "" +"Number of navigation mesh polygon edges that were merged due to edge key " +"overlap in the [NavigationServer3D]." +msgstr "" +"[NavigationServer3D] 中由于边键重叠而被合并的导航网格多边形的边的数量。" + +msgid "" +"Number of polygon edges that are considered connected by edge proximity " +"[NavigationServer3D]." +msgstr "[NavigationServer3D] 中由边缘接近而被认为已连接的多边形的边的数量。" + +msgid "" +"Number of navigation mesh polygon edges that could not be merged in the " +"[NavigationServer3D]. The edges still may be connected by edge proximity or " +"with links." +msgstr "" +"[NavigationServer3D] 中无法合并的导航网格多边形的边的数量。这些边仍然可以通过" +"边缘接近或使用链接而被连接。" + msgid "Represents the size of the [enum Monitor] enum." msgstr "代表 [enum Monitor] 枚举的大小。" +msgid "A 2D node that can be used for physically aware bones in 2D." +msgstr "可用于 2D 物理感知骨骼的 2D 节点。" + +msgid "" +"The [code]PhysicalBone2D[/code] node is a [RigidBody2D]-based node that can " +"be used to make [Bone2D] nodes in a [Skeleton2D] react to physics. This node " +"is very similar to the [PhysicalBone3D] node, just for 2D instead of 3D.\n" +"[b]Note:[/b] To have the Bone2D nodes visually follow the " +"[code]PhysicalBone2D[/code] node, use a " +"[SkeletonModification2DPhysicalBones] modification on the [Skeleton2D] node " +"with the [Bone2D] nodes.\n" +"[b]Note:[/b] The PhysicalBone2D node does not automatically create a " +"[Joint2D] node to keep [code]PhysicalBone2D[/code] nodes together. You will " +"need to create these manually. For most cases, you want to use a " +"[PinJoint2D] node. The [code]PhysicalBone2D[/code] node can automatically " +"configure the [Joint2D] node once it's been created as a child node." +msgstr "" +"[code]PhysicalBone2D[/code] 节点基于 [RigidBody2D],可以用来使 [Skeleton2D] " +"中的 [Bone2D] 节点对物理作出反应。这个节点与 [PhysicalBone3D] 节点非常相似," +"只不过针对的是 2D 而不是 3D。\n" +"[b]注意:[/b]为了让 Bone2D 节点在视觉上跟随 [code]PhysicalBone2D[/code] 节" +"点,请在该 [Bone2D] 节点对应的 [Skeleton2D] 节点上使用 " +"[SkeletonModification2DPhysicalBones] 修改。\n" +"[b]注意:[/b]PhysicalBone2D 节点不会自动创建 [Joint2D] 节点来让 " +"[code]PhysicalBone2D[/code] 节点保持在一起。你需要手动创建这些节点。大多数情" +"况下,你想要使用的都是 [PinJoint2D] 节点。创建 [code]PhysicalBone2D[/code] 子" +"节点后会自动配置 [Joint2D] 节点。" + +msgid "" +"Returns the first [Joint2D] child node, if one exists. This is mainly a " +"helper function to make it easier to get the [Joint2D] that the " +"[code]PhysicalBone2D[/code] is autoconfiguring." +msgstr "" +"如果存在,则返回第一个 [Joint2D] 子节点。主要是辅助函数,用于简化对 " +"[code]PhysicalBone2D[/code] 所自动配置的 [Joint2D] 的获取。" + +msgid "" +"Returns a boolean that indicates whether the [code]PhysicalBone2D[/code] " +"node is running and simulating using the Godot 2D physics engine. When " +"[code]true[/code], the PhysicalBone2D node is using physics." +msgstr "" +"返回一个布尔值,表示 [code]PhysicalBone2D[/code] 节点是否处于运行状态,正在使" +"用 Godot 2D 物理引擎进行仿真。为 [code]true[/code] 时,该 PhysicalBone2D 节点" +"正在使用物理。" + msgid "" "If [code]true[/code], the [code]PhysicalBone2D[/code] node will " "automatically configure the first [Joint2D] child node. The automatic " @@ -74260,6 +76525,24 @@ msgstr "" "[Joint2D] 子节点。自动配置仅限于设置节点属性和定位该 [Joint2D]。" msgid "" +"The index of the [Bone2D] node that this [code]PhysicalBone2D[/code] node is " +"supposed to be simulating." +msgstr "该 [code]PhysicalBone2D[/code] 节点所模拟的 [Bone2D] 节点的索引。" + +msgid "" +"The [NodePath] to the [Bone2D] node that this [code]PhysicalBone2D[/code] " +"node is supposed to be simulating." +msgstr "" +"该 [code]PhysicalBone2D[/code] 节点所模拟的 [Bone2D] 节点的 [NodePath]。" + +msgid "" +"If [code]true[/code], the [code]PhysicalBone2D[/code] will keep the " +"transform of the bone it is bound to when simulating physics." +msgstr "" +"如果为 [code]true[/code],则该 [code]PhysicalBone2D[/code] 在模拟物理时会保持" +"其绑定的骨骼的变换。" + +msgid "" "If [code]true[/code], the [code]PhysicalBone2D[/code] will start simulating " "using physics. If [code]false[/code], the [code]PhysicalBone2D[/code] will " "follow the transform of the [Bone2D] node.\n" @@ -74276,6 +76559,14 @@ msgstr "" "[SkeletonModification2DPhysicalBones] 修改。" msgid "" +"[b]Warning:[/b] With a non-uniform scale this node will probably not " +"function as expected. Please make sure to keep its scale uniform (i.e. the " +"same on all axes), and change the size(s) of its collision shape(s) instead." +msgstr "" +"[b]警告:[/b]如果缩放比例不一致,该节点可能无法按预期运行。请确保保持其比例统" +"一(即在所有轴上相同),并改为更改其碰撞形状的大小。" + +msgid "" "Called during physics processing, allowing you to read and safely modify the " "simulation state for the object. By default, it works in addition to the " "usual physics behavior, but the [member custom_integrator] property allows " @@ -74286,6 +76577,31 @@ msgstr "" "会和通常的物理行为一起生效,但是你可以通过 [member custom_integrator] 属性禁" "用默认行为,为物体施加完全自定义的合力。" +msgid "" +"Damps the body's rotation. By default, the body will use the [b]Default " +"Angular Damp[/b] in [b]Project > Project Settings > Physics > 3d[/b] or any " +"value override set by an [Area3D] the body is in. Depending on [member " +"angular_damp_mode], you can set [member angular_damp] to be added to or to " +"replace the body's damping value.\n" +"See [member ProjectSettings.physics/3d/default_angular_damp] for more " +"details about damping." +msgstr "" +"阻碍物体的旋转。默认情况下,物体将使用 [b]项目 > 项目设置 > 物理 > 3d[/b] 中" +"的[b]默认角度阻尼[/b],或物体所在的 [Area3D] 中设置的任何覆盖值。取决于 " +"[member angular_damp_mode],可以设置 [member angular_damp] 以增加或替换物体的" +"阻尼值。\n" +"有关阻尼的更多详细信息,请参阅 [member ProjectSettings.physics/3d/" +"default_angular_damp]。" + +msgid "" +"Defines how [member angular_damp] is applied. See [enum DampMode] for " +"possible values." +msgstr "" +"定义如何应用 [member angular_damp]。有关可能的值,请参见 [enum DampMode]。" + +msgid "The PhysicalBone3D's rotational velocity in [i]radians[/i] per second." +msgstr "该 PhysicalBone3D 的旋转速度,以每秒[i]弧度[/i]为单位。" + msgid "Sets the body's transform." msgstr "设置该物体的变换。" @@ -74297,6 +76613,14 @@ msgstr "" "弹)。" msgid "" +"If [code]true[/code], the body is deactivated when there is no movement, so " +"it will not take part in the simulation until it is awakened by an external " +"force." +msgstr "" +"如果为 [code]true[/code],则会在不移动时停用该物体,所以它在被外力唤醒前不会" +"参与模拟。" + +msgid "" "If [code]true[/code], internal force integration will be disabled (like " "gravity or air friction) for this body. Other than collision response, the " "body will only move as determined by the [method _integrate_forces] " @@ -74332,6 +76656,28 @@ msgid "Sets the joint type. See [enum JointType] for possible values." msgstr "设置关节的类型。可能的值见 [enum JointType]。" msgid "" +"Damps the body's movement. By default, the body will use the [b]Default " +"Linear Damp[/b] in [b]Project > Project Settings > Physics > 3d[/b] or any " +"value override set by an [Area3D] the body is in. Depending on [member " +"linear_damp_mode], you can set [member linear_damp] to be added to or to " +"replace the body's damping value.\n" +"See [member ProjectSettings.physics/3d/default_linear_damp] for more details " +"about damping." +msgstr "" +"阻碍物体的运动。默认情况下,物体将使用 [b]项目 > 项目设置 > 物理 > 3d[/b] 中" +"的[b]默认线性阻尼[/b],或物体所在的 [Area3D] 中设置的任何覆盖值。取决于 " +"[member linear_damp_mode],可以设置 [member linear_damp] 以增加或替换物体的阻" +"尼值。\n" +"有关阻尼的更多详细信息,请参阅 [member ProjectSettings.physics/3d/" +"default_linear_damp]。" + +msgid "" +"Defines how [member linear_damp] is applied. See [enum DampMode] for " +"possible values." +msgstr "" +"定义如何应用 [member linear_damp]。有关可能的值,请参阅 [enum DampMode]。" + +msgid "" "The body's linear velocity in units per second. Can be used sporadically, " "but [b]don't set this every frame[/b], because physics may run in another " "thread and runs at a different granularity. Use [method _integrate_forces] " @@ -74345,6 +76691,41 @@ msgid "The body's mass." msgstr "实体的质量。" msgid "" +"In this mode, the body's damping value is added to any value set in areas or " +"the default value." +msgstr "在这种模式下,物体的阻尼值将被加到区域中设置的任何值或默认值。" + +msgid "" +"In this mode, the body's damping value replaces any value set in areas or " +"the default value." +msgstr "在这种模式下,物体的阻尼值将替换掉区域中设置的任何值或默认值。" + +msgid "[Sky] [Material] used for a physically based sky." +msgstr "用于基于物理的天空的 [Sky] [Material]。" + +msgid "" +"The [PhysicalSkyMaterial] uses the Preetham analytic daylight model to draw " +"a sky based on physical properties. This results in a substantially more " +"realistic sky than the [ProceduralSkyMaterial], but it is slightly slower " +"and less flexible.\n" +"The [PhysicalSkyMaterial] only supports one sun. The color, energy, and " +"direction of the sun are taken from the first [DirectionalLight3D] in the " +"scene tree.\n" +"As it is based on a daylight model, the sky fades to black as the sunset " +"ends. If you want a full day/night cycle, you will have to add a night sky " +"by converting this to a [ShaderMaterial] and adding a night sky directly " +"into the resulting shader." +msgstr "" +"该 [PhysicalSkyMaterial] 使用 Preetham 解析日光模型,根据物理属性绘制一个天" +"空。这会产生比 [ProceduralSkyMaterial] 更加逼真的天空,但速度稍慢且灵活性较" +"差。\n" +"该 [PhysicalSkyMaterial] 仅支持一个太阳。太阳的颜色、能量、和方向,取自场景树" +"中的第一个 [DirectionalLight3D]。\n" +"由于它基于一个日光模型,所以随着日落的结束,天空会逐渐变黑。如果想要一个完整" +"的白天/黑夜循环,则必须通过将其转换为一个 [ShaderMaterial],并将一个夜空直接" +"添加到生成的着色器中以添加一个夜空。" + +msgid "" "The sky's overall brightness multiplier. Higher values result in a brighter " "sky." msgstr "天空整体亮度的乘数。数值越高,天空就越亮。" @@ -74384,6 +76765,12 @@ msgstr "" "[code]-1[/code] 表示所有的光都是向后散射的。" msgid "" +"[Texture2D] for the night sky. This is added to the sky, so if it is bright " +"enough, it may be visible during the day." +msgstr "" +"用于夜空的 [Texture2D]。会添加到天空中,所以足够亮的话在白天也可能会看到。" + +msgid "" "Controls the strength of the [url=https://en.wikipedia.org/wiki/" "Rayleigh_scattering]Rayleigh scattering[/url]. Rayleigh scattering results " "from light colliding with small particles. It is responsible for the blue " @@ -74403,6 +76790,25 @@ msgstr "" "利散射[/url]的 [Color]。虽然在物理上并不准确,但可以创造出看上去像的外星球的" "天空。例如,将其设为红色 [Color],可以得到火星大气的外观,日落时为蓝色。" +msgid "" +"Sets the size of the sun disk. Default value is based on Sol's perceived " +"size from Earth." +msgstr "设置太阳圆盘的大小。默认值基于从地球对太阳的感知大小。" + +msgid "" +"Sets the thickness of the atmosphere. High turbidity creates a foggy-looking " +"atmosphere, while a low turbidity results in a clearer atmosphere." +msgstr "" +"设置大气的厚度。高浊度会产生雾状外观的大气,而低浊度会产生更清晰的大气。" + +msgid "" +"If [code]true[/code], enables debanding. Debanding adds a small amount of " +"noise which helps reduce banding that appears from the smooth changes in " +"color in the sky." +msgstr "" +"如果为 [code]true[/code],则启用去色带。去色带会增加少量噪点,这有助于减少天" +"空中颜色的平滑变化而出现的色带。" + msgid "Base class for all objects affected by physics in 2D space." msgstr "2D空间中所有受物理影响的对象的基类。" @@ -74485,6 +76891,17 @@ msgid "Base class for all objects affected by physics in 3D space." msgstr "在 3D 空间中受物理影响的所有对象的基类。" msgid "" +"PhysicsBody3D is an abstract base class for implementing a physics body. All " +"*Body3D types inherit from it.\n" +"[b]Warning:[/b] With a non-uniform scale this node will probably not " +"function as expected. Please make sure to keep its scale uniform (i.e. the " +"same on all axes), and change the size(s) of its collision shape(s) instead." +msgstr "" +"PhysicsBody3D 是一个用于实现物理体的抽象基类。所有 *Body3D 类型都继承自它。\n" +"[b]警告:[/b] 在非统一比例的情况下,这个节点可能不会像预期的那样运作。请保持" +"它的比例统一(即在所有轴上都一样),取而代之是改变其碰撞形状的大小。" + +msgid "" "Returns [code]true[/code] if the specified linear or rotational [param axis] " "is locked." msgstr "如果指定的线性或旋转轴 [param axis] 被锁定,则返回 [code]true[/code]。" @@ -74577,10 +76994,31 @@ msgstr "锁定物体在 Z 轴上的线性运动。" msgid "Direct access object to a physics body in the [PhysicsServer2D]." msgstr "用于对 [PhysicsServer2D] 中的物理物体进行直接访问的对象。" +msgid "" +"Provides direct access to a physics body in the [PhysicsServer2D], allowing " +"safe changes to physics properties. This object is passed via the direct " +"state callback of rigid bodies, and is intended for changing the direct " +"state of that body. See [method RigidBody2D._integrate_forces]." +msgstr "" +"提供对 [PhysicsServer2D] 中物理体的直接访问,允许安全地更改物理属性。在刚体的" +"直接状态回调中传递该对象类,目的是为了改变刚体的直接状态。参见 [method " +"RigidBody2D._integrate_forces]。" + msgid "Ray-casting" msgstr "发射射线" msgid "" +"Adds a constant directional force without affecting rotation that keeps " +"being applied over time until cleared with [code]constant_force = Vector2(0, " +"0)[/code].\n" +"This is equivalent to using [method add_constant_force] at the body's center " +"of mass." +msgstr "" +"在不影响旋转的情况下,添加一个定向的恒定力,该力会随着时间的推移而持续施加," +"直到使用 [code]constant_force = Vector2(0, 0)[/code] 清除。\n" +"这相当于在物体的质心处,使用 [method add_constant_force]。" + +msgid "" "Adds a constant positioned force to the body that keeps being applied over " "time until cleared with [code]constant_force = Vector2(0, 0)[/code].\n" "[param position] is the offset from the body origin in global coordinates." @@ -74590,6 +77028,35 @@ msgstr "" "[param position] 是在全局坐标中距实体原点的偏移量。" msgid "" +"Adds a constant rotational force without affecting position that keeps being " +"applied over time until cleared with [code]constant_torque = 0[/code]." +msgstr "" +"添加一个恒定的旋转力矩,而不影响位置,该力会随着时间的推移不断施加,直到使用 " +"[code]constant_torque = 0[/code] 清除。" + +msgid "" +"Applies a directional force without affecting rotation. A force is time " +"dependent and meant to be applied every physics update.\n" +"This is equivalent to using [method apply_force] at the body's center of " +"mass." +msgstr "" +"施加一个不影响旋转的定向力。该力是时间相关的,意味着每次物理更新都会施加。\n" +"这相当于在物体的质心处,使用 [method apply_force]。" + +msgid "" +"Applies a directional impulse without affecting rotation.\n" +"An impulse is time-independent! Applying an impulse every frame would result " +"in a framerate-dependent force. For this reason, it should only be used when " +"simulating one-time impacts (use the \"_force\" functions otherwise).\n" +"This is equivalent to using [method apply_impulse] at the body's center of " +"mass." +msgstr "" +"施加一个不影响的旋转定向冲量。\n" +"冲量与时间无关!每帧应用一个冲量,会产生一个依赖于帧速率的力。出于这个原因," +"它应该只在模拟一次性影响时使用(否则使用 “_force”函数)。\n" +"这相当于在物体的质心处,使用 [method apply_impulse]。" + +msgid "" "Applies a positioned force to the body. A force is time dependent and meant " "to be applied every physics update.\n" "[param position] is the offset from the body origin in global coordinates." @@ -74604,8 +77071,8 @@ msgid "" "simulating one-time impacts (use the \"_force\" functions otherwise).\n" "[param position] is the offset from the body origin in global coordinates." msgstr "" -"向实体施加一个定位冲力。\n" -"冲力是时间无关的!每帧施加一个冲力将产生一个依赖于帧速率的力。出于这个原因," +"向实体施加一个定位冲量。\n" +"冲量是时间无关的!每帧施加一个冲量将产生一个依赖于帧速率的力。出于这个原因," "它应该只在模拟一次性影响时使用(否则使用“_force”函数)。\n" "[param position] 是在全局坐标中距实体原点的偏移量。" @@ -74631,13 +77098,29 @@ msgid "" "[member inverse_inertia], an active [CollisionShape2D] must be a child of " "the node, or you can manually set [member inverse_inertia]." msgstr "" -"在不影响位置的情况下,向实体施加一个旋转冲力。\n" -"冲力是时间无关的!每帧施加一个冲力将产生一个依赖于帧速率的力。出于这个原因," +"在不影响位置的情况下,向实体施加一个旋转冲量。\n" +"冲量是时间无关的!每帧施加一个冲量将产生一个依赖于帧速率的力。出于这个原因," "它应该只在模拟一次性影响时使用(否则使用“_force”函数)。\n" "[b]注意:[/b][member inverse_inertia] 是生效所必需的。要拥有 [member " "inverse_inertia],活动的 [CollisionShape2D] 必须是该节点的一个子节点,或者可" "以手动设置 [member inverse_inertia]。" +msgid "" +"Returns the body's total constant positional forces applied during each " +"physics update.\n" +"See [method add_constant_force] and [method add_constant_central_force]." +msgstr "" +"返回在每次物理更新期间,施加在该物体上的总恒定位置力。\n" +"见 [method add_constant_force] 和 [method add_constant_central_force]。" + +msgid "" +"Returns the body's total constant rotational forces applied during each " +"physics update.\n" +"See [method add_constant_torque]." +msgstr "" +"返回在每次物理更新期间,施加在该物体上的总恒定旋转力。\n" +"见 [method add_constant_torque]。" + msgid "Returns the collider's [RID]." msgstr "返回该碰撞体的 [RID]。" @@ -74692,9 +77175,34 @@ msgstr "返回给定相对位置的物体速度,包括平移和旋转。" msgid "Calls the built-in force integration code." msgstr "调用内置的力集成代码。" +msgid "" +"Sets the body's total constant positional forces applied during each physics " +"update.\n" +"See [method add_constant_force] and [method add_constant_central_force]." +msgstr "" +"设置在每次物理更新期间,施加在该物体上的总恒定位置力。\n" +"见 [method add_constant_force] 和 [method add_constant_central_force]。" + +msgid "" +"Sets the body's total constant rotational forces applied during each physics " +"update.\n" +"See [method add_constant_torque]." +msgstr "" +"设置在每次物理更新期间,施加在该物体上的总恒定旋转力。\n" +"见 [method add_constant_torque]。" + msgid "The body's rotational velocity in [i]radians[/i] per second." msgstr "物体的旋转速度,单位为[i]弧度[/i]每秒。" +msgid "" +"The body's center of mass position relative to the body's center in the " +"global coordinate system." +msgstr "该物体质心的位置,相对于该物体的中心,使用全局坐标系。" + +msgid "" +"The body's center of mass position in the body's local coordinate system." +msgstr "该物体质心的位置,使用该物体的局部坐标系。" + msgid "The inverse of the inertia of the body." msgstr "物体惯性的倒数。" @@ -74730,6 +77238,27 @@ msgid "Direct access object to a physics body in the [PhysicsServer3D]." msgstr "用于对 [PhysicsServer3D] 中的物理物体进行直接访问的对象。" msgid "" +"Provides direct access to a physics body in the [PhysicsServer3D], allowing " +"safe changes to physics properties. This object is passed via the direct " +"state callback of rigid bodies, and is intended for changing the direct " +"state of that body. See [method RigidBody3D._integrate_forces]." +msgstr "" +"提供对 [PhysicsServer3D] 中物理物体的直接访问,能够安全地更改物理属性。这个对" +"象会在刚体的直接状态回调中传递,针对修改该物体的直接状态而设计。见 [method " +"RigidBody3D._integrate_forces]。" + +msgid "" +"Adds a constant directional force without affecting rotation that keeps " +"being applied over time until cleared with [code]constant_force = Vector3(0, " +"0, 0)[/code].\n" +"This is equivalent to using [method add_constant_force] at the body's center " +"of mass." +msgstr "" +"在不影响旋转的情况下,添加一个恒定的定向力,该力会随着时间的推移而持续施加," +"直到使用 [code]constant_force = Vector3(0, 0, 0)[/code] 清除。\n" +"这相当于在物体的质心处,使用 [method add_constant_force]。" + +msgid "" "Adds a constant positioned force to the body that keeps being applied over " "time until cleared with [code]constant_force = Vector3(0, 0, 0)[/code].\n" "[param position] is the offset from the body origin in global coordinates." @@ -74739,6 +77268,27 @@ msgstr "" "[param position] 是在全局坐标中距实体原点的偏移量。" msgid "" +"Adds a constant rotational force without affecting position that keeps being " +"applied over time until cleared with [code]constant_torque = Vector3(0, 0, 0)" +"[/code]." +msgstr "" +"在不影响位置的情况下,添加一个恒定的旋转力,该力会随着时间的推移而持续施加," +"直到使用 [code]constant_torque = Vector3(0, 0, 0)[/code] 清除。" + +msgid "" +"Applies a rotational force without affecting position. A force is time " +"dependent and meant to be applied every physics update.\n" +"[b]Note:[/b] [member inverse_inertia] is required for this to work. To have " +"[member inverse_inertia], an active [CollisionShape3D] must be a child of " +"the node, or you can manually set [member inverse_inertia]." +msgstr "" +"在不影响位置的情况下,施加一个旋转力。该力是与时间相关的,这意味着每次物理更" +"新时都会被施加。\n" +"[b]注意:[/b][member inverse_inertia] 是该函数生效所必需的。要拥有 [member " +"inverse_inertia],一个活动的 [CollisionShape3D] 必须是该节点的子节点,或者可" +"以手动设置 [member inverse_inertia]。" + +msgid "" "Applies a rotational impulse to the body without affecting the position.\n" "An impulse is time-independent! Applying an impulse every frame would result " "in a framerate-dependent force. For this reason, it should only be used when " @@ -74747,8 +77297,8 @@ msgid "" "[member inverse_inertia], an active [CollisionShape3D] must be a child of " "the node, or you can manually set [member inverse_inertia]." msgstr "" -"在不影响位置的情况下,向实体施加一个旋转冲力。\n" -"冲力是时间无关的!每帧施加一个冲力将产生一个依赖于帧速率的力。出于这个原因," +"在不影响位置的情况下,向实体施加一个旋转冲量。\n" +"冲量是时间无关的!每帧施加一个冲量将产生一个依赖于帧速率的力。出于这个原因," "它应该只在模拟一次性影响时使用(否则使用“_force”函数)。\n" "[b]注意:[/b][member inverse_inertia] 是生效所必需的。要拥有 [member " "inverse_inertia],活动的 [CollisionShape3D] 必须是该节点的子节点,或者可以手" @@ -74757,6 +77307,21 @@ msgstr "" msgid "Returns the collider object." msgstr "返回碰撞对象。" +msgid "" +"Returns the number of contacts this body has with other bodies.\n" +"[b]Note:[/b] By default, this returns 0 unless bodies are configured to " +"monitor contacts. See [member RigidBody3D.contact_monitor]." +msgstr "" +"返回这个物体与其他物体的接触次数。\n" +"[b]注意:[/b]默认情况下,除非物体被设为监视接触,否则会返回 0。见 [member " +"RigidBody3D.contact_monitor]。" + +msgid "Impulse created by the contact." +msgstr "由接触产生的冲量。" + +msgid "The inverse of the inertia tensor of the body." +msgstr "该物体惯性张量的倒数。" + msgid "The body's linear velocity in units per second." msgstr "物体的线速度,单位为单位每秒。" @@ -74771,6 +77336,73 @@ msgstr "" "象和区域进行查询。" msgid "" +"Checks how far a [Shape2D] can move without colliding. All the parameters " +"for the query, including the shape and the motion, are supplied through a " +"[PhysicsShapeQueryParameters2D] object.\n" +"Returns an array with the safe and unsafe proportions (between 0 and 1) of " +"the motion. The safe proportion is the maximum fraction of the motion that " +"can be made without a collision. The unsafe proportion is the minimum " +"fraction of the distance that must be moved for a collision. If no collision " +"is detected a result of [code][1.0, 1.0][/code] will be returned.\n" +"[b]Note:[/b] Any [Shape2D]s that the shape is already colliding with e.g. " +"inside of, will be ignored. Use [method collide_shape] to determine the " +"[Shape2D]s that the shape is already colliding with." +msgstr "" +"检查 [Shape2D] 能够在不发生碰撞的情况下移动多远。包括形状和运动在内的所有查询" +"参数都通过 [PhysicsShapeQueryParameters2D] 对象提供。\n" +"返回包含该运动的安全和不安全比例(在 0 和 1 之间)的数组。安全比例是该运动能" +"够不发生碰撞的最大分数。不安全比例是发生碰撞所需的最小分数。如果没有检测到碰" +"撞,则返回的结果为 [code][1.0, 1.0][/code]。\n" +"[b]注意:[/b]该形状已碰撞的 [Shape2D] 会被忽略,例如形状在其内部。请使用 " +"[method collide_shape] 确定该形状已碰撞的 [Shape2D]。" + +msgid "" +"Checks the intersections of a shape, given through a " +"[PhysicsShapeQueryParameters2D] object, against the space. The resulting " +"array contains a list of points where the shape intersects another. Like " +"with [method intersect_shape], the number of returned results can be limited " +"to save processing time.\n" +"Returned points are a list of pairs of contact points. For each pair the " +"first one is in the shape passed in [PhysicsShapeQueryParameters2D] object, " +"second one is in the collided shape from the physics space." +msgstr "" +"检查通过 [PhysicsShapeQueryParameters2D] 对象给出的一个形状与该空间的交点。结" +"果数组包含该形状与另一个形状相交处的点的列表。与 [method intersect_shape] 一" +"样,可以限制返回结果的数量以节省处理时间。\n" +"返回的点是接触点对的一个列表。对于每一对,第一个是在 " +"[PhysicsShapeQueryParameters2D] 对象中传递的形状,第二个是来自物理空间的碰撞" +"形状。" + +msgid "" +"Checks the intersections of a shape, given through a " +"[PhysicsShapeQueryParameters2D] object, against the space. If it collides " +"with more than one shape, the nearest one is selected. If the shape did not " +"intersect anything, then an empty dictionary is returned instead.\n" +"[b]Note:[/b] This method does not take into account the [code]motion[/code] " +"property of the object. The returned object is a dictionary containing the " +"following fields:\n" +"[code]collider_id[/code]: The colliding object's ID.\n" +"[code]linear_velocity[/code]: The colliding object's velocity [Vector2]. If " +"the object is an [Area2D], the result is [code](0, 0)[/code].\n" +"[code]normal[/code]: The object's surface normal at the intersection point.\n" +"[code]point[/code]: The intersection point.\n" +"[code]rid[/code]: The intersecting object's [RID].\n" +"[code]shape[/code]: The shape index of the colliding shape." +msgstr "" +"检查通过 [PhysicsShapeQueryParameters2D] 对象给出的一个形状与该空间的交点。如" +"果它与多个形状碰撞,则选择最近的一个。如果该形状没有与任何对象相交,则返回一" +"个空字典。\n" +"[b]注意:[/b]该方法不考虑对象的 [code]motion[/code] 属性。返回的对象是一个包" +"含以下字段的字典:\n" +"[code]collider_id[/code]:该碰撞对象的 ID。\n" +"[code]linear_velocity[/code]:该碰撞对象的速度 [Vector2]。如果对象是一个 " +"[Area2D],则结果是 [code](0, 0)[/code]。\n" +"[code]normal[/code]:该相交点处该对象的表面法线。\n" +"[code]point[/code]:该相交点。\n" +"[code]rid[/code]:相交对象的 [RID]。\n" +"[code]shape[/code]:该碰撞形状的形状索引。" + +msgid "" "Checks whether a point is inside any solid shape. Position and other " "parameters are defined through [PhysicsPointQueryParameters2D]. The shapes " "the point is inside of are returned in an array containing dictionaries with " @@ -74797,6 +77429,33 @@ msgstr "" "[CollisionPolygon2D] 不是实体形状。因此,它们不会被检测到。" msgid "" +"Intersects a ray in a given space. Ray position and other parameters are " +"defined through [PhysicsRayQueryParameters2D]. The returned object is a " +"dictionary with the following fields:\n" +"[code]collider[/code]: The colliding object.\n" +"[code]collider_id[/code]: The colliding object's ID.\n" +"[code]normal[/code]: The object's surface normal at the intersection point, " +"or [code]Vector2(0, 0)[/code] if the ray starts inside the shape and [member " +"PhysicsRayQueryParameters2D.hit_from_inside] is [code]true[/code].\n" +"[code]position[/code]: The intersection point.\n" +"[code]rid[/code]: The intersecting object's [RID].\n" +"[code]shape[/code]: The shape index of the colliding shape.\n" +"If the ray did not intersect anything, then an empty dictionary is returned " +"instead." +msgstr "" +"与一个给定空间中的一个射线相交。射线位置和其他参数通过 " +"[PhysicsRayQueryParameters2D] 定义。返回的对象是一个包含以下字段的字典:\n" +"[code]collider[/code]:该碰撞对象。\n" +"[code]collider_id[/code]:该碰撞对象的 ID。\n" +"[code]normal[/code]:在相交点处该对象的表面法线;如果射线从形状内部开始,并" +"且 [member PhysicsRayQueryParameters2D.hit_from_inside] 为 [code]true[/" +"code],则为 [code]Vector2(0, 0)[/code]。\n" +"[code]position[/code]:该相交点。\n" +"[code]rid[/code]:该相交对象的 [RID]。\n" +"[code]shape[/code]:该碰撞形状的形状索引。\n" +"如果射线没有与任何东西相交,则返回一个空字典。" + +msgid "" "Checks the intersections of a shape, given through a " "[PhysicsShapeQueryParameters2D] object, against the space. The intersected " "shapes are returned in an array containing dictionaries with the following " @@ -74827,6 +77486,76 @@ msgstr "" "象和区域进行查询。" msgid "" +"Checks how far a [Shape3D] can move without colliding. All the parameters " +"for the query, including the shape, are supplied through a " +"[PhysicsShapeQueryParameters3D] object.\n" +"Returns an array with the safe and unsafe proportions (between 0 and 1) of " +"the motion. The safe proportion is the maximum fraction of the motion that " +"can be made without a collision. The unsafe proportion is the minimum " +"fraction of the distance that must be moved for a collision. If no collision " +"is detected a result of [code][1.0, 1.0][/code] will be returned.\n" +"[b]Note:[/b] Any [Shape3D]s that the shape is already colliding with e.g. " +"inside of, will be ignored. Use [method collide_shape] to determine the " +"[Shape3D]s that the shape is already colliding with." +msgstr "" +"检查 [Shape3D] 在不发生碰撞的情况下可以移动多远。查询的所有参数,包括形状,都" +"通过 [PhysicsShapeQueryParameters3D] 对象提供。\n" +"返回一个数组,其中包含运动的安全和不安全比例(介于 0 和 1 之间)。安全比例是" +"在不发生碰撞的情况下可以进行的运动的最大分数。不安全比例是发生碰撞必须移动的" +"距离的最小分数。如果没有检测到碰撞,将返回 [code][1.0, 1.0][/code] 的结果。\n" +"[b]注意:[/b]该形状已经与之发生碰撞的任何 [Shape3D],例如在内部的,将被忽略。" +"使用 [method collide_shape] 来确定该形状已经与之发生碰撞的 [Shape3D]。" + +msgid "" +"Checks the intersections of a shape, given through a " +"[PhysicsShapeQueryParameters3D] object, against the space. The resulting " +"array contains a list of points where the shape intersects another. Like " +"with [method intersect_shape], the number of returned results can be limited " +"to save processing time.\n" +"Returned points are a list of pairs of contact points. For each pair the " +"first one is in the shape passed in [PhysicsShapeQueryParameters3D] object, " +"second one is in the collided shape from the physics space.\n" +"[b]Note:[/b] This method does not take into account the [code]motion[/code] " +"property of the object." +msgstr "" +"检查通过 [PhysicsShapeQueryParameters3D] 对象给出的一个形状与该空间的交点。结" +"果数组包含该形状与另一个形状相交处的点的列表。与 [method intersect_shape] 一" +"样,可以限制返回结果的数量以节省处理时间。\n" +"返回的点是接触点对的一个列表。对于每一对,第一个是在 " +"[PhysicsShapeQueryParameters3D] 对象中传递的形状,第二个是来自物理空间的碰撞" +"形状。\n" +"[b]注意:[/b]该方法不考虑对象的 [code]motion[/code] 属性。" + +msgid "" +"Checks the intersections of a shape, given through a " +"[PhysicsShapeQueryParameters3D] object, against the space. If it collides " +"with more than one shape, the nearest one is selected. The returned object " +"is a dictionary containing the following fields:\n" +"[code]collider_id[/code]: The colliding object's ID.\n" +"[code]linear_velocity[/code]: The colliding object's velocity [Vector3]. If " +"the object is an [Area3D], the result is [code](0, 0, 0)[/code].\n" +"[code]normal[/code]: The object's surface normal at the intersection point.\n" +"[code]point[/code]: The intersection point.\n" +"[code]rid[/code]: The intersecting object's [RID].\n" +"[code]shape[/code]: The shape index of the colliding shape.\n" +"If the shape did not intersect anything, then an empty dictionary is " +"returned instead.\n" +"[b]Note:[/b] This method does not take into account the [code]motion[/code] " +"property of the object." +msgstr "" +"检查通过 [PhysicsShapeQueryParameters3D] 对象给出的形状与该空间的交点。如果它" +"与多个形状发生碰撞,则选择最近的一个。返回的对象是一个包含以下字段的字典:\n" +"[code]collider_id[/code]:该碰撞对象的 ID。\n" +"[code]linear_velocity[/code]:该碰撞对象的速度 [Vector3]。如果对象是一个 " +"[Area3D],则结果为 [code](0, 0, 0)[/code]。\n" +"[code]normal[/code]:该交点处物体的表面法线。\n" +"[code]point[/code]:该相交点。\n" +"[code]rid[/code]:该相交对象的 [RID]。\n" +"[code]shape[/code]:该碰撞形状的形状索引。\n" +"如果该形状没有与任何东西相交,则返回一个空字典。\n" +"[b]注意:[/b]该方法不考虑对象的 [code]motion[/code] 属性。" + +msgid "" "Checks whether a point is inside any solid shape. Position and other " "parameters are defined through [PhysicsPointQueryParameters3D]. The shapes " "the point is inside of are returned in an array containing dictionaries with " @@ -74848,6 +77577,33 @@ msgstr "" "可以使用 [param max_results] 参数限制相交的数量,以减少处理时间。" msgid "" +"Intersects a ray in a given space. Ray position and other parameters are " +"defined through [PhysicsRayQueryParameters3D]. The returned object is a " +"dictionary with the following fields:\n" +"[code]collider[/code]: The colliding object.\n" +"[code]collider_id[/code]: The colliding object's ID.\n" +"[code]normal[/code]: The object's surface normal at the intersection point, " +"or [code]Vector3(0, 0, 0)[/code] if the ray starts inside the shape and " +"[member PhysicsRayQueryParameters3D.hit_from_inside] is [code]true[/code].\n" +"[code]position[/code]: The intersection point.\n" +"[code]rid[/code]: The intersecting object's [RID].\n" +"[code]shape[/code]: The shape index of the colliding shape.\n" +"If the ray did not intersect anything, then an empty dictionary is returned " +"instead." +msgstr "" +"在给定空间中检测与射线的相交情况。射线的位置和其他参数由 " +"[PhysicsRayQueryParameters3D] 定义。返回的对象是包含以下字段的字典:\n" +"[code]collider[/code]:碰撞到的对象。\n" +"[code]collider_id[/code]:碰撞到的对象的 ID。\n" +"[code]normal[/code]:该对象表面交点处的法线,如果射线中该形状的内部开始,并" +"且 [member PhysicsRayQueryParameters3D.hit_from_inside] 为 [code]true[/" +"code],则为 [code]Vector3(0, 0, 0)[/code]。\n" +"[code]position[/code]:交点。\n" +"[code]rid[/code]:相交对象的 [RID]。\n" +"[code]shape[/code]:碰撞形状的形状索引。\n" +"如果射线没有发生相交,则返回的是空字典。" + +msgid "" "Checks the intersections of a shape, given through a " "[PhysicsShapeQueryParameters3D] object, against the space. The intersected " "shapes are returned in an array containing dictionaries with the following " @@ -74905,6 +77661,13 @@ msgid "Parameters to be sent to a 2D point physics query." msgstr "要发送到 2D 点物理查询的参数。" msgid "" +"This class contains the position and other parameters to be used for [method " +"PhysicsDirectSpaceState2D.intersect_point]." +msgstr "" +"这个类包含要用于 [method PhysicsDirectSpaceState2D.intersect_point] 的位置和" +"其他参数。" + +msgid "" "If different from [code]0[/code], restricts the query to a specific canvas " "layer specified by its instance ID. See [method Object.get_instance_id].\n" "If [code]0[/code], restricts the query to the Viewport's default canvas " @@ -74921,6 +77684,24 @@ msgid "" "If [code]true[/code], the query will take [PhysicsBody2D]s into account." msgstr "如果为 [code]true[/code],查询将考虑 [PhysicsBody2D]。" +msgid "" +"The physics layers the query will detect (as a bitmask). By default, all " +"collision layers are detected. See [url=$DOCS_URL/tutorials/physics/" +"physics_introduction.html#collision-layers-and-masks]Collision layers and " +"masks[/url] in the documentation for more information." +msgstr "" +"查询将检测的物理层(作为位掩码)。默认情况下,会检测所有碰撞层。有关详细信" +"息,请参阅文档中的 [url=$DOCS_URL/tutorials/physics/physics_introduction." +"html#collision-layers-and-masks]《碰撞层和掩码》[/url]。" + +msgid "" +"The list of object [RID]s that will be excluded from collisions. Use [method " +"CollisionObject2D.get_rid] to get the [RID] associated with a " +"[CollisionObject2D]-derived node." +msgstr "" +"将被排除在碰撞之外的对象的 [RID] 列表。请使用 [method CollisionObject2D." +"get_rid] 来获取与派生自 [CollisionObject2D] 的节点关联的 [RID]。" + msgid "The position being queried for, in global coordinates." msgstr "要查询的位置,使用全局坐标。" @@ -74941,6 +77722,14 @@ msgid "" "If [code]true[/code], the query will take [PhysicsBody3D]s into account." msgstr "如果为 [code]true[/code],则查询将考虑 [PhysicsBody3D]。" +msgid "" +"The list of object [RID]s that will be excluded from collisions. Use [method " +"CollisionObject3D.get_rid] to get the [RID] associated with a " +"[CollisionObject3D]-derived node." +msgstr "" +"将被排除在碰撞之外的对象的 [RID] 列表。请使用 [method CollisionObject3D." +"get_rid] 来获取与派生自 [CollisionObject3D] 的节点关联的 [RID]。" + msgid "Parameters to be sent to a 2D ray physics query." msgstr "要发送到 2D 射线物理查询的参数。" @@ -74951,6 +77740,23 @@ msgstr "" "这个类包含要用于 [method PhysicsDirectSpaceState2D.intersect_ray] 的射线位置" "和其他参数。" +msgid "" +"Returns a new, pre-configured [PhysicsRayQueryParameters2D] object. Use it " +"to quickly create query parameters using the most common options.\n" +"[codeblock]\n" +"var query = PhysicsRayQueryParameters2D.create(global_position, " +"global_position + Vector2(0, 100))\n" +"var collision = get_world_2d().direct_space_state.intersect_ray(query)\n" +"[/codeblock]" +msgstr "" +"返回一个新的、预配置的 [PhysicsRayQueryParameters2D] 对象。使用它可以使用最常" +"见的选项来快速创建查询参数。\n" +"[codeblock]\n" +"var query = PhysicsRayQueryParameters2D.create(global_position, " +"global_position + Vector2(0, 100))\n" +"var collision = get_world_2d().direct_space_state.intersect_ray(query)\n" +"[/codeblock]" + msgid "The starting point of the ray being queried for, in global coordinates." msgstr "要查询的射线起点,使用全局坐标。" @@ -74976,6 +77782,30 @@ msgstr "" "和其他参数。" msgid "" +"Returns a new, pre-configured [PhysicsRayQueryParameters3D] object. Use it " +"to quickly create query parameters using the most common options.\n" +"[codeblock]\n" +"var query = PhysicsRayQueryParameters3D.create(position, position + " +"Vector3(0, -10, 0))\n" +"var collision = get_world_3d().direct_space_state.intersect_ray(query)\n" +"[/codeblock]" +msgstr "" +"返回一个新的、预配置的 [PhysicsRayQueryParameters3D] 对象。使用它可以使用最常" +"见的选项快速创建查询参数。\n" +"[codeblock]\n" +"var query = PhysicsRayQueryParameters3D.create(position, position + " +"Vector3(0, -10, 0))\n" +"var collision = get_world_3d().direct_space_state.intersect_ray(query)\n" +"[/codeblock]" + +msgid "" +"If [code]true[/code], the query will hit back faces with concave polygon " +"shapes with back face enabled or heightmap shapes." +msgstr "" +"如果为 [code]true[/code],查询将命中背部面,这些背部面是启用了背面的凹多边形" +"形状,或高度图形状。" + +msgid "" "If [code]true[/code], the query will detect a hit when starting inside " "shapes. In this case the collision normal will be [code]Vector3(0, 0, 0)[/" "code]. Does not affect concave polygon shapes or heightmap shapes." @@ -75070,6 +77900,13 @@ msgstr "" "get_instance_id] 获取 [CollisionObject2D] 的 [code]ObjectID[/code]。" msgid "" +"Removes all shapes from the area. This does not delete the shapes " +"themselves, so they can continue to be used elsewhere or added back later." +msgstr "" +"从该区域移除所有形状。这不会删除形状本身,因此它们可以继续在别处使用或稍后添" +"加回来。" + +msgid "" "Creates a 2D area object in the physics server, and returns the [RID] that " "identifies it. Use [method area_add_shape] to add shapes to it, use [method " "area_set_transform] to set its transform, and use [method area_set_space] to " @@ -75102,9 +77939,30 @@ msgstr "" "返回附加到该区域的 [code]ObjectID[/code]。可使用 [method @GlobalScope." "instance_from_id] 从非零 [code]ObjectID[/code] 中检索一个 [Object]。" +msgid "" +"Returns the value of the given area parameter. See [enum AreaParameter] for " +"the list of available parameters." +msgstr "返回给定区域参数的值。可用参数的列表见 [enum AreaParameter]。" + +msgid "" +"Returns the [RID] of the shape with the given index in the area's array of " +"shapes." +msgstr "返回该区域的形状数组中给定索引的形状的 [RID]。" + msgid "Returns the number of shapes added to the area." msgstr "返回添加给该区域的形状数量。" +msgid "" +"Returns the local transform matrix of the shape with the given index in the " +"area's array of shapes." +msgstr "返回该区域的形状数组中给定索引的形状的局部变换矩阵。" + +msgid "" +"Returns the [RID] of the space assigned to the area. Returns [code]RID()[/" +"code] if no space is assigned." +msgstr "" +"返回分配给该区域的空间 [RID]。如果没有分配空间,则返回 [code]RID()[/code]。" + msgid "Returns the transform matrix of the area." msgstr "返回该区域的变换矩阵。" @@ -75242,6 +78100,18 @@ msgstr "" "将 [param excepted_body] 添加到实体的碰撞例外列表中,以便忽略与它的碰撞。" msgid "" +"Adds a constant directional force to the body. The force does not affect " +"rotation. The force remains applied over time until cleared with " +"[code]PhysicsServer2D.body_set_constant_force(body, Vector2(0, 0))[/code].\n" +"This is equivalent to using [method body_add_constant_force] at the body's " +"center of mass." +msgstr "" +"向实体添加一个恒定的定向力。该力不影响旋转。随着时间的推移,力会一直施加,直" +"到使用 [code]PhysicsServer2D.body_set_constant_force(body, Vector2(0, 0))[/" +"code] 清除。\n" +"这相当于在实体的质心处使用 [method body_add_constant_force]。" + +msgid "" "Adds a constant positioned force to the body. The force can affect rotation " "if [param position] is different from the body's center of mass. The force " "remains applied over time until cleared with [code]PhysicsServer2D." @@ -75254,6 +78124,15 @@ msgstr "" "[param position] 是在全局坐标中距实体原点的偏移量。" msgid "" +"Adds a constant rotational force to the body. The force does not affect " +"position. The force remains applied over time until cleared with " +"[code]PhysicsServer2D.body_set_constant_torque(body, 0)[/code]." +msgstr "" +"向实体添加一个恒定的旋转力。该力不影响位置。随着时间的推移,该力会一直施加," +"直到使用 [code]PhysicsServer2D.body_set_constant_torque(body, 0)[/code] 清" +"除。" + +msgid "" "Adds a shape to the area, with the given local transform. The shape " "(together with its [param transform] and [param disabled] properties) is " "added to an array of shapes, and the shapes of a body are usually referenced " @@ -75264,6 +78143,31 @@ msgstr "" "在这个数组中的索引引用。" msgid "" +"Applies a directional force to the body, at the body's center of mass. The " +"force does not affect rotation. A force is time dependent and meant to be " +"applied every physics update.\n" +"This is equivalent to using [method body_apply_force] at the body's center " +"of mass." +msgstr "" +"在实体的质心处向实体施加一个定向力。该力不影响旋转。力是时间相关的,这意味着" +"每次物理更新都会被施加。\n" +"这相当于在实体的质心处使用 [method body_apply_force]。" + +msgid "" +"Applies a directional impulse to the body, at the body's center of mass. The " +"impulse does not affect rotation.\n" +"An impulse is time-independent! Applying an impulse every frame would result " +"in a framerate-dependent force. For this reason, it should only be used when " +"simulating one-time impacts (use the \"_force\" functions otherwise).\n" +"This is equivalent to using [method body_apply_impulse] at the body's center " +"of mass." +msgstr "" +"在实体的质心处向该实体施加一个定向冲量。该冲量不影响旋转。\n" +"冲量是时间无关的!每帧施加一个冲量将产生一个依赖于帧速率的力。出于这个原因," +"它应该只在模拟一次性影响时使用(否则使用“_force”函数)。\n" +"这相当于在实体的质心处使用 [method body_apply_impulse]。" + +msgid "" "Applies a positioned force to the body. The force can affect rotation if " "[param position] is different from the body's center of mass. A force is " "time dependent and meant to be applied every physics update.\n" @@ -75281,13 +78185,31 @@ msgid "" "simulating one-time impacts (use the \"_force\" functions otherwise).\n" "[param position] is the offset from the body origin in global coordinates." msgstr "" -"向实体施加一个定位冲力。如果 [param position] 与实体的质心不同,则该冲力会影" +"向实体施加一个定位冲量。如果 [param position] 与实体的质心不同,则该冲量会影" "响旋转。\n" -"冲力是时间无关的!每帧施加一个冲力将产生一个依赖于帧速率的力。出于这个原因," +"冲量是时间无关的!每帧施加一个冲量将产生一个依赖于帧速率的力。出于这个原因," "它应该只在模拟一次性影响时使用(否则使用“_force”函数)。\n" "[param position] 是在全局坐标中距实体原点的偏移量。" msgid "" +"Applies a rotational force to the body. The force does not affect position. " +"A force is time dependent and meant to be applied every physics update." +msgstr "" +"对实体施加一个旋转力。该力不影响位置。力是时间相关的,意味着每次物理更新都会" +"被施加。" + +msgid "" +"Applies a rotational impulse to the body. The impulse does not affect " +"position.\n" +"An impulse is time-independent! Applying an impulse every frame would result " +"in a framerate-dependent force. For this reason, it should only be used when " +"simulating one-time impacts (use the \"_force\" functions otherwise)." +msgstr "" +"对实体施加一个旋转的冲量。该冲量不影响位置。\n" +"冲量是时间无关的!每帧施加一个冲量将产生一个依赖于帧速率的力。出于这个原因," +"它应该只在模拟一次性影响时使用(否则使用“_force”函数)。" + +msgid "" "Attaches the [code]ObjectID[/code] of a canvas to the body. Use [method " "Object.get_instance_id] to get the [code]ObjectID[/code] of a [CanvasLayer]." msgstr "" @@ -75303,6 +78225,13 @@ msgstr "" "get_instance_id] 获取 [CollisionObject2D] 的 [code]ObjectID[/code]。" msgid "" +"Removes all shapes from the body. This does not delete the shapes " +"themselves, so they can continue to be used elsewhere or added back later." +msgstr "" +"从该实体中移除所有形状。这不会删除形状本身,因此它们可以继续在别处使用或稍后" +"添加回来。" + +msgid "" "Creates a 2D body object in the physics server, and returns the [RID] that " "identifies it. Use [method body_add_shape] to add shapes to it, use [method " "body_set_state] to set its transform, and use [method body_set_space] to add " @@ -75336,9 +78265,41 @@ msgstr "" "高,对该实体的穿透力就越低。" msgid "" +"Returns the body's total constant positional force applied during each " +"physics update.\n" +"See [method body_add_constant_force] and [method " +"body_add_constant_central_force]." +msgstr "" +"返回在每次物理更新期间,该物体被施加的总的恒定位置的力。\n" +"参阅 [method body_add_constant_force] 和 [method " +"body_add_constant_central_force]。" + +msgid "" +"Returns the body's total constant rotational force applied during each " +"physics update.\n" +"See [method body_add_constant_torque]." +msgstr "" +"返回在每次物理更新期间,该物体被施加的总的恒定旋转的力。\n" +"参阅 [method body_add_constant_torque]。" + +msgid "" "Returns the body's continuous collision detection mode (see [enum CCDMode])." msgstr "返回该物体的连续碰撞检测模式(见 [enum CCDMode])。" +msgid "" +"Returns the [PhysicsDirectBodyState2D] of the body. Returns [code]null[/" +"code] if the body is destroyed or not assigned to a space." +msgstr "" +"返回该实体的 [PhysicsDirectBodyState2D]。如果该实体已被销毁或未被分配给一个空" +"间,则返回 [code]null[/code]。" + +msgid "" +"Returns the maximum number of contacts that the body can report. See [method " +"body_set_max_contacts_reported]." +msgstr "" +"返回该实体可以报告的最大接触数。请参阅 [method " +"body_set_max_contacts_reported]。" + msgid "Returns the body's mode (see [enum BodyMode])." msgstr "返回该物体的模式(见 [enum BodyMode])。" @@ -75350,10 +78311,32 @@ msgstr "" "返回附加到该实体的 [code]ObjectID[/code]。可使用 [method @GlobalScope." "instance_from_id] 从非零 [code]ObjectID[/code] 中检索一个 [Object]。" +msgid "" +"Returns the value of the given body parameter. See [enum BodyParameter] for " +"the list of available parameters." +msgstr "" +"返回给定实体参数的值。有关可用的参数列表,请参阅 [enum BodyParameter]。" + +msgid "" +"Returns the [RID] of the shape with the given index in the body's array of " +"shapes." +msgstr "返回该实体形状数组中具有给定索引的形状的 [RID]。" + msgid "Returns the number of shapes added to the body." msgstr "返回添加至该物体的形状的数量。" msgid "" +"Returns the [RID] of the space assigned to the body. Returns [code]RID()[/" +"code] if no space is assigned." +msgstr "" +"返回分配给该实体的空间的 [RID]。如果没有分配空间,则返回 [code]RID()[/code]。" + +msgid "" +"Returns the value of the given state of the body. See [enum BodyState] for " +"the list of available states." +msgstr "返回该实体给定状态的值。有关可用状态的列表,请参阅 [enum BodyState]。" + +msgid "" "Returns [code]true[/code] if the body uses a callback function to calculate " "its own physics (see [method body_set_force_integration_callback])." msgstr "" @@ -75379,6 +78362,14 @@ msgstr "" "实体形状的索引将减少一个。" msgid "" +"Restores the default inertia and center of mass of the body based on its " +"shapes. This undoes any custom values previously set using [method " +"body_set_param]." +msgstr "" +"根据实体的形状恢复该实体的默认惯性和质心。这会撤消之前使用 [method " +"body_set_param] 设置的任何自定义值。" + +msgid "" "Modifies the body's linear velocity so that its projection to the axis " "[code]axis_velocity.normalized()[/code] is exactly [code]axis_velocity." "length()[/code]. This is useful for jumping behavior." @@ -75402,6 +78393,35 @@ msgstr "" "高,对实体的穿透力就越低。" msgid "" +"Sets the body's total constant positional force applied during each physics " +"update.\n" +"See [method body_add_constant_force] and [method " +"body_add_constant_central_force]." +msgstr "" +"设置在每次物理更新期间,该物体被施加的总的恒定位置的力。\n" +"参阅 [method body_add_constant_force] 和 [method " +"body_add_constant_central_force]。" + +msgid "" +"Sets the body's total constant rotational force applied during each physics " +"update.\n" +"See [method body_add_constant_torque]." +msgstr "" +"设置在每次物理更新期间,该物体被施加的总的恒定旋转的力。\n" +"参阅 [method body_add_constant_torque]。" + +msgid "" +"Sets the continuous collision detection mode using one of the [enum CCDMode] " +"constants.\n" +"Continuous collision detection tries to predict where a moving body would " +"collide in between physics updates, instead of moving it and correcting its " +"movement if it collided." +msgstr "" +"使用 [enum CCDMode] 常量之一设置连续碰撞检测模式。\n" +"连续碰撞检测试图预测一个移动的物体将在物理更新之间发生碰撞的位置,而不是移动" +"它并在发生碰撞时纠正它的运动。" + +msgid "" "Sets the function used to calculate physics for the body, if that body " "allows it (see [method body_set_omit_force_integration]).\n" "The force integration function takes the following two parameters:\n" @@ -75427,6 +78447,22 @@ msgstr "" "多跟踪与其他实体的这么多次接触。" msgid "" +"Sets the body's mode. See [enum BodyMode] for the list of available modes." +msgstr "设置该实体的模式。有关可用模式的列表,请参阅 [enum BodyMode]。" + +msgid "" +"Sets whether the body uses a callback function to calculate its own physics " +"(see [method body_set_force_integration_callback])." +msgstr "" +"设置一个物体是否使用回调函数来计算它自己的物理(参见 [method " +"body_set_force_integration_callback])。" + +msgid "" +"Sets the value of the given body parameter. See [enum BodyParameter] for the " +"list of available parameters." +msgstr "设置给定实体参数的值。有关可用参数列表,请参阅 [enum BodyParameter]。" + +msgid "" "Replaces the body's shape at the given index by another shape, while not " "affecting the [code]transform[/code], [code]disabled[/code], and one-way " "collision properties at the same index." @@ -75456,6 +78492,10 @@ msgstr "" "code],则在所有碰撞检测中将忽略该形状。" msgid "" +"Sets the local transform matrix of the body's shape with the given index." +msgstr "使用给定索引设置该实体形状的局部变换矩阵。" + +msgid "" "Adds the body to the given space, after removing the body from the " "previously assigned space (if any). If the body's mode is set to [constant " "BODY_MODE_RIGID], then adding the body to a space will have the following " @@ -75489,6 +78529,18 @@ msgstr "" "[b]注意:[/b]状态更改不会立即生效。状态更改将发生在下一个物理帧上。" msgid "" +"Returns [code]true[/code] if a collision would result from moving the body " +"along a motion vector from a given point in space. See " +"[PhysicsTestMotionParameters2D] for the available motion parameters. " +"Optionally a [PhysicsTestMotionResult2D] object can be passed, which will be " +"used to store the information about the resulting collision." +msgstr "" +"如果从空间中的给定点,沿着运动向量移动实体会产生一个碰撞,则返回 [code]true[/" +"code]。有关可用的运动参数,请参阅 [PhysicsTestMotionParameters2D]。可以选择传" +"递一个 [PhysicsTestMotionResult2D] 对象,该对象将用于存储有关所产生碰撞的信" +"息。" + +msgid "" "Creates a 2D capsule shape in the physics server, and returns the [RID] that " "identifies it. Use [method shape_set_data] to set the capsule's height and " "radius." @@ -75520,6 +78572,28 @@ msgstr "" "shape_set_data] 设置凸多边形的点。" msgid "" +"Returns the value of the given damped spring joint parameter. See [enum " +"DampedSpringParam] for the list of available parameters." +msgstr "" +"返回给定阻尼弹簧关节参数的值。有关可用参数的列表,请参阅 [enum " +"DampedSpringParam]。" + +msgid "" +"Sets the value of the given damped spring joint parameter. See [enum " +"DampedSpringParam] for the list of available parameters." +msgstr "" +"设置给定阻尼弹簧关节参数的值。有关可用参数的列表,请参阅 [enum " +"DampedSpringParam]。" + +msgid "" +"Destroys any of the objects created by PhysicsServer2D. If the [RID] passed " +"is not one of the objects that can be created by PhysicsServer2D, an error " +"will be printed to the console." +msgstr "" +"销毁由 PhysicsServer2D 创建的任何对象。如果传递的 [RID] 不是 PhysicsServer2D " +"可以创建的对象之一,则会将一个错误发送到控制台。" + +msgid "" "Returns information about the current state of the 2D physics engine. See " "[enum ProcessInfo] for the list of available states." msgstr "" @@ -75572,6 +78646,9 @@ msgstr "" "(在全局坐标中给出)。要设置特定于阻尼弹簧的参数,请参阅 [method " "damped_spring_joint_set_param]。" +msgid "Makes the joint a groove joint." +msgstr "使关节成为凹槽关节。" + msgid "" "Makes the joint a pin joint. If [param body_b] is [code]RID()[/code], then " "[param body_a] is pinned to the point [param anchor] (given in global " @@ -75590,6 +78667,16 @@ msgid "" msgstr "设置给定关节参数的值。可用参数的列表见 [enum JointParam]。" msgid "" +"Returns the value of a pin joint parameter. See [enum PinJointParam] for a " +"list of available parameters." +msgstr "返回销关节参数的值。有关可用参数列表,请参阅 [enum PinJointParam]。" + +msgid "" +"Sets a pin joint parameter. See [enum PinJointParam] for a list of available " +"parameters." +msgstr "设置销关节参数。有关可用参数列表,请参阅 [enum PinJointParam]。" + +msgid "" "Creates a 2D rectangle shape in the physics server, and returns the [RID] " "that identifies it. Use [method shape_set_data] to set the rectangle's half-" "extents." @@ -75666,29 +78753,26 @@ msgid "" msgstr "" "设置定义形状配置的形状数据。要传递的 [param data] 取决于形状的类型(参见 " "[method shape_get_type]):\n" -"- [constant SHAPE_WORLD_BOUNDARY]:一个长度为 2 的数组,包含 [Vector2] 类型" -"的 [code]normal[/code] 方向和 [code]float[/code] 类型的距离 [code]d[/" -"code],\n" -"- [constant SHAPE_SEPARATION_RAY]:一个字典,包含键 [code]length[/code] 和 " +"- [constant SHAPE_WORLD_BOUNDARY]:长度为 2 的数组,包含 [Vector2] 类型的 " +"[code]normal[/code] 方向和 [code]float[/code] 类型的距离 [code]d[/code],\n" +"- [constant SHAPE_SEPARATION_RAY]:字典,包含键 [code]length[/code] 和 " "[code]float[/code] 值、以及键 [code]slide_on_slope[/code] 和 [code]bool[/" "code] 值,\n" -"- [constant SHAPE_SEGMENT]:一个 [Rect2] 类型的 [code]rect[/code],以 " -"[code]rect.position[/code] 表示线段中的第一个点,并以 [code]rect.size[/code] " -"表示线段中的第二个点,\n" -"- [constant SHAPE_CIRCLE]:一个 [code]float[/code] 类型的 [code]radius[/" -"code],\n" -"- [constant SHAPE_RECTANGLE]:一个 [Vector2] 类型的 [code]half_extents[/" -"code],\n" -"- [constant SHAPE_CAPSULE]:一个长度为 2 的数组(或一个 [Vector2]),包含一" -"个 [code]float[/code] 类型的 [code]height[/code] 和一个 [code]float[/code] 类" -"型的 [code]radius [/code],\n" -"- [constant SHAPE_CONVEX_POLYGON]:一个按逆时针顺序定义凸多边形的点的 " +"- [constant SHAPE_SEGMENT]:[Rect2] 类型的 [code]rect[/code],以 [code]rect." +"position[/code] 表示线段中的第一个点,并以 [code]rect.size[/code] 表示线段中" +"的第二个点,\n" +"- [constant SHAPE_CIRCLE]:[code]float[/code] 类型的 [code]radius[/code],\n" +"- [constant SHAPE_RECTANGLE]:[Vector2] 类型的 [code]half_extents[/code],\n" +"- [constant SHAPE_CAPSULE]:长度为 2 的数组(或一个 [Vector2]),包含一个 " +"[code]float[/code] 类型的 [code]height[/code] 和一个 [code]float[/code] 类型" +"的 [code]radius[/code],\n" +"- [constant SHAPE_CONVEX_POLYGON]:按逆时针顺序定义凸多边形的点的 " "[PackedVector2Array](在内部使用由连续点形成的每个线段的顺时针向外法线计" "算);或一个长度可被 4 整除的 [PackedFloat32Array],以便每个 4 元组的 " "[code]float[/code] 包含一个点的坐标,后跟一个向量的坐标表示,该向量是当前点和" "下一个点之间的线段的顺时针向外法向量,\n" -"- [constant SHAPE_CONCAVE_POLYGON]:一个长度可被 2 整除的 " -"[PackedVector2Array](每对点形成一个线段)。\n" +"- [constant SHAPE_CONCAVE_POLYGON]:长度可被 2 整除的 [PackedVector2Array]" +"(每对点形成一个线段)。\n" "[b]警告[/b]:在 [constant SHAPE_CONVEX_POLYGON] 的情况下,该方法不检查提供的" "点是否能够形成凸多边形(与 [member CollisionPolygon2D.polygon] 属性不同)。" @@ -75765,6 +78849,37 @@ msgstr "" "contact_max_allowed_penetration]。" msgid "" +"Constant to set/get the default solver bias for all physics contacts. A " +"solver bias is a factor controlling how much two objects \"rebound\", after " +"overlapping, to avoid leaving them in that state because of numerical " +"imprecision. The default value of this parameter is [member ProjectSettings." +"physics/2d/solver/default_contact_bias]." +msgstr "" +"常量,用于设置/获取所有物理接触的默认求解器偏差。求解器偏差是控制两个对象在重" +"叠后“反弹”的程度的一个系数,以避免由于数值不精确而使它们处于该状态。该参数的" +"默认值为 [member ProjectSettings.physics/2d/solver/default_contact_bias]。" + +msgid "" +"Constant to set/get the threshold linear velocity of activity. A body marked " +"as potentially inactive for both linear and angular velocity will be put to " +"sleep after the time given. The default value of this parameter is [member " +"ProjectSettings.physics/2d/sleep_threshold_linear]." +msgstr "" +"常量,用于设置/获取活跃的阈值线速度。一个线性速度和角速度都被标记为可能处于非" +"活动状态的物体,将在给定时间后进入睡眠状态。该参数的默认值为 [member " +"ProjectSettings.physics/2d/sleep_threshold_linear]。" + +msgid "" +"Constant to set/get the threshold angular velocity of activity. A body " +"marked as potentially inactive for both linear and angular velocity will be " +"put to sleep after the time given. The default value of this parameter is " +"[member ProjectSettings.physics/2d/sleep_threshold_angular]." +msgstr "" +"常量,用于设置/获取活跃的阈值角速度。一个线性速度和角速度都被标记为可能处于非" +"活动状态的物体,将在给定时间后进入睡眠状态。该参数的默认值为 [member " +"ProjectSettings.physics/2d/sleep_threshold_angular]。" + +msgid "" "Constant to set/get the maximum time of activity. A body marked as " "potentially inactive for both linear and angular velocity will be put to " "sleep after this time. The default value of this parameter is [member " @@ -75774,6 +78889,18 @@ msgstr "" "体,在这个时间之后将被置入睡眠状态。" msgid "" +"Constant to set/get the default solver bias for all physics constraints. A " +"solver bias is a factor controlling how much two objects \"rebound\", after " +"violating a constraint, to avoid leaving them in that state because of " +"numerical imprecision. The default value of this parameter is [member " +"ProjectSettings.physics/2d/solver/default_constraint_bias]." +msgstr "" +"常量,用于设置/获取所有物理约束的默认求解器偏差。求解器偏差是控制两个对象在违" +"反约束后“反弹”的程度的一个系数,以避免由于数值不精确而使它们处于该状态。该参" +"数的默认值为 [member ProjectSettings.physics/2d/solver/" +"default_constraint_bias]。" + +msgid "" "Constant to set/get the number of solver iterations for all contacts and " "constraints. The greater the number of iterations, the more accurate the " "collisions will be. However, a greater number of iterations requires more " @@ -75792,6 +78919,22 @@ msgstr "" "线。因此,它可以用于前面/背面检查。" msgid "" +"This is the constant for creating separation ray shapes. A separation ray is " +"defined by a length and separates itself from what is touching its far " +"endpoint. Useful for character controllers." +msgstr "" +"常量,用于创建分离射线形状。一条分离射线由一个长度定义,并将其自身与接触其远" +"端点的物体分开。对角色控制器很有用。" + +msgid "" +"This is the constant for creating segment shapes. A segment shape is a " +"[i]finite[/i] line from a point A to a point B. It can be checked for " +"intersections." +msgstr "" +"常量,用于创建线段形状。一条线段形状是从点 A 到点 B 的[i]有限[/i]线段。可以用" +"于检查交叉点。" + +msgid "" "This is the constant for creating circle shapes. A circle shape only has a " "radius. It can be used for intersections and inside/outside checks." msgstr "" @@ -75814,6 +78957,14 @@ msgstr "" "和内/外侧检查。" msgid "" +"This is the constant for creating convex polygon shapes. A polygon is " +"defined by a list of points. It can be used for intersections and inside/" +"outside checks." +msgstr "" +"常量,用于创建凸多边形形状。一个多边形是由一个点的列表定义的。它可以用于交叉" +"点和内侧/外侧检查。" + +msgid "" "This is the constant for creating concave polygon shapes. A polygon is " "defined by a list of points. It can be used for intersections checks, but " "not for inside/outside checks." @@ -75827,6 +78978,15 @@ msgid "" msgstr "引擎内部会使用这个常量。任何试图创建这种形状的行为都会导致错误。" msgid "" +"Constant to set/get gravity override mode in an area. See [enum " +"AreaSpaceOverrideMode] for possible values. The default value of this " +"parameter is [constant AREA_SPACE_OVERRIDE_DISABLED]." +msgstr "" +"常量,在一个区域中设置/获取重力覆盖模式。有关可能的值,请参阅 [enum " +"AreaSpaceOverrideMode]。这个参数的默认值是 [constant " +"AREA_SPACE_OVERRIDE_DISABLED]。" + +msgid "" "Constant to set/get gravity strength in an area. The default value of this " "parameter is [code]9.80665[/code]." msgstr "" @@ -75868,12 +79028,30 @@ msgstr "" "关。该参数的默认值为 [code]0.0[/code]。" msgid "" +"Constant to set/get linear damping override mode in an area. See [enum " +"AreaSpaceOverrideMode] for possible values. The default value of this " +"parameter is [constant AREA_SPACE_OVERRIDE_DISABLED]." +msgstr "" +"常量,用于在一个区域中设置/获取线性阻尼覆盖模式。有关可能的值,请参阅 [enum " +"AreaSpaceOverrideMode]。这个参数的默认值是 [constant " +"AREA_SPACE_OVERRIDE_DISABLED]。" + +msgid "" "Constant to set/get the linear damping factor of an area. The default value " "of this parameter is [code]0.1[/code]." msgstr "" "常数,用于设置/获取区域的线性阻尼系数。该参数的默认值为 [code]0.1[/code]。" msgid "" +"Constant to set/get angular damping override mode in an area. See [enum " +"AreaSpaceOverrideMode] for possible values. The default value of this " +"parameter is [constant AREA_SPACE_OVERRIDE_DISABLED]." +msgstr "" +"常量,用于在一个区域中设置/获取角度阻尼覆盖模式。有关可能的值,请参阅 [enum " +"AreaSpaceOverrideMode]。这个参数的默认值是 [constant " +"AREA_SPACE_OVERRIDE_DISABLED]。" + +msgid "" "Constant to set/get the angular damping factor of an area. The default value " "of this parameter is [code]1.0[/code]." msgstr "" @@ -76296,6 +79474,18 @@ msgid "Adds a body to the list of bodies exempt from collisions." msgstr "将一个物体添加到免于碰撞的物体列表中。" msgid "" +"Adds a constant directional force without affecting rotation that keeps " +"being applied over time until cleared with " +"[code]body_set_constant_force(body, Vector3(0, 0, 0))[/code].\n" +"This is equivalent to using [method body_add_constant_force] at the body's " +"center of mass." +msgstr "" +"在不影响旋转的情况下,添加一个恒定的方向力,该力会随着时间的推移而持续施加," +"直到使用 [code]body_set_constant_force(body, Vector3(0, 0, 0))[/code] 清" +"除。\n" +"这相当于在实体的质心处使用 [method body_add_constant_force]。" + +msgid "" "Adds a constant positioned force to the body that keeps being applied over " "time until cleared with [code]body_set_constant_force(body, Vector3(0, 0, 0))" "[/code].\n" @@ -76306,12 +79496,60 @@ msgstr "" "[param position] 是在全局坐标中距实体原点的偏移量。" msgid "" +"Adds a constant rotational force without affecting position that keeps being " +"applied over time until cleared with [code]body_set_constant_torque(body, " +"Vector3(0, 0, 0))[/code]." +msgstr "" +"在不影响位置的情况下,添加一个恒定的旋转力,随着时间的推移而持续施加,直到使" +"用 [code]body_set_constant_torque(body, Vector3(0, 0, 0))[/code] 清除。" + +msgid "" "Adds a shape to the body, along with a transform matrix. Shapes are usually " "referenced by their index, so you should track which shape has a given index." msgstr "" "添加一个形状到物体,以及一个变换矩阵。形状通常通过它们的索引来引用,因此您应" "该跟踪哪个形状具有给定的索引。" +msgid "" +"Applies a directional force without affecting rotation. A force is time " +"dependent and meant to be applied every physics update.\n" +"This is equivalent to using [method body_apply_force] at the body's center " +"of mass." +msgstr "" +"在不影响旋转的情况下,施加一个方向力。力是时间相关的,意味着每次物理更新都会" +"施加。\n" +"这相当于在实体的质心处使用 [method body_apply_force]。" + +msgid "" +"Applies a directional impulse without affecting rotation.\n" +"An impulse is time-independent! Applying an impulse every frame would result " +"in a framerate-dependent force. For this reason, it should only be used when " +"simulating one-time impacts (use the \"_force\" functions otherwise).\n" +"This is equivalent to using [method body_apply_impulse] at the body's center " +"of mass." +msgstr "" +"在不影响旋转的情况下,施加一个定向冲量。\n" +"冲动是时间无关的!每帧施加一个冲量将产生依赖于帧速率的力。出于这个原因,它应" +"该只在模拟一次性影响时使用(否则使用“_force”函数)。\n" +"这相当于在实体的质心处使用 [method body_apply_impulse]。" + +msgid "" +"Applies a rotational force without affecting position. A force is time " +"dependent and meant to be applied every physics update." +msgstr "" +"在不影响位置的情况下,施加一个旋转力。力是时间相关的,这意味着每次物理更新都" +"会施加。" + +msgid "" +"Applies a rotational impulse to the body without affecting the position.\n" +"An impulse is time-independent! Applying an impulse every frame would result " +"in a framerate-dependent force. For this reason, it should only be used when " +"simulating one-time impacts (use the \"_force\" functions otherwise)." +msgstr "" +"在不影响位置的情况下,向实体施加一个旋转冲量。\n" +"冲量是时间无关的!每帧施加一个冲量将产生一个依赖于帧速率的力。出于这个原因," +"它应该只在模拟一次性影响时使用(否则使用“_force”函数)。" + msgid "Removes all shapes from a body." msgstr "从物体上移除所有碰撞形状。" @@ -76325,6 +79563,24 @@ msgid "Returns the body's collision priority." msgstr "返回该物体的碰撞优先级。" msgid "" +"Returns the body's total constant positional forces applied during each " +"physics update.\n" +"See [method body_add_constant_force] and [method " +"body_add_constant_central_force]." +msgstr "" +"返回在每次物理更新期间,该物体被施加的总的恒定位置的力。\n" +"参阅 [method body_add_constant_force] 和 [method " +"body_add_constant_central_force]。" + +msgid "" +"Returns the body's total constant rotational forces applied during each " +"physics update.\n" +"See [method body_add_constant_torque]." +msgstr "" +"返回在每次物理更新期间,该物体被施加的总的恒定旋转的力。\n" +"参阅 [method body_add_constant_torque]。" + +msgid "" "Returns the [PhysicsDirectBodyState3D] of the body. Returns [code]null[/" "code] if the body is destroyed or removed from the physics space." msgstr "" @@ -76386,6 +79642,13 @@ msgstr "" "使用。" msgid "" +"Restores the default inertia and center of mass based on shapes to cancel " +"any custom values previously set using [method body_set_param]." +msgstr "" +"根据形状恢复默认惯性和质心,以取消之前使用 [method body_set_param] 设置的任何" +"自定义值。" + +msgid "" "Sets an axis velocity. The velocity in the given vector axis will be set as " "the given vector length. This is useful for jumping behavior." msgstr "" @@ -76401,6 +79664,24 @@ msgid "Sets the body's collision priority." msgstr "设置该物体的碰撞优先级。" msgid "" +"Sets the body's total constant positional forces applied during each physics " +"update.\n" +"See [method body_add_constant_force] and [method " +"body_add_constant_central_force]." +msgstr "" +"设置该物体在每次物理更新时应用的总恒定位置力。\n" +"见 [method body_add_constant_force] 和 [method " +"body_add_constant_central_force]。" + +msgid "" +"Sets the body's total constant rotational forces applied during each physics " +"update.\n" +"See [method body_add_constant_torque]." +msgstr "" +"设置该物体在每次物理更新时应用的总恒定旋转力。\n" +"见 [method body_add_constant_torque]。" + +msgid "" "If [code]true[/code], the continuous collision detection mode is enabled.\n" "Continuous collision detection tries to predict where a moving body will " "collide, instead of moving it and correcting its movement if it collided." @@ -76408,6 +79689,30 @@ msgstr "" "如果为 [code]true[/code],则启用连续碰撞检测模式。\n" "连续碰撞检测尝试预测运动物体碰撞的位置,而不是在碰撞时移动物体并纠正其运动。" +msgid "" +"Sets the function used to calculate physics for an object, if that object " +"allows it (see [method body_set_omit_force_integration]).\n" +"The force integration function takes 2 arguments:\n" +"[code]state:[/code] [PhysicsDirectBodyState3D] used to retrieve and modify " +"the body's state.\n" +"[code]userdata:[/code] Optional user data, if it was passed when calling " +"[code]body_set_force_integration_callback[/code]." +msgstr "" +"如果对象允许的话,设置用于计算该对象物理的函数(参见 [method " +"body_set_omit_force_integration])。\n" +"力的积分函数有 2 个参数:\n" +"[code]state:[/code] [PhysicsDirectBodyState3D] 用于检索和修改物体的状态。\n" +"[code]userdata:[/code] 可选的用户数据,如果在调用 " +"[code]body_set_force_integration_callback[/code] 时被传递。" + +msgid "" +"Sets the maximum contacts to report. Bodies can keep a log of the contacts " +"with other bodies. This is enabled by setting the maximum number of contacts " +"reported to a number greater than 0." +msgstr "" +"设置要报告的最大接触数。物体可以记录与其他物体的接触。将最大接触数设置为大于 " +"0 的数字可以启用此功能。" + msgid "Sets the body mode, from one of the [enum BodyMode] constants." msgstr "从 [enum BodyMode] 常量之一设置主体模式。" @@ -76443,6 +79748,16 @@ msgid "Sets a body state (see [enum BodyState] constants)." msgstr "设置主体状态(见 [enum BodyState] 常量)。" msgid "" +"Returns [code]true[/code] if a collision would result from moving along a " +"motion vector from a given point in space. [PhysicsTestMotionParameters3D] " +"is passed to set motion parameters. [PhysicsTestMotionResult3D] can be " +"passed to return additional information." +msgstr "" +"如果从空间中的给定点沿着运动向量移动会导致碰撞,则返回 [code]true[/code]。传" +"递 [PhysicsTestMotionParameters3D] 可以设置运动参数。还可以传递 " +"[PhysicsTestMotionResult3D],从而返回其他信息。" + +msgid "" "Gets a cone_twist_joint parameter (see [enum ConeTwistJointParam] constants)." msgstr "获取圆锥体扭曲关节参数(见 [enum ConeTwistJointParam] 常量)。" @@ -76615,6 +79930,11 @@ msgstr "" "被固定的物体试图保持彼此速度关系的力度。\n" "越高越强。" +msgid "" +"If above 0, this value is the maximum value for an impulse that this Joint3D " +"puts on its ends." +msgstr "如果高于 0,则此值是此 Joint3D 施加在其末端的冲量的最大值。" + msgid "The maximum rotation across the Hinge." msgstr "铰链上的最大旋转。" @@ -76715,6 +80035,11 @@ msgid "Represents the size of the [enum SliderJointParam] enum." msgstr "代表 [enum SliderJointParam] 枚举的大小。" msgid "" +"The ease with which the Joint3D twists, if it's too low, it takes more force " +"to twist the joint." +msgstr "Joint3D 的扭曲弹性,如果太低,就需要更大的力才能扭曲关节。" + +msgid "" "A factor that gets applied to the movement across the axes. The lower, the " "slower the movement." msgstr "应用于跨轴移动的因子。越低,运动越慢。" @@ -76783,6 +80108,18 @@ msgstr "该 [Shape3D] 为 [ConcavePolygonShape3D]。" msgid "The [Shape3D] is a [HeightMapShape3D]." msgstr "该 [Shape3D] 为 [HeightMapShape3D]。" +msgid "" +"The [Shape3D] is used internally for a soft body. Any attempt to create this " +"kind of shape results in an error." +msgstr "该 [Shape3D] 是在柔体内部使用的。尝试创建这种形状会导致出错。" + +msgid "" +"Constant to set/get gravity override mode in an area. See [enum " +"AreaSpaceOverrideMode] for possible values." +msgstr "" +"常量,用于在一个区域中设置/获取重力覆盖模式。有关可能的值,请参阅 [enum " +"AreaSpaceOverrideMode]。" + msgid "Constant to set/get gravity strength in an area." msgstr "常量,用于设置/获取区域中的重力强度。" @@ -76814,9 +80151,23 @@ msgstr "" "仅当单位距离为正数时,上述情况才成立。当该属性被设置为 0.0 时,无论距离如何," "重力都将保持不变。" +msgid "" +"Constant to set/get linear damping override mode in an area. See [enum " +"AreaSpaceOverrideMode] for possible values." +msgstr "" +"常量,用于在一个区域中设置/获取线性阻尼覆盖模式。有关可能的值,请参阅 [enum " +"AreaSpaceOverrideMode]。" + msgid "Constant to set/get the linear damping factor of an area." msgstr "常数,用于设置/获取区域的线性阻尼系数。" +msgid "" +"Constant to set/get angular damping override mode in an area. See [enum " +"AreaSpaceOverrideMode] for possible values." +msgstr "" +"常量,用于在一个区域中设置/获取角度阻尼覆盖模式。有关可能的值,请参阅 [enum " +"AreaSpaceOverrideMode]。" + msgid "Constant to set/get the angular damping factor of an area." msgstr "常数,用于设置/获取区域的角度阻尼系数。" @@ -76826,6 +80177,21 @@ msgstr "常量,用于设置/获取区域的优先级(处理顺序)。" msgid "Constant to set/get the magnitude of area-specific wind force." msgstr "常量,用于设置/获取特定区域风力大小。" +msgid "" +"Constant to set/get the 3D vector that specifies the origin from which an " +"area-specific wind blows." +msgstr "常量,用于设置/获取 3D 向量,该向量指定区域特定的风吹来的原点。" + +msgid "" +"Constant to set/get the 3D vector that specifies the direction in which an " +"area-specific wind blows." +msgstr "常量,用于设置/获取 3D 向量,该向量指定区域特定的风吹的方向。" + +msgid "" +"Constant to set/get the exponential rate at which wind force decreases with " +"distance from its origin." +msgstr "常量,用于设置/获取风力随距其原点的距离而减小的指数速率。" + msgid "Constant to set/get a body's bounce factor." msgstr "常量,用于设置/获取物体的反弹系数。" @@ -76883,6 +80249,15 @@ msgstr "" "常量,用于设置/获取两个形状互相穿透的最大距离,超过该距离后将视为碰撞。" msgid "" +"Constant to set/get the default solver bias for all physics contacts. A " +"solver bias is a factor controlling how much two objects \"rebound\", after " +"overlapping, to avoid leaving them in that state because of numerical " +"imprecision." +msgstr "" +"常量,用于设置/获取所有物理接触的默认求解器偏差。求解器偏差是控制两个对象在重" +"叠后“反弹”的程度的一个系数,以避免由于数值不精确而使它们处于该状态。" + +msgid "" "Constant to set/get the threshold linear velocity of activity. A body marked " "as potentially inactive for both linear and angular velocity will be put to " "sleep after the time given." @@ -76906,6 +80281,15 @@ msgstr "" "常量,用于设置/获得最大的活动时间。一个被标记为线速度和角速度都可能不活动的物" "体,在这个时间之后将被置入睡眠状态。" +msgid "" +"Constant to set/get the number of solver iterations for contacts and " +"constraints. The greater the number of iterations, the more accurate the " +"collisions and constraints will be. However, a greater number of iterations " +"requires more CPU power, which can decrease performance." +msgstr "" +"常量,用于设置/获取接触和约束的求解器迭代次数。迭代次数越多,碰撞和约束就越准" +"确。然而,更多的迭代需要更多的 CPU 能力,这会降低性能。" + msgid "Manager for 3D physics server implementations." msgstr "3D 物理服务器实现的管理器。" @@ -76951,6 +80335,78 @@ msgstr "形状的碰撞边距。" msgid "The motion of the shape being queried for." msgstr "正在查询的形状的运动。" +msgid "" +"The [Shape2D] that will be used for collision/intersection queries. This " +"stores the actual reference which avoids the shape to be released while " +"being used for queries, so always prefer using this over [member shape_rid]." +msgstr "" +"将用于碰撞/相交查询的 [Shape2D]。存储的是实际的引用,可以避免该形状在进行查询" +"时被释放,因此请优先使用这个属性,而不是 [member shape_rid]。" + +msgid "" +"The queried shape's [RID] that will be used for collision/intersection " +"queries. Use this over [member shape] if you want to optimize for " +"performance using the Servers API:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var shape_rid = PhysicsServer2D.circle_shape_create()\n" +"var radius = 64\n" +"PhysicsServer2D.shape_set_data(shape_rid, radius)\n" +"\n" +"var params = PhysicsShapeQueryParameters2D.new()\n" +"params.shape_rid = shape_rid\n" +"\n" +"# Execute physics queries here...\n" +"\n" +"# Release the shape when done with physics queries.\n" +"PhysicsServer2D.free_rid(shape_rid)\n" +"[/gdscript]\n" +"[csharp]\n" +"RID shapeRid = PhysicsServer2D.CircleShapeCreate();\n" +"int radius = 64;\n" +"PhysicsServer2D.ShapeSetData(shapeRid, radius);\n" +"\n" +"var params = new PhysicsShapeQueryParameters2D();\n" +"params.ShapeRid = shapeRid;\n" +"\n" +"// Execute physics queries here...\n" +"\n" +"// Release the shape when done with physics queries.\n" +"PhysicsServer2D.FreeRid(shapeRid);\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"将用于碰撞/相交查询的形状的 [RID]。如果你想要使用服务器 API 优化性能,请使用" +"这个属性而不是 [member shape]:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var shape_rid = PhysicsServer2D.circle_shape_create()\n" +"var radius = 64\n" +"PhysicsServer2D.shape_set_data(shape_rid, radius)\n" +"\n" +"var params = PhysicsShapeQueryParameters2D.new()\n" +"params.shape_rid = shape_rid\n" +"\n" +"# 在此处执行物理查询...\n" +"\n" +"# 完成物理查询后释放形状。\n" +"PhysicsServer2D.free_rid(shape_rid)\n" +"[/gdscript]\n" +"[csharp]\n" +"RID shapeRid = PhysicsServer2D.CircleShapeCreate();\n" +"int radius = 64;\n" +"PhysicsServer2D.ShapeSetData(shapeRid, radius);\n" +"\n" +"var params = new PhysicsShapeQueryParameters2D();\n" +"params.ShapeRid = shapeRid;\n" +"\n" +"// 在此处执行物理查询...\n" +"\n" +"// 完成物理查询后释放形状。\n" +"PhysicsServer2D.FreeRid(shapeRid);\n" +"[/csharp]\n" +"[/codeblocks]" + msgid "The queried shape's transform matrix." msgstr "被查询形状的变换矩阵。" @@ -76963,6 +80419,80 @@ msgid "" msgstr "" "这个类中包含的是 [PhysicsDirectSpaceState3D] 相交/碰撞查询的形状和其他参数。" +msgid "" +"The [Shape3D] that will be used for collision/intersection queries. This " +"stores the actual reference which avoids the shape to be released while " +"being used for queries, so always prefer using this over [member shape_rid]." +msgstr "" +"将用于碰撞/相交查询的 [Shape3D]。存储的是实际的引用,可以避免该形状在进行查询" +"时被释放,因此请优先使用这个属性,而不是 [member shape_rid]。" + +msgid "" +"The queried shape's [RID] that will be used for collision/intersection " +"queries. Use this over [member shape] if you want to optimize for " +"performance using the Servers API:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var shape_rid = PhysicsServer3D.shape_create(PhysicsServer3D.SHAPE_SPHERE)\n" +"var radius = 2.0\n" +"PhysicsServer3D.shape_set_data(shape_rid, radius)\n" +"\n" +"var params = PhysicsShapeQueryParameters3D.new()\n" +"params.shape_rid = shape_rid\n" +"\n" +"# Execute physics queries here...\n" +"\n" +"# Release the shape when done with physics queries.\n" +"PhysicsServer3D.free_rid(shape_rid)\n" +"[/gdscript]\n" +"[csharp]\n" +"RID shapeRid = PhysicsServer3D.ShapeCreate(PhysicsServer3D.ShapeType." +"Sphere);\n" +"float radius = 2.0f;\n" +"PhysicsServer3D.ShapeSetData(shapeRid, radius);\n" +"\n" +"var params = new PhysicsShapeQueryParameters3D();\n" +"params.ShapeRid = shapeRid;\n" +"\n" +"// Execute physics queries here...\n" +"\n" +"// Release the shape when done with physics queries.\n" +"PhysicsServer3D.FreeRid(shapeRid);\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"将用于碰撞/相交查询的形状的 [RID]。如果你想要使用服务器 API 优化性能,请使用" +"这个属性而不是 [member shape]:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var shape_rid = PhysicsServer3D.shape_create(PhysicsServer3D.SHAPE_SPHERE)\n" +"var radius = 2.0\n" +"PhysicsServer3D.shape_set_data(shape_rid, radius)\n" +"\n" +"var params = PhysicsShapeQueryParameters3D.new()\n" +"params.shape_rid = shape_rid\n" +"\n" +"# 在此处执行物理查询...\n" +"\n" +"# 完成物理查询后释放形状。\n" +"PhysicsServer3D.free_rid(shape_rid)\n" +"[/gdscript]\n" +"[csharp]\n" +"RID shapeRid = PhysicsServer3D.ShapeCreate(PhysicsServer3D.ShapeType." +"Sphere);\n" +"float radius = 2.0f;\n" +"PhysicsServer3D.ShapeSetData(shapeRid, radius);\n" +"\n" +"var params = new PhysicsShapeQueryParameters3D();\n" +"params.ShapeRid = shapeRid;\n" +"\n" +"// 在此处执行物理查询...\n" +"\n" +"// 完成物理查询后释放形状。\n" +"PhysicsServer3D.FreeRid(shapeRid);\n" +"[/csharp]\n" +"[/codeblocks]" + msgid "Parameters to be sent to a 2D body motion test." msgstr "要发送到 2D 物体运动测试的参数。" @@ -76973,12 +80503,46 @@ msgstr "" "这个类中包含的是 [method PhysicsServer2D.body_test_motion] 中使用的参数。" msgid "" +"If set to [code]true[/code], shapes of type [constant PhysicsServer2D." +"SHAPE_SEPARATION_RAY] are used to detect collisions and can stop the motion. " +"Can be useful when snapping to the ground.\n" +"If set to [code]false[/code], shapes of type [constant PhysicsServer2D." +"SHAPE_SEPARATION_RAY] are only used for separation when overlapping with " +"other bodies. That's the main use for separation ray shapes." +msgstr "" +"如果设置为 [code]true[/code],则 [constant PhysicsServer2D." +"SHAPE_SEPARATION_RAY] 类型的形状将用于检测碰撞,并可以停止运动。吸附到地面时" +"很有用。\n" +"如果设置为 [code]false[/code],则 [constant PhysicsServer2D." +"SHAPE_SEPARATION_RAY] 类型的形状仅在与其他物体重叠时用于分离。这是分离射线形" +"状的主要用途。" + +msgid "" +"Optional array of body [RID] to exclude from collision. Use [method " +"CollisionObject2D.get_rid] to get the [RID] associated with a " +"[CollisionObject2D]-derived node." +msgstr "" +"可选的物体 [RID] 数组,会排除与这些物体的碰撞。请使用 [method " +"CollisionObject2D.get_rid] 来获取与派生自 [CollisionObject2D] 的节点关联的 " +"[RID]。" + +msgid "" +"Optional array of object unique instance ID to exclude from collision. See " +"[method Object.get_instance_id]." +msgstr "" +"可选的对象唯一实例 ID 数组,会排除与这些实例的碰撞。见 [method Object." +"get_instance_id]。" + +msgid "" "Transform in global space where the motion should start. Usually set to " "[member Node2D.global_transform] for the current body's transform." msgstr "" "运动开始处的全局空间变换。通常设为 [member Node2D.global_transform],使用当前" "物体的变换。" +msgid "Increases the size of the shapes involved in the collision detection." +msgstr "增加碰撞检测中涉及的形状的大小。" + msgid "Motion vector to define the length and direction of the motion to test." msgstr "运动向量,定义要测试的运动的长度和方向。" @@ -77003,6 +80567,30 @@ msgstr "" "这个类中包含的是 [method PhysicsServer3D.body_test_motion] 中使用的参数。" msgid "" +"If set to [code]true[/code], shapes of type [constant PhysicsServer3D." +"SHAPE_SEPARATION_RAY] are used to detect collisions and can stop the motion. " +"Can be useful when snapping to the ground.\n" +"If set to [code]false[/code], shapes of type [constant PhysicsServer3D." +"SHAPE_SEPARATION_RAY] are only used for separation when overlapping with " +"other bodies. That's the main use for separation ray shapes." +msgstr "" +"如果设置为 [code]true[/code],则 [constant PhysicsServer3D." +"SHAPE_SEPARATION_RAY] 类型的形状用于检测碰撞,并可以停止运动。吸附到地面时很" +"有用。\n" +"如果设置为 [code]false[/code],则 [constant PhysicsServer3D." +"SHAPE_SEPARATION_RAY] 类型的形状仅在与其他物体重叠时用于分离。这是分离射线形" +"状的主要用途。" + +msgid "" +"Optional array of body [RID] to exclude from collision. Use [method " +"CollisionObject3D.get_rid] to get the [RID] associated with a " +"[CollisionObject3D]-derived node." +msgstr "" +"可选的物体 [RID] 数组,会排除与这些物体的碰撞。请使用 [method " +"CollisionObject3D.get_rid] 来获取与派生自 [CollisionObject3D] 的节点关联的 " +"[RID]。" + +msgid "" "Transform in global space where the motion should start. Usually set to " "[member Node3D.global_transform] for the current body's transform." msgstr "" @@ -77010,6 +80598,13 @@ msgstr "" "物体的变换。" msgid "" +"Maximum number of returned collisions, between [code]1[/code] and [code]32[/" +"code]. Always returns the deepest detected collisions." +msgstr "" +"返回碰撞的最大数量,在 [code]1[/code] 和 [code]32[/code] 之间。始终返回检测到" +"的最深碰撞。" + +msgid "" "If set to [code]true[/code], any depenetration from the recovery phase is " "reported as a collision; this is used e.g. by [CharacterBody3D] for " "improving floor detection during floor snapping.\n" @@ -77071,6 +80666,20 @@ msgid "" "occurred." msgstr "如果发生了碰撞,则返回使用全局坐标表示的碰撞点。" +msgid "" +"Returns the maximum fraction of the motion that can occur without a " +"collision, between [code]0[/code] and [code]1[/code]." +msgstr "" +"返回可以运动但不发生碰撞的最大比例,在 [code]0[/code] 和 [code]1[/code] 之" +"间。" + +msgid "" +"Returns the minimum fraction of the motion needed to collide, if a collision " +"occurred, between [code]0[/code] and [code]1[/code]." +msgstr "" +"如果发生了碰撞,则返回碰撞运动所需的最小摩擦力,在 [code]0[/code] 和 " +"[code]1[/code] 之间。" + msgid "Result from a 3D body motion test." msgstr "3D 物体运动的测试结果。" @@ -77145,12 +80754,27 @@ msgstr "" "如果发生了碰撞,则在给定碰撞索引(默认为最深碰撞)的情况下,返回使用全局坐标" "表示的碰撞点。" +msgid "Pin joint for 2D shapes." +msgstr "用于 2D 形状的钉固关节。" + +msgid "" +"Pin joint for 2D rigid bodies. It pins two bodies (dynamic or static) " +"together." +msgstr "用于 2D 刚体的钉固关节。它将两个物体(动态或静态)钉固在一起。" + msgid "" "The higher this value, the more the bond to the pinned partner can flex." msgstr "这个值越高,与被牵制的两个物体之间的的联系就越灵活。" msgid "Pin joint for 3D PhysicsBodies." -msgstr "用于 3D 物理体的钉关节。" +msgstr "用于 3D 物理体的钉固关节。" + +msgid "" +"Pin joint for 3D rigid bodies. It pins 2 bodies (dynamic or static) " +"together. See also [Generic6DOFJoint3D]." +msgstr "" +"用于 3D 刚体的钉固关节。它将两个物体(动态或静态)钉固在一起。另见 " +"[Generic6DOFJoint3D]。" msgid "" "The force with which the pinned objects stay in positional relation to each " @@ -77162,24 +80786,104 @@ msgid "" "other. The higher, the stronger." msgstr "被钉在一起的物体之间保持共速的力。越高,力越大。" +msgid "" +"If above 0, this value is the maximum value for an impulse that this Joint3D " +"produces." +msgstr "如果大于 0,则这个值是此 Joint3D 产生的冲量的最大值。" + msgid "Placeholder class for a cubemap texture." msgstr "立方体贴图纹理的占位类。" +msgid "" +"This class is used when loading a project that uses a [Cubemap] subclass in " +"2 conditions:\n" +"- When running the project exported in dedicated server mode, only the " +"texture's dimensions are kept (as they may be relied upon for gameplay " +"purposes or positioning of other elements). This allows reducing the " +"exported PCK's size significantly.\n" +"- When this subclass is missing due to using a different engine version or " +"build (e.g. modules disabled)." +msgstr "" +"加载使用 [Cubemap] 子类的项目时,使用这个类的情况有两种:\n" +"- 运行使用专用服务器模式导出的项目,仅保留纹理的尺寸(因为游戏逻辑可能依赖纹" +"理的尺寸,可能用来定位其他元素)。这样能够显著减小导出的 PCK 的大小。\n" +"- 由于引擎版本或构建不同而缺失这个子类(例如禁用了某些模块)。" + msgid "Placeholder class for a cubemap texture array." msgstr "立方体贴图纹理数组的占位类。" +msgid "" +"This class is used when loading a project that uses a [CubemapArray] " +"subclass in 2 conditions:\n" +"- When running the project exported in dedicated server mode, only the " +"texture's dimensions are kept (as they may be relied upon for gameplay " +"purposes or positioning of other elements). This allows reducing the " +"exported PCK's size significantly.\n" +"- When this subclass is missing due to using a different engine version or " +"build (e.g. modules disabled)." +msgstr "" +"加载使用 [CubemapArray] 子类的项目时,使用这个类的情况有两种:\n" +"- 运行使用专用服务器模式导出的项目,仅保留纹理的尺寸(因为游戏逻辑可能依赖纹" +"理的尺寸,可能用来定位其他元素)。这样能够显著减小导出的 PCK 的大小。\n" +"- 由于引擎版本或构建不同而缺失这个子类(例如禁用了某些模块)。" + msgid "Placeholder class for a material." msgstr "材质的占位类。" +msgid "" +"This class is used when loading a project that uses a [Material] subclass in " +"2 conditions:\n" +"- When running the project exported in dedicated server mode, only the " +"texture's dimensions are kept (as they may be relied upon for gameplay " +"purposes or positioning of other elements). This allows reducing the " +"exported PCK's size significantly.\n" +"- When this subclass is missing due to using a different engine version or " +"build (e.g. modules disabled)." +msgstr "" +"加载使用 [Material] 子类的项目时,使用这个类的情况有两种:\n" +"- 运行使用专用服务器模式导出的项目,仅保留纹理的尺寸(因为游戏逻辑可能依赖纹" +"理的尺寸,可能用来定位其他元素)。这样能够显著减小导出的 PCK 的大小。\n" +"- 由于引擎版本或构建不同而缺失这个子类(例如禁用了某些模块)。" + msgid "Placeholder class for a mesh." msgstr "网格的占位类。" +msgid "" +"This class is used when loading a project that uses a [Mesh] subclass in 2 " +"conditions:\n" +"- When running the project exported in dedicated server mode, only the " +"texture's dimensions are kept (as they may be relied upon for gameplay " +"purposes or positioning of other elements). This allows reducing the " +"exported PCK's size significantly.\n" +"- When this subclass is missing due to using a different engine version or " +"build (e.g. modules disabled)." +msgstr "" +"加载使用 [Mesh] 子类的项目时,使用这个类的情况有两种:\n" +"- 运行使用专用服务器模式导出的项目,仅保留纹理的尺寸(因为游戏逻辑可能依赖纹" +"理的尺寸,可能用来定位其他元素)。这样能够显著减小导出的 PCK 的大小。\n" +"- 由于引擎版本或构建不同而缺失这个子类(例如禁用了某些模块)。" + msgid "The smallest [AABB] enclosing this mesh in local space." msgstr "局部空间中,包含这个网格的最小 [AABB]。" msgid "Placeholder class for a 2-dimensional texture." msgstr "二维纹理的占位类。" +msgid "" +"This class is used when loading a project that uses a [Texture2D] subclass " +"in 2 conditions:\n" +"- When running the project exported in dedicated server mode, only the " +"texture's dimensions are kept (as they may be relied upon for gameplay " +"purposes or positioning of other elements). This allows reducing the " +"exported PCK's size significantly.\n" +"- When this subclass is missing due to using a different engine version or " +"build (e.g. modules disabled)." +msgstr "" +"加载使用 [Texture2D] 子类的项目时,使用这个类的情况有两种:\n" +"- 运行使用专用服务器模式导出的项目,仅保留纹理的尺寸(因为游戏逻辑可能依赖纹" +"理的尺寸,可能用来定位其他元素)。这样能够显著减小导出的 PCK 的大小。\n" +"- 由于引擎版本或构建不同而缺失这个子类(例如禁用了某些模块)。" + msgid "The texture's size (in pixels)." msgstr "纹理的尺寸(单位为像素)。" @@ -77189,6 +80893,36 @@ msgstr "二维纹理数组的占位类。" msgid "Placeholder class for a 3-dimensional texture." msgstr "三维纹理的占位类。" +msgid "" +"This class is used when loading a project that uses a [Texture3D] subclass " +"in 2 conditions:\n" +"- When running the project exported in dedicated server mode, only the " +"texture's dimensions are kept (as they may be relied upon for gameplay " +"purposes or positioning of other elements). This allows reducing the " +"exported PCK's size significantly.\n" +"- When this subclass is missing due to using a different engine version or " +"build (e.g. modules disabled)." +msgstr "" +"加载使用 [Texture3D] 子类的项目时,使用这个类的情况有两种:\n" +"- 运行使用专用服务器模式导出的项目,仅保留纹理的尺寸(因为游戏逻辑可能依赖纹" +"理的尺寸,可能用来定位其他元素)。这样能够显著减小导出的 PCK 的大小。\n" +"- 由于引擎版本或构建不同而缺失这个子类(例如禁用了某些模块)。" + +msgid "" +"This class is used when loading a project that uses a [TextureLayered] " +"subclass in 2 conditions:\n" +"- When running the project exported in dedicated server mode, only the " +"texture's dimensions are kept (as they may be relied upon for gameplay " +"purposes or positioning of other elements). This allows reducing the " +"exported PCK's size significantly.\n" +"- When this subclass is missing due to using a different engine version or " +"build (e.g. modules disabled)." +msgstr "" +"加载使用 [TextureLayered] 子类的项目时,使用这个类的情况有两种:\n" +"- 运行使用专用服务器模式导出的项目,仅保留纹理的尺寸(因为游戏逻辑可能依赖纹" +"理的尺寸,可能用来定位其他元素)。这样能够显著减小导出的 PCK 的大小。\n" +"- 由于引擎版本或构建不同而缺失这个子类(例如禁用了某些模块)。" + msgid "The number of layers in the texture array." msgstr "纹理数组中的层数。" @@ -77314,6 +81048,10 @@ msgid "Returns a copy of the plane, normalized." msgstr "返回平面的一个标准化副本。" msgid "" +"Returns the orthogonal projection of [param point] into a point in the plane." +msgstr "返回 [param point] 在该平面中的正交投影。" + +msgid "" "The distance from the origin to the plane, in the direction of [member " "normal]. This value is typically non-negative.\n" "In the scalar equation of the plane [code]ax + by + cz = d[/code], this is " @@ -77324,6 +81062,16 @@ msgstr "" "在平面 [code]ax + by + cz = d[/code] 的标量方程中,这是 [code]d[/code],而 " "[code](a, b, c)[/code] 坐标由 [member normal] 属性表示。" +msgid "" +"The normal of the plane, which must be a unit vector.\n" +"In the scalar equation of the plane [code]ax + by + cz = d[/code], this is " +"the vector [code](a, b, c)[/code], where [code]d[/code] is the [member d] " +"property." +msgstr "" +"该平面的法线,必须为单位向量。\n" +"在平面 [code]ax + by + cz = d[/code] 的标量方程中,这是向量 [code](a, b, c)[/" +"code],其中 [code]d[/code] 是 [member d] 属性。" + msgid "The X component of the plane's [member normal] vector." msgstr "平面法向量 [member normal] 的 X 分量。" @@ -77352,6 +81100,11 @@ msgstr "" "靠。" msgid "" +"Inversely transforms (multiplies) the [Plane] by the given [Transform3D] " +"transformation matrix." +msgstr "使用给定的 [Transform3D] 变换矩阵对该 [Plane] 进行逆变换(相乘)。" + +msgid "" "Returns [code]true[/code] if the planes are exactly equal.\n" "[b]Note:[/b] Due to floating-point precision errors, consider using [method " "is_equal_approx] instead, which is more reliable." @@ -77360,9 +81113,36 @@ msgstr "" "[b]注意:[/b]由于浮点数精度误差,请考虑改用 [method is_equal_approx],会更可" "靠。" +msgid "" +"Returns the negative value of the [Plane]. This is the same as writing " +"[code]Plane(-p.normal, -p.d)[/code]. This operation flips the direction of " +"the normal vector and also flips the distance value, resulting in a Plane " +"that is in the same place, but facing the opposite direction." +msgstr "" +"返回该 [Plane] 的负值。和写 [code]Plane(-p.normal, -p.d)[/code] 相同。该操作" +"翻转了法线向量的方向,也翻转了距离值,得到的 Plane 位于同一个位置,但是朝向相" +"反的方向。" + msgid "Class representing a planar [PrimitiveMesh]." msgstr "表示平面 [PrimitiveMesh] 的类。" +msgid "" +"Class representing a planar [PrimitiveMesh]. This flat mesh does not have a " +"thickness. By default, this mesh is aligned on the X and Z axes; this " +"default rotation isn't suited for use with billboarded materials. For " +"billboarded materials, change [member orientation] to [constant FACE_Z].\n" +"[b]Note:[/b] When using a large textured [PlaneMesh] (e.g. as a floor), you " +"may stumble upon UV jittering issues depending on the camera angle. To solve " +"this, increase [member subdivide_depth] and [member subdivide_width] until " +"you no longer notice UV jittering." +msgstr "" +"代表平面 [PrimitiveMesh] 的类。这个扁平的网格没有厚度。默认情况下,这个网格" +"与 X 和 Z 轴对齐;这样的旋转并不适用于公告板材质。对于公告板材质,请将 " +"[member orientation] 改为 [constant FACE_Z]。\n" +"[b]注意:[/b]使用较大且有纹理的 [PlaneMesh](例如地板)时,你可能在使用某些相" +"机角度时会遇到 UV 抖动的问题。要解决这个问题,请增大 [member " +"subdivide_depth] 和 [member subdivide_width],直到无法再察觉到 UV 抖动。" + msgid "Offset of the generated plane. Useful for particles." msgstr "生成平面的偏移量。可用于粒子。" @@ -77401,6 +81181,17 @@ msgid "" "grayscale) texture." msgstr "在 2D 环境中投射光线。此灯的形状由(通常为灰度)纹理定义。" +msgid "" +"The height of the light. Used with 2D normal mapping. The units are in " +"pixels, e.g. if the height is 100, then it will illuminate an object 100 " +"pixels away at a 45° angle to the plane." +msgstr "" +"灯光的高度。与 2D 法线贴图一起使用。单位为像素,例如:如果高度为 100,那么它" +"能够照亮 100 像素远且与该平面成 45° 角的对象。" + +msgid "The offset of the light's [member texture]." +msgstr "灯光的 [member texture] 的偏移量。" + msgid "[Texture2D] used for the light's appearance." msgstr "用于该灯光外观的 [Texture2D]。" @@ -77410,9 +81201,45 @@ msgstr "[member texture] 的缩放系数。" msgid "Mesh with a single Point primitive." msgstr "使用单个点图元的网格。" +msgid "" +"The PointMesh is made from a single point. Instead of relying on triangles, " +"points are rendered as a single rectangle on the screen with a constant " +"size. They are intended to be used with Particle systems, but can be used as " +"a cheap way to render constant size billboarded sprites (for example in a " +"point cloud).\n" +"PointMeshes, must be used with a material that has a point size. Point size " +"can be accessed in a shader with [code]POINT_SIZE[/code], or in a " +"[BaseMaterial3D] by setting [member BaseMaterial3D.use_point_size] and the " +"variable [member BaseMaterial3D.point_size].\n" +"When using PointMeshes, properties that normally alter vertices will be " +"ignored, including billboard mode, grow, and cull face." +msgstr "" +"PointMesh 由一个点构成。这个点不依赖于三角形,而是作为屏幕上的一个矩形来渲" +"染,大小是固定的。旨在用于粒子系统,但也可以作为固定大小公告板精灵的轻量级渲" +"染方法(例如在点云中使用)。\n" +"PointMesh 必须使用具有点大小的材质。点的大小可以在着色器中通过 " +"[code]POINT_SIZE[/code] 访问,也可以在 [BaseMaterial3D] 中设置 [member " +"BaseMaterial3D.use_point_size] 并通过变量 [member BaseMaterial3D.point_size] " +"访问。\n" +"使用 PointMesh 时,会忽略平时用来改变顶点的属性,包括公告板模式、生长、剔除面" +"等。" + msgid "A 2D polygon." msgstr "2D 多边形。" +msgid "" +"A Polygon2D is defined by a set of points. Each point is connected to the " +"next, with the final point being connected to the first, resulting in a " +"closed polygon. Polygon2Ds can be filled with color (solid or gradient) or " +"filled with a given texture." +msgstr "" +"Polygon2D 由一组点定义。每个点都连接到下一个点,最后一个点连接到第一个点,从" +"而形成一个封闭的多边形。Polygon2D 可以填充颜色(纯色或渐变),也可以填充给定" +"的纹理。" + +msgid "Adds a bone with the specified [param path] and [param weights]." +msgstr "添加指定 [param path] 和 [param weights] 的骨骼。" + msgid "Removes all bones from this [Polygon2D]." msgstr "删除这个 [Polygon2D] 的所有骨骼。" @@ -77438,6 +81265,13 @@ msgid "If [code]true[/code], polygon edges will be anti-aliased." msgstr "如果为 [code]true[/code],则多边形边缘将进行抗锯齿。" msgid "" +"Internal list of [Bone2D] nodes used by the assigned [member skeleton]. " +"Edited using the Polygon2D editor (\"UV\" button on the top toolbar)." +msgstr "" +"分配的 [member skeleton] 所使用的 [Bone2D] 节点的内部列表。使用 Polygon2D 编" +"辑器编辑(顶部工具栏的“UV”按钮)。" + +msgid "" "The polygon's fill color. If [code]texture[/code] is defined, it will be " "multiplied by this color. It will also be the default color for vertices not " "set in [code]vertex_colors[/code]." @@ -77445,6 +81279,17 @@ msgstr "" "多边形的填充颜色.如果定义了[code]texture[/code](贴图),它将乘以该颜色.对于" "[code]vertex_colors[/code]中未设置的顶点,它也将是默认颜色." +msgid "Number of internal vertices, used for UV mapping." +msgstr "内部顶点的数量,用于 UV 映射。" + +msgid "" +"Added padding applied to the bounding box when [member invert_enabled] is " +"set to [code]true[/code]. Setting this value too small may result in a \"Bad " +"Polygon\" error." +msgstr "" +"添加了当 [member invert_enabled] 被设置为 [code]true[/code] 时应用于边界框的" +"填充。将该值设置得太小可能会产生一个“Bad Polygon”错误。" + msgid "" "If [code]true[/code], the polygon will be inverted, containing the area " "outside the defined points and extending to the [member invert_border]." @@ -77456,6 +81301,34 @@ msgid "The offset applied to each vertex." msgstr "应用于每个顶点的位置偏移量。" msgid "" +"The polygon's list of vertices. The final point will be connected to the " +"first.\n" +"[b]Note:[/b] This returns a copy of the [PackedVector2Array] rather than a " +"reference." +msgstr "" +"多边形的顶点列表。最后一点将连接到第一个点。\n" +"[b]注意:[/b]返回的是 [PackedVector2Array] 的副本,不是引用。" + +msgid "" +"The list of polygons, in case more than one is being represented. Every " +"individual polygon is stored as a [PackedInt32Array] where each [int] is an " +"index to a point in [member polygon]. If empty, this property will be " +"ignored, and the resulting single polygon will be composed of all points in " +"[member polygon], using the order they are stored in." +msgstr "" +"多边形数量大于一时的多边形列表。每个独立的多边形都作为 [PackedInt32Array] 存" +"储,其中的每个 [int] 都是对 [member polygon] 某个点的索引。如果为空,则会忽略" +"这个属性,得到由 [member polygon] 中所有点构成的单个多边形,顺序与存储顺序一" +"致。" + +msgid "" +"Path to a [Skeleton2D] node used for skeleton-based deformations of this " +"polygon. If empty or invalid, skeletal deformations will not be used." +msgstr "" +"指向 [Skeleton2D] 节点的路径,用于对这个多边形进行基于骨架的变形。如果为空或" +"无效,则不会使用骨架变形。" + +msgid "" "The polygon's fill texture. Use [code]uv[/code] to set texture coordinates." msgstr "多边形的填充纹理。使用 [code]uv[/code] 设置纹理坐标。" @@ -77612,8 +81485,8 @@ msgid "" "built-in checking behavior and must be checked/unchecked manually. See " "[method set_item_checked] for more info on how to control it." msgstr "" -"添加一个新的可勾选项并为其分配指定的 [ShortCut]。将复选框的标签设置为 " -"[ShortCut] 的名称。\n" +"添加一个新的可勾选项并为其分配指定的 [Shortcut]。将复选框的标签设置为 " +"[Shortcut] 的名称。\n" "可以选择提供一个 [param id]。如果未提供 [param id],将从索引中创建一个。\n" "[b]注意:[/b]可勾选项只显示一个勾选标记,但没有任何内置的勾选行为,必须手动勾" "选/取消勾选。有关如何控制它的更多信息,请参阅 [method set_item_checked]。" @@ -77649,7 +81522,7 @@ msgid "" "[method set_item_checked] for more info on how to control it." msgstr "" "添加一个新的可勾选项并为其分配指定的 [Shortcut] 和图标 [param texture]。将复" -"选框的标签设置为 [ShortCut] 的名称。\n" +"选框的标签设置为 [Shortcut] 的名称。\n" "可以选择提供一个 [param id]。如果未提供 [param id],将从索引中创建一个。\n" "[b]注意:[/b]可勾选项只显示一个勾选标记,但没有任何内置的勾选行为,必须手动勾" "选/取消勾选。有关如何控制它的更多信息,请参阅 [method set_item_checked]。" @@ -77758,8 +81631,8 @@ msgid "" "built-in checking behavior and must be checked/unchecked manually. See " "[method set_item_checked] for more info on how to control it." msgstr "" -"添加一个新的单选勾选按钮并为其分配一个 [ShortCut]。将复选框的标签设置为 " -"[ShortCut] 的名称。\n" +"添加一个新的单选勾选按钮并为其分配一个 [Shortcut]。将复选框的标签设置为 " +"[Shortcut] 的名称。\n" "可以选择提供一个 [param id]。如果未提供 [param id],将从索引中创建一个。\n" "[b]注意:[/b]可勾选项只显示一个勾选标记,但没有任何内置的勾选行为,必须手动勾" "选/取消勾选。有关如何控制它的更多信息,请参阅 [method set_item_checked]。" @@ -77778,7 +81651,7 @@ msgid "" "An [param id] can optionally be provided. If no [param id] is provided, one " "will be created from the index." msgstr "" -"添加 [ShortCut]。\n" +"添加 [Shortcut]。\n" "还可以提供 [param id]。如果没有提供 [param id],则会根据索引来创建。" msgid "" @@ -78384,6 +82257,40 @@ msgid "" msgstr "用于 [Sky] 的 [Material],能够根据用户输入的参数生成背景。" msgid "" +"ProceduralSkyMaterial provides a way to create an effective background " +"quickly by defining procedural parameters for the sun, the sky and the " +"ground. The sky and ground are very similar, they are defined by a color at " +"the horizon, another color, and finally an easing curve to interpolate " +"between these two colors. Similarly, the sun is described by a position in " +"the sky, a color, and an easing curve. However, the sun also defines a " +"minimum and maximum angle, these two values define at what distance the " +"easing curve begins and ends from the sun, and thus end up defining the size " +"of the sun in the sky.\n" +"The [ProceduralSkyMaterial] uses a lightweight shader to draw the sky and is " +"thus suited for real time updates. When you do not need a quick sky that is " +"not realistic, this is a good option. If you need a more realistic option, " +"try using [PhysicalSkyMaterial] instead.\n" +"The [ProceduralSkyMaterial] supports up to 4 suns. Each sun takes its color, " +"energy, and direction from the corresponding [DirectionalLight3D] in the " +"scene." +msgstr "" +"ProceduralSkyMaterial 提供了一种通过为太阳、天空、和地面定义程序参数,来快速" +"创建一个有效背景的方法。天空和地面非常相似,它们由地平线上的一种颜色、另一种" +"颜色、以及一条最后在这两种颜色之间插值的缓动曲线定义。类似地,太阳通过在天空" +"中的一个位置、一种颜色和一条缓动曲线来描述。然而,太阳也定义了最小和最大角" +"度,这两个值定义了缓动曲线从太阳开始和结束的距离,从而最终定义了天空中太阳的" +"大小。\n" +"[ProceduralSkyMaterial] 使用轻量级着色器来绘制天空,因此适合实时更新。当不需" +"要不现实的快速天空时,这是一个不错的选择。如果需要更逼真的选项,请尝试改用 " +"[PhysicalSkyMaterial]。\n" +"[ProceduralSkyMaterial] 最多支持 4 个太阳。每个太阳都从场景中相应的 " +"[DirectionalLight3D] 获取其颜色、能量和方向。" + +msgid "" +"Color of the ground at the bottom. Blends with [member ground_horizon_color]." +msgstr "地面底部的颜色。会与 [member ground_horizon_color] 混合。" + +msgid "" "How quickly the [member ground_horizon_color] fades into the [member " "ground_bottom_color]." msgstr "" @@ -78394,6 +82301,10 @@ msgid "" msgstr "地面颜色的乘数。值越高,地面越亮。" msgid "" +"Color of the ground at the horizon. Blends with [member ground_bottom_color]." +msgstr "地面在地平线处的颜色。会与 [member ground_bottom_color] 混合。" + +msgid "" "The sky cover texture to use. This texture must use an equirectangular " "projection (similar to [PanoramaSkyMaterial]). The texture's colors will be " "[i]added[/i] to the existing sky color, and will be multiplied by [member " @@ -78408,6 +82319,16 @@ msgstr "" "观)。" msgid "" +"The tint to apply to the [member sky_cover] texture. This can be used to " +"change the sky cover's colors or opacity independently of the sky energy, " +"which is useful for day/night or weather transitions. Only effective if a " +"texture is defined in [member sky_cover]." +msgstr "" +"应用于 [member sky_cover] 纹理的色调。可用于改变天空覆盖的颜色或不透明度,不" +"受天空能量的影响,对于昼夜转换或天气转换很有用。只有在 [member sky_cover] 中" +"定义了纹理时才有效。" + +msgid "" "How quickly the [member sky_horizon_color] fades into the [member " "sky_top_color]." msgstr "从 [member sky_horizon_color] 渐变到 [member sky_top_color] 的速度。" @@ -78424,6 +82345,11 @@ msgstr "天空在顶部的颜色。会与 [member sky_horizon_color] 混合。" msgid "Distance from center of sun where it fades out completely." msgstr "太阳完全淡出消失的位置与太阳中心的距离。" +msgid "" +"How quickly the sun fades away between the edge of the sun disk and [member " +"sun_angle_max]." +msgstr "在太阳圆盘边缘和 [member sun_angle_max] 之间,太阳消失得有多快。" + msgid "General-purpose progress bar." msgstr "通用进度条。" @@ -78538,12 +82464,33 @@ msgstr "" "[AABB]。" msgid "" +"Creates a new [Projection] for projecting positions onto a head-mounted " +"display with the given X:Y aspect ratio, distance between eyes, display " +"width, distance to lens, oversampling factor, and depth clipping planes.\n" +"[param eye] creates the projection for the left eye when set to 1, or the " +"right eye when set to 2." +msgstr "" +"创建新的 [Projection],将位置投影至头戴显示器中,使用给定的 X:Y 纵横比、双眼" +"间距、显示器宽度、到镜头的距离、过采样系数以及深度裁剪平面。\n" +"[param eye] 设为 1 时创建的是左眼投影,设为 2 时则为右眼。" + +msgid "" "Creates a new [Projection] that projects positions in a frustum with the " "given clipping planes." msgstr "" "创建新的 [Projection],将位置投影至平截头台中,平截头台由给定的裁剪平面指定。" msgid "" +"Creates a new [Projection] that projects positions in a frustum with the " +"given size, X:Y aspect ratio, offset, and clipping planes.\n" +"[param flip_fov] determines whether the projection's field of view is " +"flipped over its diagonal." +msgstr "" +"创建新的 [Projection],将位置投影至平截头台中,平截头台由给定的大小、X:Y 纵横" +"比、偏移量以及裁剪平面指定。\n" +"[param flip_fov] 决定投影视野是否按对角线翻转。" + +msgid "" "Creates a new [Projection] that projects positions into the given [Rect2]." msgstr "创建新的 [Projection],将位置投影至给定的 [Rect2]。" @@ -78553,6 +82500,56 @@ msgid "" msgstr "创建新的 [Projection],使用给定裁剪平面的正交投影对位置进行投影。" msgid "" +"Creates a new [Projection] that projects positions using an orthogonal " +"projection with the given size, X:Y aspect ratio, and clipping planes.\n" +"[param flip_fov] determines whether the projection's field of view is " +"flipped over its diagonal." +msgstr "" +"创建新的 [Projection],使用正交投影对位置进行投影,正交投影由给定的大小、X:Y " +"纵横比以及裁剪平面指定。\n" +"[param flip_fov] 决定投影视野是否按对角线翻转。" + +msgid "" +"Creates a new [Projection] that projects positions using a perspective " +"projection with the given Y-axis field of view (in degrees), X:Y aspect " +"ratio, and clipping planes.\n" +"[param flip_fov] determines whether the projection's field of view is " +"flipped over its diagonal." +msgstr "" +"创建新的 [Projection],使用透视投影对位置进行投影,透视投影由给定的 Y 轴视野" +"(单位为度)、X:Y 纵横比以及裁剪平面指定。\n" +"[param flip_fov] 决定投影视野是否按对角线翻转。" + +msgid "" +"Creates a new [Projection] that projects positions using a perspective " +"projection with the given Y-axis field of view (in degrees), X:Y aspect " +"ratio, and clipping distances. The projection is adjusted for a head-mounted " +"display with the given distance between eyes and distance to a point that " +"can be focused on.\n" +"[param eye] creates the projection for the left eye when set to 1, or the " +"right eye when set to 2.\n" +"[param flip_fov] determines whether the projection's field of view is " +"flipped over its diagonal." +msgstr "" +"创建新的 [Projection],使用透视投影对位置进行投影,透视投影由给定的 Y 轴视野" +"(单位为度)、X:Y 纵横比以及裁剪平面指定。投影会针对头戴显示器进行调整,使用" +"给定的双眼间距以及与能够聚焦的点的距离。\n" +"[param eye] 设为 1 时创建的是左眼投影,设为 2 时则为右眼。\n" +"[param flip_fov] 决定投影视野是否按对角线翻转。" + +msgid "" +"Returns a scalar value that is the signed factor by which areas are scaled " +"by this matrix. If the sign is negative, the matrix flips the orientation of " +"the area.\n" +"The determinant can be used to calculate the invertibility of a matrix or " +"solve linear systems of equations involving the matrix, among other " +"applications." +msgstr "" +"返回一个标量值,该标量值是区域被该矩阵缩放的有符号系数。如果符号是负的,则矩" +"阵翻转该区域的方向。\n" +"行列式可用于计算矩阵的可逆性或求解涉及矩阵的线性方程组,以及其他应用。" + +msgid "" "Returns a copy of this [Projection] with the signs of the values of the Y " "column flipped." msgstr "返回这个 [Projection] 的副本,Y 列中数值的符号都进行了翻转。" @@ -78569,6 +82566,23 @@ msgid "Returns the horizontal field of view of the projection (in degrees)." msgstr "返回该投影的水平视野(单位为度)。" msgid "" +"Returns the vertical field of view of the projection (in degrees) associated " +"with the given horizontal field of view (in degrees) and aspect ratio." +msgstr "" +"返回与给定水平视场(以度为单位)和长宽比相关联的投影的垂直视场(以度为单" +"位)。" + +msgid "" +"Returns the factor by which the visible level of detail is scaled by this " +"[Projection]." +msgstr "返回这个 [Projection] 对可见细节级别的缩放系数。" + +msgid "" +"Returns the number of pixels with the given pixel width displayed per meter, " +"after this [Projection] is applied." +msgstr "在该 [Projection] 被应用后,返回每米显示的具有给定像素宽度的像素数。" + +msgid "" "Returns the clipping plane of this [Projection] whose index is given by " "[param plane].\n" "[param plane] should be equal to one of [constant PLANE_NEAR], [constant " @@ -78583,7 +82597,7 @@ msgstr "" msgid "" "Returns the dimensions of the viewport plane that this [Projection] projects " "positions onto, divided by two." -msgstr "返回视口平面的尺寸除以二,这个 [Project] 会把位置投影至该平面。" +msgstr "返回视口平面的尺寸除以二,这个 [Projection] 会把位置投影至该平面。" msgid "" "Returns the distance for this [Projection] beyond which positions are " @@ -78747,6 +82761,75 @@ msgstr "" "tutorials/export/feature_tags.html]特性标签[/url]。因此,如果你想让它们在所有" "平台和配置上覆盖基础项目设置,请确保[i]也用[/i]所需的特性标签覆盖该设置。" +msgid "" +"Adds a custom property info to a property. The dictionary must contain:\n" +"- [code]name[/code]: [String] (the property's name)\n" +"- [code]type[/code]: [int] (see [enum Variant.Type])\n" +"- optionally [code]hint[/code]: [int] (see [enum PropertyHint]) and " +"[code]hint_string[/code]: [String]\n" +"[b]Example:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"ProjectSettings.set(\"category/property_name\", 0)\n" +"\n" +"var property_info = {\n" +" \"name\": \"category/property_name\",\n" +" \"type\": TYPE_INT,\n" +" \"hint\": PROPERTY_HINT_ENUM,\n" +" \"hint_string\": \"one,two,three\"\n" +"}\n" +"\n" +"ProjectSettings.add_property_info(property_info)\n" +"[/gdscript]\n" +"[csharp]\n" +"ProjectSettings.Singleton.Set(\"category/property_name\", 0);\n" +"\n" +"var propertyInfo = new Godot.Collections.Dictionary\n" +"{\n" +" {\"name\", \"category/propertyName\"},\n" +" {\"type\", Variant.Type.Int},\n" +" {\"hint\", PropertyHint.Enum},\n" +" {\"hint_string\", \"one,two,three\"},\n" +"};\n" +"\n" +"ProjectSettings.AddPropertyInfo(propertyInfo);\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"为某个属性添加自定义属性信息。字典必须包含:\n" +"- [code]name[/code]:[String](属性名称)\n" +"- [code]type[/code]:[int](见 [enum Variant.Type])\n" +"- 可选的 [code]hint[/code]:[int](见 [enum PropertyHint])和 " +"[code]hint_string[/code]:[String]\n" +"[b]示例:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"ProjectSettings.set(\"category/property_name\", 0)\n" +"\n" +"var property_info = {\n" +" \"name\": \"category/property_name\",\n" +" \"type\": TYPE_INT,\n" +" \"hint\": PROPERTY_HINT_ENUM,\n" +" \"hint_string\": \"one,two,three\"\n" +"}\n" +"\n" +"ProjectSettings.add_property_info(property_info)\n" +"[/gdscript]\n" +"[csharp]\n" +"ProjectSettings.Singleton.Set(\"category/property_name\", 0);\n" +"\n" +"var propertyInfo = new Godot.Collections.Dictionary\n" +"{\n" +" {\"name\", \"category/propertyName\"},\n" +" {\"type\", Variant.Type.Int},\n" +" {\"hint\", PropertyHint.Enum},\n" +" {\"hint_string\", \"one,two,three\"},\n" +"};\n" +"\n" +"ProjectSettings.AddPropertyInfo(propertyInfo);\n" +"[/csharp]\n" +"[/codeblocks]" + msgid "Clears the whole configuration (not recommended, may break things)." msgstr "清除整个配置(不推荐,可能会弄坏东西)。" @@ -79048,6 +83131,11 @@ msgstr "" "稿)。如果为 [code]false[/code],则使用最近邻插值(推荐用于像素画)。" msgid "" +"If [code]true[/code], the application automatically accepts quitting " +"requests." +msgstr "如果为 [code]true[/code],则该应用程序会自动接受退出请求。" + +msgid "" "This user directory is used for storing persistent data ([code]user://[/" "code] filesystem). If a custom directory name is defined, this name will be " "appended to the system-specific user data directory (same parent folder as " @@ -79120,6 +83208,13 @@ msgstr "" "取来覆盖项目设置。" msgid "" +"If [code]true[/code], the application quits automatically when navigating " +"back (e.g. using the system \"Back\" button on Android)." +msgstr "" +"如果为 [code]true[/code],则该应用程序会在导航返回时自动退出(例如在 Android " +"上使用系统“返回”键)。" + +msgid "" "If [code]true[/code], the project will save user data to its own user " "directory. If [member application/config/custom_user_dir_name] is empty, " "[code]<OS user data directory>/<project name>[/code] directory will be used. " @@ -79247,10 +83342,58 @@ msgid "" msgstr "" "启用低处理器使用模式时帧间的睡眠量(以微秒计)。值越高,CPU占用率越低。" +msgid "The name of the type implementing the engine's main loop." +msgstr "实现引擎主循环的类型名称。" + msgid "Path to the main scene file that will be loaded when the project runs." msgstr "项目运行时将加载的主场景文件的路径。" msgid "" +"Maximum number of frames per second allowed. A value of [code]0[/code] means " +"\"no limit\". The actual number of frames per second may still be below this " +"value if the CPU or GPU cannot keep up with the project logic and " +"rendering.\n" +"Limiting the FPS can be useful to reduce system power consumption, which " +"reduces heat and noise emissions (and improves battery life on mobile " +"devices).\n" +"If [member display/window/vsync/vsync_mode] is set to [code]Enabled[/code] " +"or [code]Adaptive[/code], it takes precedence and the forced FPS number " +"cannot exceed the monitor's refresh rate.\n" +"If [member display/window/vsync/vsync_mode] is [code]Enabled[/code], on " +"monitors with variable refresh rate enabled (G-Sync/FreeSync), using a FPS " +"limit a few frames lower than the monitor's refresh rate will [url=https://" +"blurbusters.com/howto-low-lag-vsync-on/]reduce input lag while avoiding " +"tearing[/url].\n" +"If [member display/window/vsync/vsync_mode] is [code]Disabled[/code], " +"limiting the FPS to a high value that can be consistently reached on the " +"system can reduce input lag compared to an uncapped framerate. Since this " +"works by ensuring the GPU load is lower than 100%, this latency reduction is " +"only effective in GPU-bottlenecked scenarios, not CPU-bottlenecked " +"scenarios.\n" +"See also [member physics/common/physics_ticks_per_second].\n" +"[b]Note:[/b] This property is only read when the project starts. To change " +"the rendering FPS cap at runtime, set [member Engine.max_fps] instead." +msgstr "" +"每秒允许的最大帧数。[code]0[/code] 表示“不限制”。如果 CPU 或 GPU 无法满足项目" +"逻辑和渲染,则实际每秒的帧数可能仍然比这个值小。\n" +"限制 FPS 可以降低系统对电源的消耗,能够降低发热、减少噪音(延长移动设备的电池" +"寿命)。\n" +"[member display/window/vsync/vsync_mode] 为 [code]Enabled[/code] 或 " +"[code]Adaptive[/code] 时,该设置优先生效,强制的 FPS 数无法超过显示器的刷新" +"率。\n" +"[member display/window/vsync/vsync_mode] 为 [code]Enabled[/code] 时,在启用了" +"可变刷新率(G-Sync/FreeSync)的显示器上使用比显示器刷新率略低几帧的 FPS 限制" +"会[url=https://blurbusters.com/howto-low-lag-vsync-on/]降低输入延迟,避免画面" +"撕裂[/url]。\n" +"[member display/window/vsync/vsync_mode] 为 [code]Disabled[/code] 时,与不限" +"制帧率相比,将 FPS 限制设为系统所能达到的较高值能够降低输入延迟。因为原理是确" +"保 GPU 负载低于 100%,所以只有在 GPU 为瓶颈时才会降低延迟,无法缓解 CPU 瓶颈" +"导致的延迟。\n" +"另见 [member physics/common/physics_ticks_per_second]。\n" +"[b]注意:[/b]这个属性仅在项目启动时读取。要在运行时修改渲染 FPS 上限,请改为" +"设置 [member Engine.max_fps]。" + +msgid "" "Audio buses will disable automatically when sound goes below a given dB " "threshold for a given time. This saves CPU as effects assigned to that bus " "will no longer do any processing." @@ -79264,6 +83407,27 @@ msgid "" msgstr "项目中使用的默认 [AudioBusLayout] 资源文件,除非被场景覆盖。" msgid "" +"Specifies the audio driver to use. This setting is platform-dependent as " +"each platform supports different audio drivers. If left empty, the default " +"audio driver will be used.\n" +"The [code]Dummy[/code] audio driver disables all audio playback and " +"recording, which is useful for non-game applications as it reduces CPU " +"usage. It also prevents the engine from appearing as an application playing " +"audio in the OS' audio mixer.\n" +"[b]Note:[/b] The driver in use can be overridden at runtime via the [code]--" +"audio-driver[/code] [url=$DOCS_URL/tutorials/editor/command_line_tutorial." +"html]command line argument[/url]." +msgstr "" +"指定要使用的音频驱动程序。这个设置与平台有关,因为不同的平台支持不同的音频驱" +"动。如果留空,将使用默认的音频驱动程序。\n" +"[code]Dummy[/code] 音频驱动程序会禁用所有的音频播放和录制,对非游戏应用程序很" +"有用,因为会减少对 CPU 的使用。它还可以防止引擎作为正在播放音频的应用程序出现" +"在操作系统的音频混合器中。\n" +"[b]注意:[/b]运行时可以通过 [code]--audio-driver[/code] [url=$DOCS_URL/" +"tutorials/editor/command_line_tutorial.html]命令行参数[/url]覆盖所使用的驱动" +"程序。" + +msgid "" "If [code]true[/code], microphone input will be allowed. This requires " "appropriate permissions to be set when exporting to Android or iOS.\n" "[b]Note:[/b] If the operating system blocks access to audio input devices " @@ -79285,6 +83449,40 @@ msgstr "" "统。" msgid "" +"Safer override for [member audio/driver/mix_rate] in the Web platform. Here " +"[code]0[/code] means \"let the browser choose\" (since some browsers do not " +"like forcing the mix rate)." +msgstr "" +"[member audio/driver/mix_rate] 在 Web 平台上更安全的覆盖项。这里的 [code]0[/" +"code] 表示“让浏览器选择”(因为有些浏览器不喜欢强制混合率)。" + +msgid "" +"Specifies the preferred output latency in milliseconds for audio. Lower " +"values will result in lower audio latency at the cost of increased CPU " +"usage. Low values may result in audible cracking on slower hardware.\n" +"Audio output latency may be constrained by the host operating system and " +"audio hardware drivers. If the host can not provide the specified audio " +"output latency then Godot will attempt to use the nearest latency allowed by " +"the host. As such you should always use [method AudioServer." +"get_output_latency] to determine the actual audio output latency.\n" +"[b]Note:[/b] This setting is ignored on all versions of Windows prior to " +"Windows 10." +msgstr "" +"指定音频的首选输出延迟(以毫秒为单位)。较低的值将导致较低的音频延迟,但会增" +"加 CPU 使用率。低值可能会导致在较慢的硬件上发出可听见的破裂声。\n" +"音频输出延迟可能会受到主机操作系统和音频硬件驱动程序的限制。如果主机无法提供" +"指定的音频输出延迟,那么 Godot 将尝试使用主机允许的最近延迟。因此,应该始终使" +"用 [method AudioServer.get_output_latency] 来确定实际的音频输出延迟。\n" +"[b]注意:[/b]在 Windows 10 之前的所有 Windows 版本中,该设置都会被忽略。" + +msgid "" +"Safer override for [member audio/driver/output_latency] in the Web platform, " +"to avoid audio issues especially on mobile devices." +msgstr "" +"[member audio/driver/output_latency] 在 Web 平台上更安全的覆盖项,能够避免一" +"些音频问题,尤其是在移动设备上。" + +msgid "" "The base strength of the panning effect for all [AudioStreamPlayer2D] nodes. " "The panning strength can be further scaled on each Node using [member " "AudioStreamPlayer2D.panning_strength]. A value of [code]0.0[/code] disables " @@ -79603,7 +83801,7 @@ msgid "" "surrounding code, such as writing [code]2 + 2[/code] as a statement." msgstr "" "设置为 [code]warn[/code] 或 [code]error[/code] 时,当调用对周围代码没有影响的" -"表达式,例如将 [code]2 + 2 [/code] 写为语句时,会分别产生一个警告或一个错误。" +"表达式,例如将 [code]2 + 2[/code] 写为语句时,会分别产生一个警告或一个错误。" msgid "" "When set to [code]warn[/code] or [code]error[/code], produces a warning or " @@ -79799,11 +83997,22 @@ msgid "" msgstr "碰撞形状的颜色,当在调试菜单中启用“显示碰撞形状”时可见。" msgid "" +"Color to display enabled navigation agent paths when an agent has debug " +"enabled." +msgstr "用于显示已启用的导航代理路径的颜色,代理启用调试时生效。" + +msgid "" "Rasterized size (pixel) used to render navigation agent path points when an " "agent has debug enabled." msgstr "栅格大小(像素),如果导航代理启用了调试,则会用于渲染该代理的路径点。" msgid "" +"Color to display edge connections between navigation regions, visible when " +"\"Visible Navigation\" is enabled in the Debug menu." +msgstr "" +"用于显示导航区域之间的边缘连接的颜色,在“调试”菜单中,启用“可见导航”时可见。" + +msgid "" "If enabled, displays navigation agent paths when an agent has debug enabled." msgstr "如果处于启用状态,会在导航代理启用调试时显示其路径。" @@ -79894,6 +84103,16 @@ msgid "" "\"Visible Navigation\" is enabled in the Debug menu." msgstr "被禁用的导航链接连接的颜色,在调试菜单中启用“显示导航”时可见。" +msgid "" +"Color of the curve path geometry, visible when \"Visible Paths\" is enabled " +"in the Debug menu." +msgstr "曲线路径几何图形的颜色,在“调试”菜单中启用“可见路径”时可见。" + +msgid "" +"Line width of the curve path geometry, visible when \"Visible Paths\" is " +"enabled in the Debug menu." +msgstr "曲线路径几何图形的线宽,在“调试”菜单中启用“可见路径”时可见。" + msgid "Custom image for the mouse cursor (limited to 256×256)." msgstr "鼠标光标的自定义图像(最大 256×256)。" @@ -80063,6 +84282,25 @@ msgstr "" "[b]注意:[/b]这个设置在 iOS 上将忽略。" msgid "" +"If [code]true[/code], enables a window manager hint that the main window " +"background [i]can[/i] be transparent. This does not make the background " +"actually transparent. For the background to be transparent, the root " +"viewport must also be made transparent by enabling [member rendering/" +"viewport/transparent_background].\n" +"[b]Note:[/b] To use a transparent splash screen, set [member application/" +"boot_splash/bg_color] to [code]Color(0, 0, 0, 0)[/code].\n" +"[b]Note:[/b] This setting has no effect if [member display/window/" +"per_pixel_transparency/allowed] is set to [code]false[/code]." +msgstr "" +"如果为 [code]true[/code],则启用窗口管理器提示,表示主窗口背景[i]能够[/i]透" +"明。这并不会让背景变得透明。要让背景变透明,根视口必须也通过启用 [member " +"rendering/viewport/transparent_background] 来变得透明。\n" +"[b]注意:[/b]要使用透明的启动画面,请将 [member application/boot_splash/" +"bg_color] 设为 [code]Color(0, 0, 0, 0)[/code]。\n" +"[b]注意:[/b]如果 [member display/window/per_pixel_transparency/allowed] 为 " +"[code]false[/code],则这个设置项无效。" + +msgid "" "Sets the game's main viewport height. On desktop platforms, this is also the " "initial window height, represented by an indigo-colored rectangle in the 2D " "editor. Stretch mode settings also use this as a reference when using the " @@ -80122,6 +84360,9 @@ msgstr "" "[member display/window/size/viewport_width]。在 iOS、Android 和 Web 上会忽略" "这个设置。" +msgid "If [code]true[/code] subwindows are embedded in the main window." +msgstr "如果为 [code]true[/code] 则子窗口是嵌入到主窗口中的。" + msgid "" "Sets the V-Sync mode for the main game window.\n" "See [enum DisplayServer.VSyncMode] for possible values and how they affect " @@ -80172,6 +84413,13 @@ msgstr "" "code] 和[code].csproj[/code]。" msgid "" +"If [code]true[/code] text resources are converted to binary format on export." +msgstr "如果为 [code]true[/code],则导出时会将文本资源转换为二进制格式。" + +msgid "If [code]true[/code] importing of resources is run on multiple threads." +msgstr "如果为 [code]true[/code],则会多线程执行资源的导入。" + +msgid "" "If [code]true[/code], requests V-Sync to be disabled when writing a movie " "(similar to setting [member display/window/vsync/vsync_mode] to [b]Disabled[/" "b]). This can speed up video writing if the hardware is fast enough to " @@ -80207,6 +84455,16 @@ msgstr "" "editor/command_line_tutorial.html]命令行参数[/url]手动指定。" msgid "" +"The audio mix rate to use in the recorded audio when writing a movie (in " +"Hz). This can be different from [member audio/driver/mix_rate], but this " +"value must be divisible by [member editor/movie_writer/fps] to prevent audio " +"from desynchronizing over time." +msgstr "" +"写入影片时,录制的音频所使用的音频混合采样率(单位为 Hz)。可以和 [member " +"audio/driver/mix_rate] 不同,但这个值必须能够被 [member editor/movie_writer/" +"fps] 整除,从而防止音频可能逐渐不同步的问题。" + +msgid "" "The JPEG quality to use when writing a video to an AVI file, between " "[code]0.01[/code] and [code]1.0[/code] (inclusive). Higher [code]quality[/" "code] values result in better-looking output at the cost of larger file " @@ -80223,6 +84481,51 @@ msgstr "" "[b]注意:[/b]这不会影响音频质量和 PNG 图像序列的写入。" msgid "" +"The output path for the movie. The file extension determines the " +"[MovieWriter] that will be used.\n" +"Godot has 2 built-in [MovieWriter]s:\n" +"- AVI container with MJPEG for video and uncompressed audio ([code].avi[/" +"code] file extension). Lossy compression, medium file sizes, fast encoding. " +"The lossy compression quality can be adjusted by changing [member " +"ProjectSettings.editor/movie_writer/mjpeg_quality]. The resulting file can " +"be viewed in most video players, but it must be converted to another format " +"for viewing on the web or by Godot with [VideoStreamPlayer]. MJPEG does not " +"support transparency. AVI output is currently limited to a file of 4 GB in " +"size at most.\n" +"- PNG image sequence for video and WAV for audio ([code].png[/code] file " +"extension). Lossless compression, large file sizes, slow encoding. Designed " +"to be encoded to a video file with another tool such as [url=https://ffmpeg." +"org/]FFmpeg[/url] after recording. Transparency is currently not supported, " +"even if the root viewport is set to be transparent.\n" +"If you need to encode to a different format or pipe a stream through third-" +"party software, you can extend this [MovieWriter] class to create your own " +"movie writers.\n" +"When using PNG output, the frame number will be appended at the end of the " +"file name. It starts from 0 and is padded with 8 digits to ensure correct " +"sorting and easier processing. For example, if the output path is [code]/tmp/" +"hello.png[/code], the first two frames will be [code]/tmp/hello00000000.png[/" +"code] and [code]/tmp/hello00000001.png[/code]. The audio will be saved at " +"[code]/tmp/hello.wav[/code]." +msgstr "" +"影片的输出路径。文件扩展名决定要使用的 [MovieWriter]。\n" +"Godot 有两个内置的 [MovieWriter]:\n" +"- AVI 容器,视频使用 MJPEG、音频未压缩(文件扩展名为 [code].avi[/code])。有" +"损压缩,文件大小中等,编码较快。有损压缩质量可以通过 [member ProjectSettings." +"editor/movie_writer/mjpeg_quality] 调整。得到的文件可以使用大多数视频播放器查" +"看,但必须转换成其他格式才能在 Web 或 Godot 的 [VideoStreamPlayer] 中播放。" +"MJPEG 不支持透明度。AVI 输出目前有单文件 4 GB 的大小限制。\n" +"- 视频使用 PNG 图像序列,音频使用 WAV(文件扩展名为 [code].png[/code])。无损" +"压缩,文件大小较大,编码较慢。旨在录制后使用 [url=https://ffmpeg." +"org/]FFmpeg[/url] 等其他工具编码为视频文件。目前不支持透明度,即便将根视口设" +"为透明也不行。\n" +"如果需要编码为其他格式,或者将流导入至第三方软件,你可以扩展 [MovieWriter] " +"类,创建自己的影片写入器。\n" +"使用 PNG 输出时,帧号将附加在文件名末尾。帧号从 0 开始,会补齐至 8 位数字,从" +"而确保能够正确排序,处理起来也更方便。例如,如果输出路径为 [code]/tmp/hello." +"png[/code],那么前两帧就是 [code]/tmp/hello00000000.png[/code] 和 [code]/tmp/" +"hello00000001.png[/code]。音频将保存在 [code]/tmp/hello.wav[/code]。" + +msgid "" "The speaker mode to use in the recorded audio when writing a movie. See " "[enum AudioServer.SpeakerMode] for possible values." msgstr "" @@ -80400,10 +84703,49 @@ msgstr "自定义 [Font] 资源的路径,用作项目中所有 GUI 元素的 msgid "Font anti-aliasing mode. See [member FontFile.antialiasing]." msgstr "字体抗锯齿模式。见 [member FontFile.antialiasing]。" +msgid "" +"If set to [code]true[/code], the default font will have mipmaps generated. " +"This prevents text from looking grainy when a [Control] is scaled down, or " +"when a [Label3D] is viewed from a long distance (if [member Label3D." +"texture_filter] is set to a mode that displays mipmaps).\n" +"Enabling [member gui/theme/default_font_generate_mipmaps] increases font " +"generation time and memory usage. Only enable this setting if you actually " +"need it.\n" +"[b]Note:[/b] This setting does not affect custom [Font]s used within the " +"project." +msgstr "" +"如果设置为 [code]true[/code],则默认字体将生成 mipmap。这样可以防止文本在 " +"[Control] 被按比例缩小或从远距离查看 [Label3D] 时看起来有颗粒感(如果 " +"[member Label3D.texture_filter] 设置为显示 mipmap 的模式)。\n" +"启用 [member gui/theme/default_font_generate_mipmaps] 会增加字体生成时间和内" +"存使用量。请只在你确实需要时才启用此设置。\n" +"[b]注意:[/b]此设置不会影响项目中使用的自定义 [Font]。" + msgid "Default font hinting mode. See [member FontFile.hinting]." msgstr "默认字体微调模式。见 [member FontFile.hinting]。" msgid "" +"If set to [code]true[/code], the default font will use multichannel signed " +"distance field (MSDF) for crisp rendering at any size. Since this approach " +"does not rely on rasterizing the font every time its size changes, this " +"allows for resizing the font in real-time without any performance penalty. " +"Text will also not look grainy for [Control]s that are scaled down (or for " +"[Label3D]s viewed from a long distance).\n" +"MSDF font rendering can be combined with [member gui/theme/" +"default_font_generate_mipmaps] to further improve font rendering quality " +"when scaled down.\n" +"[b]Note:[/b] This setting does not affect custom [Font]s used within the " +"project." +msgstr "" +"如果设置为 [code]true[/code],默认字体将使用多通道带符号距离场(MSDF),任何" +"尺寸都能够进行清晰的渲染。由于这种方法不需要在每次字体大小更改时都对字体进行" +"光栅化,因此可以实时调整字体大小,不会造成任何性能损失。对于按比例缩小的 " +"[Control](或从远距离查看的 [Label3D]),文本也不会看起来有颗粒感。\n" +"MSDF 字体渲染可以与 [member gui/theme/default_font_generate_mipmaps] 结合使" +"用,从而进一步提高缩小时的字体渲染质量。\n" +"[b]注意:[/b]此设置不会影响项目中使用的自定义 [Font]。" + +msgid "" "Default font glyph subpixel positioning mode. See [member FontFile." "subpixel_positioning]." msgstr "" @@ -81102,6 +85444,19 @@ msgstr "" "的,无法删除。但是可以修改分配给该动作的事件。" msgid "" +"If no selection is currently active, selects the word currently under the " +"caret in text fields. If a selection is currently active, deselects the " +"current selection.\n" +"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are " +"necessary for the internal logic of several [Control]s. The events assigned " +"to the action can however be modified." +msgstr "" +"如果文本框中当前没有选中文本,则选中文本光标下的单词。如果有当前选中的文本," +"则取消选中。\n" +"[b]注意:[/b]默认的 [code]ui_*[/code] 动作是部分 [Control] 的内部逻辑所必需" +"的,无法删除。但是可以修改分配给该动作的事件。" + +msgid "" "macOS specific override for the shortcut to select the word currently under " "the caret." msgstr "针对 macOS 的快捷键覆盖项,对应选中光标处单词的快捷键。" @@ -81150,6 +85505,24 @@ msgstr "" "的,无法删除。但是可以修改分配给该动作的事件。" msgid "" +"If [code]true[/code], key/touch/joystick events will be flushed just before " +"every idle and physics frame.\n" +"If [code]false[/code], such events will be flushed only once per process " +"frame, between iterations of the engine.\n" +"Enabling this can greatly improve the responsiveness to input, specially in " +"devices that need to run multiple physics frames per visible (process) " +"frame, because they can't run at the target frame rate.\n" +"[b]Note:[/b] Currently implemented only on Android." +msgstr "" +"如果为 [code]true[/code],按键/触摸/操纵杆事件将在每个空闲帧和物理帧之前刷" +"新。\n" +"如果为 [code]false[/code],该类事件将在引擎迭代之间的每个进程帧中仅刷新一" +"次。\n" +"启用该功能可以极大地提高对输入的响应能力,特别是在每个可见(进程)帧需要运行" +"多个物理帧的设备中,因为它们无法以目标帧速率运行。\n" +"[b]注意:[/b]目前只在 Android 上实现。" + +msgid "" "Specifies the tablet driver to use. If left empty, the default driver will " "be used.\n" "[b]Note:[/b] The driver in use can be overridden at runtime via the [code]--" @@ -81161,6 +85534,9 @@ msgstr "" "[url=$DOCS_URL/tutorials/editor/command_line_tutorial.html]命令行参数[/url]在" "运行时进行覆盖。" +msgid "Override for [member input_devices/pen_tablet/driver] on Windows." +msgstr "[member input_devices/pen_tablet/driver] 针对 Windows 的覆盖项。" + msgid "" "If [code]true[/code], sends mouse input events when tapping or swiping on " "the touchscreen." @@ -81179,17 +85555,97 @@ msgstr "" "code],即英文。" msgid "" +"If [code]true[/code], text server break iteration rule sets, dictionaries " +"and other optional data are included in the exported project.\n" +"[b]Note:[/b] \"ICU / HarfBuzz / Graphite\" text server data includes " +"dictionaries for Burmese, Chinese, Japanese, Khmer, Lao and Thai as well as " +"Unicode Standard Annex #29 and Unicode Standard Annex #14 word and line " +"breaking rules. Data is about 4 MB large.\n" +"[b]Note:[/b] \"Fallback\" text server does not use additional data." +msgstr "" +"如果为 [code]true[/code],则文本服务器中断迭代规则集、字典、和其他可选数据将" +"被包含在导出的项目中。\n" +"[b]注意:[/b]“ICU / HarfBuzz / Graphite”文本服务器数据,包括缅甸语、汉语、日" +"语、高棉语、老挝语和泰语的词典,以及 Unicode 标准附件 #29 和 Unicode 标准附" +"件 #14 单词和行折断规则。数据大约 4 MB。\n" +"[b]注意:[/b]“后备”文本服务器不使用额外数据。" + +msgid "" "If non-empty, this locale will be used when running the project from the " "editor." msgstr "如果不为空,那么当从编辑器中运行项目时,将使用该区域设置。" +msgid "" +"Double vowels in strings during pseudolocalization to simulate the " +"lengthening of text due to localization." +msgstr "" +"进行伪本地化时,重复字符串中的元音字母,模拟由于本地化而造成的文本加长。" + +msgid "" +"The expansion ratio to use during pseudolocalization. A value of [code]0.3[/" +"code] is sufficient for most practical purposes, and will increase the " +"length of each string by 30%." +msgstr "" +"进行伪本地化时的扩展比率。取 [code]0.3[/code] 能够适应大部分实际使用,会将每" +"个字符串加长 30%。" + +msgid "" +"If [code]true[/code], emulate bidirectional (right-to-left) text when " +"pseudolocalization is enabled. This can be used to spot issues with RTL " +"layout and UI mirroring that will crop up if the project is localized to RTL " +"languages such as Arabic or Hebrew." +msgstr "" +"如果为 [code]true[/code],则在启用伪本地化时模拟双向(从右至左)文本。可用于" +"发现 RTL 布局和 UI 镜像问题,如果项目本地化为阿拉伯语或希伯来语等 RTL 语言," +"则会出现这些问题。" + +msgid "" +"Replace all characters in the string with [code]*[/code]. Useful for finding " +"non-localizable strings." +msgstr "" +"将字符串中的所有字符替换为 [code]*[/code]。用于查找不可本地化的字符串。" + msgid "Prefix that will be prepended to the pseudolocalized string." msgstr "将被前置到伪本地化字符串的前缀。" +msgid "" +"Replace all characters with their accented variants during " +"pseudolocalization." +msgstr "进行伪本地化时,将所有字符替换为其重音变体。" + +msgid "" +"Skip placeholders for string formatting like [code]%s[/code] or [code]%f[/" +"code] during pseudolocalization. Useful to identify strings which need " +"additional control characters to display correctly." +msgstr "" +"进行伪本地化时,跳过 [code]%s[/code] 或 [code]%f[/code] 等用于字符串格式的占" +"位符。有助于识别需要额外的控制字符才能正确显示的字符串。" + msgid "Suffix that will be appended to the pseudolocalized string." msgstr "将被追加到伪本地化字符串的后缀。" msgid "" +"If [code]true[/code], enables pseudolocalization for the project. This can " +"be used to spot untranslatable strings or layout issues that may occur once " +"the project is localized to languages that have longer strings than the " +"source language.\n" +"[b]Note:[/b] This property is only read when the project starts. To toggle " +"pseudolocalization at run-time, use [member TranslationServer." +"pseudolocalization_enabled] instead." +msgstr "" +"如果为 [code]true[/code],则为项目启用伪本地化。这可用于发现,一旦项目被本地" +"化为字符串比源语言更长的语言时,可能出现的无法翻译的字符串或布局问题。\n" +"[b]注意:[/b]只有在项目启动时该属性才会被读取。要在运行时切换伪本地化,请改" +"用 [member TranslationServer.pseudolocalization_enabled]。" + +msgid "" +"Force layout direction and text writing direction to RTL for all controls." +msgstr "强制所有控件的布局方向和文本书写方向为 RTL。" + +msgid "Root node default layout direction." +msgstr "根节点的默认布局方向。" + +msgid "" "Specifies the [TextServer] to use. If left empty, the default will be used.\n" "\"ICU / HarfBuzz / Graphite\" is the most advanced text driver, supporting " "right-to-left typesetting and complex scripts (for languages like Arabic, " @@ -82117,6 +86573,35 @@ msgstr "" "map_set_link_connection_radius]。" msgid "" +"Maximum number of characters allowed to send as output from the debugger. " +"Over this value, content is dropped. This helps not to stall the debugger " +"connection." +msgstr "" +"允许作为调试器输出发送的最大字符数。超过该值,内容将被丢弃。这有助于避免调试" +"器的连接停滞。" + +msgid "" +"Maximum number of errors allowed to be sent from the debugger. Over this " +"value, content is dropped. This helps not to stall the debugger connection." +msgstr "" +"允许从调试器发送的最大错误数。超过该值,内容将被丢弃。这有助于避免调试器的连" +"接停滞。" + +msgid "" +"Maximum number of messages in the debugger queue. Over this value, content " +"is dropped. This helps to limit the debugger memory usage." +msgstr "" +"调试器队列中的最大消息数。超过该值,内容将被丢弃。这有助于限制调试器的内存使" +"用。" + +msgid "" +"Maximum number of warnings allowed to be sent from the debugger. Over this " +"value, content is dropped. This helps not to stall the debugger connection." +msgstr "" +"允许从调试器发送的最大警告数。超过此值,内容将被丢弃。这有助于避免调试器的连" +"接停滞。" + +msgid "" "Default size of packet peer stream for deserializing Godot data (in bytes, " "specified as a power of two). The default value [code]16[/code] is equal to " "65,536 bytes. Over this size, data is dropped." @@ -82142,6 +86627,38 @@ msgid "Page size used by remote filesystem (in bytes)." msgstr "远程文件系统使用的页面大小(字节)。" msgid "" +"The CA certificates bundle to use for TLS connections. If this is set to a " +"non-empty value, this will [i]override[/i] Godot's default [url=https://" +"github.com/godotengine/godot/blob/master/thirdparty/certs/ca-certificates." +"crt]Mozilla certificate bundle[/url]. If left empty, the default certificate " +"bundle will be used.\n" +"If in doubt, leave this setting empty." +msgstr "" +"用于 TLS 连接的 CA 证书包。如果设置为非空值,这将[i]覆盖[/i] Godot 默认的 " +"[url=https://github.com/godotengine/godot/blob/master/thirdparty/certs/ca-" +"certificates.crt]Mozilla 证书包[/url]。如果留空,将使用默认的证书包。\n" +"如果有疑问,请将此设置留空。" + +msgid "" +"The default angular damp in 2D.\n" +"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. " +"At value [code]0[/code] objects will keep moving with the same velocity. " +"Values greater than [code]1[/code] will aim to reduce the velocity to " +"[code]0[/code] in less than a second e.g. a value of [code]2[/code] will aim " +"to reduce the velocity to [code]0[/code] in half a second. A value equal to " +"or greater than the physics frame rate ([member ProjectSettings.physics/" +"common/physics_ticks_per_second], [code]60[/code] by default) will bring the " +"object to a stop in one iteration." +msgstr "" +"2D 中的默认角度阻尼。\n" +"[b]注意:[/b]值在 [code]0[/code] 到 [code]1[/code] 的范围内比较好。为 " +"[code]0[/code] 时,对象会保持相同的速度移动。大于 [code]1[/code] 时,会在一秒" +"内将速度降低到 [code]0[/code],例如为 [code]2[/code] 时会在半秒内将速度降低" +"到 [code]0[/code]。大于等于物理帧率([member ProjectSettings.physics/common/" +"physics_ticks_per_second],默认为 [code]60[/code])时,会让对象在迭代一次后就" +"停止。" + +msgid "" "The default gravity strength in 2D (in pixels per second squared).\n" "[b]Note:[/b] This property is only read when the project starts. To change " "the default gravity at runtime, use the following code sample:\n" @@ -82208,6 +86725,25 @@ msgstr "" "[/codeblocks]" msgid "" +"The default linear damp in 2D.\n" +"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. " +"At value [code]0[/code] objects will keep moving with the same velocity. " +"Values greater than [code]1[/code] will aim to reduce the velocity to " +"[code]0[/code] in less than a second e.g. a value of [code]2[/code] will aim " +"to reduce the velocity to [code]0[/code] in half a second. A value equal to " +"or greater than the physics frame rate ([member ProjectSettings.physics/" +"common/physics_ticks_per_second], [code]60[/code] by default) will bring the " +"object to a stop in one iteration." +msgstr "" +"2D 中的默认线性阻尼。\n" +"[b]注意:[/b]值在 [code]0[/code] 到 [code]1[/code] 的范围内比较好。为 " +"[code]0[/code] 时,对象会保持相同的速度移动。大于 [code]1[/code] 时,会在一秒" +"内将速度降低到 [code]0[/code],例如为 [code]2[/code] 时会在半秒内将速度降低" +"到 [code]0[/code]。大于等于物理帧率([member ProjectSettings.physics/common/" +"physics_ticks_per_second],默认为 [code]60[/code])时,会让对象在迭代一次后就" +"停止。" + +msgid "" "Sets which physics engine to use for 2D physics.\n" "\"DEFAULT\" and \"GodotPhysics2D\" are the same, as there is currently no " "alternative 2D physics server implemented." @@ -82267,6 +86803,38 @@ msgstr "" "PhysicsServer2D.SPACE_PARAM_CONTACT_RECYCLE_RADIUS]。" msgid "" +"Default solver bias for all physics constraints. Defines how much bodies " +"react to enforce constraints. See [constant PhysicsServer2D." +"SPACE_PARAM_CONSTRAINT_DEFAULT_BIAS].\n" +"Individual constraints can have a specific bias value (see [member Joint2D." +"bias])." +msgstr "" +"所有物理约束的默认求解器偏置。定义物体对强制约束的反应程度。见 [constant " +"PhysicsServer2D.SPACE_PARAM_CONSTRAINT_DEFAULT_BIAS]。\n" +"不同的约束可以指定不同的偏置值(见 [member Joint2D.bias])。" + +msgid "" +"Default solver bias for all physics contacts. Defines how much bodies react " +"to enforce contact separation. See [constant PhysicsServer2D." +"SPACE_PARAM_CONTACT_DEFAULT_BIAS].\n" +"Individual shapes can have a specific bias value (see [member Shape2D." +"custom_solver_bias])." +msgstr "" +"所有物理接触的默认求解器偏置。定义物体对强制接触拆分的反应程度。见 [constant " +"PhysicsServer2D.SPACE_PARAM_CONTACT_DEFAULT_BIAS]。\n" +"不同的形状可以指定不同的偏置值(见 [member Shape2D.custom_solver_bias])。" + +msgid "" +"Number of solver iterations for all contacts and constraints. The greater " +"the number of iterations, the more accurate the collisions will be. However, " +"a greater number of iterations requires more CPU power, which can decrease " +"performance. See [constant PhysicsServer2D.SPACE_PARAM_SOLVER_ITERATIONS]." +msgstr "" +"所有接触和约束的求解器迭代次数。迭代次数越多,碰撞越精确。然而,大量迭代也会" +"消耗大量的 CPU 性能,可能导致性能的降低。见 [constant PhysicsServer2D." +"SPACE_PARAM_SOLVER_ITERATIONS]。" + +msgid "" "Time (in seconds) of inactivity before which a 2D physics body will put to " "sleep. See [constant PhysicsServer2D.SPACE_PARAM_BODY_TIME_TO_SLEEP]." msgstr "" @@ -82274,6 +86842,25 @@ msgstr "" "[constant PhysicsServer2D.SPACE_PARAM_BODY_TIME_TO_SLEEP]。" msgid "" +"The default angular damp in 3D.\n" +"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. " +"At value [code]0[/code] objects will keep moving with the same velocity. " +"Values greater than [code]1[/code] will aim to reduce the velocity to " +"[code]0[/code] in less than a second e.g. a value of [code]2[/code] will aim " +"to reduce the velocity to [code]0[/code] in half a second. A value equal to " +"or greater than the physics frame rate ([member ProjectSettings.physics/" +"common/physics_ticks_per_second], [code]60[/code] by default) will bring the " +"object to a stop in one iteration." +msgstr "" +"3D 中的默认角度阻尼。\n" +"[b]注意:[/b]值在 [code]0[/code] 到 [code]1[/code] 的范围内比较好。为 " +"[code]0[/code] 时,对象会保持相同的速度移动。大于 [code]1[/code] 时,会在一秒" +"内将速度降低到 [code]0[/code],例如为 [code]2[/code] 时会在半秒内将速度降低" +"到 [code]0[/code]。大于等于物理帧率([member ProjectSettings.physics/common/" +"physics_ticks_per_second],默认为 [code]60[/code])时,会让对象在迭代一次后就" +"停止。" + +msgid "" "The default gravity strength in 3D (in meters per second squared).\n" "[b]Note:[/b] This property is only read when the project starts. To change " "the default gravity at runtime, use the following code sample:\n" @@ -82340,6 +86927,25 @@ msgstr "" "[/codeblocks]" msgid "" +"The default linear damp in 3D.\n" +"[b]Note:[/b] Good values are in the range [code]0[/code] to [code]1[/code]. " +"At value [code]0[/code] objects will keep moving with the same velocity. " +"Values greater than [code]1[/code] will aim to reduce the velocity to " +"[code]0[/code] in less than a second e.g. a value of [code]2[/code] will aim " +"to reduce the velocity to [code]0[/code] in half a second. A value equal to " +"or greater than the physics frame rate ([member ProjectSettings.physics/" +"common/physics_ticks_per_second], [code]60[/code] by default) will bring the " +"object to a stop in one iteration." +msgstr "" +"3D 中的默认线性阻尼。\n" +"[b]注意:[/b]值在 [code]0[/code] 到 [code]1[/code] 的范围内比较好。为 " +"[code]0[/code] 时,对象会保持相同的速度移动。大于 [code]1[/code] 时,会在一秒" +"内将速度降低到 [code]0[/code],例如为 [code]2[/code] 时会在半秒内将速度降低" +"到 [code]0[/code]。大于等于物理帧率([member ProjectSettings.physics/common/" +"physics_ticks_per_second],默认为 [code]60[/code])时,会让对象在迭代一次后就" +"停止。" + +msgid "" "Sets which physics engine to use for 3D physics.\n" "\"DEFAULT\" and \"GodotPhysics3D\" are the same, as there is currently no " "alternative 3D physics server implemented." @@ -82400,6 +87006,17 @@ msgstr "" "PhysicsServer3D.SPACE_PARAM_CONTACT_RECYCLE_RADIUS]。" msgid "" +"Default solver bias for all physics contacts. Defines how much bodies react " +"to enforce contact separation. See [constant PhysicsServer3D." +"SPACE_PARAM_CONTACT_DEFAULT_BIAS].\n" +"Individual shapes can have a specific bias value (see [member Shape3D." +"custom_solver_bias])." +msgstr "" +"所有物理接触的默认求解器偏置。定义物体对强制接触拆分的反应程度。见 [constant " +"PhysicsServer3D.SPACE_PARAM_CONTACT_DEFAULT_BIAS]。\n" +"不同的形状可以指定不同的偏置值(见 [member Shape3D.custom_solver_bias])。" + +msgid "" "Number of solver iterations for all contacts and constraints. The greater " "the number of iterations, the more accurate the collisions will be. However, " "a greater number of iterations requires more CPU power, which can decrease " @@ -82445,6 +87062,30 @@ msgstr "" "数,请改为设置 [member Engine.max_physics_steps_per_frame]。" msgid "" +"Controls how much physics ticks are synchronized with real time. For 0 or " +"less, the ticks are synchronized. Such values are recommended for network " +"games, where clock synchronization matters. Higher values cause higher " +"deviation of in-game clock and real clock, but allows smoothing out " +"framerate jitters. The default value of 0.5 should be fine for most; values " +"above 2 could cause the game to react to dropped frames with a noticeable " +"delay and are not recommended.\n" +"[b]Note:[/b] For best results, when using a custom physics interpolation " +"solution, the physics jitter fix should be disabled by setting [member " +"physics/common/physics_jitter_fix] to [code]0[/code].\n" +"[b]Note:[/b] This property is only read when the project starts. To change " +"the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead." +msgstr "" +"控制物理周期与真实时间的同步程度。小于等于 0 时,周期是同步的。对时钟同步有要" +"求的网络游戏建议使用此类值。较高的值会导致游戏内时钟和真实时钟的较大偏差,但" +"可以平滑帧率抖动。大多数情况下,默认值 0.5 应该没问题;大于 2 的值可能导致游" +"戏对丢帧作出明显延迟的反应,因此不推荐使用。\n" +"[b]注意:[/b]为了获得最佳的结果,使用自定义物理插值解决方案时,应通过将 " +"[member physics/common/physics_jitter_fix] 设置为 [code]0[/code] 来禁用物理抖" +"动修复。\n" +"[b]注意:[/b]该属性仅在项目启动时读取。 要在运行时更改物理 FPS,请改为设置 " +"[member Engine.physics_jitter_fix]。" + +msgid "" "The number of fixed iterations per second. This controls how often physics " "simulation and [method Node._physics_process] methods are run. See also " "[member application/run/max_fps].\n" @@ -82463,12 +87104,28 @@ msgstr "" "每秒执行的固定迭代次数。用于控制物理仿真和 [method Node._physics_process] 的" "执行频率。另见 [member application/run/max_fps]。\n" "[b]注意:[/b]这个属性只在项目启动时读取。要在运行时改变物理 FPS,请改为设置 " -"[member Engine.iterations_per_second]。\n" -"[b]注意:[/b]每个渲染帧最多只能模拟 [member max_physics_steps_per_frame] 个物" -"理周期。如果为了追赶渲染,需要在每个渲染帧中模拟更多物理周期,游戏看上去会是" -"降速的(即便在物理计算中始终使用 [code]delta[/code])。因此,如果增大了 " -"[member physics/common/physics_ticks_per_second],而且远大于默认值,那么建议" -"将 [member physics/common/max_physics_steps_per_frame] 也调大。" +"[member Engine.physics_ticks_per_second]。\n" +"[b]注意:[/b]每个渲染帧最多只能模拟 [member physics/common/" +"max_physics_steps_per_frame] 个物理周期。如果为了追赶渲染,需要在每个渲染帧中" +"模拟更多物理周期,游戏看上去会是降速的(即便在物理计算中始终使用 " +"[code]delta[/code])。因此,如果增大了 [member physics/common/" +"physics_ticks_per_second],而且远大于默认值,那么建议将 [member physics/" +"common/max_physics_steps_per_frame] 也调大。" + +msgid "" +"If [code]true[/code], [CanvasItem] nodes will internally snap to full " +"pixels. Their position can still be sub-pixel, but the decimals will not " +"have effect." +msgstr "" +"如果为 [code]true[/code],则 [CanvasItem] 节点在内部会吸附到整像素位置。位置" +"仍然可以是次像素的,但小数点后的值不会产生效果。" + +msgid "" +"If [code]true[/code], vertices of [CanvasItem] nodes will snap to full " +"pixels. Only affects the final vertex positions, not the transforms." +msgstr "" +"如果为 [code]true[/code],则 [CanvasItem] 节点的顶点会吸附到整像素位置。仅影" +"响最终的顶点位置,不影响变换。" msgid "" "Sets the number of MSAA samples to use for 2D/Canvas rendering (as a power " @@ -82582,6 +87239,59 @@ msgstr "" "[b]注意:[/b]TAA 只支持 Forward+ 和 Mobile 渲染方式,不支持 Compatibility。" msgid "" +"Sets the quality of the depth of field effect. Higher quality takes more " +"samples, which is slower but looks smoother." +msgstr "" +"设置景深效果的质量。质量越高,采样的数量也越多,也会更慢,但看起来更平滑。" + +msgid "" +"Sets the depth of field shape. Can be Box, Hexagon, or Circle. Box is the " +"fastest. Circle is the most realistic, but also the most expensive to " +"compute." +msgstr "" +"设置景深的形状。可以是方形、六边形或圆形。方形最快。圆形最真实,但计算开销也" +"是最大的。" + +msgid "" +"If [code]true[/code], jitters DOF samples to make effect slightly blurrier " +"and hide lines created from low sample rates. This can result in a slightly " +"grainy appearance when used with a low number of samples." +msgstr "" +"如果为 [code]true[/code],则抖动 DOF 样本以使效果稍微模糊,并隐藏低采样率创建" +"的线条。当与较低的样本数一起使用时,这可能会导致外观略带颗粒感。" + +msgid "" +"Disables [member rendering/driver/depth_prepass/enable] conditionally for " +"certain vendors. By default, disables the depth prepass for mobile devices " +"as mobile devices do not benefit from the depth prepass due to their unique " +"architecture." +msgstr "" +"针对某些供应商禁用 [member rendering/driver/depth_prepass/enable]。默认情况下" +"会针对移动设备禁用前置深度阶段,因为移动设备由于独特的架构而无法从前置深度阶" +"段中获益。" + +msgid "" +"If [code]true[/code], performs a previous depth pass before rendering 3D " +"materials. This increases performance significantly in scenes with high " +"overdraw, when complex materials and lighting are used. However, in scenes " +"with few occluded surfaces, the depth prepass may reduce performance. If " +"your game is viewed from a fixed angle that makes it easy to avoid overdraw " +"(such as top-down or side-scrolling perspective), consider disabling the " +"depth prepass to improve performance. This setting can be changed at run-" +"time to optimize performance depending on the scene currently being viewed.\n" +"[b]Note:[/b] Depth prepass is only supported when using the Forward+ or " +"Compatibility rendering method. When using the Mobile rendering method, " +"there is no depth prepass performed." +msgstr "" +"如果 [code]true[/code],则在渲染 3D 材质之前先执行深度阶段。当使用复杂的材质" +"和照明时,这样做能够显著提高过度绘制场景的性能。然而,如果场景中被遮挡的表面" +"比较少,前置深度阶段可能会降低性能。如果你的游戏使用的是不易造成过度绘制的固" +"定视角(例如俯视或者横版视角),请考虑禁用前置深度阶段,从而提升性能。这个设" +"置可以在运行时更改,针对当前查看的场景来优化进行。\n" +"[b]注意:[/b]前置深度阶段仅在使用 Forward+ 或 Compatibility 渲染方法时支持。" +"使用 Mobile 渲染方法时,不会执行前置深度阶段。" + +msgid "" "Thread model for rendering. Rendering on a thread can vastly improve " "performance, but synchronizing to the main thread can cause a bit more " "jitter." @@ -82600,6 +87310,38 @@ msgstr "" "代码更改此默认颜色,请使用 [method RenderingServer.set_default_clear_color]。" msgid "" +"[Environment] that will be used as a fallback environment in case a scene " +"does not specify its own environment. The default environment is loaded in " +"at scene load time regardless of whether you have set an environment or not. " +"If you do not rely on the fallback environment, you do not need to set this " +"property." +msgstr "" +"场景未指定其环境时作为回退环境使用的 [Environment]。无论是否设置了环境,加载" +"场景时都会加载默认环境。如果你不依赖回退环境,那么就不需要设置这个属性。" + +msgid "" +"Sets how the glow effect is upscaled before being copied onto the screen. " +"Linear is faster, but looks blocky. Bicubic is slower but looks smooth." +msgstr "" +"设置辉光效果在复制到屏幕之前的放大方式。Linear(线性)更快,但看起来棱角分" +"明。Bicubic(双线性)更慢,但看起来比较平滑。" + +msgid "" +"Lower-end override for [member rendering/environment/glow/upscale_mode] on " +"mobile devices, due to performance concerns or driver support." +msgstr "" +"由于性能或驱动程序支持问题,[member rendering/environment/glow/upscale_mode] " +"在移动设备上的低端覆盖项。" + +msgid "" +"Sets the quality for rough screen-space reflections. Turning off will make " +"all screen space reflections sharp, while higher values make rough " +"reflections look better." +msgstr "" +"设置粗糙屏幕空间反射的质量。关闭后所有屏幕空间反射都会显得锐利;使用较高的值" +"会使粗糙反射更好看。" + +msgid "" "Quality target to use when [member rendering/environment/ssao/quality] is " "set to [code]Ultra[/code]. A value of [code]0.0[/code] provides a quality " "and speed similar to [code]Medium[/code] while a value of [code]1.0[/code] " @@ -82709,6 +87451,56 @@ msgstr "" "environment/ssil/adaptive_target] 设置。" msgid "" +"Scales the depth over which the subsurface scattering effect is applied. A " +"high value may allow light to scatter into a part of the mesh or another " +"mesh that is close in screen space but far in depth." +msgstr "" +"缩放应用次表面散射效果的深度。较高的值可能允许光散射到该网格的一部分,或是散" +"射到屏幕空间中较近但深度较远的另一个网格中。" + +msgid "" +"Sets the quality of the subsurface scattering effect. Higher values are " +"slower but look nicer." +msgstr "设置次表面散射效果的质量。值越高,速度越慢,但看起来也越好。" + +msgid "" +"Scales the distance over which samples are taken for subsurface scattering " +"effect. Changing this does not impact performance, but higher values will " +"result in significant artifacts as the samples will become obviously spread " +"out. A lower value results in a smaller spread of scattered light." +msgstr "" +"缩放对次表面散射效果进行采样的距离。更改该值不会影响性能;但较高的值将导致明" +"显的伪影,因为样本将变得明显分散。较低的值会导致散射光的散布更小。" + +msgid "" +"Enables filtering of the volumetric fog effect prior to integration. This " +"substantially blurs the fog which reduces fine details but also smooths out " +"harsh edges and aliasing artifacts. Disable when more detail is required." +msgstr "" +"在积分之前启用体积雾效果的过滤。这大大模糊了雾,减少了精细的细节,但也平滑了" +"粗糙的边缘和锯齿伪影。当需要更多细节时禁用。" + +msgid "" +"Number of slices to use along the depth of the froxel buffer for volumetric " +"fog. A lower number will be more efficient but may result in artifacts " +"appearing during camera movement. See also [member Environment." +"volumetric_fog_length]." +msgstr "" +"沿着片段体素缓冲区的深度使用的切片数量,用于体积雾。较小的数字会更有效,但可" +"能会导致相机移动时出现伪影。另请参阅 [member Environment." +"volumetric_fog_length]。" + +msgid "" +"Base size used to determine size of froxel buffer in the camera X-axis and Y-" +"axis. The final size is scaled by the aspect ratio of the screen, so actual " +"values may differ from what is set. Set a larger size for more detailed fog, " +"set a smaller size for better performance." +msgstr "" +"用于确定相机 X 轴和 Y 轴中片段体素缓冲区大小的基本大小。最终大小按屏幕的长宽" +"比缩放,因此实际值可能与设置的值不同。设置较大的大小,以获得更详细的雾;设置" +"较小的大小,以获得更好的性能。" + +msgid "" "Sets the driver to be used by the renderer when using the Compatibility " "renderer. This property can not be edited directly, instead, set the driver " "using the platform-specific overrides." @@ -82746,6 +87538,48 @@ msgstr "" "象都在同一帧中被绘制,请提高这个限制。" msgid "" +"If [code]true[/code], renders [VoxelGI] and SDFGI ([member Environment." +"sdfgi_enabled]) buffers at halved resolution (e.g. 960×540 when the viewport " +"size is 1920×1080). This improves performance significantly when VoxelGI or " +"SDFGI is enabled, at the cost of artifacts that may be visible on polygon " +"edges. The loss in quality becomes less noticeable as the viewport " +"resolution increases. [LightmapGI] rendering is not affected by this " +"setting.\n" +"[b]Note:[/b] This property is only read when the project starts. To set half-" +"resolution GI at run-time, call [method RenderingServer." +"gi_set_use_half_resolution] instead." +msgstr "" +"如果为 [code]true[/code],则以减半的分辨率渲染 [VoxelGI] 和 SDFGI([member " +"Environment.sdfgi_enabled])缓冲区(例如,当视口大小为 1920×1080 时为 " +"960×540)。当启用 VoxelGI 或 SDFGI 时,这会显著提高性能,但代价是多边形边缘上" +"可能会出现可见的伪影。随着视口分辨率的增加,质量损失变得不那么明显。" +"[LightmapGI] 渲染不受该设置的影响。\n" +"[b]注意:[/b]只有在项目启动时该属性才会被读取。要在运行时设置半分辨率 GI,请" +"改为调用 [method RenderingServer.gi_set_use_half_resolution]。" + +msgid "" +"The maximum number of rays that can be thrown per pass when baking lightmaps " +"with [LightmapGI]. Depending on the scene, adjusting this value may result " +"in higher GPU utilization when baking lightmaps, leading to faster bake " +"times." +msgstr "" +"使用 [LightmapGI] 烘焙光照贴图时,每阶段可以投射的最大光线数。根据场景的不" +"同,调整此值可能会在烘焙光照贴图时提高 GPU 利用率,从而加快烘焙时间。" + +msgid "" +"The maximum number of rays that can be thrown per pass when baking dynamic " +"object lighting in [LightmapProbe]s with [LightmapGI]. Depending on the " +"scene, adjusting this value may result in higher GPU utilization when baking " +"lightmaps, leading to faster bake times." +msgstr "" +"在带有 [LightmapGI] 的 [LightmapProbe] 中烘焙动态对象光照时,每阶段可以投射的" +"最大光线数。根据场景的不同,调整该值可能会在烘焙光照贴图时提高 GPU 利用率,从" +"而加快烘焙时间。" + +msgid "The region size to use when baking lightmaps with [LightmapGI]." +msgstr "使用 [LightmapGI] 烘焙光照贴图时使用的区块大小。" + +msgid "" "The number of rays to use for baking dynamic object lighting in " "[LightmapProbe]s when [member LightmapGI.quality] is [constant LightmapGI." "BAKE_QUALITY_HIGH]." @@ -82806,6 +87640,33 @@ msgstr "" "时,用于使用 [LightmapGI] 烘焙光照贴图的光线数。" msgid "" +"The texel_size that is used to calculate the [member Mesh." +"lightmap_size_hint] on [PrimitiveMesh] resources if [member PrimitiveMesh." +"add_uv2] is enabled." +msgstr "" +"用于计算启用了 [member PrimitiveMesh.add_uv2] 的 [PrimitiveMesh] 资源上的 " +"[member Mesh.lightmap_size_hint] 的体素大小。" + +msgid "" +"The framerate-independent update speed when representing dynamic object " +"lighting from [LightmapProbe]s. Higher values make dynamic object lighting " +"update faster. Higher values can prevent fast-moving objects from having " +"\"outdated\" indirect lighting displayed on them, at the cost of possible " +"flickering when an object moves from a bright area to a shaded area." +msgstr "" +"当表示来自 [LightmapProbe] 的动态对象光照时,与帧速率无关的更新速度。较高的值" +"使动态对象光照更新更快。较高的值可以防止快速移动的对象在其上显示“过时的”间接" +"光照,但代价是当对象从明亮区域移动到阴影区域时可能会出现闪烁。" + +msgid "" +"Use 16 bits for shadow depth map. Enabling this results in shadows having " +"less precision and may result in shadow acne, but can lead to performance " +"improvements on some devices." +msgstr "" +"对阴影深度贴图使用 16 比特。启用此功能会导致阴影精度较低,并可能导致阴影粉" +"刺,但在某些设备上可以带来性能的改善。" + +msgid "" "The directional shadow's size in pixels. Higher values will result in " "sharper shadows, at the cost of performance. The value will be rounded up to " "the nearest power of 2." @@ -82822,6 +87683,30 @@ msgstr "" "directional_shadow/size] 以低配数值覆盖。" msgid "" +"Quality setting for shadows cast by [DirectionalLight3D]s. Higher quality " +"settings use more samples when reading from shadow maps and are thus slower. " +"Low quality settings may result in shadows looking grainy.\n" +"[b]Note:[/b] The Soft Very Low setting will automatically multiply " +"[i]constant[/i] shadow blur by 0.75x to reduce the amount of noise visible. " +"This automatic blur change only affects the constant blur factor defined in " +"[member Light3D.shadow_blur], not the variable blur performed by " +"[DirectionalLight3D]s' [member Light3D.light_angular_distance].\n" +"[b]Note:[/b] The Soft High and Soft Ultra settings will automatically " +"multiply [i]constant[/i] shadow blur by 1.5× and 2× respectively to make " +"better use of the increased sample count. This increased blur also improves " +"stability of dynamic object shadows." +msgstr "" +"[DirectionalLight3D] 投射的阴影的质量设置。质量设置地越高,从阴影贴图读取的样" +"本越多,因此速度也越慢。质量设置地较低时,可能会导致阴影看起来有颗粒感。\n" +"[b]注意:[/b]Soft Very Low 设置会自动将[i]常量[/i]的阴影模糊乘以 0.75 倍,从" +"而减少可见的噪点。这种对自动模糊的更改仅影响 [member Light3D.shadow_blur] 中" +"定义的常量模糊系数,不影响 [DirectionalLight3D] 的 [member Light3D." +"light_angular_distance] 执行的可变模糊。\n" +"[b]注意:[/b]Soft High 和 Soft Ultra 设置,会自动将[i]常量[/i]的阴影模糊分别" +"乘以 1.5 倍和 2 倍,从而更好地利用增加的样本数。这种对模糊的提升还改善了动态" +"对象阴影的稳定性。" + +msgid "" "Lower-end override for [member rendering/lights_and_shadows/" "directional_shadow/soft_shadow_filter_quality] on mobile devices, due to " "performance concerns or driver support." @@ -82848,12 +87733,56 @@ msgstr "" "positional_shadow/atlas_size] 以低配数值覆盖。" msgid "" +"Quality setting for shadows cast by [OmniLight3D]s and [SpotLight3D]s. " +"Higher quality settings use more samples when reading from shadow maps and " +"are thus slower. Low quality settings may result in shadows looking grainy.\n" +"[b]Note:[/b] The Soft Very Low setting will automatically multiply " +"[i]constant[/i] shadow blur by 0.75x to reduce the amount of noise visible. " +"This automatic blur change only affects the constant blur factor defined in " +"[member Light3D.shadow_blur], not the variable blur performed by " +"[DirectionalLight3D]s' [member Light3D.light_angular_distance].\n" +"[b]Note:[/b] The Soft High and Soft Ultra settings will automatically " +"multiply shadow blur by 1.5× and 2× respectively to make better use of the " +"increased sample count. This increased blur also improves stability of " +"dynamic object shadows." +msgstr "" +"[OmniLight3D] 和 [SpotLight3D] 投射的阴影的质量设置。质量设置地越高,从阴影贴" +"图读取的样本越多,因此速度也越慢。质量设置地较低时,可能会导致阴影看起来有颗" +"粒感。\n" +"[b]注意:[/b]Soft Very Low 设置会自动将[i]常量[/i]的阴影模糊乘以 0.75 倍,从" +"而减少可见的噪点。这种对自动模糊的更改仅影响 [member Light3D.shadow_blur] 中" +"定义的常量模糊系数,不影响 [DirectionalLight3D] 的 [member Light3D." +"light_angular_distance] 执行的可变模糊。\n" +"[b]注意:[/b]Soft High 和 Soft Ultra 设置,会自动将阴影模糊分别乘以 1.5 倍和 " +"2 倍,从而更好地利用增加的样本数。这种对模糊的提升还改善了动态对象阴影的稳定" +"性。" + +msgid "" "Lower-end override for [member rendering/lights_and_shadows/" "positional_shadow/soft_shadow_filter_quality] on mobile devices, due to " "performance concerns or driver support." msgstr "" -"由于性能和驱动支持,在移动设备上会对 [member rendering/quality/" -"directional_shadow/size] 以低配数值覆盖。" +"由于性能和驱动支持,在移动设备上会对 [member rendering/lights_and_shadows/" +"positional_shadow/soft_shadow_filter_quality] 以低配数值覆盖。" + +msgid "" +"Enables the use of physically based units for light sources. Physically " +"based units tend to be much larger than the arbitrary units used by Godot, " +"but they can be used to match lighting within Godot to real-world lighting. " +"Due to the large dynamic range of lighting conditions present in nature, " +"Godot bakes exposure into the various lighting quantities before rendering. " +"Most light sources bake exposure automatically at run time based on the " +"active [CameraAttributes] resource, but [LightmapGI] and [VoxelGI] require a " +"[CameraAttributes] resource to be set at bake time to reduce the dynamic " +"range. At run time, Godot will automatically reconcile the baked exposure " +"with the active exposure to ensure lighting remains consistent." +msgstr "" +"允许对光源使用基于物理的单位。基于物理的单位往往比 Godot 使用的任意单位大得" +"多,但它们可用于将 Godot 内的照明与真实世界的照明相匹配。由于自然界中照明条件" +"的动态范围很大,Godot 在渲染之前会将曝光量烘焙到各种照明量中。大多数光源在运" +"行时根据活动的 [CameraAttributes] 资源自动烘焙曝光,但 [LightmapGI] 和 " +"[VoxelGI] 需要在烘焙时设置 [CameraAttributes] 资源以减少动态范围。在运行时," +"Godot 将自动协调烘焙的曝光与活动的曝光,以确保照明保持一致。" msgid "" "The maximum number of clustered elements ([OmniLight3D] + [SpotLight3D] + " @@ -82928,6 +87857,150 @@ msgstr "" "Mobile。" msgid "" +"The automatic LOD bias to use for meshes rendered within the " +"[ReflectionProbe]. Higher values will use less detailed versions of meshes " +"that have LOD variations generated. If set to [code]0.0[/code], automatic " +"LOD is disabled. Increase [member rendering/mesh_lod/lod_change/" +"threshold_pixels] to improve performance at the cost of geometry detail.\n" +"[b]Note:[/b] [member rendering/mesh_lod/lod_change/threshold_pixels] does " +"not affect [GeometryInstance3D] visibility ranges (also known as \"manual\" " +"LOD or hierarchical LOD).\n" +"[b]Note:[/b] This property is only read when the project starts. To adjust " +"the automatic LOD threshold at runtime, set [member Viewport." +"mesh_lod_threshold] on the root [Viewport]." +msgstr "" +"用于 [ReflectionProbe] 中渲染的网格的自动 LOD 偏置。较高的值将使用生成了 LOD " +"变化的不太详细的网格版本。如果设置为 [code]0.0[/code],则自动 LOD 将被禁用。" +"增加 [member rendering/mesh_lod/lod_change/threshold_pixels] 以牺牲几何细节为" +"代价提高性能。\n" +"[b]注意:[/b][member rendering/mesh_lod/lod_change/threshold_pixels] 不影响 " +"[GeometryInstance3D] 可见性范围(也称为“手动”LOD 或分层 LOD)。\n" +"[b]注意:[/b]只有在项目启动时该属性才会被读取。要在运行时调整自动 LOD 阈值," +"请在根 [Viewport] 上设置 [member Viewport.mesh_lod_threshold]。" + +msgid "" +"The [url=https://en.wikipedia.org/wiki/Bounding_volume_hierarchy]BVH[/url] " +"quality to use when rendering the occlusion culling buffer. Higher values " +"will result in more accurate occlusion culling, at the cost of higher CPU " +"usage." +msgstr "" +"渲染遮挡剔除缓冲区时使用的 [url=https://en.wikipedia.org/wiki/" +"Bounding_volume_hierarchy]BVH[/url] 质量。值越高,得到的遮挡剔除越精确,但代" +"价是 CPU 使用率也越高。" + +msgid "" +"Higher values will result in more accurate occlusion culling, at the cost of " +"higher CPU usage. The occlusion culling buffer's pixel count is roughly " +"equal to [code]occlusion_rays_per_thread * number_of_logical_cpu_cores[/" +"code], so it will depend on the system's CPU. Therefore, CPUs with fewer " +"cores will use a lower resolution to attempt keeping performance costs even " +"across devices." +msgstr "" +"更高的值将导致更准确的遮挡剔除,但代价是更高的 CPU 使用率。遮挡剔除缓冲区的像" +"素数大致等于 [code]occlusion_rays_per_thread * number_of_logical_cpu_cores[/" +"code],因此它取决于系统的 CPU。因此,内核较少的 CPU 将使用较低的分辨率,来尝" +"试保持跨设备的性能成本。" + +msgid "" +"If [code]true[/code], [OccluderInstance3D] nodes will be usable for " +"occlusion culling in 3D in the root viewport. In custom viewports, [member " +"Viewport.use_occlusion_culling] must be set to [code]true[/code] instead.\n" +"[b]Note:[/b] Enabling occlusion culling has a cost on the CPU. Only enable " +"occlusion culling if you actually plan to use it. Large open scenes with few " +"or no objects blocking the view will generally not benefit much from " +"occlusion culling. Large open scenes generally benefit more from mesh LOD " +"and visibility ranges ([member GeometryInstance3D.visibility_range_begin] " +"and [member GeometryInstance3D.visibility_range_end]) compared to occlusion " +"culling." +msgstr "" +"如果为 [code]true[/code],则 [OccluderInstance3D] 节点在根视口的 3D 遮挡剔除" +"中可用。对于自定义视口,必须改为将 [member Viewport.use_occlusion_culling] 设" +"为 [code]true[/code]。\n" +"[b]注意:[/b]启用遮挡剔除会消耗 CPU 资源。请只在打算使用时启用遮挡剔除。阻挡" +"视线的对象很少或根本不存在的大型开放场景通常不会因遮挡剔除而获得什么优化。相" +"对于遮挡剔除,大型开放场景通常能够从网格 LOD 和可见范围([member " +"GeometryInstance3D.visibility_range_begin] 和 [member GeometryInstance3D." +"visibility_range_end])中获益。" + +msgid "" +"Number of cubemaps to store in the reflection atlas. The number of " +"[ReflectionProbe]s in a scene will be limited by this amount. A higher " +"number requires more VRAM." +msgstr "" +"存储在反射图集中的立方体贴图数量。场景中的 [ReflectionProbe] 数量受此数量限" +"制。数字越高,所需的显存越多。" + +msgid "" +"Size of cubemap faces for [ReflectionProbe]s. A higher number requires more " +"VRAM and may make reflection probe updating slower." +msgstr "" +"[ReflectionProbe] 的立方体贴图面的大小。数字越大,所需的显存越多,并且反射探" +"针的更新也可能变得越慢。" + +msgid "" +"Lower-end override for [member rendering/reflections/reflection_atlas/" +"reflection_size] on mobile devices, due to performance concerns or driver " +"support." +msgstr "" +"移动设备上 [member rendering/reflections/reflection_atlas/reflection_size] 的" +"低端覆盖项,出于性能问题或驱动程序支持的考虑。" + +msgid "" +"Use a higher quality variant of the fast filtering algorithm. Significantly " +"slower than using default quality, but results in smoother reflections. " +"Should only be used when the scene is especially detailed." +msgstr "" +"使用快速过滤算法的更高质量变体。明显比使用默认质量慢,但会产生更平滑的反射。" +"只应在场景特别详细时使用。" + +msgid "" +"Sets the number of samples to take when using importance sampling for [Sky]s " +"and [ReflectionProbe]s. A higher value will result in smoother, higher " +"quality reflections, but increases time to calculate radiance maps. In " +"general, fewer samples are needed for simpler, low dynamic range " +"environments while more samples are needed for HDR environments and " +"environments with a high level of detail." +msgstr "" +"设置在对 [Sky] 和 [ReflectionProbe] 使用重要性采样时要采用的样本数。较高的值" +"将导致更平滑、更高质量的反射,但会增加计算辐照度映射的时间。一般来说,更简单" +"的低动态范围环境需要更少的样本,而 HDR 环境和具有高细节层次的环境需要更多的样" +"本。" + +msgid "" +"Lower-end override for [member rendering/reflections/sky_reflections/" +"ggx_samples] on mobile devices, due to performance concerns or driver " +"support." +msgstr "" +"移动设备上 [member rendering/reflections/sky_reflections/ggx_samples] 的低端" +"覆盖项,出于性能问题或驱动程序支持的考虑。" + +msgid "" +"Limits the number of layers to use in radiance maps when using importance " +"sampling. A lower number will be slightly faster and take up less VRAM." +msgstr "" +"使用重要性采样时,限制在辐照度映射中使用的层数。较低的数字会稍微快一些,并且" +"会占用较少的 VRAM。" + +msgid "" +"If [code]true[/code], uses texture arrays instead of mipmaps for reflection " +"probes and panorama backgrounds (sky). This reduces jitter noise and " +"upscaling artifacts on reflections, but is significantly slower to compute " +"and uses [member rendering/reflections/sky_reflections/roughness_layers] " +"times more memory." +msgstr "" +"如果为 [code]true[/code],则使用纹理数组而不是 mipmap,用于反射探针和全景背景" +"(天空)。这减少了反射上的抖动噪声和放大伪影,但计算速度明显变慢,并且使用了 " +"[member rendering/reflections/sky_reflections/roughness_layers] 倍的内存。" + +msgid "" +"Lower-end override for [member rendering/reflections/sky_reflections/" +"texture_array_reflections] on mobile devices, due to performance concerns or " +"driver support." +msgstr "" +"移动设备上 [member rendering/reflections/sky_reflections/" +"texture_array_reflections] 的低端覆盖项,出于性能问题或驱动程序支持的考虑。" + +msgid "" "Sets the renderer that will be used by the project. Options are:\n" "[b]Forward Plus[/b]: High-end renderer designed for Desktop devices. Has a " "higher base overhead, but scales well with complex scenes. Not suitable for " @@ -82978,6 +88051,14 @@ msgid "Windows override for [member rendering/rendering_device/driver]." msgstr "[member rendering/rendering_device/driver] 在 Windows 的覆盖项。" msgid "" +"Determines how sharp the upscaled image will be when using the FSR upscaling " +"mode. Sharpness halves with every whole number. Values go from 0.0 " +"(sharpest) to 2.0. Values above 2.0 won't make a visible difference." +msgstr "" +"决定使用 FSR 放大模式时放大图像的清晰度。每个整数的锐度减半。值从 0.0(最锐" +"利)到 2.0。高于 2.0 的值不会产生明显的差异。" + +msgid "" "Sets the scaling 3D mode. Bilinear scaling renders at different resolution " "to either undersample or supersample the viewport. FidelityFX Super " "Resolution 1.0, abbreviated to FSR, is an upscaling technology that produces " @@ -83031,6 +88112,14 @@ msgstr "" "使用 Burley 模型。" msgid "" +"Lower-end override for [member rendering/shading/overrides/" +"force_lambert_over_burley] on mobile devices, due to performance concerns or " +"driver support." +msgstr "" +"由于性能问题或驱动程序支持,移动设备上用于 [member rendering/shading/" +"overrides/force_lambert_over_burley] 的低端覆盖。" + +msgid "" "If [code]true[/code], forces vertex shading for all rendering. This can " "increase performance a lot, but also reduces quality immensely. Can be used " "to optimize performance on low-end mobile devices.\n" @@ -83052,6 +88141,12 @@ msgstr "" "overrides/force_vertex_shading] 的低端覆盖。\n" "[b]注意:[/b]这个设置目前没有效果,因为顶点着色还没有实现。" +msgid "The default texture filtering mode to use on [CanvasItem]s." +msgstr "[CanvasItem] 所使用的默认纹理过滤模式。" + +msgid "The default texture repeating mode to use on [CanvasItem]s." +msgstr "[CanvasItem] 所使用的默认纹理重复模式。" + msgid "" "The filtering quality to use for [Decal] nodes. When using one of the " "anisotropic filtering modes, the anisotropic filtering level is controlled " @@ -83062,6 +88157,99 @@ msgstr "" "anisotropic_filtering_level] 控制。" msgid "" +"Sets the maximum number of samples to take when using anisotropic filtering " +"on textures (as a power of two). A higher sample count will result in " +"sharper textures at oblique angles, but is more expensive to compute. A " +"value of [code]0[/code] forcibly disables anisotropic filtering, even on " +"materials where it is enabled.\n" +"The anisotropic filtering level also affects decals and light projectors if " +"they are configured to use anisotropic filtering. See [member rendering/" +"textures/decals/filter] and [member rendering/textures/light_projectors/" +"filter].\n" +"[b]Note:[/b] For performance reasons, anisotropic filtering [i]is not " +"enabled by default[/i] on 2D and 3D materials. For this setting to have an " +"effect in 3D, set [member BaseMaterial3D.texture_filter] to [constant " +"BaseMaterial3D.TEXTURE_FILTER_LINEAR_WITH_MIPMAPS_ANISOTROPIC] or [constant " +"BaseMaterial3D.TEXTURE_FILTER_NEAREST_WITH_MIPMAPS_ANISOTROPIC] on " +"materials. For this setting to have an effect in 2D, set [member CanvasItem." +"texture_filter] to [constant CanvasItem." +"TEXTURE_FILTER_LINEAR_WITH_MIPMAPS_ANISOTROPIC] or [constant CanvasItem." +"TEXTURE_FILTER_NEAREST_WITH_MIPMAPS_ANISOTROPIC] on the [CanvasItem] node " +"displaying the texture (or in [CanvasTexture]). However, anisotropic " +"filtering is rarely useful in 2D, so only enable it for textures in 2D if it " +"makes a meaningful visual difference.\n" +"[b]Note:[/b] This property is only read when the project starts. There is " +"currently no way to change this setting at run-time." +msgstr "" +"设置在纹理上使用各向异性过滤时要采用的最大样本数(作为 2 的幂)。更高的采样数" +"将导致倾斜角度的纹理更清晰,但计算成本更高。[code]0[/code] 的值会强制禁用各向" +"异性过滤,即使在启用它的材质上也是如此。\n" +"如果贴花和投影器被配置为使用各向异性过滤,则各向异性过滤级别也会影响它们。请" +"参阅 [member rendering/textures/decals/filter] and [member rendering/" +"textures/light_projectors/filter]。\n" +"[b]注意:[/b]出于性能原因,各向异性过滤在 2D 和 3D 材质上[i]默认不启用[/i]。" +"要使该设置在 3D 中产生效果,请在材质上将 [member BaseMaterial3D." +"texture_filter] 设置为 [constant BaseMaterial3D." +"TEXTURE_FILTER_LINEAR_WITH_MIPMAPS_ANISOTROPIC] 或 [constant BaseMaterial3D." +"TEXTURE_FILTER_NEAREST_WITH_MIPMAPS_ANISOTROPIC]。要使该设置在 2D 中生效,请" +"在显示纹理的 [CanvasItem] 节点上(或 [CanvasTexture] 中)将 [member " +"CanvasItem.texture_filter] 设置为 [constant CanvasItem." +"TEXTURE_FILTER_LINEAR_WITH_MIPMAPS_ANISOTROPIC] 或 [constant CanvasItem." +"TEXTURE_FILTER_NEAREST_WITH_MIPMAPS_ANISOTROPIC]。然而,各向异性过滤在 2D 中" +"并不实用,因此在 2D 中只有在它产生有意义的视觉差异时才对纹理启用它。\n" +"[b]注意:[/b]只有在项目启动时该属性才会被读取。目前无法在运行时更改该设置。" + +msgid "" +"Affects the final texture sharpness by reading from a lower or higher mipmap " +"(also called \"texture LOD bias\"). Negative values make mipmapped textures " +"sharper but grainier when viewed at a distance, while positive values make " +"mipmapped textures blurrier (even when up close).\n" +"Enabling temporal antialiasing ([member rendering/anti_aliasing/quality/" +"use_taa]) will automatically apply a [code]-0.5[/code] offset to this value, " +"while enabling FXAA ([member rendering/anti_aliasing/quality/" +"screen_space_aa]) will automatically apply a [code]-0.25[/code] offset to " +"this value. If both TAA and FXAA are enbled at the same time, an offset of " +"[code]-0.75[/code] is applied to this value.\n" +"[b]Note:[/b] If [member rendering/scaling_3d/scale] is lower than [code]1.0[/" +"code] (exclusive), [member rendering/textures/default_filters/" +"texture_mipmap_bias] is used to adjust the automatic mipmap bias which is " +"calculated internally based on the scale factor. The formula for this is " +"[code]log2(scaling_3d_scale) + mipmap_bias[/code].\n" +"[b]Note:[/b] This property is only read when the project starts. To change " +"the mipmap LOD bias at run-time, set [member Viewport.texture_mipmap_bias] " +"instead." +msgstr "" +"通过从更低或更高的 mipmap 中读取数据影响最终纹理的锐度(也叫“纹理 LOD 偏" +"置”)。负值会让 mipmap 纹理更锐利,但从较远处观察时颗粒更明显,而正值会让 " +"mipmap 纹理更模糊(即便凑近看也一样)。\n" +"启用时间抗锯齿([member rendering/anti_aliasing/quality/use_taa])会对这个值" +"应用 [code]-0.5[/code] 的偏移量,而启用 FXAA([member rendering/" +"anti_aliasing/quality/screen_space_aa])则会对这个值应用 [code]-0.25[/code] " +"的偏移量。如果同时启用 TAA 和 FXAA,则会对这个值应用 [code]-0.75[/code] 的偏" +"移量。\n" +"[b]注意:[/b]如果 [member rendering/scaling_3d/scale] 比 [code]1.0[/code] 小" +"(包含),则会使用 [member rendering/textures/default_filters/" +"texture_mipmap_bias] 自动调整 mipmap 偏置,内部会根据缩放系数进行计算。公式" +"为 [code]log2(scaling_3d_scale) + mipmap_bias[/code]。\n" +"[b]注意:[/b]这个属性仅在项目启动时读取。要在运行时修改 Mipmap 的 LOD 偏置," +"请改为设置 [member Viewport.texture_mipmap_bias]。" + +msgid "" +"If [code]true[/code], uses nearest-neighbor mipmap filtering when using " +"mipmaps (also called \"bilinear filtering\"), which will result in visible " +"seams appearing between mipmap stages. This may increase performance in " +"mobile as less memory bandwidth is used. If [code]false[/code], linear " +"mipmap filtering (also called \"trilinear filtering\") is used.\n" +"[b]Note:[/b] This property is only read when the project starts. There is " +"currently no way to change this setting at run-time." +msgstr "" +"如果为 [code]true[/code],则在使用 mipmap 时使用最近邻 mipmap 过滤(也称为“双" +"线性过滤”),这将导致在 mipmap 阶段之间出现可见的接缝。因为使用的内存带宽更" +"少,这可能会提高移动设备的性能。如果为 [code]false[/code],则使用线性 mipmap " +"过滤(也称为“三线性过滤”)。\n" +"[b]注意:[/b]只有在项目启动时该属性才会被读取。目前无法在运行时更改该设置。" + +msgid "" "The filtering quality to use for [OmniLight3D] and [SpotLight3D] projectors. " "When using one of the anisotropic filtering modes, the anisotropic filtering " "level is controlled by [member rendering/textures/default_filters/" @@ -83079,6 +88267,56 @@ msgstr "" "用 WebP。" msgid "" +"If [code]true[/code], the texture importer will import VRAM-compressed " +"textures using the Ericsson Texture Compression 2 algorithm for lower " +"quality textures and normalmaps and Adaptable Scalable Texture Compression " +"algorithm for high quality textures (in 4x4 block size).\n" +"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were " +"already imported before. To make this setting apply to textures that were " +"already imported, exit the editor, remove the [code].godot/imported/[/code] " +"folder located inside the project folder then restart the editor (see " +"[member application/config/use_hidden_project_data_directory])." +msgstr "" +"如果为 [code]true[/code],则纹理导入器,将使用 Ericsson 纹理压缩 2 算法导入 " +"VRAM 压缩纹理以获取较低质量的纹理和法线贴图,并使用自适应可缩放纹理压缩算法导" +"入高质量纹理(4x4 块大小)。\n" +"[b]注意:[/b]更改该设置[i]不会[/i]影响之前已经导入的纹理。要使该设置应用于已" +"导入的纹理,请退出编辑器,移除位于项目文件夹内的 [code].godot/imported/[/" +"code] 文件夹,然后重新启动编辑器(请参阅 [member application/config/" +"use_hidden_project_data_directory])。" + +msgid "" +"If [code]true[/code], the texture importer will import VRAM-compressed " +"textures using the S3 Texture Compression algorithm (DXT1-5) for lower " +"quality textures and the the BPTC algorithm (BC6H and BC7) for high quality " +"textures. This algorithm is only supported on PC desktop platforms and " +"consoles.\n" +"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were " +"already imported before. To make this setting apply to textures that were " +"already imported, exit the editor, remove the [code].godot/imported/[/code] " +"folder located inside the project folder then restart the editor (see " +"[member application/config/use_hidden_project_data_directory])." +msgstr "" +"如果为 [code]true[/code],纹理导入器将使用 S3 纹理压缩算法(DXT1-5)导入 " +"VRAM 压缩纹理以获得较低质量的纹理;并使用 BPTC 算法(BC6H 和 BC7)导入高质量" +"纹理。该算法仅在 PC 桌面平台和主机平台上受支持。\n" +"[b]注意:[/b]更改该设置[i]不会[/i]影响之前已经导入的纹理。要使该设置应用于已" +"导入的纹理,请退出编辑器,移除位于项目文件夹内的 [code].godot/imported/[/" +"code] 文件夹,然后重新启动编辑器(请参阅 [member application/config/" +"use_hidden_project_data_directory])。" + +msgid "" +"The default compression method for WebP. Affects both lossy and lossless " +"WebP. A higher value results in smaller files at the cost of compression " +"speed. Decompression speed is mostly unaffected by the compression method. " +"Supported values are 0 to 6. Note that compression methods above 4 are very " +"slow and offer very little savings." +msgstr "" +"WebP 的默认压缩方法。影响有损和无损 WebP。较高的值会以压缩速度为代价产生较小" +"的文件。解压缩速度基本上不受压缩方法的影响。支持的值为 0 到 6。请注意,高于 " +"4 的压缩方法非常慢并且节省的空间很小。" + +msgid "" "The default compression factor for lossless WebP. Decompression speed is " "mostly unaffected by the compression factor. Supported values are 0 to 100." msgstr "" @@ -83097,6 +88335,14 @@ msgstr "" "效。" msgid "" +"Set the default Variable Rate Shading (VRS) mode for the main viewport. See " +"[member Viewport.vrs_mode] to change this at runtime, and [enum Viewport." +"VRSMode] for possible values." +msgstr "" +"为主视口设置默认的可变速率着色(VRS)模式。请参阅 [member Viewport.vrs_mode] " +"以在运行时更改该设置,并参阅 [enum Viewport.VRSMode] 以获取可能的值。" + +msgid "" "If [member rendering/vrs/mode] is set to [b]Texture[/b], this is the path to " "default texture loaded as the VRS image.\n" "The texture [i]must[/i] use a lossless compression format so that colors can " @@ -83133,6 +88379,11 @@ msgstr "" "- 8x8 = rgb(255, 255, 0) - #ffff00 - 大多数硬件不支持\n" "[/codeblock]" +msgid "" +"Maximum number of threads to be used by [WorkerThreadPool]. Value of " +"[code]-1[/code] means no limit." +msgstr "[WorkerThreadPool] 所使用的最大线程数。[code]-1[/code] 表示无限制。" + msgid "Action map configuration to load by default." msgstr "默认加载的动作映射配置。" @@ -83147,6 +88398,13 @@ msgid "Specify the default reference space." msgstr "指定默认参照空间。" msgid "" +"If [code]true[/code], Godot will display an alert modal when OpenXR " +"initialization fails on startup." +msgstr "" +"如果为 [code]true[/code],则启动时如果 OpenXR 初始化失败,Godot 就会显示警告" +"弹框。" + +msgid "" "If [code]true[/code], OpenXR will manage the depth buffer and use the depth " "buffer for advanced reprojection provided this is supported by the XR " "runtime. Note that some rendering features in Godot can't be used with this " @@ -83168,6 +88426,18 @@ msgid "Interpolates an [Object]'s property over time." msgstr "随时间对 [Object] 的属性进行插值。" msgid "" +"[PropertyTweener] is used to interpolate a property in an object. See " +"[method Tween.tween_property] for more usage information.\n" +"[b]Note:[/b] [method Tween.tween_property] is the only correct way to create " +"[PropertyTweener]. Any [PropertyTweener] created manually will not function " +"correctly." +msgstr "" +"[PropertyTweener] 用于为对象的属性进行插值。详细的用法见 [method Tween." +"tween_property]。\n" +"[b]注意:[/b][method Tween.tween_property] 是创建 [PropertyTweener] 的唯一正" +"确方法。任何手动创建的 [PropertyTweener] 都将无法正常运行。" + +msgid "" "When called, the final value will be used as a relative value instead.\n" "[b]Example:[/b]\n" "[codeblock]\n" @@ -83231,9 +88501,36 @@ msgstr "设置该 [PropertyTweener] 开始插值的时间,单位为秒。默 msgid "Class representing a square mesh facing the camera." msgstr "表示面向相机的正方形网格的类。" +msgid "" +"Class representing a square [PrimitiveMesh]. This flat mesh does not have a " +"thickness. By default, this mesh is aligned on the X and Y axes; this " +"rotation is more suited for use with billboarded materials. A [QuadMesh] is " +"equivalent to a [PlaneMesh] except its default [member PlaneMesh." +"orientation] is [constant PlaneMesh.FACE_Z]." +msgstr "" +"代表正方形 [PrimitiveMesh] 的类。这个平面网格没有厚度。默认情况下,这个网格" +"与 X 轴和 Y 轴对齐;这种旋转方式更适合于使用公告板的材质。[QuadMesh] 和 " +"[PlaneMesh] 是等价的,区别是 [member PlaneMesh.orientation] 默认为 [constant " +"PlaneMesh.FACE_Z]。" + msgid "2D in 3D Demo" msgstr "3D 中的 2D 演示" +msgid "" +"Flat plane shape for use with occlusion culling in [OccluderInstance3D]." +msgstr "用于 [OccluderInstance3D] 遮挡剔除的扁平平面形状。" + +msgid "" +"[QuadOccluder3D] stores a flat plane shape that can be used by the engine's " +"occlusion culling system. See also [PolygonOccluder3D] if you need to " +"customize the quad's shape.\n" +"See [OccluderInstance3D]'s documentation for instructions on setting up " +"occlusion culling." +msgstr "" +"[QuadOccluder3D] 存储的是一个扁平的平面形状,可以用于引擎的遮挡剔除系统。如果" +"你需要自定义正方形的形状,请参阅 [PolygonOccluder3D]。\n" +"设置遮挡剔除的说明见 [OccluderInstance3D] 的文档。" + msgid "The quad's size in 3D units." msgstr "该四边形的大小,使用 3D 单位。" @@ -83241,6 +88538,23 @@ msgid "Quaternion." msgstr "四元数." msgid "" +"A unit quaternion used for representing 3D rotations. Quaternions need to be " +"normalized to be used for rotation.\n" +"It is similar to Basis, which implements matrix representation of rotations, " +"and can be parametrized using both an axis-angle pair or Euler angles. Basis " +"stores rotation, scale, and shearing, while Quaternion only stores " +"rotation.\n" +"Due to its compactness and the way it is stored in memory, certain " +"operations (obtaining axis-angle and performing SLERP, in particular) are " +"more efficient and robust against floating-point errors." +msgstr "" +"代表 3D 旋转的单位四元数。四元数归一化后才能用于旋转。\n" +"四元数与 Basis 类似,实现的是旋转的矩阵表示,可以使用轴角对或欧拉角作为参数。" +"Basis 存储的是旋转、缩放以及切变,而 Quaternion 只存储旋转。\n" +"由于四元数的紧凑性以及在内存中的存储方式,部分运算(尤其是获取轴角和执行 " +"SLERP)在防止浮点数误差方面更加有效和稳健。" + +msgid "" "Constructs a default-initialized quaternion with all components set to " "[code]0[/code]." msgstr "构造默认初始化的四元数,所有分量都被设置为 [code]0[/code]。" @@ -83249,6 +88563,12 @@ msgid "Constructs a [Quaternion] as a copy of the given [Quaternion]." msgstr "构造给定 [Quaternion] 的副本。" msgid "" +"Constructs a quaternion representing the shortest arc between two points on " +"the surface of a sphere with a radius of [code]1.0[/code]." +msgstr "" +"构造一个四元数,代表半径为 [code]1.0[/code] 的球面上两个点之间最短的弧。" + +msgid "" "Constructs a quaternion that will rotate around the given axis by the " "specified angle. The axis must be a normalized vector." msgstr "" @@ -83260,12 +88580,36 @@ msgstr "从给定的 [Basis] 构造一个四元数。" msgid "Constructs a quaternion defined by the given values." msgstr "构建一个由给定值定义的四元数。" +msgid "" +"Returns the angle between this quaternion and [param to]. This is the " +"magnitude of the angle you would need to rotate by to get from one to the " +"other.\n" +"[b]Note:[/b] The magnitude of the floating-point error for this method is " +"abnormally high, so methods such as [code]is_zero_approx[/code] will not " +"work reliably." +msgstr "" +"返回这个四元数与 [param to] 之间的角度。这是从一个旋转到另一个旋转所需的角度" +"大小。\n" +"[b]注意:[/b]该方法的浮点数误差异常地高,因此 [code]is_zero_approx[/code] 等" +"方法的结果不可靠。" + msgid "Returns the dot product of two quaternions." msgstr "返回两个四元数的点积。" msgid "Constructs a Quaternion from Euler angles in YXZ rotation order." msgstr "按 YXZ 旋转顺序从欧拉角构造一个四元数。" +msgid "" +"Returns the quaternion's rotation in the form of Euler angles. The Euler " +"order depends on the [param order] parameter, for example using the YXZ " +"convention: since this method decomposes, first Z, then X, and Y last. See " +"the [enum EulerOrder] enum for possible values. The returned vector contains " +"the rotation angles in the format (X angle, Y angle, Z angle)." +msgstr "" +"以欧拉角的形式返回该四元数的旋转。欧拉顺序取决于 [param order] 参数,例如使" +"用 YXZ 顺序:这个方法按照 Z、X、Y 的顺序分解。可能的取值见 [enum EulerOrder] " +"枚举。返回向量的格式为 (X 角, Y 角, Z 角)。" + msgid "Returns the inverse of the quaternion." msgstr "返回四元数的取逆。" @@ -83305,6 +88649,22 @@ msgstr "" "[b]注意:[/b]两个四元数都必须被归一化。" msgid "" +"Returns the result of the spherical linear interpolation between this " +"quaternion and [param to] by amount [param weight], but without checking if " +"the rotation path is not bigger than 90 degrees." +msgstr "" +"返回在这个四元数和 [param to] 之间按照 [param weight] 进行球面线性插值的结" +"果,不会检查旋转路径是否大于 90 度。" + +msgid "" +"Performs a spherical cubic interpolation between quaternions [param pre_a], " +"this vector, [param b], and [param post_b], by the given amount [param " +"weight]." +msgstr "" +"在四元数 [param pre_a]、这个向量、[param b] 以及 [param post_b] 之间按照给定" +"的 [param weight] 进行球面三次插值。" + +msgid "" "Performs a spherical cubic interpolation between quaternions [param pre_a], " "this vector, [param b], and [param post_b], by the given amount [param " "weight].\n" @@ -83362,6 +88722,17 @@ msgstr "" "靠。" msgid "" +"Composes these two quaternions by multiplying them together. This has the " +"effect of rotating the second quaternion (the child) by the first quaternion " +"(the parent)." +msgstr "" +"通过将这两个四元数相乘,来合成这两个四元数。效果是将第二个四元数(子)按照第" +"一个四元数(父)进行旋转。" + +msgid "Rotates (multiplies) the [Vector3] by the given [Quaternion]." +msgstr "使用给定的 [Quaternion] 旋转 [Vector3](相乘)。" + +msgid "" "Multiplies each component of the [Quaternion] by the given value. This " "operation is not meaningful on its own, but it can be used as a part of a " "larger expression." @@ -83370,6 +88741,23 @@ msgstr "" "表达式的一部分。" msgid "" +"Adds each component of the left [Quaternion] to the right [Quaternion]. This " +"operation is not meaningful on its own, but it can be used as a part of a " +"larger expression, such as approximating an intermediate rotation between " +"two nearby rotations." +msgstr "" +"将左侧 [Quaternion] 的每个分量与右侧的 [Quaternion] 相加。这个运算本身没有意" +"义,但可以用作更大表达式的一部分,例如求两个相近旋转的中间近似值。" + +msgid "" +"Subtracts each component of the left [Quaternion] by the right [Quaternion]. " +"This operation is not meaningful on its own, but it can be used as a part of " +"a larger expression." +msgstr "" +"将左侧 [Quaternion] 的每个分量与右侧的 [Quaternion] 相减。这个运算本身没有意" +"义,但可以用作更大表达式的一部分。" + +msgid "" "Divides each component of the [Quaternion] by the given value. This " "operation is not meaningful on its own, but it can be used as a part of a " "larger expression." @@ -83386,6 +88774,24 @@ msgstr "" "[b]注意:[/b]由于浮点数精度误差,请考虑改用 [method is_equal_approx],会更可" "靠。" +msgid "" +"Access quaternion components using their index. [code]q[0][/code] is " +"equivalent to [code]q.x[/code], [code]q[1][/code] is equivalent to [code]q." +"y[/code], [code]q[2][/code] is equivalent to [code]q.z[/code], and [code]q[3]" +"[/code] is equivalent to [code]q.w[/code]." +msgstr "" +"使用索引访问四元数的分量。[code]q[0][/code] 等价于 [code]q.x[/code]、" +"[code]q[1][/code] 等价于 [code]q.y[/code]、[code]q[2][/code]等价于[code]q.z[/" +"code]、[code]q[3][/code]等价于[code]q.w[/code]。" + +msgid "" +"Returns the negative value of the [Quaternion]. This is the same as writing " +"[code]Quaternion(-q.x, -q.y, -q.z, -q.w)[/code]. This operation results in a " +"quaternion that represents the same rotation." +msgstr "" +"返回该 [Quaternion] 的负值。和写 [code]Quaternion(-q.x, -q.y, -q.z, -q.w)[/" +"code] 相同。这个操作得到的是代表相同旋转的四元数。" + msgid "A class for generating pseudo-random numbers." msgstr "用于生成伪随机数的类。" @@ -83422,6 +88828,75 @@ msgstr "" "不是实际的默认种子。" msgid "" +"Returns a pseudo-random float between [code]0.0[/code] and [code]1.0[/code] " +"(inclusive)." +msgstr "" +"返回在 [code]0.0[/code] 和 [code]1.0[/code] 之间(含端点)的伪随机浮点数。" + +msgid "" +"Returns a pseudo-random float between [param from] and [param to] " +"(inclusive)." +msgstr "返回在 [param from] 和 [param to] 之间(含端点)的伪随机浮点数。" + +msgid "" +"Returns a [url=https://en.wikipedia.org/wiki/Normal_distribution]normally-" +"distributed[/url] pseudo-random number, using Box-Muller transform with the " +"specified [param mean] and a standard [param deviation]. This is also called " +"Gaussian distribution." +msgstr "" +"使用具有指定 [param mean] 和标准 [param deviation] 的 Box-Muller 变换,返回一" +"个[url=https://en.wikipedia.org/wiki/Normal_distribution]正态分布[/url]的伪随" +"机数。这也被称为高斯分布。" + +msgid "" +"Returns a pseudo-random 32-bit unsigned integer between [code]0[/code] and " +"[code]4294967295[/code] (inclusive)." +msgstr "" +"返回在 [code]0[/code] 和 [code]4294967295[/code] 之间(含端点)的伪随机 32 位" +"无符号整数。" + +msgid "" +"Returns a pseudo-random 32-bit signed integer between [param from] and " +"[param to] (inclusive)." +msgstr "" +"返回在 [param from] 和 [param to] 之间(含端点)的伪随机 32 位无符号整数。" + +msgid "" +"Setups a time-based seed to for this [RandomNumberGenerator] instance. " +"Unlike the [@GlobalScope] random number generation functions, different " +"[RandomNumberGenerator] instances can use different seeds." +msgstr "" +"为这个 [RandomNumberGenerator] 实例设置基于时间的种子。与 [@GlobalScope] 随机" +"数生成函数不同,不同的 [RandomNumberGenerator] 可以使用不同的种子。" + +msgid "" +"Initializes the random number generator state based on the given seed value. " +"A given seed will give a reproducible sequence of pseudo-random numbers.\n" +"[b]Note:[/b] The RNG does not have an avalanche effect, and can output " +"similar random streams given similar seeds. Consider using a hash function " +"to improve your seed quality if they're sourced externally.\n" +"[b]Note:[/b] Setting this property produces a side effect of changing the " +"internal [member state], so make sure to initialize the seed [i]before[/i] " +"modifying the [member state]:\n" +"[codeblock]\n" +"var rng = RandomNumberGenerator.new()\n" +"rng.seed = hash(\"Godot\")\n" +"rng.state = 100 # Restore to some previously saved state.\n" +"[/codeblock]" +msgstr "" +"根据给定的种子值初始化随机数生成器状态。给定的种子将给出一个可重现的伪随机数" +"序列。\n" +"[b]注意:[/b]RNG没有雪崩效应,给定相似的种子可以输出相似的随机流。如果种子来" +"自外部,请考虑使用哈希函数来提高种子质量。\n" +"[b]注意:[/b]设置该属性会产生改变内部 [member state] 的副作用,因此请确保在修" +"改 [member state] [i]之前[/i]初始化种子:\n" +"[codeblock]\n" +"var rng = RandomNumberGenerator.new()\n" +"rng.seed = hash(\"Godot\")\n" +"rng.state = 100 # 恢复到之前保存的一些状态。\n" +"[/codeblock]" + +msgid "" "The current state of the random number generator. Save and restore this " "property to restore the generator to a previous state:\n" "[codeblock]\n" @@ -83466,6 +88941,11 @@ msgstr "" "例请参考 [ScrollBar] 和 [Slider]。" msgid "" +"Called when the [Range]'s value is changed (following the same conditions as " +"[signal value_changed])." +msgstr "[Range] 的值发生更改时调用(条件与 [signal value_changed] 相同)。" + +msgid "" "Sets the [Range]'s current value to the specified [param value], without " "emitting the [signal value_changed] signal." msgstr "" @@ -83572,6 +89052,40 @@ msgid "Query the closest object intersecting a ray." msgstr "查询与射线相交的最近物体。" msgid "" +"A RayCast represents a line from its origin to its destination position, " +"[member target_position]. It is used to query the 2D space in order to find " +"the closest object along the path of the ray.\n" +"RayCast2D can ignore some objects by adding them to the exception list via " +"[method add_exception], by setting proper filtering with collision layers, " +"or by filtering object types with type masks.\n" +"RayCast2D can be configured to report collisions with [Area2D]s ([member " +"collide_with_areas]) and/or [PhysicsBody2D]s ([member " +"collide_with_bodies]).\n" +"Only enabled raycasts will be able to query the space and report " +"collisions.\n" +"RayCast2D calculates intersection every physics frame (see [Node]), and the " +"result is cached so it can be used later until the next frame. If multiple " +"queries are required between physics frames (or during the same frame) use " +"[method force_raycast_update] after adjusting the raycast." +msgstr "" +"RayCast 表示从其原点到目标位置 [member target_position] 的一条线。它被用于查" +"询 2D 空间,以便沿射线路径找到最近的对象。\n" +"RayCast2D 可以忽略某些对象,方法是通过 [method add_exception] 将它们添加到例" +"外列表,通过使用碰撞层设置适当的过滤,或通过使用类型掩码过滤对象类型。\n" +"RayCast2D 可以被配置,以报告与 [Area2D]([member collide_with_areas])和/或 " +"[PhysicsBody2D]([member collide_with_bodies])的碰撞。\n" +"只有启用的射线投射,才能查询空间并报告碰撞。\n" +"RayCast2D 计算每个物理帧的交集(参见 [Node]),并将结果缓存起来,以便稍后在下" +"一帧之前使用。如果在物理帧之间(或在同一帧期间)需要多个查询,请在调整射线投" +"射后使用 [method force_raycast_update]。" + +msgid "" +"Adds a collision exception so the ray does not report collisions with the " +"specified [CollisionObject2D] node." +msgstr "" +"添加碰撞例外,这样射线就不会报告与指定 [CollisionObject2D] 节点的碰撞。" + +msgid "" "Adds a collision exception so the ray does not report collisions with the " "specified [RID]." msgstr "添加碰撞例外,这样射线就不会报告与指定 [RID] 的碰撞。" @@ -83580,6 +89094,18 @@ msgid "Removes all collision exceptions for this ray." msgstr "删除此射线的所有碰撞例外。" msgid "" +"Updates the collision information for the ray. Use this method to update the " +"collision information immediately instead of waiting for the next " +"[code]_physics_process[/code] call, for example if the ray or its parent has " +"changed state.\n" +"[b]Note:[/b] [member enabled] does not need to be [code]true[/code] for this " +"to work." +msgstr "" +"更新射线的碰撞信息。使用该方法立即更新碰撞信息,而不是等待下一个 " +"[code]_physics_process[/code] 调用,例如,如果射线或其父级已更改状态。\n" +"[b]注意:[/b][member enabled] 不需要为 [code]true[/code] 即可生效。" + +msgid "" "Returns the first object that the ray intersects, or [code]null[/code] if no " "object is intersecting the ray (i.e. [method is_colliding] returns " "[code]false[/code])." @@ -83604,6 +89130,14 @@ msgstr "" "code](即 [method is_colliding] 返回 [code]false[/code])。" msgid "" +"Returns the normal of the intersecting object's shape at the collision " +"point, or [code]Vector2(0, 0)[/code] if the ray starts inside the shape and " +"[member hit_from_inside] is [code]true[/code]." +msgstr "" +"返回相交对象的形状在碰撞点处的法线,如果射线从该形状内部发出并且 [member " +"hit_from_inside] 为 [code]true[/code],则为 [code]Vector2(0, 0)[/code]。" + +msgid "" "Returns the collision point at which the ray intersects the closest object.\n" "[b]Note:[/b] This point is in the [b]global[/b] coordinate system." msgstr "" @@ -83617,6 +89151,12 @@ msgstr "返回是否有任何对象与射线的向量相交(考虑向量长度 msgid "" "Removes a collision exception so the ray does report collisions with the " +"specified [CollisionObject2D] node." +msgstr "" +"移除碰撞例外,这样射线就会报告与指定的 [CollisionObject2D] 节点的碰撞。" + +msgid "" +"Removes a collision exception so the ray does report collisions with the " "specified [RID]." msgstr "移除碰撞例外,这样射线就会报告与指定的 [RID] 的碰撞。" @@ -83656,6 +89196,54 @@ msgid "" "The ray's destination point, relative to the RayCast's [code]position[/code]." msgstr "光线的目标点,相对于该 RayCast 的 [code]position[/code]。" +msgid "" +"A RayCast represents a line from its origin to its destination position, " +"[member target_position]. It is used to query the 3D space in order to find " +"the closest object along the path of the ray.\n" +"RayCast3D can ignore some objects by adding them to the exception list via " +"[method add_exception] or by setting proper filtering with collision layers " +"and masks.\n" +"RayCast3D can be configured to report collisions with [Area3D]s ([member " +"collide_with_areas]) and/or [PhysicsBody3D]s ([member " +"collide_with_bodies]).\n" +"Only enabled raycasts will be able to query the space and report " +"collisions.\n" +"RayCast3D calculates intersection every physics frame (see [Node]), and the " +"result is cached so it can be used later until the next frame. If multiple " +"queries are required between physics frames (or during the same frame), use " +"[method force_raycast_update] after adjusting the raycast." +msgstr "" +"RayCast 代表的是从它的原点到目标位置 [member target_position] 的线段。可以在 " +"3D 空间中进行查询,沿着射线路径搜索距离最近的对象。\n" +"要让 RayCast3D 忽略某些对象,可以通过 [method add_exception] 将它们添加至例外" +"列表,或使用碰撞层和碰撞掩码设置合适的过滤。\n" +"可以将 RayCast3D 配置为汇报与 [Area3D]([member collide_with_areas])和/或 " +"[PhysicsBody3D]([member collide_with_bodies])的碰撞。\n" +"只有已启用的 RayCast 能够在空间中进行查询并汇报碰撞。\n" +"RayCast3D 在每一个物理帧(见 [Node])都会计算相交情况,计算结果会进行缓存,以" +"备在下一帧前使用。如果需要在物理帧之间(或者同一帧中)进行多次查询,请在调整 " +"RayCast 后使用 [method force_raycast_update]。" + +msgid "" +"Adds a collision exception so the ray does not report collisions with the " +"specified [CollisionObject3D] node." +msgstr "" +"添加碰撞例外,这样射线就不会报告与指定 [CollisionObject3D] 节点的碰撞。" + +msgid "" +"Returns the normal of the intersecting object's shape at the collision " +"point, or [code]Vector3(0, 0, 0)[/code] if the ray starts inside the shape " +"and [member hit_from_inside] is [code]true[/code]." +msgstr "" +"返回相交对象形状在碰撞点处的法线;或者如果射线从形状内部开始并且 [member " +"hit_from_inside] 为 [code]true[/code],则返回 [code]Vector3(0, 0, 0)[/code]。" + +msgid "" +"Removes a collision exception so the ray does report collisions with the " +"specified [CollisionObject3D] node." +msgstr "" +"移除一个碰撞例外,以便射线确实报告与指定 [CollisionObject3D] 节点的碰撞。" + msgid "If [code]true[/code], collision with [Area3D]s will be reported." msgstr "如果为 [code]true[/code],则会报告与 [Area3D] 的碰撞。" @@ -83663,6 +89251,35 @@ msgid "If [code]true[/code], collision with [PhysicsBody3D]s will be reported." msgstr "如果为 [code]true[/code],则会报告与 [PhysicsBody3D] 的碰撞。" msgid "" +"The custom color to use to draw the shape in the editor and at run-time if " +"[b]Visible Collision Shapes[/b] is enabled in the [b]Debug[/b] menu. This " +"color will be highlighted at run-time if the [RayCast3D] is colliding with " +"something.\n" +"If set to [code]Color(0.0, 0.0, 0.0)[/code] (by default), the color set in " +"[member ProjectSettings.debug/shapes/collision/shape_color] is used." +msgstr "" +"如果在[b]调试[/b]菜单中启用了[b]可见碰撞形状[/b],则用于在编辑器中和运行时中" +"绘制形状的自定义颜色。如果 [RayCast3D] 与某物发生碰撞,该颜色将在运行时突出显" +"示。\n" +"如果设置为 [code]Color(0.0, 0.0, 0.0)[/code](默认情况下),则使用 [member " +"ProjectSettings.debug/shapes/collision/shape_color] 中设置的颜色。" + +msgid "" +"If set to [code]1[/code], a line is used as the debug shape. Otherwise, a " +"truncated pyramid is drawn to represent the [RayCast3D]. Requires [b]Visible " +"Collision Shapes[/b] to be enabled in the [b]Debug[/b] menu for the debug " +"shape to be visible at run-time." +msgstr "" +"如果设置为 [code]1[/code],则使用一条线作为调试形状。否则,将绘制一个截断的金" +"字塔来表示 [RayCast3D]。需要在[b]调试[/b]菜单中启用[b]可见碰撞形状[/b],以便" +"调试形状在运行时可见。" + +msgid "" +"If [code]true[/code], collisions will be ignored for this RayCast3D's " +"immediate parent." +msgstr "如果为 [code]true[/code],则该 RayCast3D 的直接父级的碰撞将被忽略。" + +msgid "" "If [code]true[/code], the ray will detect a hit when starting inside shapes. " "In this case the collision normal will be [code]Vector3(0, 0, 0)[/code]. " "Does not affect shapes with no volume like concave polygon or heightmap." @@ -83671,10 +89288,68 @@ msgstr "" "撞法线将为 [code]Vector3(0, 0, 0)[/code]。不会影响无体积的形状,如凹多边形和" "高度图。" +msgid "Framebuffer pass attachment description." +msgstr "帧缓冲区阶段附件描述。" + +msgid "" +"This class contains the list of attachment descriptions for a framebuffer " +"pass. Each points with an index to a previously supplied list of texture " +"attachments.\n" +"Multipass framebuffers can optimize some configurations in mobile, on " +"desktop they provide little to no advantage." +msgstr "" +"该类包含帧缓冲区通道的附件描述列表。每个点都有一个指向先前提供的纹理附件列表" +"的索引。\n" +"多通道帧缓冲区,可以优化移动设备中的某些配置;在桌面设备上,它们几乎没有优" +"势。" + +msgid "" +"Color attachments in order starting from 0. If this attachment is not used " +"by the shader, pass ATTACHMENT_UNUSED to skip." +msgstr "" +"从 0 开始按顺序为附件着色。如果该附件未被着色器使用,则传递 " +"ATTACHMENT_UNUSED 以跳过。" + +msgid "" +"Depth attachment. ATTACHMENT_UNUSED should be used if no depth buffer is " +"required for this pass." +msgstr "深度附件。如果该通道不需要深度缓冲区,则应使用 ATTACHMENT_UNUSED。" + +msgid "" +"Used for multipass framebuffers (more than one render pass). Converts an " +"attachment to an input. Make sure to also supply it properly in the " +"[RDUniform] for the uniform set." +msgstr "" +"用于多通道帧缓冲区(不止一个渲染通道)。将一个附件转换为一个输入。确保还在 " +"[RDUniform] 中为 uniform 集正确提供它。" + +msgid "Attachments to preserve in this pass (otherwise they are erased)." +msgstr "要在该阶段中保留的附件(否则它们将被删除)。" + +msgid "" +"If the color attachments are multisampled, non-multisampled resolve " +"attachments can be provided." +msgstr "如果颜色附件是多重采样的,则可以提供非多重采样的解析附件。" + msgid "2D axis-aligned bounding box using floating point coordinates." msgstr "使用浮点数坐标的 2D 轴对齐边界框。" msgid "" +"[Rect2] consists of a position, a size, and several utility functions. It is " +"typically used for fast overlap tests.\n" +"It uses floating-point coordinates. If you need integer coordinates, use " +"[Rect2i] instead.\n" +"The 3D counterpart to [Rect2] is [AABB].\n" +"Negative values for [member size] are not supported and will not work for " +"most methods. Use [method abs] to get a Rect2 with a positive size." +msgstr "" +"[Rect2] 由一个位置、一个大小、和几个实用函数组成。它通常用于快速重叠测试。\n" +"它使用浮点坐标。如果需要整数坐标,请改用 [Rect2i]。\n" +"[Rect2] 的 3D 对应物是 [AABB]。\n" +"负值的 [member size] 不受支持,且大多数方法都无法正常工作。请使用 [method " +"abs] 得到一个正大小的 Rect2。" + +msgid "" "Constructs a default-initialized [Rect2] with default (zero) values of " "[member position] and [member size]." msgstr "" @@ -83770,7 +89445,7 @@ msgid "" "[method get_area]." msgstr "" "如果该 [Rect2] 有面积,则返回 [code]true[/code] ;如果该 [Rect2] 是线性的、空" -"的或有负的 [member size],则返回 [code]false[/code] 。另请参阅 [member " +"的或有负的 [member size],则返回 [code]false[/code] 。另请参阅 [method " "get_area]。" msgid "" @@ -83831,6 +89506,11 @@ msgstr "" "靠。" msgid "" +"Inversely transforms (multiplies) the [Rect2] by the given [Transform2D] " +"transformation matrix." +msgstr "使用给定的 [Transform2D] 变换矩阵对该 [Rect2] 进行逆变换(相乘)。" + +msgid "" "Returns [code]true[/code] if the rectangles are exactly equal.\n" "[b]Note:[/b] Due to floating-point precision errors, consider using [method " "is_equal_approx] instead, which is more reliable." @@ -83843,6 +89523,19 @@ msgid "2D axis-aligned bounding box using integer coordinates." msgstr "使用整数坐标的 2D 轴对齐边界框。" msgid "" +"[Rect2i] consists of a position, a size, and several utility functions. It " +"is typically used for fast overlap tests.\n" +"It uses integer coordinates. If you need floating-point coordinates, use " +"[Rect2] instead.\n" +"Negative values for [member size] are not supported and will not work for " +"most methods. Use [method abs] to get a Rect2i with a positive size." +msgstr "" +"[Rect2i] 由一个位置、一个大小和几个实用函数组成。它通常用于快速重叠测试。\n" +"它使用整数坐标。如果需要浮点坐标,请改用 [Rect2]。\n" +"负值的 [member size] 不受支持,且大多数方法都无法正常工作。请使用 [method " +"abs] 得到一个正大小的 Rect2i。" + +msgid "" "Constructs a default-initialized [Rect2i] with default (zero) values of " "[member position] and [member size]." msgstr "" @@ -83912,6 +89605,15 @@ msgid "Returns the area of the [Rect2i]. See also [method has_area]." msgstr "返回该 [Rect2i] 的面积。另请参阅 [method has_area]。" msgid "" +"Returns the center of the [Rect2i], which is equal to [member position] + " +"([member size] / 2).\n" +"If [member size] is an odd number, the returned center value will be rounded " +"towards [member position]." +msgstr "" +"返回该 [Rect2i] 的中心,等于 [member position] + ([member size] / 2)。\n" +"如果 [member size] 为奇数,则返回的中心值将向 [member position] 四舍五入。" + +msgid "" "Returns a copy of the [Rect2i] grown by the specified [param amount] on all " "sides." msgstr "返回 [Rect2i] 的副本,该副本向所有边增长了给定量 [param amount]。" @@ -83934,9 +89636,39 @@ msgid "" "[method get_area]." msgstr "" "如果该 [Rect2i] 有面积,则返回 [code]true[/code] ;如果该 [Rect2i] 是线性的、" -"空的或有负的 [member size],则返回 [code]false[/code] 。另请参阅 [member " +"空的或有负的 [member size],则返回 [code]false[/code] 。另请参阅 [method " "get_area]。" +msgid "" +"Returns [code]true[/code] if the [Rect2i] contains a point. By convention, " +"the right and bottom edges of the [Rect2i] are considered exclusive, so " +"points on these edges are [b]not[/b] included.\n" +"[b]Note:[/b] This method is not reliable for [Rect2i] with a [i]negative " +"size[/i]. Use [method abs] to get a positive sized equivalent rectangle to " +"check for contained points." +msgstr "" +"如果该 [Rect2i] 包含某个点,则返回 [code]true[/code]。按照惯例,[Rect2i] 的右" +"边缘和下边缘不属于矩形的范围,所以在这两条边上的点[b]不[/b]包含在矩形内。\n" +"[b]注意:[/b]这个方法对于[i]大小为负数[/i]的 [Rect2i] 不可靠。请使用 [method " +"abs] 得到等价的正数大小矩形,再检查是否包含某个点。" + +msgid "" +"Returns the intersection of this [Rect2i] and [code]b[/code].\n" +"If the rectangles do not intersect, an empty [Rect2i] is returned." +msgstr "" +"返回这个 [Rect2i] 与 [code]b[/code] 的交集。\n" +"如果矩形不相交,则返回空的 [Rect2i]。" + +msgid "" +"Returns [code]true[/code] if the [Rect2i] overlaps with [code]b[/code] (i.e. " +"they have at least one point in common)." +msgstr "" +"如果该 [Rect2i] 与 [code]b[/code] 重叠(即至少包含一个共同的点),则返回 " +"[code]true[/code]。" + +msgid "Returns a larger [Rect2i] that contains this [Rect2i] and [param b]." +msgstr "返回包含这个 [Rect2i] 和 [param b] 的更大的 [Rect2i]。" + msgid "Returns [code]true[/code] if the rectangles are not equal." msgstr "如果矩形不相等,则返回 [code]true[/code]。" @@ -83964,6 +89696,32 @@ msgstr "该矩形的宽度和高度。" msgid "Base class for reference-counted objects." msgstr "引用计数对象的基类。" +msgid "" +"Base class for any object that keeps a reference count. [Resource] and many " +"other helper objects inherit this class.\n" +"Unlike other [Object] types, [RefCounted]s keep an internal reference " +"counter so that they are automatically released when no longer in use, and " +"only then. [RefCounted]s therefore do not need to be freed manually with " +"[method Object.free].\n" +"In the vast majority of use cases, instantiating and using [RefCounted]-" +"derived types is all you need to do. The methods provided in this class are " +"only for advanced users, and can cause issues if misused.\n" +"[b]Note:[/b] In C#, reference-counted objects will not be freed instantly " +"after they are no longer in use. Instead, garbage collection will run " +"periodically and will free reference-counted objects that are no longer in " +"use. This means that unused ones will linger on for a while before being " +"removed." +msgstr "" +"所有保持引用计数的对象的基类。[Resource] 和许多其他辅助对象继承该类。\n" +"与其他 [Object] 类型不同,[RefCounted] 保留一个内部引用计数器,以便它们在不再" +"使用时自动释放,并且仅在那时才会如此。因此,[RefCounted] 不需要使用 [method " +"Object.free] 手动释放。\n" +"在绝大多数用例中,只需实例化和使用 [RefCounted] 派生类型即可。该类中提供的方" +"法仅适用于高级用户,如果使用不当可能会导致问题。\n" +"[b]注意:[/b]在 C# 中,引用计数的对象在不再使用后不会立即被释放。相反,垃圾收" +"集将定期运行,并释放不再使用的引用计数对象。这意味着未使用的引用计数对象会在" +"被移除之前停留一段时间。" + msgid "Returns the current reference count." msgstr "返回当前的引用计数。" @@ -84014,6 +89772,13 @@ msgid "" msgstr "设置该 [ReferenceRect] 的边框宽度。边界相对于矩形框同时向内向外伸长。" msgid "" +"If [code]true[/code], the [ReferenceRect] will only be visible while in " +"editor. Otherwise, [ReferenceRect] will be visible in the running project." +msgstr "" +"如果为 [code]true[/code],则 [ReferenceRect] 仅在编辑器中可见。否则," +"[ReferenceRect] 将在正在运行的项目中可见。" + +msgid "" "Captures its surroundings to create fast, accurate reflections from a given " "point." msgstr "捕捉某个位置周围的环境,用于快速创建准确的反射。" @@ -84074,6 +89839,30 @@ msgid "Reflection probes" msgstr "反射探针" msgid "" +"The custom ambient color to use within the [ReflectionProbe]'s [member " +"size]. Only effective if [member ambient_mode] is [constant AMBIENT_COLOR]." +msgstr "" +"在 [ReflectionProbe] 的 [member size] 中使用的自定义环境颜色。仅当 [member " +"ambient_mode] 为 [constant AMBIENT_COLOR] 时有效。" + +msgid "" +"The custom ambient color energy to use within the [ReflectionProbe]'s " +"[member size]. Only effective if [member ambient_mode] is [constant " +"AMBIENT_COLOR]." +msgstr "" +"在 [ReflectionProbe] 的 [member size] 中使用的自定义环境颜色能量。仅当 " +"[member ambient_mode] 为 [constant AMBIENT_COLOR] 时有效。" + +msgid "" +"The ambient color to use within the [ReflectionProbe]'s [member size]. The " +"ambient color will smoothly blend with other [ReflectionProbe]s and the rest " +"of the scene (outside the [ReflectionProbe]'s [member size])." +msgstr "" +"在 [ReflectionProbe] 的 [member size] 中使用的环境颜色。环境颜色将平滑地与其" +"他 [ReflectionProbe] 和场景的其余部分(在 [ReflectionProbe] 的 [member size] " +"之外)混合。" + +msgid "" "If [code]true[/code], enables box projection. This makes reflections look " "more correct in rectangle-shaped rooms by offsetting the reflection center " "depending on the camera's location.\n" @@ -84086,6 +89875,16 @@ msgstr "" "节点。" msgid "" +"Sets the cull mask which determines what objects are drawn by this probe. " +"Every [VisualInstance3D] with a layer included in this cull mask will be " +"rendered by the probe. To improve performance, it is best to only include " +"large objects which are likely to take up a lot of space in the reflection." +msgstr "" +"设置剔除掩码,该掩码确定该探针绘制的对象。每个 [VisualInstance3D],若它有一个" +"层被包含在该剔除掩码中,则它将由该探针渲染。为了提高性能,最好只包含可能在反" +"射中占用大量空间的大型对象。" + +msgid "" "If [code]true[/code], computes shadows in the reflection probe. This makes " "the reflection probe slower to render; you may want to disable this if using " "the [constant UPDATE_ALWAYS] [member update_mode]." @@ -84102,6 +89901,63 @@ msgid "If [code]true[/code], reflections will ignore sky contribution." msgstr "如果为 [code]true[/code],则反射将忽略天空的贡献。" msgid "" +"The maximum distance away from the [ReflectionProbe] an object can be before " +"it is culled. Decrease this to improve performance, especially when using " +"the [constant UPDATE_ALWAYS] [member update_mode].\n" +"[b]Note:[/b] The maximum reflection distance is always at least equal to the " +"probe's extents. This means that decreasing [member max_distance] will not " +"always cull objects from reflections, especially if the reflection probe's " +"[member size] is already large." +msgstr "" +"对象在被剔除之前可以距该 [ReflectionProbe] 的最大距离。减少它可以提高性能,尤" +"其是在使用 [constant UPDATE_ALWAYS] 作为 [member update_mode] 时。\n" +"[b]注意:[/b]最大反射距离始终至少等于探针的范围。这意味着减少 [member " +"max_distance] 并不总是会从反射中剔除对象,尤其是在反射探针的 [member size] 已" +"经很大的情况下。" + +msgid "" +"The automatic LOD bias to use for meshes rendered within the " +"[ReflectionProbe] (this is analog to [member Viewport.mesh_lod_threshold]). " +"Higher values will use less detailed versions of meshes that have LOD " +"variations generated. If set to [code]0.0[/code], automatic LOD is disabled. " +"Increase [member mesh_lod_threshold] to improve performance at the cost of " +"geometry detail, especially when using the [constant UPDATE_ALWAYS] [member " +"update_mode].\n" +"[b]Note:[/b] [member mesh_lod_threshold] does not affect " +"[GeometryInstance3D] visibility ranges (also known as \"manual\" LOD or " +"hierarchical LOD)." +msgstr "" +"用于在 [ReflectionProbe] 内渲染网格的自动 LOD 偏置(这类似于 [member " +"Viewport.mesh_lod_threshold])。较高的值将使用生成了 LOD 变化的不太详细的网格" +"版本。如果设置为 [code]0.0[/code],则自动 LOD 将被禁用。增加 [member " +"mesh_lod_threshold] 以牺牲几何细节为代价提高性能,尤其是在使用 [constant " +"UPDATE_ALWAYS] 的 [member update_mode] 时。\n" +"[b]注意:[/b][member mesh_lod_threshold] 不影响 [GeometryInstance3D] 可见性范" +"围(也称为“手动”LOD 或分层 LOD)。" + +msgid "" +"Sets the origin offset to be used when this [ReflectionProbe] is in [member " +"box_projection] mode. This can be set to a non-zero value to ensure a " +"reflection fits a rectangle-shaped room, while reducing the number of " +"objects that \"get in the way\" of the reflection." +msgstr "" +"设置当该 [ReflectionProbe] 处于 [member box_projection] 模式时要使用的原点偏" +"移量。这可以被设置为一个非零值,以确保反射适合矩形房间,同时减少“妨碍”反射的" +"对象数量。" + +msgid "" +"The size of the reflection probe. The larger the size, the more space " +"covered by the probe, which will lower the perceived resolution. It is best " +"to keep the size only as large as you need it.\n" +"[b]Note:[/b] To better fit areas that are not aligned to the grid, you can " +"rotate the [ReflectionProbe] node." +msgstr "" +"反射探针的大小。大小越大,探针覆盖的空间就越大,这将降低感知的分辨率。最好将" +"大小保持在需要的大小。\n" +"[b]注意:[/b]为了更好地适应未与网格对齐的区域,可以旋转 [ReflectionProbe] 节" +"点。" + +msgid "" "Sets how frequently the [ReflectionProbe] is updated. Can be [constant " "UPDATE_ONCE] or [constant UPDATE_ALWAYS]." msgstr "" @@ -84134,10 +89990,151 @@ msgstr "" "的性能消耗也是显著的。因此,建议同一个场景中最多只使用一个 [constant " "UPDATE_ALWAYS] 的 ReflectionProbe。其他用途请使用 [constant UPDATE_ONCE]。" +msgid "" +"Do not apply any ambient lighting inside the [ReflectionProbe]'s [member " +"size]." +msgstr "不在 [ReflectionProbe] 的 [member size] 内应用任何环境光照。" + +msgid "" +"Apply automatically-sourced environment lighting inside the " +"[ReflectionProbe]'s [member size]." +msgstr "在 [ReflectionProbe] 的 [member size] 内应用自动获取的环境光照。" + +msgid "" +"Apply custom ambient lighting inside the [ReflectionProbe]'s [member size]. " +"See [member ambient_color] and [member ambient_color_energy]." +msgstr "" +"在 [ReflectionProbe] 的 [member size] 内应用自定义的环境光照。见 [member " +"ambient_color] 和 [member ambient_color_energy]。" + msgid "Class for searching text for patterns using regular expressions." msgstr "使用正则表达式搜索文本的类。" msgid "" +"A regular expression (or regex) is a compact language that can be used to " +"recognize strings that follow a specific pattern, such as URLs, email " +"addresses, complete sentences, etc. For example, a regex of [code]ab[0-9][/" +"code] would find any string that is [code]ab[/code] followed by any number " +"from [code]0[/code] to [code]9[/code]. For a more in-depth look, you can " +"easily find various tutorials and detailed explanations on the Internet.\n" +"To begin, the RegEx object needs to be compiled with the search pattern " +"using [method compile] before it can be used.\n" +"[codeblock]\n" +"var regex = RegEx.new()\n" +"regex.compile(\"\\\\w-(\\\\d+)\")\n" +"[/codeblock]\n" +"The search pattern must be escaped first for GDScript before it is escaped " +"for the expression. For example, [code]compile(\"\\\\d+\")[/code] would be " +"read by RegEx as [code]\\d+[/code]. Similarly, [code]compile(\"\\\"(?:\\\\\\" +"\\.|[^\\\"])*\\\"\")[/code] would be read as [code]\"(?:\\\\.|[^\"])*\"[/" +"code].\n" +"Using [method search], you can find the pattern within the given text. If a " +"pattern is found, [RegExMatch] is returned and you can retrieve details of " +"the results using methods such as [method RegExMatch.get_string] and [method " +"RegExMatch.get_start].\n" +"[codeblock]\n" +"var regex = RegEx.new()\n" +"regex.compile(\"\\\\w-(\\\\d+)\")\n" +"var result = regex.search(\"abc n-0123\")\n" +"if result:\n" +" print(result.get_string()) # Would print n-0123\n" +"[/codeblock]\n" +"The results of capturing groups [code]()[/code] can be retrieved by passing " +"the group number to the various methods in [RegExMatch]. Group 0 is the " +"default and will always refer to the entire pattern. In the above example, " +"calling [code]result.get_string(1)[/code] would give you [code]0123[/code].\n" +"This version of RegEx also supports named capturing groups, and the names " +"can be used to retrieve the results. If two or more groups have the same " +"name, the name would only refer to the first one with a match.\n" +"[codeblock]\n" +"var regex = RegEx.new()\n" +"regex.compile(\"d(?<digit>[0-9]+)|x(?<digit>[0-9a-f]+)\")\n" +"var result = regex.search(\"the number is x2f\")\n" +"if result:\n" +" print(result.get_string(\"digit\")) # Would print 2f\n" +"[/codeblock]\n" +"If you need to process multiple results, [method search_all] generates a " +"list of all non-overlapping results. This can be combined with a [code]for[/" +"code] loop for convenience.\n" +"[codeblock]\n" +"for result in regex.search_all(\"d01, d03, d0c, x3f and x42\"):\n" +" print(result.get_string(\"digit\"))\n" +"# Would print 01 03 0 3f 42\n" +"[/codeblock]\n" +"[b]Example of splitting a string using a RegEx:[/b]\n" +"[codeblock]\n" +"var regex = RegEx.new()\n" +"regex.compile(\"\\\\S+\") # Negated whitespace character class.\n" +"var results = []\n" +"for result in regex.search_all(\"One Two \\n\\tThree\"):\n" +" results.push_back(result.get_string())\n" +"# The `results` array now contains \"One\", \"Two\", \"Three\".\n" +"[/codeblock]\n" +"[b]Note:[/b] Godot's regex implementation is based on the [url=https://www." +"pcre.org/]PCRE2[/url] library. You can view the full pattern reference " +"[url=https://www.pcre.org/current/doc/html/pcre2pattern.html]here[/url].\n" +"[b]Tip:[/b] You can use [url=https://regexr.com/]Regexr[/url] to test " +"regular expressions online." +msgstr "" +"正则表达式(或称 regex)是一种紧凑的语言,可用于识别遵循特定模式的字符串,如 " +"URL、电子邮件地址、完整句子等。例如正则表达式 [code]ab[0-9][/code] 可以找到 " +"[code]ab[/code] 后面跟着 [code]0[/code] 到 [code]9[/code] 的任何数字的字符" +"串。要想更深入地了解,你可以很容易地在互联网上找到各种教程和详细解释。\n" +"首先,在使用 RegEx 对象之前,需要用 [method compile] 对其进行搜索模式的编" +"译。\n" +"[codeblock]\n" +"var regex = RegEx.new()\n" +"regex.compile(\"\\\\w-(\\\\d+)\")\n" +"[/codeblock]\n" +"在为表达式转义之前,必须先为 GDScript 转义搜索模式。例如,[code]compile(\"\\" +"\\d+\")[/code] 会被 RegEx 读成 [code]\\d+[/code]。同样,[code]compile(\"\\" +"\"(?:\\\\\\\\.|[^\\\"])*\\\")[/code] 会被读作 [code]\"(?:\\.|[^\"])*\"[/" +"code]。\n" +"使用 [method search],你可以在给定的文本中匹配模式。如果匹配到一个模式,将返" +"回 [RegExMatch],你可以使用 [method RegExMatch.get_string] 和 [method " +"RegExMatch.get_start] 等方法检索结果的细节。\n" +"[codeblock]\n" +"var regex = RegEx.new()\n" +"regex.compile(\"\\\\w-(\\\\d+)\")\n" +"var result = regex.search(\"abc n-0123\")\n" +"if result:\n" +" print(result.get_string()) # 会输出 n-0123\n" +"[/codeblock]\n" +"捕获组的结果 [code]()[/code] 可以通过向 [RegExMatch] 中的各种方法传递组号来检" +"索。默认是组 0,并且将总是指整个模式。在上面的例子中,调用 [code]result." +"get_string(1)[/code] 会得到 [code]0123[/code]。\n" +"这个版本的 RegEx 也支持命名的捕获组,名称可以用来检索结果。如果两个或更多的组" +"有相同的名称,那么这个名称将只指第一个有匹配的组。\n" +"[codeblock]\n" +"var regex = RegEx.new()\n" +"regex.compile(\"d(?<digit>[0-9]+)|x(?<digit>[0-9a-f]+)\")\n" +"var result = regex.search(\"数字是 x2f\")\n" +"if result:\n" +" print(result.get_string(\"digit\")) # 会输出 2f\n" +"[/codeblock]\n" +"如果你需要处理多个结果,[method search_all] 会生成一个所有不重叠的结果列表。" +"为了方便起见,这可以和一个 [code]for[/code] 循环结合起来。\n" +"[codeblock]\n" +"for result in regex.search_all(\"d01, d03, d0c, x3f and x42\"):\n" +" print(result.get_string(\"digit\"))\n" +"# 会输出 01 03 0 3f 42\n" +"[/codeblock]\n" +"[b]使用 RegEx 分割字符串的例子:[/b]\n" +"[codeblock]\n" +"var regex = RegEx.new()\n" +"regex.compile(\"\\\\S+\") # 非空白字符类。\n" +"var results = []\n" +"for result in regex.search_all(\"One Two \\n\\tThree\"):\n" +" results.push_back(result.get_string())\n" +"# `results` 数组包含 \"One\"、\"Two\"、\"Three\"。\n" +"[/codeblock]\n" +"[b]注意:[/b]Godot 的 regex 实现基于的是 [url=https://www.pcre.org/]PCRE2[/" +"url]。你可以查看完整的模式参考[url=https://www.pcre.org/current/doc/html/" +"pcre2pattern.html]这里[/url]。\n" +"[b]提示:[/b]你可以使用 [url=https://regexr.com/]Regexr[/url] 来在线测试正则" +"表达式。" + +msgid "" "This method resets the state of the object, as if it was freshly created. " "Namely, it unassigns the regular expression of this object." msgstr "" @@ -84378,6 +90375,103 @@ msgstr "到远程节点的 [NodePath],相对于 RemoteTransform3D 在场景中 msgid "Abstraction for working with modern low-level graphics APIs." msgstr "用于处理现代低阶图形 API 的抽象。" +msgid "" +"[RenderingDevice] is an abstraction for working with modern low-level " +"graphics APIs such as Vulkan.\n" +"On startup, Godot creates a global [RenderingDevice] which can be retrieved " +"using [method RenderingServer.get_rendering_device]. This global " +"RenderingDevice performs drawing to the screen.\n" +"Internally, [RenderingDevice] is used in Godot to provide support for " +"several modern low-level graphics APIs while reducing the amount of code " +"duplication required.\n" +"[b]Local RenderingDevices:[/b] Using [method RenderingServer." +"create_local_rendering_device], you can create \"secondary\" rendering " +"devices to perform drawing and GPU compute operations on separate threads.\n" +"[b]Note:[/b] [RenderingDevice] is not available when running in headless " +"mode or when using the Compatibility rendering method." +msgstr "" +"[RenderingDevice](渲染设备)是用于处理 Vulkan 等现代低阶图形 API 的抽象。\n" +"启动时,Godot 会创建全局的 [RenderingDevice],可以使用 [method " +"RenderingServer.get_rendering_device] 获取。这个全局的 RenderingDevice 会进行" +"屏幕绘图。\n" +"Godot 在内部使用 [RenderingDevice] 来提供对各种现代低阶图形 API 的支持,从而" +"降低所需的代码重复。\n" +"[b]局部 RenderingDevice:[/b]你可以通过 [method RenderingServer." +"create_local_rendering_device] 来创建“次级”渲染设备,在单独的线程中进行绘图" +"和 GPU 计算操作。\n" +"[b]注意:[/b]使用无头模式运行或使用 OpenGL 渲染器时,[RenderingDevice] 不可" +"用。" + +msgid "" +"Returns a copy of the data of the specified [param buffer], optionally " +"[param offset_bytes] and [param size_bytes] can be set to copy only a " +"portion of the buffer." +msgstr "" +"返回指定 [param buffer] 中数据的副本,还可以设置 [param offset_bytes] 和 " +"[param size_bytes],仅复制缓冲区的某一部分。" + +msgid "" +"Sets blend constants for draw list, blend constants are used only if the " +"graphics pipeline is created with [constant DYNAMIC_STATE_BLEND_CONSTANTS] " +"flag set." +msgstr "" +"设置绘图列表的混合常量,使用 [constant DYNAMIC_STATE_BLEND_CONSTANTS] 标志创" +"建的图形管线才会使用混合常量。" + +msgid "" +"Creates a vertex array based on the specified buffers. Optionally, [param " +"offsets] (in bytes) may be defined for each buffer." +msgstr "" +"根据给定的缓冲区创建顶点数组。还可以为各个缓冲区定义偏移量 [param offsets]" +"(单位为字节)。" + +msgid "" +"Rendering device type does not match any of the other enum values or is " +"unknown." +msgstr "渲染设备的类型与其他枚举值均不匹配,或者未知。" + +msgid "" +"Rendering device is an integrated GPU, which is typically [i](but not always)" +"[/i] slower than dedicated GPUs ([constant DEVICE_TYPE_DISCRETE_GPU]). On " +"Android and iOS, the rendering device type is always considered to be " +"[constant DEVICE_TYPE_INTEGRATED_GPU]." +msgstr "" +"渲染设备为集成 GPU,通常[i](但不一定)[/i]比独立 GPU([constant " +"DEVICE_TYPE_DISCRETE_GPU])要慢。在 Android 和 iOS 上,渲染设备的类型始终为 " +"[constant DEVICE_TYPE_INTEGRATED_GPU]。" + +msgid "" +"Rendering device is a dedicated GPU, which is typically [i](but not always)[/" +"i] faster than integrated GPUs ([constant DEVICE_TYPE_INTEGRATED_GPU])." +msgstr "" +"渲染设备为独立 GPU,通常[i](但不一定)[/i]比集成 GPU([constant " +"DEVICE_TYPE_INTEGRATED_GPU])要快。" + +msgid "" +"Rendering device is an emulated GPU in a virtual environment. This is " +"typically much slower than the host GPU, which means the expected " +"performance level on a dedicated GPU will be roughly equivalent to [constant " +"DEVICE_TYPE_INTEGRATED_GPU]. Virtual machine GPU passthrough (such as VFIO) " +"will not report the device type as [constant DEVICE_TYPE_VIRTUAL_GPU]. " +"Instead, the host GPU's device type will be reported as if the GPU was not " +"emulated." +msgstr "" +"渲染设备为虚拟环境中的模拟 GPU。通常比主机 GPU 要慢很多,这意味着独立 GPU 的" +"预期性能等级大概与 [constant DEVICE_TYPE_INTEGRATED_GPU] 等价。使用虚拟机 " +"GPU 穿透(例如 VFIO)时,设备类型不会被汇报为 [constant " +"DEVICE_TYPE_VIRTUAL_GPU]。而是会汇报主机 GPU 的设备类型,就好像使用的不是模" +"拟 GPU 一样。" + +msgid "" +"Rendering device is provided by software emulation (such as Lavapipe or " +"[url=https://github.com/google/swiftshader]SwiftShader[/url]). This is the " +"slowest kind of rendering device available; it's typically much slower than " +"[constant DEVICE_TYPE_INTEGRATED_GPU]." +msgstr "" +"渲染设备由软件模拟提供(例如 Lavapipe 或 [url=https://github.com/google/" +"swiftshader]SwiftShader[/url])。这是可用的渲染设备中最慢的一种;通常比 " +"[constant DEVICE_TYPE_INTEGRATED_GPU] 要慢很多。" + msgid "Represents the size of the [enum DeviceType] enum." msgstr "代表 [enum DeviceType] 枚举的大小。" @@ -84429,6 +90523,16 @@ msgstr "绘制直线的图元。" msgid "Exclusive or (XOR) logic operation." msgstr "逻辑异或(XOR)运算。" +msgid "Additive blending operation ([code]source + destination[/code])." +msgstr "加法混合运算([code]source + destination[/code])。" + +msgid "Subtractive blending operation ([code]source - destination[/code])." +msgstr "减法混合运算([code]source - destination[/code])。" + +msgid "" +"Reverse subtractive blending operation ([code]destination - source[/code])." +msgstr "逆减法混合运算([code]destination - source[/code])。" + msgid "Minimum blending operation (keep the lowest value of the two)." msgstr "最小混合运算(保留两者之间的较小值)。" @@ -84551,6 +90655,21 @@ msgstr "" "BakeChannels] 中指定的材质属性的 [Image] 数组。" msgid "" +"Creates a camera attributes object and adds it to the RenderingServer. It " +"can be accessed with the RID that is returned. This RID will be used in all " +"[code]camera_attributes_[/code] RenderingServer functions.\n" +"Once finished with your RID, you will want to free the RID using the " +"RenderingServer's [method free_rid] static method.\n" +"This is the internal equivalent of the [CameraAttributes] resource." +msgstr "" +"创建空的相机属性并将其添加到 RenderingServer。可以通过返回的 RID 进行访问。这" +"个 RID 会在所有 [code]camera_attributes_*[/code] RenderingServer 函数中使" +"用。\n" +"RID 使用结束后,应该使用 RenderingServer 的 [method free_rid] 静态方法进行释" +"放。\n" +"这是 [CameraAttributes] 资源的内部等价物。" + +msgid "" "Sets the parameters to use with the auto-exposure effect. These parameters " "take on the same meaning as their counterparts in [CameraAttributes] and " "[CameraAttributesPractical]." @@ -84582,6 +90701,53 @@ msgstr "" "use_jitter] 可用于抖动模糊过程中采集的样本,以隐藏伪影,代价是看起来更模糊。" msgid "" +"Sets the exposure values that will be used by the renderers. The " +"normalization amount is used to bake a given Exposure Value (EV) into " +"rendering calculations to reduce the dynamic range of the scene.\n" +"The normalization factor can be calculated from exposure value (EV100) as " +"follows:\n" +"[codeblock]\n" +"func get_exposure_normalization(float ev100):\n" +" \t\t\t return 1.0 / (pow(2.0, ev100) * 1.2)\n" +"[/codeblock]\n" +"The exposure value can be calculated from aperture (in f-stops), shutter " +"speed (in seconds), and sensitivity (in ISO) as follows:\n" +"[codeblock]\n" +"func get_exposure(float aperture, float shutter_speed, float sensitivity):\n" +" return log2((aperture * aperture) / shutterSpeed * (100.0 / " +"sensitivity))\n" +"[/codeblock]" +msgstr "" +"设置渲染器所使用的曝光值。归一化量用于将给定的曝光值(Exposure Value,EV)烘" +"焙进渲染计算,从而降低场景的动态范围。\n" +"可以用如下方法根据曝光值(EV100)来计算归一化系数:\n" +"[codeblock]\n" +"func get_exposure_normalization(float ev100):\n" +" \t\t\t return 1.0 / (pow(2.0, ev100) * 1.2)\n" +"[/codeblock]\n" +"可以使用如下方法根据光圈(单位为 F 值)、快门速度(单位为秒)、感光度(单位" +"为 ISO)来计算曝光值:\n" +"[codeblock]\n" +"func get_exposure(float aperture, float shutter_speed, float sensitivity):\n" +" return log2((aperture * aperture) / shutterSpeed * (100.0 / " +"sensitivity))\n" +"[/codeblock]" + +msgid "" +"Creates a camera and adds it to the RenderingServer. It can be accessed with " +"the RID that is returned. This RID will be used in all [code]camera_*[/code] " +"RenderingServer functions.\n" +"Once finished with your RID, you will want to free the RID using the " +"RenderingServer's [method free_rid] static method.\n" +"This is the internal equivalent of the [Camera3D] node." +msgstr "" +"创建相机并将其添加到 RenderingServer。可以通过返回的 RID 进行访问。这个 RID " +"会在所有 [code]camera_*[/code] RenderingServer 函数中使用。\n" +"RID 使用结束后,应该使用 RenderingServer 的 [method free_rid] 静态方法进行释" +"放。\n" +"这是 [Camera3D] 节点的内部等价物。" + +msgid "" "Sets the camera_attributes created with [method camera_attributes_create] to " "the given camera." msgstr "" @@ -84589,6 +90755,26 @@ msgstr "" "的相机。" msgid "" +"Sets the cull mask associated with this camera. The cull mask describes " +"which 3D layers are rendered by this camera. Equivalent to [member Camera3D." +"cull_mask]." +msgstr "" +"设置与该相机关联的剔除掩码。剔除掩码描述了该相机渲染了哪些 3D 图层。相当于 " +"[member Camera3D.cull_mask]。" + +msgid "" +"Sets the environment used by this camera. Equivalent to [member Camera3D." +"environment]." +msgstr "设置该相机使用的环境。相当于 [member Camera3D.environment]。" + +msgid "" +"Sets camera to use frustum projection. This mode allows adjusting the [param " +"offset] argument to create \"tilted frustum\" effects." +msgstr "" +"将相机设置为使用视锥投影。该模式允许调整 [param offset] 参数以创建“倾斜视" +"锥”效果。" + +msgid "" "Sets camera to use orthogonal projection, also known as orthographic " "projection. Objects remain the same size on the screen no matter how far " "away they are." @@ -84605,6 +90791,30 @@ msgid "Sets [Transform3D] of camera." msgstr "设置相机的 [Transform3D]。" msgid "" +"If [code]true[/code], preserves the horizontal aspect ratio which is " +"equivalent to [constant Camera3D.KEEP_WIDTH]. If [code]false[/code], " +"preserves the vertical aspect ratio which is equivalent to [constant " +"Camera3D.KEEP_HEIGHT]." +msgstr "" +"如果为 [code]true[/code],则保留水平长宽比,相当于 [constant Camera3D." +"KEEP_WIDTH]。如果为 [code]false[/code],则保留垂直长宽比,相当于 [constant " +"Camera3D.KEEP_HEIGHT]。" + +msgid "" +"Creates a canvas and returns the assigned [RID]. It can be accessed with the " +"RID that is returned. This RID will be used in all [code]canvas_*[/code] " +"RenderingServer functions.\n" +"Once finished with your RID, you will want to free the RID using the " +"RenderingServer's [method free_rid] static method.\n" +"Canvas has no [Resource] or [Node] equivalent." +msgstr "" +"创建画布并将其添加到 RenderingServer。可以通过返回的 RID 进行访问。这个 RID " +"会在所有 [code]canvas_*[/code] RenderingServer 函数中使用。\n" +"RID 使用结束后,应该使用 RenderingServer 的 [method free_rid] 静态方法进行释" +"放。\n" +"没有与画布等价的 [Resource] 或 [Node]。" + +msgid "" "Draws a circle on the [CanvasItem] pointed to by the [param item] [RID]. See " "also [method CanvasItem.draw_circle]." msgstr "" @@ -84683,9 +90893,45 @@ msgstr "" "在 [param item] [RID] 指向的 [CanvasItem] 上绘制一个矩形。另见 [method " "CanvasItem.draw_rect]。" +msgid "" +"Sets a [Transform2D] that will be used to transform subsequent canvas item " +"commands." +msgstr "设置将被用于变换后续画布项命令的 [Transform2D]。" + +msgid "" +"Draws a 2D textured rectangle on the [CanvasItem] pointed to by the [param " +"item] [RID]. See also [method CanvasItem.draw_texture_rect] and [method " +"Texture2D.draw_rect]." +msgstr "" +"在 [param item] [RID] 指向的 [CanvasItem] 上绘制一个有纹理的 2D 矩形。另见 " +"[method CanvasItem.draw_texture_rect] 和 [method Texture2D.draw_rect]。" + +msgid "" +"Draws the specified region of a 2D textured rectangle on the [CanvasItem] " +"pointed to by the [param item] [RID]. See also [method CanvasItem." +"draw_texture_rect_region] and [method Texture2D.draw_rect_region]." +msgstr "" +"在 [param item] [RID] 指向的 [CanvasItem] 上绘制一个有纹理 2D 矩形的特定区" +"域。另见 [method CanvasItem.draw_texture_rect_region] 和 [method Texture2D." +"draw_rect_region]。" + msgid "Clears the [CanvasItem] and removes all commands in it." msgstr "清除[CanvasItem]并删除其中的所有命令。" +msgid "" +"Creates a canvas item and returns the assigned [RID]. It can be accessed " +"with the RID that is returned. This RID will be used in all " +"[code]canvas_item_*[/code] RenderingServer functions.\n" +"Once finished with your RID, you will want to free the RID using the " +"RenderingServer's [method free_rid] static method.\n" +"This is the internal equivalent of the [CanvasItem] node." +msgstr "" +"创建画布项目并返回分配的 [RID]。可以通过返回的 RID 进行访问。这个 RID 会在所" +"有 [code]canvas_item_*[/code] RenderingServer 函数中使用。\n" +"RID 使用结束后,应该使用 RenderingServer 的 [method free_rid] 静态方法进行释" +"放。\n" +"这是 [CanvasItem] 节点的内部等价物。" + msgid "Sets the [CanvasItem] to copy a rect to the backbuffer." msgstr "设置 [CanvasItem] 以将矩形复制到后台缓冲区。" @@ -84695,6 +90941,35 @@ msgstr "设置 [CanvasItem] 的索引。" msgid "Sets a new material to the [CanvasItem]." msgstr "为 [CanvasItem] 设置新材质。" +msgid "" +"Sets a color modulation to the [CanvasItem]. This also affects child canvas " +"items." +msgstr "为 [CanvasItem] 设置调制颜色。也会影响子级画布项目。" + +msgid "" +"Sets a parent [CanvasItem] to the [CanvasItem]. The item will inherit " +"transform, modulation and visibility from its parent, like [CanvasItem] " +"nodes in the scene tree." +msgstr "" +"为 [CanvasItem] 设置父级 [CanvasItem]。该项目会从父级继承变换、调制、可见性," +"和场景树中的 [CanvasItem] 节点一样。" + +msgid "" +"Sets a color self-modulation to the [CanvasItem]. It does not affect the " +"child canvas items." +msgstr "为 [CanvasItem] 设置自调制颜色。不会影响子级画布项目。" + +msgid "Enables or disables Y-sorting of a [CanvasItem]." +msgstr "启用或禁用 [CanvasItem] 的 Y 排序。" + +msgid "" +"Sets the transform of the [CanvasItem]. It affects where and how the item " +"will be drawn. Child canvas items' transforms are multiplied by their " +"parent's transform." +msgstr "" +"设置 [CanvasItem] 的变换。会影响该项目在哪里绘制以及如何绘制。子级画布项目的" +"变换会与其父级变换相乘。" + msgid "Sets if the [CanvasItem] uses its parent's material." msgstr "设置 [CanvasItem] 是否使用其父级的材质。" @@ -84707,6 +90982,23 @@ msgstr "" "[Viewport] 节点才会渲染这个 [CanvasItem]。" msgid "" +"Sets the given [CanvasItem] as visibility notifier. [param area] defines the " +"area of detecting visibility. [param enter_callable] is called when the " +"[CanvasItem] enters the screen, [param exit_callable] is called when the " +"[CanvasItem] exits the screen. If [param enable] is [code]false[/code], the " +"item will no longer function as notifier.\n" +"This method can be used to manually mimic [VisibleOnScreenNotifier2D]." +msgstr "" +"将给定的 [CanvasItem] 设置为可见性通知器。[param area] 定义可见性检查的区域。" +"[CanvasItem] 进入屏幕时会调用 [param enter_callable],[CanvasItem] 退出屏幕时" +"会调用 [param exit_callable]。如果 [param enable] 为 [code]false[/code],则该" +"项目将不再作为通知器。\n" +"这个方法可用于手动模仿 [VisibleOnScreenNotifier2D]。" + +msgid "Sets the visibility of the [CanvasItem]." +msgstr "设置 [CanvasItem] 的可见性。" + +msgid "" "If this is enabled, the Z index of the parent will be added to the " "children's Z index." msgstr "如果启用此选项,则父项的 Z 索引将添加到子项的 Z 索引中。" @@ -84737,6 +91029,19 @@ msgid "" "Attaches a light occluder to the canvas. Removes it from its previous canvas." msgstr "将光遮挡物添加到画布上,并将其从之前的画布中移除。" +msgid "" +"Creates a light occluder and adds it to the RenderingServer. It can be " +"accessed with the RID that is returned. This RID will be used in all " +"[code]canvas_light_occluder_*[/code] RenderingServer functions.\n" +"Once finished with your RID, you will want to free the RID using the " +"RenderingServer's [method free_rid] static method." +msgstr "" +"创建光线遮挡器并将其添加到 RenderingServer。可以通过返回的 RID 进行访问。这" +"个 RID 会在所有 [code]canvas_light_occluder_*[/code] RenderingServer 函数中使" +"用。\n" +"RID 使用结束后,应该使用 RenderingServer 的 [method free_rid] 静态方法进行释" +"放。" + msgid "Enables or disables light occluder." msgstr "启用或禁用遮光器。" @@ -84750,6 +91055,13 @@ msgstr "设置光遮挡物的多边形。" msgid "Sets a light occluder's [Transform2D]." msgstr "设置光遮挡物的 [Transform2D]。" +msgid "" +"Sets the blend mode for the given canvas light. See [enum " +"CanvasLightBlendMode] for options. Equivalent to [member Light2D.blend_mode]." +msgstr "" +"设置给定画布灯光的混合模式。选项见 [enum CanvasLightBlendMode]。等价于 " +"[member Light2D.blend_mode]。" + msgid "Sets the color for a light." msgstr "设置灯光的颜色。" @@ -84848,6 +91160,26 @@ msgid "Modulates all colors in the given canvas." msgstr "调制给定画布中的所有颜色。" msgid "" +"Creates a canvas texture and adds it to the RenderingServer. It can be " +"accessed with the RID that is returned. This RID will be used in all " +"[code]canvas_texture_*[/code] RenderingServer functions.\n" +"Once finished with your RID, you will want to free the RID using the " +"RenderingServer's [method free_rid] static method.\n" +"This is the internal equivalent of the [CanvasTexture] resource." +msgstr "" +"创建画布纹理并将其添加到 RenderingServer。可以通过返回的 RID 进行访问。这个 " +"RID 会在所有 [code]canvas_texture_*[/code] RenderingServer 函数中使用。\n" +"RID 使用结束后,应该使用 RenderingServer 的 [method free_rid] 静态方法进行释" +"放。\n" +"这是 [CanvasTexture] 资源的内部等价物。" + +msgid "Sets the texture filter used by the [CanvasTexture]." +msgstr "设置该 [CanvasTexture] 所使用的纹理过滤模式。" + +msgid "Sets the texture repeat used by the [CanvasTexture]." +msgstr "设置该 [CanvasTexture] 所使用的纹理重复模式。" + +msgid "" "Creates a RenderingDevice that can be used to do draw and compute operations " "on a separate thread. Cannot draw to the screen nor share data with the " "global RenderingDevice.\n" @@ -84860,6 +91192,61 @@ msgstr "" "[code]null[/code] 。" msgid "" +"Creates a decal and adds it to the RenderingServer. It can be accessed with " +"the RID that is returned. This RID will be used in all [code]decal_*[/code] " +"RenderingServer functions.\n" +"Once finished with your RID, you will want to free the RID using the " +"RenderingServer's [method free_rid] static method.\n" +"This is the internal equivalent of the [Decal] node." +msgstr "" +"创建贴花并将其添加到 RenderingServer。可以通过返回的 RID 进行访问。这个 RID " +"会在所有 [code]decal_*[/code] RenderingServer 函数中使用。\n" +"RID 使用结束后,应该使用 RenderingServer 的 [method free_rid] 静态方法进行释" +"放。\n" +"这是 [Decal] 节点的内部等价物。" + +msgid "Sets the color modulation of the [Decal]." +msgstr "设置该 [Decal] 的调制颜色。" + +msgid "Sets the size of the [Decal]." +msgstr "设置该 [Decal] 的大小。" + +msgid "Sets the texture of the [Decal]." +msgstr "设置该 [Decal] 的纹理。" + +msgid "" +"Creates a directional light and adds it to the RenderingServer. It can be " +"accessed with the RID that is returned. This RID can be used in most " +"[code]light_*[/code] RenderingServer functions.\n" +"Once finished with your RID, you will want to free the RID using the " +"RenderingServer's [method free_rid] static method.\n" +"To place in a scene, attach this directional light to an instance using " +"[method instance_set_base] using the returned RID.\n" +"This is the internal equivalent of the [DirectionalLight3D] node." +msgstr "" +"新建平行光并将其添加到 RenderingServer。可以通过返回的 RID 进行访问。这个 " +"RID 会在大多数 [code]light_*[/code] RenderingServer 函数中使用。\n" +"RID 使用结束后,应该使用 RenderingServer 的 [method free_rid] 静态方法进行释" +"放。\n" +"如果要将这个平行光放置到场景中,请使用返回的 RID 调用 [method " +"instance_set_base],将其附加至某个实例上。\n" +"这是 [DirectionalLight3D] 节点的内部等价物。" + +msgid "" +"Creates an environment and adds it to the RenderingServer. It can be " +"accessed with the RID that is returned. This RID will be used in all " +"[code]environment_*[/code] RenderingServer functions.\n" +"Once finished with your RID, you will want to free the RID using the " +"RenderingServer's [method free_rid] static method.\n" +"This is the internal equivalent of the [Environment] resource." +msgstr "" +"新建一个环境并将其添加到 RenderingServer。可以通过返回的 RID 进行访问。这个 " +"RID 会在所有 [code]environment_*[/code] RenderingServer 函数中使用。\n" +"RID 使用结束后,应该使用 RenderingServer 的 [method free_rid] 静态方法进行释" +"放。\n" +"这是 [Environment] 资源的内部等价物。" + +msgid "" "Sets the values to be used with the \"Adjustment\" post-process effect. See " "[Environment] for more details." msgstr "设置用于 \"调整 \"后处理效果的数值。参阅[Environment]以了解更多细节。" @@ -84882,6 +91269,27 @@ msgid "Sets the maximum layer to use if using Canvas background mode." msgstr "如果使用画布背景模式,设置要使用的最大层数。" msgid "" +"Sets the [Sky] to be used as the environment's background when using " +"[i]BGMode[/i] sky. Equivalent to [member Environment.sky]." +msgstr "" +"设置当使用 [i]BGMode[/i] 天空时被用作环境背景的 [Sky]。相当于 [member " +"Environment.sky]。" + +msgid "" +"Sets a custom field of view for the background [Sky]. Equivalent to [member " +"Environment.sky_custom_fov]." +msgstr "" +"为背景 [Sky] 设置自定义视野。相当于 [member Environment.sky_custom_fov]。" + +msgid "" +"Sets the rotation of the background [Sky] expressed as a [Basis]. Equivalent " +"to [member Environment.sky_rotation], where the rotation vector is used to " +"construct the [Basis]." +msgstr "" +"设置被表示为 [Basis] 的背景 [Sky] 的旋转。相当于 [member Environment." +"sky_rotation],其中旋转向量用于构建该 [Basis]。" + +msgid "" "Sets the variables to be used with the screen-space ambient occlusion (SSAO) " "post-process effect. See [Environment] for more details." msgstr "" @@ -84911,6 +91319,35 @@ msgid "" msgstr "设置用于“色调映射”后处理效果的变量。详情请参阅 [Environment]。" msgid "" +"Enables filtering of the volumetric fog scattering buffer. This results in " +"much smoother volumes with very few under-sampling artifacts." +msgstr "" +"启用体积雾散射缓冲区的过滤。这会产生更平滑的体积,并且几乎没有欠采样伪影。" + +msgid "" +"Sets the resolution of the volumetric fog's froxel buffer. [param size] is " +"modified by the screen's aspect ratio and then used to set the width and " +"height of the buffer. While [param depth] is directly used to set the depth " +"of the buffer." +msgstr "" +"设置体积雾的片段体素缓冲区分辨率。[param size] 会被屏幕的纵横比修改,用于设置" +"缓冲区的宽度和高度。[param depth] 则用于设置缓冲区的深度。" + +msgid "" +"Creates a fog volume and adds it to the RenderingServer. It can be accessed " +"with the RID that is returned. This RID will be used in all " +"[code]fog_volume_*[/code] RenderingServer functions.\n" +"Once finished with your RID, you will want to free the RID using the " +"RenderingServer's [method free_rid] static method.\n" +"This is the internal equivalent of the [FogVolume] node." +msgstr "" +"创建雾体积并将其添加到 RenderingServer。可以通过返回的 RID 进行访问。这个 " +"RID 会在所有 [code]fog_volume_*[/code] RenderingServer 函数中使用。\n" +"RID 使用结束后,应该使用 RenderingServer 的 [method free_rid] 静态方法进行释" +"放。\n" +"这是 [FogVolume] 节点的内部等价物。" + +msgid "" "Sets the [Material] of the fog volume. Can be either a [FogMaterial] or a " "custom [ShaderMaterial]." msgstr "" @@ -84929,6 +91366,17 @@ msgstr "" "FOG_VOLUME_SHAPE_CYLINDER]、[constant RenderingServer.FOG_VOLUME_SHAPE_BOX] " "或 [constant RenderingServer.FOG_VOLUME_SHAPE_WORLD]。" +msgid "" +"Sets the size of the fog volume when shape is [constant RenderingServer." +"FOG_VOLUME_SHAPE_ELLIPSOID], [constant RenderingServer." +"FOG_VOLUME_SHAPE_CONE], [constant RenderingServer.FOG_VOLUME_SHAPE_CYLINDER] " +"or [constant RenderingServer.FOG_VOLUME_SHAPE_BOX]." +msgstr "" +"设置形状为 [constant RenderingServer.FOG_VOLUME_SHAPE_ELLIPSOID]、[constant " +"RenderingServer.FOG_VOLUME_SHAPE_CONE]、[constant RenderingServer." +"FOG_VOLUME_SHAPE_CYLINDER] 或 [constant RenderingServer." +"FOG_VOLUME_SHAPE_BOX] 时,雾体积的大小。" + msgid "Tries to free an object in the RenderingServer." msgstr "尝试释放 RenderingServer 中的某个对象。" @@ -84978,6 +91426,22 @@ msgstr "" "[b]注意:[/b]当运行一个精简或服务器可执行文件时,这个函数返回一个空字符串。" msgid "" +"Returns the type of the video adapter. Since dedicated graphics cards from a " +"given generation will [i]usually[/i] be significantly faster than integrated " +"graphics made in the same generation, the device type can be used as a basis " +"for automatic graphics settings adjustment. However, this is not always " +"true, so make sure to provide users with a way to manually override graphics " +"settings.\n" +"[b]Note:[/b] When using the OpenGL backend or when running in headless mode, " +"this function always returns [constant RenderingDevice.DEVICE_TYPE_OTHER]." +msgstr "" +"返回视频适配器的类型。由于给定代的专用显卡[i]通常[/i]明显快于同一代制造的集成" +"显卡,因此设备类型可用作自动图形设置调整的基础。然而,这并不总是正确的,因此" +"请确保为用户提供一种手动覆盖图形设置的方法。\n" +"[b]注意:[/b]当使用 OpenGL 后端或在无头模式下运行时,该函数始终返回 " +"[constant RenderingDevice.DEVICE_TYPE_OTHER]。" + +msgid "" "Returns the vendor of the video adapter (e.g. \"NVIDIA Corporation\").\n" "[b]Note:[/b] When running a headless or server binary, this function returns " "an empty string." @@ -84989,6 +91453,23 @@ msgid "Returns the ID of a white texture. Creates one if none exists." msgstr "返回白色纹理的 ID。如果不存在,则创建一个。" msgid "" +"If [param half_resolution] is [code]true[/code], renders [VoxelGI] and SDFGI " +"([member Environment.sdfgi_enabled]) buffers at halved resolution (e.g. " +"960×540 when the viewport size is 1920×1080). This improves performance " +"significantly when VoxelGI or SDFGI is enabled, at the cost of artifacts " +"that may be visible on polygon edges. The loss in quality becomes less " +"noticeable as the viewport resolution increases. [LightmapGI] rendering is " +"not affected by this setting. See also [member ProjectSettings.rendering/" +"global_illumination/gi/use_half_resolution]." +msgstr "" +"如果 [param half_resolution] 为 [code]true[/code],则会使用一半的分辨率渲染 " +"[VoxelGI] 和 SDFGI([member Environment.sdfgi_enabled])缓冲区(例如视口大小" +"为 1920×1080 时使用 960×540)。启用 VoxelGI 或 SDFGI 时,这样做能够显著提升性" +"能,但代价是多边形边缘可能产生显示问题。视口分辨率越高,越不容易注意到质量的" +"损失。[LightmapGI] 的渲染不受这个设置的影响。另见 [member ProjectSettings." +"rendering/global_illumination/gi/use_half_resolution]。" + +msgid "" "Returns [code]true[/code] if changes have been made to the RenderingServer's " "data. [method force_draw] is usually called if this happens." msgstr "" @@ -85020,6 +91501,25 @@ msgid "" msgstr "将骨架附加到实例。并从实例中移除之前骨架。" msgid "" +"Creates a visual instance and adds it to the RenderingServer. It can be " +"accessed with the RID that is returned. This RID will be used in all " +"[code]instance_*[/code] RenderingServer functions.\n" +"Once finished with your RID, you will want to free the RID using the " +"RenderingServer's [method free_rid] static method.\n" +"An instance is a way of placing a 3D object in the scenario. Objects like " +"particles, meshes, and reflection probes need to be associated with an " +"instance to be visible in the scenario using [method instance_set_base].\n" +"This is the internal equivalent of the [VisualInstance3D] node." +msgstr "" +"创建可视实例并将其添加到 RenderingServer。可以通过返回的 RID 进行访问。这个 " +"RID 会在所有 [code]instance_*[/code] RenderingServer 函数中使用。\n" +"RID 使用结束后,应该使用 RenderingServer 的 [method free_rid] 静态方法进行释" +"放。\n" +"实例可以将 3D 对象放置到场景中。粒子、网格、反射探针等对象都需要使用 [method " +"instance_set_base] 与实例关联,才能显示在场景中。\n" +"这是 [VisualInstance3D] 节点的内部等价物。" + +msgid "" "Creates a visual instance, adds it to the RenderingServer, and sets both " "base and scenario. It can be accessed with the RID that is returned. This " "RID will be used in all [code]instance_*[/code] RenderingServer functions.\n" @@ -85032,15 +91532,110 @@ msgstr "" "放。" msgid "" +"Sets the shadow casting setting to one of [enum ShadowCastingSetting]. " +"Equivalent to [member GeometryInstance3D.cast_shadow]." +msgstr "" +"将阴影的投射设置设置为 [enum ShadowCastingSetting] 之一。相当于 [member " +"GeometryInstance3D.cast_shadow]。" + +msgid "" "Sets the flag for a given [enum InstanceFlags]. See [enum InstanceFlags] for " "more details." msgstr "" "设置给定的 [enum InstanceFlags] 标志。更多细节请参阅 [enum InstanceFlags]。" +msgid "" +"Sets a material that will be rendered for all surfaces on top of active " +"materials for the mesh associated with this instance. Equivalent to [member " +"GeometryInstance3D.material_overlay]." +msgstr "" +"设置一个材质,该材质将在与该实例关联的网格的活动材质之上,为所有表面渲染。相" +"当于[member GeometryInstance3D.material_overlay]。" + +msgid "" +"Sets a material that will override the material for all surfaces on the mesh " +"associated with this instance. Equivalent to [member GeometryInstance3D." +"material_override]." +msgstr "" +"设置一种材质,该材质将覆盖与此实例关联的网格上的所有表面的材质。相当于 " +"[member GeometryInstance3D.material_override]。" + +msgid "" +"Sets the transparency for the given geometry instance. Equivalent to [member " +"GeometryInstance3D.transparency].\n" +"A transparency of [code]0.0[/code] is fully opaque, while [code]1.0[/code] " +"is fully transparent. Values greater than [code]0.0[/code] (exclusive) will " +"force the geometry's materials to go through the transparent pipeline, which " +"is slower to render and can exhibit rendering issues due to incorrect " +"transparency sorting. However, unlike using a transparent material, setting " +"[param transparency] to a value greater than [code]0.0[/code] (exclusive) " +"will [i]not[/i] disable shadow rendering.\n" +"In spatial shaders, [code]1.0 - transparency[/code] is set as the default " +"value of the [code]ALPHA[/code] built-in.\n" +"[b]Note:[/b] [param transparency] is clamped between [code]0.0[/code] and " +"[code]1.0[/code], so this property cannot be used to make transparent " +"materials more opaque than they originally are." +msgstr "" +"设置给定几何体实例的透明度。相当于 [member GeometryInstance3D." +"transparency]。\n" +"透明度为 [code]0.0[/code] 时完全不透明,为 [code]1.0[/code] 时则完全透明。如" +"果值比 [code]0.0[/code] 大,则会强制让几何体的材质经过透明管线,渲染起来相对" +"较慢,可能由于错误的透明排序而产生渲染问题。不过,与使用透明材质不同,将 " +"[param transparency] 设置为比 [code]0.0[/code] 大的值[i]不会[/i]禁用阴影的渲" +"染。\n" +"在空间着色器中,内置 [code]ALPHA[/code] 的默认值为 [code]1.0 - transparency[/" +"code]。\n" +"[b]注意:[/b][param transparency] 会被钳制在 [code]0.0[/code] 和 [code]1.0[/" +"code] 的范围内,所以这个属性无法让透明材质比原来更不透明。" + +msgid "" +"Sets the visibility range values for the given geometry instance. Equivalent " +"to [member GeometryInstance3D.visibility_range_begin] and related properties." +msgstr "" +"设置给定几何实例的可见性范围值。相当于 [member GeometryInstance3D." +"visibility_range_begin] 和相关属性。" + +msgid "" +"Sets the base of the instance. A base can be any of the 3D objects that are " +"created in the RenderingServer that can be displayed. For example, any of " +"the light types, mesh, multimesh, immediate geometry, particle system, " +"reflection probe, lightmap, and the GI probe are all types that can be set " +"as the base of an instance in order to be displayed in the scenario." +msgstr "" +"设置该实例的基础。基础可以是在 RenderingServer 中创建的任何可以显示的 3D 对" +"象。例如,任何光源类型、网格、多重网格、直接几何体、粒子系统、反射探针、光照" +"贴图、和 GI 探针都可以被设置为实例的基础,以便在场景中显示。" + msgid "Sets the weight for a given blend shape associated with this instance." msgstr "设置与该实例相关的特定混合形状的权重。" msgid "" +"Sets a custom AABB to use when culling objects from the view frustum. " +"Equivalent to setting [member GeometryInstance3D.custom_aabb]." +msgstr "" +"设置将对象从视锥中剔除时使用的自定义 AABB。相当于设置 [member " +"GeometryInstance3D.custom_aabb]。" + +msgid "" +"Sets a margin to increase the size of the AABB when culling objects from the " +"view frustum. This allows you to avoid culling objects that fall outside the " +"view frustum. Equivalent to [member GeometryInstance3D.extra_cull_margin]." +msgstr "" +"设置将对象从视锥中剔除时为 AABB 增加的边距大小。这样就可以避免剔除落在视锥外" +"的对象。相当于 [member GeometryInstance3D.extra_cull_margin]。" + +msgid "" +"Sets the render layers that this instance will be drawn to. Equivalent to " +"[member VisualInstance3D.layers]." +msgstr "" +"设置这个实例要绘制到的渲染层。相当于 [member VisualInstance3D.layers]。" + +msgid "" +"Sets the sorting offset and switches between using the bounding box or " +"instance origin for depth sorting." +msgstr "设置排序偏移量,并在使用包围框还是实例原点进行深度排序之间进行切换。" + +msgid "" "Sets the scenario that the instance is in. The scenario is the 3D world that " "the objects will be displayed in." msgstr "设置实例所在的场景。场景是对象将在其中显示的 3D 世界。" @@ -85068,10 +91663,120 @@ msgid "" msgstr "设置是否绘制实例。相当于 [member Node3D.visible]。" msgid "" +"Returns an array of object IDs intersecting with the provided AABB. Only " +"visual 3D nodes are considered, such as [MeshInstance3D] or " +"[DirectionalLight3D]. Use [method @GlobalScope.instance_from_id] to obtain " +"the actual nodes. A scenario RID must be provided, which is available in the " +"[World3D] you want to query. This forces an update for all resources queued " +"to update.\n" +"[b]Warning:[/b] This function is primarily intended for editor usage. For in-" +"game use cases, prefer physics collision." +msgstr "" +"返回与提供的 AABB 相交的对象 ID 的数组。仅考虑可视的 3D 节点,例如 " +"[MeshInstance3D] 或 [DirectionalLight3D]。可使用 [method @GlobalScope." +"instance_from_id] 来获取实际节点。必须提供一个场景 RID,且它在要查询的 " +"[World3D] 中可用。这会强制更新所有已被队列以等待更新的资源。\n" +"[b]警告:[/b]该函数主要供编辑器使用。对于游戏中的用例,最好是物理碰撞。" + +msgid "" +"Returns an array of object IDs intersecting with the provided convex shape. " +"Only visual 3D nodes are considered, such as [MeshInstance3D] or " +"[DirectionalLight3D]. Use [method @GlobalScope.instance_from_id] to obtain " +"the actual nodes. A scenario RID must be provided, which is available in the " +"[World3D] you want to query. This forces an update for all resources queued " +"to update.\n" +"[b]Warning:[/b] This function is primarily intended for editor usage. For in-" +"game use cases, prefer physics collision." +msgstr "" +"返回与提供的凸形相交的对象 ID 的数组。仅考虑可视的 3D 节点,例如 " +"[MeshInstance3D] 或 [DirectionalLight3D]。可使用 [method @GlobalScope." +"instance_from_id] 以获取实际节点。必须提供场景 RID,且它在要查询的 [World3D] " +"中可用。这会强制更新所有已被队列以等待更新的资源。\n" +"[b]警告:[/b]该函数主要供编辑器使用。对于游戏中的用例,最好是物理碰撞。" + +msgid "" +"Returns an array of object IDs intersecting with the provided 3D ray. Only " +"visual 3D nodes are considered, such as [MeshInstance3D] or " +"[DirectionalLight3D]. Use [method @GlobalScope.instance_from_id] to obtain " +"the actual nodes. A scenario RID must be provided, which is available in the " +"[World3D] you want to query. This forces an update for all resources queued " +"to update.\n" +"[b]Warning:[/b] This function is primarily intended for editor usage. For in-" +"game use cases, prefer physics collision." +msgstr "" +"返回与提供的 3D 射线相交的对象 ID 的数组。仅考虑可视的 3D 节点,例如 " +"[MeshInstance3D] 或 [DirectionalLight3D]。可使用 [method @GlobalScope." +"instance_from_id] 以获取实际节点。必须提供场景 RID,且它在你要查询的 " +"[World3D] 中可用。这会强制更新所有已被队列以等待更新的资源。\n" +"[b]警告:[/b]该函数主要供编辑器使用。对于游戏中的用例,最好是物理碰撞。" + +msgid "" +"If [code]true[/code], this directional light will blend between shadow map " +"splits resulting in a smoother transition between them. Equivalent to " +"[member DirectionalLight3D.directional_shadow_blend_splits]." +msgstr "" +"如果为 [code]true[/code],则该平行光将在阴影贴图分割之间混合,从而在它们之间" +"产生更平滑的过渡。相当于 [member DirectionalLight3D." +"directional_shadow_blend_splits]。" + +msgid "" +"Sets the shadow mode for this directional light. Equivalent to [member " +"DirectionalLight3D.directional_shadow_mode]. See [enum " +"LightDirectionalShadowMode] for options." +msgstr "" +"设置该平行光的阴影模式。相当于 [member DirectionalLight3D." +"directional_shadow_mode]。有关选项,请参阅 [enum " +"LightDirectionalShadowMode]。" + +msgid "" +"If [code]true[/code], this light will not be used for anything except sky " +"shaders. Use this for lights that impact your sky shader that you may want " +"to hide from affecting the rest of the scene. For example, you may want to " +"enable this when the sun in your sky shader falls below the horizon." +msgstr "" +"如果为 [code]true[/code],则该灯光将不会被用于除天空着色器之外的任何内容。将" +"其用于影响天空着色器的灯光,可能希望隐藏这些灯光以免影响场景的其余部分。例" +"如,当天空着色器中的太阳落在地平线以下时,可能希望启用该功能。" + +msgid "" +"Sets whether to use a dual paraboloid or a cubemap for the shadow map. Dual " +"paraboloid is faster but may suffer from artifacts. Equivalent to [member " +"OmniLight3D.omni_shadow_mode]." +msgstr "" +"设置是使用双抛物面还是立方体贴图作为阴影贴图。双抛物面速度更快,但可能会出现" +"伪影。相当于 [member OmniLight3D.omni_shadow_mode]。" + +msgid "" "Sets the color of the light. Equivalent to [member Light3D.light_color]." msgstr "设置灯光的颜色。相当于 [member Light3D.light_color]。" msgid "" +"Sets the cull mask for this Light3D. Lights only affect objects in the " +"selected layers. Equivalent to [member Light3D.light_cull_mask]." +msgstr "" +"设置此 Light3D 的剔除掩码。灯光仅影响选定层中的对象。相当于 [member Light3D." +"light_cull_mask]。" + +msgid "" +"Sets the distance fade for this Light3D. This acts as a form of level of " +"detail (LOD) and can be used to improve performance. Equivalent to [member " +"Light3D.distance_fade_enabled], [member Light3D.distance_fade_begin], " +"[member Light3D.distance_fade_shadow], and [member Light3D." +"distance_fade_length]." +msgstr "" +"设置该 Light3D 的淡入淡出距离。这充当了一种多细节层次(LOD)的形式,可用于提" +"高性能。相当于 [member Light3D.distance_fade_enabled]、[member Light3D." +"distance_fade_begin]、[member Light3D.distance_fade_shadow]、和 [member " +"Light3D.distance_fade_length]。" + +msgid "" +"If [code]true[/code], light will subtract light instead of adding light. " +"Equivalent to [member Light3D.light_negative]." +msgstr "" +"如果为 [code]true[/code],则灯光会对光进行扣除而不是增加。相当于 [member " +"Light3D.light_negative]。" + +msgid "" "Sets the specified light parameter. See [enum LightParam] for options. " "Equivalent to [method Light3D.set_param]." msgstr "" @@ -85082,12 +91787,68 @@ msgid "Not implemented in Godot 3.x." msgstr "在 Godot 3.x 中没有实现。" msgid "" +"If [code]true[/code], reverses the backface culling of the mesh. This can be " +"useful when you have a flat mesh that has a light behind it. If you need to " +"cast a shadow on both sides of the mesh, set the mesh to use double-sided " +"shadows with [method instance_geometry_set_cast_shadows_setting]. Equivalent " +"to [member Light3D.shadow_reverse_cull_face]." +msgstr "" +"如果为 [code]true[/code],则反转网格的背面剔除。当有一个背后有灯光的平面网格" +"时,这会很有用。如果需要在网格的两侧投射阴影,请使用 [method " +"instance_geometry_set_cast_shadows_setting],将网格设置为使用双面阴影。相当" +"于 [member Light3D.shadow_reverse_cull_face]。" + +msgid "" "If [code]true[/code], light will cast shadows. Equivalent to [member Light3D." "shadow_enabled]." msgstr "" "如果为 [code]true[/code],则灯光会投射阴影。相当于 [member Light3D." "shadow_enabled]。" +msgid "" +"Creates a lightmap GI and adds it to the RenderingServer. It can be accessed " +"with the RID that is returned. This RID will be used in all " +"[code]instance_*[/code] RenderingServer functions.\n" +"Once finished with your RID, you will want to free the RID using the " +"RenderingServer's [method free_rid] static method.\n" +"This is the internal equivalent of the [LightmapGI] node." +msgstr "" +"创建光照贴图 GI 并将其添加到 RenderingServer。可以通过返回的 RID 进行访问。这" +"个 RID 会在所有 [code]instance_*[/code] RenderingServer 函数中使用。\n" +"RID 使用结束后,应该使用 RenderingServer 的 [method free_rid] 静态方法进行释" +"放。\n" +"这是 [LightmapGI] 节点的内部等价物。" + +msgid "" +"Used to inform the renderer what exposure normalization value was used while " +"baking the lightmap. This value will be used and modulated at run time to " +"ensure that the lightmap maintains a consistent level of exposure even if " +"the scene-wide exposure normalization is changed at run time. For more " +"information see [method camera_attributes_set_exposure]." +msgstr "" +"用于通知渲染器在烘焙光照贴图时使用的曝光归一化值。该值将在运行时被使用和被调" +"制,以确保即使场景范围的曝光归一化值在运行时发生变化,光照贴图也能保持一致的" +"曝光水平。有关详细信息,请参阅 [method camera_attributes_set_exposure]。" + +msgid "" +"Returns a mesh of a sphere with the given number of horizontal and vertical " +"subdivisions." +msgstr "返回球体网格,具有给定数量的水平和垂直细分。" + +msgid "" +"Creates an empty material and adds it to the RenderingServer. It can be " +"accessed with the RID that is returned. This RID will be used in all " +"[code]material_*[/code] RenderingServer functions.\n" +"Once finished with your RID, you will want to free the RID using the " +"RenderingServer's [method free_rid] static method.\n" +"This is the internal equivalent of the [Material] resource." +msgstr "" +"创建空材质并将其添加到 RenderingServer。可以通过返回的 RID 进行访问。这个 " +"RID 会在所有 [code]material_*[/code] RenderingServer 函数中使用。\n" +"RID 使用结束后,应该使用 RenderingServer 的 [method free_rid] 静态方法进行释" +"放。\n" +"这是 [Material] 资源的内部等价物。" + msgid "Returns the value of a certain material's parameter." msgstr "返回特定材质的参数值。" @@ -85106,6 +91867,24 @@ msgstr "设置着色器材质的着色器。" msgid "Removes all surfaces from a mesh." msgstr "移除网格中的所有表面。" +msgid "" +"Creates a new mesh and adds it to the RenderingServer. It can be accessed " +"with the RID that is returned. This RID will be used in all [code]mesh_*[/" +"code] RenderingServer functions.\n" +"Once finished with your RID, you will want to free the RID using the " +"RenderingServer's [method free_rid] static method.\n" +"To place in a scene, attach this mesh to an instance using [method " +"instance_set_base] using the returned RID.\n" +"This is the internal equivalent of the [Mesh] resource." +msgstr "" +"新建网格并将其添加到 RenderingServer。可以通过返回的 RID 进行访问。这个 RID " +"会在所有 [code]mesh_*[/code] RenderingServer 函数中使用。\n" +"RID 使用结束后,应该使用 RenderingServer 的 [method free_rid] 静态方法进行释" +"放。\n" +"如果要将这个网格放置到场景中,请使用返回的 RID 调用 [method " +"instance_set_base],将其附加至某个实例上。\n" +"这是 [Mesh] 资源的内部等价物。" + msgid "Returns a mesh's blend shape count." msgstr "返回一个网格的混合形状数量。" @@ -85137,6 +91916,24 @@ msgid "Sets a mesh's surface's material." msgstr "设置网格表面的材质。" msgid "" +"Creates a new multimesh on the RenderingServer and returns an [RID] handle. " +"This RID will be used in all [code]multimesh_*[/code] RenderingServer " +"functions.\n" +"Once finished with your RID, you will want to free the RID using the " +"RenderingServer's [method free_rid] static method.\n" +"To place in a scene, attach this multimesh to an instance using [method " +"instance_set_base] using the returned RID.\n" +"This is the internal equivalent of the [MultiMesh] resource." +msgstr "" +"新建多网格并将其添加到 RenderingServer。可以通过返回的 RID 进行访问。这个 " +"RID 会在所有 [code]multimesh_*[/code] RenderingServer 函数中使用。\n" +"RID 使用结束后,应该使用 RenderingServer 的 [method free_rid] 静态方法进行释" +"放。\n" +"如果要将这个多网格放置到场景中,请使用返回的 RID 调用 [method " +"instance_set_base],将其附加至某个实例上。\n" +"这是 [MultiMesh] 资源的内部等价物。" + +msgid "" "Calculates and returns the axis-aligned bounding box that encloses all " "instances within the multimesh." msgstr "计算并返回轴对齐的包围盒,该包围盒将所有的实例都包含在 multimesh 中。" @@ -85779,6 +92576,42 @@ msgstr "" "小。" msgid "" +"Sets scaling 3d mode. Bilinear scaling renders at different resolution to " +"either undersample or supersample the viewport. FidelityFX Super Resolution " +"1.0, abbreviated to FSR, is an upscaling technology that produces high " +"quality images at fast framerates by using a spatially aware upscaling " +"algorithm. FSR is slightly more expensive than bilinear, but it produces " +"significantly higher image quality. FSR should be used where possible." +msgstr "" +"设置缩放 3d 模式。双线性缩放以不同的分辨率渲染,以对视口进行欠采样或超采样。" +"FidelityFX 超分辨率 1.0,缩写为 FSR,是一种放大技术,通过使用空间感知放大算法" +"以快速帧速率生成高质量图像。FSR 比双线性稍微贵一点,但它产生的图像质量明显更" +"高。应尽可能使用 FSR。" + +msgid "" +"Scales the 3D render buffer based on the viewport size uses an image filter " +"specified in [enum ViewportScaling3DMode] to scale the output image to the " +"full viewport size. Values lower than [code]1.0[/code] can be used to speed " +"up 3D rendering at the cost of quality (undersampling). Values greater than " +"[code]1.0[/code] are only valid for bilinear mode and can be used to improve " +"3D rendering quality at a high performance cost (supersampling). See also " +"[enum ViewportMSAA] for multi-sample antialiasing, which is significantly " +"cheaper but only smoothens the edges of polygons.\n" +"When using FSR upscaling, AMD recommends exposing the following values as " +"preset options to users \"Ultra Quality: 0.77\", \"Quality: 0.67\", " +"\"Balanced: 0.59\", \"Performance: 0.5\" instead of exposing the entire " +"scale." +msgstr "" +"根据视图大小,缩放 3D 渲染缓冲区,使用 [enum ViewportScaling3DMode] 中指定的" +"图像过滤器,将输出图像缩放到完整视图大小。低于 [code]1.0[/code] 的值,可用于" +"加速 3D 渲染,但会以质量为代价(欠采样)。大于 [code]1.0[/code] 的值,仅对双" +"线性模式有效,可用于以较高的性能成本(超级采样),提高 3D 渲染质量。另请参阅 " +"[enum ViewportMSAA] 以了解多重采样抗锯齿,这要便宜得多,但只会平滑多边形的边" +"缘。\n" +"在使用 FSR 放大时,AMD 建议将以下值,作为预设选项公开给用户:“超质量:" +"0.77”、“质量:0.67”、“平衡:0.59”、“性能:0.5”,而不是公开整个比例。" + +msgid "" "Sets a viewport's scenario.\n" "The scenario contains information about environment information, reflection " "atlas etc." @@ -85790,6 +92623,30 @@ msgid "Sets the viewport's width and height." msgstr "设置视口的宽度和高度。" msgid "" +"Affects the final texture sharpness by reading from a lower or higher mipmap " +"(also called \"texture LOD bias\"). Negative values make mipmapped textures " +"sharper but grainier when viewed at a distance, while positive values make " +"mipmapped textures blurrier (even when up close). To get sharper textures at " +"a distance without introducing too much graininess, set this between " +"[code]-0.75[/code] and [code]0.0[/code]. Enabling temporal antialiasing " +"([member ProjectSettings.rendering/anti_aliasing/quality/use_taa]) can help " +"reduce the graininess visible when using negative mipmap bias.\n" +"[b]Note:[/b] When the 3D scaling mode is set to FSR 1.0, this value is used " +"to adjust the automatic mipmap bias which is calculated internally based on " +"the scale factor. The formula for this is [code]-log2(1.0 / scale) + " +"mipmap_bias[/code]." +msgstr "" +"读取较低或较高的 mipmap,影响最终纹理的清晰度(也称为“纹理 LOD 偏置”)。负值" +"会让 mipmap 纹理更锐利,但从较远处观察时颗粒更明显,而正值会让 mipmap 纹理更" +"模糊(即便凑近看也一样)。要在不引入太多颗粒感的情况下,在远处获得更锐利的纹" +"理,请将其设置在 [code]-0.75[/code] 和 [code]0.0[/code] 之间。启用时间抗锯齿" +"([member ProjectSettings.rendering/anti_aliasing/quality/use_taa])有助于减" +"少使用负 mipmap 偏置时可见的颗粒度。\n" +"[b]注意:[/b]当 3D 缩放模式设置为 FSR 1.0 时,会使用该值调整自动 mipmap 偏" +"置,偏置的计算基于缩放系数。其公式为 [code]-log2(1.0 / scale) + mipmap_bias[/" +"code]。" + +msgid "" "If [code]true[/code], the viewport renders its background as transparent." msgstr "如果为 [code]true[/code],视口将其背景渲染为透明。" @@ -85802,6 +92659,36 @@ msgid "If [code]true[/code], use Temporal Anti-Aliasing." msgstr "如果为 [code]true[/code],则使用时间抗锯齿。" msgid "" +"If [code]true[/code], the viewport uses augmented or virtual reality " +"technologies. See [XRInterface]." +msgstr "" +"如果为 [code]true[/code],则视口使用增强或虚拟现实技术。参阅 [XRInterface]。" + +msgid "" +"Sets the Variable Rate Shading (VRS) mode for the viewport. Note, if " +"hardware does not support VRS this property is ignored." +msgstr "" +"设置视口的可变速率着色(VRS)模式。请注意,如果硬件不支持 VRS,则忽略该属性。" + +msgid "" +"Texture to use when the VRS mode is set to [constant RenderingServer." +"VIEWPORT_VRS_TEXTURE]." +msgstr "" +"当 VRS 模式设置为 [constant RenderingServer.VIEWPORT_VRS_TEXTURE] 时,要使用" +"的纹理。" + +msgid "" +"Used to inform the renderer what exposure normalization value was used while " +"baking the voxel gi. This value will be used and modulated at run time to " +"ensure that the voxel gi maintains a consistent level of exposure even if " +"the scene-wide exposure normalization is changed at run time. For more " +"information see [method camera_attributes_set_exposure]." +msgstr "" +"用于通知渲染器烘焙体素 GI 时使用的曝光归一化值。运行时会使用这个值进行调制," +"确保体素 GI 能够维持恒定的曝光等级,即便场景范围的曝光归一化值在运行时发生改" +"变。更多信息见 [method camera_attributes_set_exposure]。" + +msgid "" "If [code]false[/code], disables rendering completely, but the engine logic " "is still being processed. You can call [method force_draw] to draw a frame " "even with rendering disabled." @@ -86072,6 +92959,10 @@ msgid "" msgstr "第三次拆分所占用的阴影图集的比例。第四个拆分占据了其余部分。" msgid "" +"Proportion of shadow max distance where the shadow will start to fade out." +msgstr "阴影将开始淡出的阴影最大距离的比例。" + +msgid "" "Normal bias used to offset shadow lookup by object normal. Can be used to " "fix self-shadowing artifacts." msgstr "法线偏置,用于抵消物体法线的阴影查找。可以用来修复自阴影的伪影。" @@ -86079,6 +92970,22 @@ msgstr "法线偏置,用于抵消物体法线的阴影查找。可以用来修 msgid "Bias the shadow lookup to fix self-shadowing artifacts." msgstr "对阴影查找进行偏置,以修复自我阴影的假象。" +msgid "" +"The light's shadow opacity. Values lower than [code]1.0[/code] make the " +"light appear through shadows. This can be used to fake global illumination " +"at a low performance cost." +msgstr "" +"灯光的阴影不透明度。低于 [code]1.0[/code] 的值会使光线透过阴影出现。这可以用" +"于以较低的性能成本伪造全局照明。" + +msgid "" +"Blurs the edges of the shadow. Can be used to hide pixel artifacts in low " +"resolution shadow maps. A high value can make shadows appear grainy and can " +"cause other unwanted artifacts. Try to keep as near default as possible." +msgstr "" +"模糊阴影的边缘。可用于隐藏低分辨率阴影贴图中的像素伪影。较高的值会使阴影显得" +"粗糙,并可能导致其他不需要的伪影。尽量保持接近默认值。" + msgid "Represents the size of the [enum LightParam] enum." msgstr "代表 [enum LightParam] 枚举的大小。" @@ -86108,6 +93015,69 @@ msgstr "仅在场景照明中使用 DirectionalLight3D。" msgid "Only use DirectionalLight3D in sky rendering." msgstr "仅在天空渲染中使用 DirectionalLight3D。" +msgid "" +"Lowest shadow filtering quality (fastest). Soft shadows are not available " +"with this quality setting, which means the [member Light3D.shadow_blur] " +"property is ignored if [member Light3D.light_size] and [member Light3D." +"light_angular_distance] is [code]0.0[/code].\n" +"[b]Note:[/b] The variable shadow blur performed by [member Light3D." +"light_size] and [member Light3D.light_angular_distance] is still effective " +"when using hard shadow filtering. In this case, [member Light3D.shadow_blur] " +"[i]is[/i] taken into account. However, the results will not be blurred, " +"instead the blur amount is treated as a maximum radius for the penumbra." +msgstr "" +"最低的阴影过滤质量(最快)。使用这种质量设置时,软阴影不可用,这意味着如果 " +"[member Light3D.light_size] 和 [member Light3D.light_angular_distance] 为 " +"[code]0.0[/code],则会忽略 [member Light3D.shadow_blur] 属性。\n" +"[b]注意:[/b]使用硬阴影过滤时,由 [member Light3D.light_size] 和 [member " +"Light3D.light_angular_distance] 执行的可变阴影模糊仍然有效。在这种情况下[i]会" +"[/i]考虑 [member Light3D.shadow_blur]。但是不会对结果进行模糊处理,而是将模糊" +"量视为半影的最大半径。" + +msgid "" +"Very low shadow filtering quality (faster). When using this quality setting, " +"[member Light3D.shadow_blur] is automatically multiplied by 0.75× to avoid " +"introducing too much noise. This division only applies to lights whose " +"[member Light3D.light_size] or [member Light3D.light_angular_distance] is " +"[code]0.0[/code])." +msgstr "" +"非常低的阴影过滤质量(更快)。使用该质量设置时,[member Light3D.shadow_blur] " +"会自动乘以 0.75 倍以避免引入过多的噪点。该划分仅适用于 [member Light3D." +"light_size] 或 [member Light3D.light_angular_distance] 为 [code]0.0[/code] 的" +"灯光。" + +msgid "Low shadow filtering quality (fast)." +msgstr "低阴影过滤质量(快速)。" + +msgid "Medium low shadow filtering quality (average)." +msgstr "中低阴影过滤质量(平均)。" + +msgid "" +"High low shadow filtering quality (slow). When using this quality setting, " +"[member Light3D.shadow_blur] is automatically multiplied by 1.5× to better " +"make use of the high sample count. This increased blur also improves the " +"stability of dynamic object shadows. This multiplier only applies to lights " +"whose [member Light3D.light_size] or [member Light3D.light_angular_distance] " +"is [code]0.0[/code])." +msgstr "" +"高低阴影过滤质量(慢)。使用该质量设置时,[member Light3D.shadow_blur] 会自动" +"乘以 1.5 倍以更好地利用高样本数。这种增加的模糊还提高了动态对象阴影的稳定性。" +"该乘数仅适用于 [member Light3D.light_size] 或 [member Light3D." +"light_angular_distance] 为 [code]0.0[/code] 的灯光。" + +msgid "" +"Highest low shadow filtering quality (slowest). When using this quality " +"setting, [member Light3D.shadow_blur] is automatically multiplied by 2× to " +"better make use of the high sample count. This increased blur also improves " +"the stability of dynamic object shadows. This multiplier only applies to " +"lights whose [member Light3D.light_size] or [member Light3D." +"light_angular_distance] is [code]0.0[/code])." +msgstr "" +"最高的低阴影过滤质量(最慢)。使用该质量设置时,[member Light3D.shadow_blur] " +"会自动乘以 2 倍以更好地利用高样本数。这种增加的模糊还提高了动态对象阴影的稳定" +"性。该乘数仅适用于 [member Light3D.light_size] 或 [member Light3D." +"light_angular_distance] 为 [code]0.0[/code] 的灯光。" + msgid "Reflection probe will update reflections once and then stop." msgstr "反射探针将更新一次反射,然后停止。" @@ -86186,6 +93156,62 @@ msgstr "根据粒子的寿命对其进行分类。" msgid "Sort particles based on their distance to the camera." msgstr "根据粒子与相机的距离对其进行排序。" +msgid "[FogVolume] will be shaped like an ellipsoid (stretched sphere)." +msgstr "[FogVolume] 的形状类似于一个椭球体(拉伸的球体)。" + +msgid "" +"[FogVolume] will be shaped like a cone pointing upwards (in local " +"coordinates). The cone's angle is set automatically to fill the size. The " +"cone will be adjusted to fit within the size. Rotate the [FogVolume] node to " +"reorient the cone. Non-uniform scaling via size is not supported (scale the " +"[FogVolume] node instead)." +msgstr "" +"[FogVolume] 的形状像一个向上的圆锥体(在局部坐标中)。圆锥体的角度会自动被设" +"置以填充大小。锥体将被调整以适合大小。旋转 [FogVolume] 节点以重新定向圆锥体。" +"不支持通过大小进行非均匀缩放(改为缩放 [FogVolume] 节点)。" + +msgid "" +"[FogVolume] will be shaped like an upright cylinder (in local coordinates). " +"Rotate the [FogVolume] node to reorient the cylinder. The cylinder will be " +"adjusted to fit within the size. Non-uniform scaling via size is not " +"supported (scale the [FogVolume] node instead)." +msgstr "" +"[FogVolume] 的形状将像一个直立的圆柱体(在局部坐标中)。旋转 [FogVolume] 节点" +"以重新定向圆柱体。圆柱体将被调整以适合大小。不支持通过大小进行非均匀缩放(改" +"为缩放 [FogVolume] 节点)。" + +msgid "[FogVolume] will be shaped like a box." +msgstr "[FogVolume] 的形状会像一个盒子。" + +msgid "" +"[FogVolume] will have no shape, will cover the whole world and will not be " +"culled." +msgstr "[FogVolume] 将没有形状,将覆盖整个世界并且不会被剔除。" + +msgid "" +"Use bilinear scaling for the viewport's 3D buffer. The amount of scaling can " +"be set using [member Viewport.scaling_3d_scale]. Values less then [code]1.0[/" +"code] will result in undersampling while values greater than [code]1.0[/" +"code] will result in supersampling. A value of [code]1.0[/code] disables " +"scaling." +msgstr "" +"对视口的 3D 缓冲区使用双线性缩放。可以使用 [member Viewport." +"scaling_3d_scale] 设置缩放量。小于 [code]1.0[/code] 的值将导致欠采样,而大于 " +"[code]1.0[/code] 的值将导致超采样。[code]1.0[/code] 的值将禁用缩放。" + +msgid "" +"Use AMD FidelityFX Super Resolution 1.0 upscaling for the viewport's 3D " +"buffer. The amount of scaling can be set using [member Viewport." +"scaling_3d_scale]. Values less then [code]1.0[/code] will be result in the " +"viewport being upscaled using FSR. Values greater than [code]1.0[/code] are " +"not supported and bilinear downsampling will be used instead. A value of " +"[code]1.0[/code] disables scaling." +msgstr "" +"对视口的 3D 缓冲区使用 AMD FidelityFX 超分辨率 1.0 放大。可以使用 [member " +"Viewport.scaling_3d_scale] 设置缩放量。小于 [code]1.0[/code] 的值将导致使用 " +"FSR 放大视口。不支持大于 [code]1.0[/code] 的值,将改用双线性降采样。" +"[code]1.0[/code] 的值将禁用缩放。" + msgid "Do not update the viewport." msgstr "不要更新视口。" @@ -86226,6 +93252,28 @@ msgstr "" msgid "Max value of [enum ViewportEnvironmentMode] enum." msgstr "[enum ViewportEnvironmentMode] 枚举的最大值。" +msgid "" +"Multisample antialiasing for 3D is disabled. This is the default value, and " +"also the fastest setting." +msgstr "用于 3D 的多重采样抗锯齿被禁用。这是默认值,也是最快的设置。" + +msgid "" +"Multisample antialiasing uses 2 samples per pixel for 3D. This has a " +"moderate impact on performance." +msgstr "用于 3D 的多重采样抗锯齿,使用每个像素 2 个样本。这对性能有中等影响。" + +msgid "" +"Multisample antialiasing uses 4 samples per pixel for 3D. This has a high " +"impact on performance." +msgstr "用于 3D 的多重采样抗锯齿,使用每个像素 4 个样本。这对性能有较大影响。" + +msgid "" +"Multisample antialiasing uses 8 samples per pixel for 3D. This has a very " +"high impact on performance. Likely unsupported on low-end and older hardware." +msgstr "" +"用于 3D 的多重采样抗锯齿,使用每个像素 8 个样本。这对性能有非常大的影响。可能" +"在低端和较旧的硬件上不受支持。" + msgid "Number of objects drawn in a single frame." msgstr "在单帧中绘制的对象的数量。" @@ -86247,9 +93295,29 @@ msgstr "显示的对象没有光照信息。" msgid "Objects are displayed with only light information." msgstr "仅使用光照信息显示对象。" +msgid "" +"Objects are displayed semi-transparent with additive blending so you can see " +"where they are drawing over top of one another. A higher overdraw " +"(represented by brighter colors) means you are wasting performance on " +"drawing pixels that are being hidden behind others.\n" +"[b]Note:[/b] When using this debug draw mode, custom shaders will be " +"ignored. This means vertex displacement won't be visible anymore." +msgstr "" +"对象通过加法混合显示为半透明,因此可以看到它们在彼此之上绘制的位置。更高的过" +"度绘制(由更亮的颜色表示)意味着在绘制隐藏在其他像素后面的像素时浪费了性" +"能。\n" +"[b]注意:[/b]使用该调试绘制模式时,自定义着色器将被忽略。这意味着顶点置换不再" +"可见。" + msgid "Debug draw draws objects in wireframe." msgstr "调试绘制,将对象用线框形式绘制。" +msgid "" +"Normal buffer is drawn instead of regular scene so you can see the per-pixel " +"normals that will be used by post-processing effects." +msgstr "" +"绘制法线缓冲区而不是常规场景,因此可以看到将由后处理效果使用的每像素法线。" + msgid "Objects are displayed with only the albedo value from [VoxelGI]s." msgstr "仅使用来自 [VoxelGI] 的反照率值显示对象。" @@ -86259,15 +93327,89 @@ msgstr "仅使用来自 [VoxelGI] 的照明值显示对象。" msgid "Objects are displayed with only the emission color from [VoxelGI]s." msgstr "仅使用来自 [VoxelGI] 的自发光颜色显示对象。" +msgid "" +"Draws the shadow atlas that stores shadows from [OmniLight3D]s and " +"[SpotLight3D]s in the upper left quadrant of the [Viewport]." +msgstr "" +"在 [Viewport] 的左上象限中绘制存储来自 [OmniLight3D] 和 [SpotLight3D] 的阴影" +"的阴影图集。" + +msgid "" +"Draws the shadow atlas that stores shadows from [DirectionalLight3D]s in the " +"upper left quadrant of the [Viewport]." +msgstr "" +"在 [Viewport] 的左上象限中绘制存储来自 [DirectionalLight3D] 的阴影的阴影图" +"集。" + +msgid "" +"Draws the screen space ambient occlusion texture instead of the scene so " +"that you can clearly see how it is affecting objects. In order for this " +"display mode to work, you must have [member Environment.ssao_enabled] set in " +"your [WorldEnvironment]." +msgstr "" +"绘制屏幕空间环境光遮蔽纹理而不是场景,以便可以清楚地看到它是如何影响对象的。" +"为了使这种显示模式起作用,必须在 [WorldEnvironment] 中设置 [member " +"Environment.ssao_enabled]。" + +msgid "" +"Draws the screen space indirect lighting texture instead of the scene so " +"that you can clearly see how it is affecting objects. In order for this " +"display mode to work, you must have [member Environment.ssil_enabled] set in " +"your [WorldEnvironment]." +msgstr "" +"绘制屏幕空间间接照明纹理而不是场景,以便可以清楚地看到它是如何影响对象的。为" +"了使这种显示模式起作用,必须在 [WorldEnvironment] 中设置 [member Environment." +"ssil_enabled]。" + +msgid "" +"Colors each PSSM split for the [DirectionalLight3D]s in the scene a " +"different color so you can see where the splits are. In order they will be " +"colored red, green, blue, yellow." +msgstr "" +"为场景中的 [DirectionalLight3D] 的每个 PSSM 分割着色不同的颜色,以便可以看到" +"分割的位置。它们将按顺序被着色为红色、绿色、蓝色、黄色。" + msgid "VRS is disabled." msgstr "VRS 已禁用。" +msgid "" +"VRS uses a texture. Note, for stereoscopic use a texture atlas with a " +"texture for each view." +msgstr "" +"VRS 使用一个纹理。请注意,对于立体视觉,请为每个视图使用带有纹理的纹理图集。" + msgid "VRS texture is supplied by the primary [XRInterface]." msgstr "VRS 纹理由主 [XRInterface] 提供。" msgid "Represents the size of the [enum ViewportVRSMode] enum." msgstr "代表 [enum ViewportVRSMode] 枚举的大小。" +msgid "" +"Uses high quality importance sampling to process the radiance map. In " +"general, this results in much higher quality than [constant Sky." +"PROCESS_MODE_REALTIME] but takes much longer to generate. This should not be " +"used if you plan on changing the sky at runtime. If you are finding that the " +"reflection is not blurry enough and is showing sparkles or fireflies, try " +"increasing [member ProjectSettings.rendering/reflections/sky_reflections/" +"ggx_samples]." +msgstr "" +"使用高质量重要性采样处理辐照度贴图。得到的结果通常比 [constant Sky." +"PROCESS_MODE_REALTIME] 的质量更高,但需要花费更多的时间来生成。如果你计划在运" +"行时修改天空,则不应使用。如果你发现反射不够模糊,出现了火花或者萤火虫,请尝" +"试增大 [member ProjectSettings.rendering/reflections/sky_reflections/" +"ggx_samples]。" + +msgid "" +"Uses the fast filtering algorithm to process the radiance map. In general " +"this results in lower quality, but substantially faster run times.\n" +"[b]Note:[/b] The fast filtering algorithm is limited to 256x256 cubemaps, so " +"[member Sky.radiance_size] must be set to [constant Sky.RADIANCE_SIZE_256]." +msgstr "" +"使用快速过滤算法处理辐照度贴图。一般来说,这会导致质量降低,但运行时间会大大" +"加快。\n" +"[b]注意:[/b]快速过滤算法仅限于 256x256 的立方体贴图,因此 [member Sky." +"radiance_size] 必须被设置为 [constant Sky.RADIANCE_SIZE_256]。" + msgid "Use the clear color as background." msgstr "用透明的颜色作为背景。" @@ -86323,6 +93465,29 @@ msgstr "" "使用电影级色调映射器。可以避免对高光的截断,最终的图像一般比 [constant " "ENV_TONE_MAPPER_REINHARD] 看上去更鲜艳。" +msgid "" +"Use the Academy Color Encoding System tonemapper. ACES is slightly more " +"expensive than other options, but it handles bright lighting in a more " +"realistic fashion by desaturating it as it becomes brighter. ACES typically " +"has a more contrasted output compared to [constant ENV_TONE_MAPPER_REINHARD] " +"and [constant ENV_TONE_MAPPER_FILMIC].\n" +"[b]Note:[/b] This tonemapping operator is called \"ACES Fitted\" in Godot 3." +"x." +msgstr "" +"使用Academy 颜色编码系统色调映射器。ACES 比其他选项稍贵一些,但它通过在光线变" +"亮时对其进行去饱和处理,以更逼真的方式处理明亮的光线。与 [constant " +"ENV_TONE_MAPPER_REINHARD] 和 [constant ENV_TONE_MAPPER_FILMIC] 相比,ACES 通" +"常具有对比度更高的输出。\n" +"[b]注意:[/b]这个色调映射运算符在 Godot 3.x 中被称为“ACES Fitted”。" + +msgid "" +"Lowest quality of roughness filter for screen-space reflections. Rough " +"materials will not have blurrier screen-space reflections compared to smooth " +"(non-rough) materials. This is the fastest option." +msgstr "" +"用于屏幕空间反射的最低质量粗糙度过滤。与光滑(非粗糙)材质相比,粗糙材质不会" +"有更模糊的屏幕空间反射。这是最快的选项。" + msgid "Low quality of roughness filter for screen-space reflections." msgstr "屏幕空间反射的较低质量粗糙度过滤器。" @@ -86372,6 +93537,23 @@ msgstr "" "和视觉质量。" msgid "" +"Calculate the DOF blur using a box filter. The fastest option, but results " +"in obvious lines in blur pattern." +msgstr "" +"使用一个盒式过滤计算 DOF 模糊。最快的选项,但会在模糊图案中产生明显的线条。" + +msgid "Calculates DOF blur using a hexagon shaped filter." +msgstr "使用一个六边形过滤计算 DOF 模糊。" + +msgid "" +"Calculates DOF blur using a circle shaped filter. Best quality and most " +"realistic, but slowest. Use only for areas where a lot of performance can be " +"dedicated to post-processing (e.g. cutscenes)." +msgstr "" +"使用一个圆形过滤计算 DOF 模糊。最好的质量和最真实的,但最慢的。仅用于可以将大" +"量性能专用于后期处理的区域(例如过场动画)。" + +msgid "" "Lowest quality DOF blur. This is the fastest setting, but you may be able to " "see filtering artifacts." msgstr "最低质量的 DOF 模糊。这是最快的设置,但你可能会看到不自然的过滤。" @@ -86452,6 +93634,18 @@ msgid "" "Only render the shadows from the object. The object itself will not be drawn." msgstr "仅渲染对象的阴影。对象本身不会被绘制。" +msgid "Disable visibility range fading for the given instance." +msgstr "禁用给定实例的可见性范围淡出。" + +msgid "" +"Fade-out the given instance when it approaches its visibility range limits." +msgstr "当给定实例接近其可见范围限制时淡出该给定实例。" + +msgid "" +"Fade-in the given instance's dependencies when reaching its visibility range " +"limits." +msgstr "当达到其可见性范围限制时淡入给定实例的依赖项。" + msgid "" "Index of [Image] in array of [Image]s returned by [method bake_render_uv2]. " "Image uses [constant Image.FORMAT_RGBA8] and contains albedo color in the " @@ -86508,12 +93702,49 @@ msgstr "九宫格在需要的地方填充图块,并在需要时将它们拉伸 msgid "Uses the default filter mode for this [Viewport]." msgstr "为 [Viewport] 使用默认过滤模式。" +msgid "" +"The texture filter blends between the nearest 4 pixels and between the " +"nearest 2 mipmaps." +msgstr "纹理过滤在最近的 4 个像素之间和最近的 2 个 mipmap 之间混合。" + +msgid "" +"The texture filter reads from the nearest pixel, but selects a mipmap based " +"on the angle between the surface and the camera view. This reduces artifacts " +"on surfaces that are almost in line with the camera." +msgstr "" +"纹理过滤从最近的像素读取,但根据表面和相机视图之间的角度选择一个 mipmap。这减" +"少了几乎与相机共线的表面上的伪影。" + +msgid "" +"The texture filter blends between the nearest 4 pixels and selects a mipmap " +"based on the angle between the surface and the camera view. This reduces " +"artifacts on surfaces that are almost in line with the camera. This is the " +"slowest of the filtering options, but results in the highest quality " +"texturing." +msgstr "" +"纹理过滤在最近的 4 个像素之间进行混合,并根据表面和相机视图之间的角度选择一" +"个 mipmap。这减少了几乎与相机共线的表面上的伪影。这是最慢的过滤选项,但会产生" +"最高质量的纹理。" + msgid "Max value for [enum CanvasItemTextureFilter] enum." msgstr "[enum CanvasItemTextureFilter] 枚举的最大值。" msgid "Uses the default repeat mode for this [Viewport]." msgstr "为 [Viewport] 使用默认重复模式。" +msgid "" +"Disables textures repeating. Instead, when reading UVs outside the 0-1 " +"range, the value will be clamped to the edge of the texture, resulting in a " +"stretched out look at the borders of the texture." +msgstr "" +"禁用纹理重复。相反,当读取 0-1 范围之外的 UV 时,该值将被钳制在纹理的边缘,从" +"而导致纹理的边界看起来被拉长。" + +msgid "" +"Flip the texture when repeating so that the edge lines up instead of " +"abruptly changing." +msgstr "重复时翻转该纹理,使边缘对齐而不是突然改变。" + msgid "Max value for [enum CanvasItemTextureRepeat] enum." msgstr "[enum CanvasItemTextureRepeat] 枚举的最大值。" @@ -88216,7 +95447,7 @@ msgid "" "custom_integrator]." msgstr "" "该节点实现了模拟的 2D 物理。不应直接控制 RigidBody2D。而是,对其施加力(重" -"力、冲力等),然后物理模拟将根据其质量、摩擦力和其他物理属性来计算产生的运" +"力、冲量等),然后物理模拟将根据其质量、摩擦力和其他物理属性来计算产生的运" "动。\n" "您可以使用 [member lock_rotation]、[member freeze] 和 [member freeze_mode] 切" "换实体的行为。\n" @@ -88269,8 +95500,8 @@ msgid "" "inertia], an active [CollisionShape2D] must be a child of the node, or you " "can manually set [member inertia]." msgstr "" -"在不影响位置的情况下,向实体施加一个旋转冲力。\n" -"冲力是时间无关的!每帧施加一个冲力将产生依赖于帧速率的力。出于这个原因,它应" +"在不影响位置的情况下,向实体施加一个旋转冲量。\n" +"冲量是时间无关的!每帧施加一个冲量将产生依赖于帧速率的力。出于这个原因,它应" "该只在模拟一次性影响时使用(否则使用“_force”函数)。\n" "[b]注意:[/b]需要 [member inertia] 才能发挥作用。要具有 [member inertia],活" "动的 [CollisionShape2D] 必须是该节点的一个子节点,或者可以手动设置 [member " @@ -88318,8 +95549,8 @@ msgid "" "See [member ProjectSettings.physics/2d/default_angular_damp] for more " "details about damping." msgstr "" -"减缓物体的旋转。默认情况下,物体将使用 [b] 项目> 项目设置> 物理> 2D [/b] 中" -"的 [b]默认角阻尼[/b],或由 [Area2D] 设置的任何值覆盖。根据 [member " +"减缓物体的旋转。默认情况下,物体将使用 [b]项目> 项目设置> 物理> 2D[/b] 中的" +"[b]默认角阻尼[/b],或由 [Area2D] 设置的任何值覆盖。根据 [member " "angular_damp_mode],您可以设置 [member angular_damp_mode] 以添加到或替换物体" "的阻尼值。\n" "有关阻尼的更多详细信息,请参见 [member ProjectSettings.physics/2d/" @@ -88742,7 +95973,7 @@ msgid "" "same on all axes), and change the size(s) of its collision shape(s) instead." msgstr "" "这是实现完整 3D 物理的节点。这意味着不直接控制 RigidBody3D。而是,可以对其施" -"加力(重力、冲力等),物理模拟将计算由此产生的运动、碰撞、弹跳、旋转等。\n" +"加力(重力、冲量等),物理模拟将计算由此产生的运动、碰撞、弹跳、旋转等。\n" "可以使用 [member lock_rotation]、[member freeze]、和 [member freeze_mode] 切" "换实体的行为。\n" "[b]注意:[/b]不要每帧或经常更改 RigidBody3D 的位置。零星的更改正常工作,但物" @@ -88775,8 +96006,8 @@ msgid "" "inertia], an active [CollisionShape3D] must be a child of the node, or you " "can manually set [member inertia]." msgstr "" -"在不影响位置的情况下,向实体施加一个旋转冲力。\n" -"冲力是时间无关的!每帧施加一个冲力将产生一个依赖于帧速率的力。出于这个原因," +"在不影响位置的情况下,向实体施加一个旋转冲量。\n" +"冲量是时间无关的!每帧施加一个冲量将产生一个依赖于帧速率的力。出于这个原因," "它应该只在模拟一次性影响时使用(否则使用“_force”函数)。\n" "[b]注意:[/b]需要 [member inertia] 才能发挥作用。要具有 [member inertia],活" "动的 [CollisionShape3D] 必须是该节点的一个子节点,或者可以手动设置 [member " @@ -89024,8 +96255,8 @@ msgid "" "[b]Note:[/b] [RootMotionView] is only visible in the editor. It will be " "hidden automatically in the running project." msgstr "" -"[i]根运动[/i](Root Motion)是一种动画技术,通过使用网格的骨架为角色提供推" -"力。在处理 3D 动画时,动画师通常使用根骨骼来为其余的骨骼提供动作,从而使得角" +"[i]根运动[/i](Root Motion)是一种动画技术,通过使用网格的骨架为角色提供冲" +"量。在处理 3D 动画时,动画师通常使用根骨骼来为其余的骨骼提供动作,从而使得角" "色的动画能够准确地匹配地面,并实现在电影中与物体的精确交互。另请参阅 " "[AnimationTree]。\n" "[b]注意:[/b][RootMotionView] 仅在编辑器中可见。在运行的项目中将自动隐藏。" @@ -89232,6 +96463,23 @@ msgstr "" "发送身份验证数据的信息,请参阅 [method send_auth]。" msgid "" +"Emitted when this MultiplayerAPI's [member MultiplayerAPI.multiplayer_peer] " +"disconnects from a peer for which authentication had not yet completed. See " +"[signal peer_authenticating]." +msgstr "" +"当这个 MultiplayerAPI 的 [member MultiplayerAPI.multiplayer_peer] 与另一个尚" +"未完成授权的对等体断开连接时触发。见 [signal peer_authenticating]。" + +msgid "" +"Emitted when this MultiplayerAPI's [member MultiplayerAPI.multiplayer_peer] " +"receives a [code]packet[/code] with custom data (see [method send_bytes]). " +"ID is the peer ID of the peer that sent the packet." +msgstr "" +"当这个 MultiplayerAPI 的 [member MultiplayerAPI.multiplayer_peer] 收到带有自" +"定义数据(见 [method send_bytes])的 [code]packet[/code] 时发出。ID 是发送数" +"据包的对等体的对等体 ID。" + +msgid "" "Configuration for properties to synchronize with a [MultiplayerSynchronizer]." msgstr "配置,能够让 [MultiplayerSynchronizer] 对属性进行同步。" @@ -89341,6 +96589,21 @@ msgstr "" "范围为 [code][0, get_node_count() - 1][/code]。" msgid "" +"Returns the list of group names associated with the node at [param idx]." +msgstr "返回与 [param idx] 处的节点关联的组名列表。" + +msgid "" +"Returns the node's index, which is its position relative to its siblings. " +"This is only relevant and saved in scenes for cases where new nodes are " +"added to an instantiated or inherited scene among siblings from the base " +"scene. Despite the name, this index is not related to the [param idx] " +"argument used here and in other methods." +msgstr "" +"返回该节点的索引,这是它相对于其兄弟节点的位置。这仅在新节点被添加到一个实例" +"化的或继承的场景,在基础场景的兄弟节点之间的情况下,才相关并被保存在场景中。" +"尽管名称如此,但该索引与此处和其他方法中使用的 [param idx] 参数无关。" + +msgid "" "Returns a [PackedScene] for the node at [param idx] (i.e. the whole branch " "starting at this node, with its child nodes and resources), or [code]null[/" "code] if the node is not an instance." @@ -89348,10 +96611,22 @@ msgstr "" "为 [param idx] 处的节点返回一个 [PackedScene](即从该节点开始的整个分支,包括" "其子节点和资源),如果该节点不是一个实例,则返回 [code]null[/code]。" +msgid "" +"Returns the path to the represented scene file if the node at [param idx] is " +"an [InstancePlaceholder]." +msgstr "" +"如果 [param idx] 处的节点是一个 [InstancePlaceholder],则返回所表示的场景文件" +"的路径。" + msgid "Returns the name of the node at [param idx]." msgstr "返回索引为 [param idx] 的节点的名称。" msgid "" +"Returns the path to the owner of the node at [param idx], relative to the " +"root node." +msgstr "返回相对于根节点的位于 [param idx] 处的节点的所有者的路径。" + +msgid "" "Returns the path to the node at [param idx].\n" "If [param for_parent] is [code]true[/code], returns the path of the [param " "idx] node's parent instead." @@ -89475,6 +96750,37 @@ msgstr "" "将 [method call_group_flags] 和 [constant GROUP_CALL_DEFERRED] 标志一起使用。" msgid "" +"Calls [param method] on each member of the given group, respecting the given " +"[enum GroupCallFlags]. You can pass arguments to [param method] by " +"specifying them at the end of the method call. If a node doesn't have the " +"given method or the argument list does not match (either in count or in " +"types), it will be skipped.\n" +"[codeblock]\n" +"# Call the method in a deferred manner and in reverse order.\n" +"get_tree().call_group_flags(SceneTree.GROUP_CALL_DEFERRED | SceneTree." +"GROUP_CALL_REVERSE)\n" +"[/codeblock]\n" +"[b]Note:[/b] Group call flags are used to control the method calling " +"behavior. By default, methods will be called immediately in a way similar to " +"[method call_group]. However, if the [constant GROUP_CALL_DEFERRED] flag is " +"present in the [param flags] argument, methods will be called with a one-" +"frame delay in a way similar to [method Object.set_deferred]." +msgstr "" +"调用给定分组中每个成员的 [param method] 方法,遵循给定的 [enum " +"GroupCallFlags]。你可以在方法调用末尾指定要传递给 [param method] 的参数。如果" +"某个节点没有给定的方法,或者方法的参数列表不匹配(无论是数量还是类型不匹" +"配),则会跳过这个节点。\n" +"[codeblock]\n" +"# 使用延迟方式逆序调用该方法。\n" +"get_tree().call_group_flags(SceneTree.GROUP_CALL_DEFERRED | SceneTree." +"GROUP_CALL_REVERSE)\n" +"[/codeblock]\n" +"[b]注意:[/b]分组调用标志可用于控制方法调用的行为。默认情况下方法是立即调用" +"的,与 [method call_group] 类似。但是如果在 [param flags] 中存在 [constant " +"GROUP_CALL_DEFERRED] 标志,则方法会在延迟一帧后调用,与 [method Object." +"set_deferred] 类似。" + +msgid "" "Changes the running scene to the one at the given [param path], after " "loading it into a [PackedScene] and creating a new instance.\n" "Returns [constant OK] on success, [constant ERR_CANT_OPEN] if the [param " @@ -89509,7 +96815,7 @@ msgid "" msgstr "" "将正在运行的场景改变为给定 [PackedScene] (必须有效)的一个新实例。\n" "成功时返回 [constant OK],场景无法实例化时返回 [constant ERR_CANT_CREATE],场" -"景无效时返回 [constant ERROR_INVALID_PARAMETER]。\n" +"景无效时返回 [constant ERR_INVALID_PARAMETER]。\n" "[b]注意:[/b]场景改变是延迟的,即新的场景节点是在下一个空闲帧中添加的。无法" "在 [method change_scene_to_packed] 调用后立即访问它。" @@ -89591,6 +96897,13 @@ msgid "" "application started." msgstr "返回当前的帧数,即自应用程序启动以来的总帧数。" +msgid "" +"Return the [MultiplayerAPI] configured for the given path, or the default " +"one if [param for_path] is empty." +msgstr "" +"返回为给定路径配置的 [MultiplayerAPI],如果 [param for_path] 为空,则返回默认" +"值。" + msgid "Returns the number of nodes in this [SceneTree]." msgstr "返回此 [SceneTree] 中的节点数。" @@ -89701,9 +97014,25 @@ msgstr "" "[constant GROUP_CALL_DEFERRED] 标志,则属性将延迟一帧再设置,类似于 [method " "Object.call_deferred]。" +msgid "" +"Sets a custom [MultiplayerAPI] with the given [param root_path] (controlling " +"also the relative subpaths), or override the default one if [param " +"root_path] is empty." +msgstr "" +"用给定的 [param root_path] 设置自定义的 [MultiplayerAPI](同时控制相对的子路" +"径),如果 [param root_path] 为空,则会覆盖默认值。" + msgid "If a current scene is loaded, calling this method will unload it." msgstr "如果当前场景已加载,调用此方法将进行卸载。" +msgid "" +"If [code]true[/code], the application automatically accepts quitting " +"requests.\n" +"For mobile platforms, see [member quit_on_go_back]." +msgstr "" +"如果为 [code]true[/code],则应用程序会自动接受退出请求。\n" +"移动平台见 [member quit_on_go_back]。" + msgid "The current scene." msgstr "当前场景。" @@ -89729,10 +97058,36 @@ msgstr "" "[b]注意:[/b]这个属性不应在运行时更改。在运行项目时更改 [member " "debug_navigation_hint] 的值不会有想要的效果。" +msgid "" +"If [code]true[/code], curves from [Path2D] and [Path3D] nodes will be " +"visible when running the game from the editor for debugging purposes.\n" +"[b]Note:[/b] This property is not designed to be changed at run-time. " +"Changing the value of [member debug_paths_hint] while the project is running " +"will not have the desired effect." +msgstr "" +"如果为 [code]true[/code],从编辑器中运行游戏时,来自 [Path2D] 和 [Path3D] 节" +"点的曲线将可见以进行调试。\n" +"[b]注意:[/b]该属性没有被设计为在运行时更改。在项目运行时更改 [member " +"debug_paths_hint] 的值不会产生预期的效果。" + msgid "The root of the edited scene." msgstr "编辑场景的根。" msgid "" +"If [code]true[/code] (default value), enables automatic polling of the " +"[MultiplayerAPI] for this SceneTree during [signal process_frame].\n" +"If [code]false[/code], you need to manually call [method MultiplayerAPI." +"poll] to process network packets and deliver RPCs. This allows running RPCs " +"in a different loop (e.g. physics, thread, specific time step) and for " +"manual [Mutex] protection when accessing the [MultiplayerAPI] from threads." +msgstr "" +"如果为 [code]true[/code](默认值),则在 [signal process_frame] 期间为该 " +"SceneTree 启用 [MultiplayerAPI] 的自动轮询。\n" +"如果为 [code]false[/code],则需要手动调用 [method MultiplayerAPI.poll] 以处理" +"网络数据包并下发 RPC。这允许在一个不同的循环(例如物理、线程、特定时间步长)" +"中运行 RPC,并在从线程访问 [MultiplayerAPI] 时进行手动 [Mutex] 保护。" + +msgid "" "If [code]true[/code], the [SceneTree] is paused. Doing so will have the " "following behavior:\n" "- 2D and 3D physics will be stopped. This includes signals and collision " @@ -89745,6 +97100,17 @@ msgstr "" "- 节点不再调用 [method Node._process]、[method Node._physics_process] 和 " "[method Node._input]。" +msgid "" +"If [code]true[/code], the application quits automatically when navigating " +"back (e.g. using the system \"Back\" button on Android).\n" +"To handle 'Go Back' button when this option is disabled, use [constant " +"DisplayServer.WINDOW_EVENT_GO_BACK_REQUEST]." +msgstr "" +"如果为 [code]true[/code],则该应用程序会在导航返回时自动退出(例如在 Android " +"上使用系统“返回”键)。\n" +"禁用这个选项时,如果要处理“返回”按钮,请使用 [constant DisplayServer." +"WINDOW_EVENT_GO_BACK_REQUEST]。" + msgid "The [SceneTree]'s root [Window]." msgstr "[SceneTree] 的根 [Window]。" @@ -89940,6 +97306,54 @@ msgstr "" msgid "The Editor's popup dialog for creating new [Script] files." msgstr "用于创建新 [Script] 文件的编辑器弹出对话框。" +msgid "" +"The [ScriptCreateDialog] creates script files according to a given template " +"for a given scripting language. The standard use is to configure its fields " +"prior to calling one of the [method Window.popup] methods.\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _ready():\n" +" var dialog = ScriptCreateDialog.new();\n" +" dialog.config(\"Node\", \"res://new_node.gd\") # For in-engine types.\n" +" dialog.config(\"\\\"res://base_node.gd\\\"\", \"res://derived_node.gd\") " +"# For script types.\n" +" dialog.popup_centered()\n" +"[/gdscript]\n" +"[csharp]\n" +"public override void _Ready()\n" +"{\n" +" var dialog = new ScriptCreateDialog();\n" +" dialog.Config(\"Node\", \"res://NewNode.cs\"); // For in-engine types.\n" +" dialog.Config(\"\\\"res://BaseNode.cs\\\"\", \"res://DerivedNode." +"cs\"); // For script types.\n" +" dialog.PopupCentered();\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"[ScriptCreateDialog] 会根据给定的模板为给定的脚本语言创建脚本文件。标准用法是" +"在调用任何 [method Window.popup] 方法之前,先配置其字段。\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _ready():\n" +" var dialog = ScriptCreateDialog.new();\n" +" dialog.config(\"Node\", \"res://new_node.gd\") # 对于引擎内置类型。\n" +" dialog.config(\"\\\"res://base_node.gd\\\"\", \"res://derived_node.gd\") " +"# 对于脚本类型。\n" +" dialog.popup_centered()\n" +"[/gdscript]\n" +"[csharp]\n" +"public override void _Ready()\n" +"{\n" +" var dialog = new ScriptCreateDialog();\n" +" dialog.Config(\"Node\", \"res://NewNode.cs\"); // 对于引擎内置类型。\n" +" dialog.Config(\"\\\"res://BaseNode.cs\\\"\", \"res://DerivedNode." +"cs\"); // 对于脚本类型。\n" +" dialog.PopupCentered();\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" + msgid "Prefills required fields to configure the ScriptCreateDialog for use." msgstr "预填必填字段以配置 ScriptCreateDialog 以供使用。" @@ -89964,6 +97378,12 @@ msgid "Returns a [Script] that is currently active in editor." msgstr "返回当前在编辑器中处于活动状态的 [Script]。" msgid "" +"Returns an array with all [ScriptEditorBase] objects which are currently " +"open in editor." +msgstr "" +"返回一个数组,其中包含当前在编辑器中打开的所有 [ScriptEditorBase] 对象。" + +msgid "" "Returns an array with all [Script] objects which are currently open in " "editor." msgstr "返回一个包含当前在编辑器中打开的所有 [Script] 对象的数组。" @@ -89972,6 +97392,31 @@ msgid "Goes to the specified line in the current script." msgstr "转到当前脚本中的指定行。" msgid "" +"Opens the script create dialog. The script will extend [param base_name]. " +"The file extension can be omitted from [param base_path]. It will be added " +"based on the selected scripting language." +msgstr "" +"打开创建脚本对话框。脚本将扩展 [param base_name]。文件扩展名可以从 [param " +"base_path] 中省略,会根据所选择的脚本语言添加。" + +msgid "" +"Registers the [EditorSyntaxHighlighter] to the editor, the " +"[EditorSyntaxHighlighter] will be available on all open scripts.\n" +"[b]Note:[/b] Does not apply to scripts that are already opened." +msgstr "" +"向编辑器注册该 [EditorSyntaxHighlighter],打开的所有脚本都可以使用这个 " +"[EditorSyntaxHighlighter]。\n" +"[b]注意:[/b]不适用于已经打开的脚本。" + +msgid "" +"Unregisters the [EditorSyntaxHighlighter] from the editor.\n" +"[b]Note:[/b] The [EditorSyntaxHighlighter] will still be applied to scripts " +"that are already opened." +msgstr "" +"从编辑器注销该 [EditorSyntaxHighlighter]。\n" +"[b]注意:[/b]已经打开的脚本仍然适用该 [EditorSyntaxHighlighter]。" + +msgid "" "Emitted when user changed active script. Argument is a freshly activated " "[Script]." msgstr "当用户更改活动脚本时发出。参数是新激活的 [Script]。" @@ -90026,9 +97471,38 @@ msgid "" "to [signal go_to_method]." msgstr "用户请求查看脚本中的指定行时发出,类似于 [signal go_to_method]。" +msgid "" +"Emitted when the user contextual goto and the item is in the same script." +msgstr "用户进行上下文跳转,并且该条目在同一个脚本中时发出。" + msgid "Emitted when the user request to search text in the file system." msgstr "用户请求在文件系统中搜索文本时发出。" +msgid "" +"The option is local to the location of the code completion query - e.g. a " +"local variable." +msgstr "该选项局限于代码补全查询的位置 - 例如局部变量。" + +msgid "" +"The option is from the containing class or a parent class, relative to the " +"location of the code completion query. Perform a bitwise OR with the class " +"depth (e.g. 0 for the local class, 1 for the parent, 2 for the grandparent, " +"etc) to store the depth of an option in a the class or a parent class." +msgstr "" +"该选项来自于所在的类或父类,相对于代码补全查询的位置。请使用类的深度进行按位 " +"OR(或)运算(例如 0 表示当前类,1 表示父类,2 表示父类的父类等),从而在当前" +"类或父类中存储选项的深度。" + +msgid "" +"The option is from user code which is not local and not in a derived class " +"(e.g. Autoload Singletons)." +msgstr "该选项来自用户代码,不是局部,也不是派生类(例如自动加载单例)。" + +msgid "" +"The option is from other engine code, not covered by the other enum " +"constants - e.g. built-in classes." +msgstr "该选项来自其他引擎代码,未被其他枚举常量覆盖 - 例如内置类。" + msgid "Base class for scroll bars." msgstr "滚动条的基类。" @@ -90238,6 +97712,17 @@ msgstr "" msgid "The ray's length." msgstr "射线的长度。" +msgid "" +"If [code]false[/code] (default), the shape always separates and returns a " +"normal along its own direction.\n" +"If [code]true[/code], the shape can return the correct normal and separate " +"in any direction, allowing sliding motion on slopes." +msgstr "" +"如果为 [code]false[/code](默认值),则形状始终分离,并返回一条沿其自身方向的" +"法线。\n" +"如果为 [code]true[/code],则该形状可以返回正确的法线,并在任何方向上分离,允" +"许在斜坡上滑动。" + msgid "Separation ray shape resource for 3D physics." msgstr "用于 3D 物理的分离射线形状资源。" @@ -90301,6 +97786,21 @@ msgstr "" "或 [constant MODE_PARTICLES]。" msgid "" +"Get the list of shader uniforms that can be assigned to a [ShaderMaterial], " +"for use with [method ShaderMaterial.set_shader_parameter] and [method " +"ShaderMaterial.get_shader_parameter]. The parameters returned are contained " +"in dictionaries in a similar format to the ones returned by [method Object." +"get_property_list].\n" +"If argument [param get_groups] is true, parameter grouping hints will be " +"provided." +msgstr "" +"获取可以赋值给 [ShaderMaterial] 的着色器 uniform 列表,可用于 [method " +"ShaderMaterial.set_shader_parameter] 和 [method ShaderMaterial." +"get_shader_parameter]。返回的参数包含在字典内,与 [method Object." +"get_property_list] 返回的格式类似。\n" +"如果参数 [param get_groups] 为 true,则会提供参数分组提示。" + +msgid "" "Sets the default texture to be used with a texture uniform. The default is " "used if a texture is not set in the [ShaderMaterial].\n" "[b]Note:[/b] [param name] must match the name of the uniform in the code " @@ -90341,9 +97841,39 @@ msgid "A material that uses a custom [Shader] program." msgstr "使用自定义 [Shader] 程序的材质。" msgid "" +"A material that uses a custom [Shader] program to render either items to " +"screen or process particles. You can create multiple materials for the same " +"shader but configure different values for the uniforms defined in the shader." +msgstr "" +"一种使用自定义 [Shader] 程序的材质,可将项目渲染到屏幕或者处理粒子。你可以为" +"同一个着色器创建多种材质,并为着色器中定义的 uniform 配置不同的值。" + +msgid "" "Returns the current value set for this material of a uniform in the shader." msgstr "返回在着色器中此 uniform 材质的当前值。" +msgid "" +"Changes the value set for this material of a uniform in the shader.\n" +"[b]Note:[/b] [param param] is case-sensitive and must match the name of the " +"uniform in the code exactly (not the capitalized name in the inspector).\n" +"[b]Note:[/b] Changes to the shader uniform will be effective on all " +"instances using this [ShaderMaterial]. To prevent this, use per-instance " +"uniforms with [method GeometryInstance3D.set_instance_shader_parameter] or " +"duplicate the [ShaderMaterial] resource using [method Resource.duplicate]. " +"Per-instance uniforms allow for better shader reuse and are therefore " +"faster, so they should be preferred over duplicating the [ShaderMaterial] " +"when possible." +msgstr "" +"更改这个材质的着色器中为某个 uniform 设置的值。\n" +"[b]注意:[/b][param param] 大小写敏感,必须完全匹配代码中 uniform 的名称(不" +"是检查器中首字母大写后的名称)。\n" +"[b]注意:[/b]对着色器 uniform 的修改会在使用这个 [ShaderMaterial] 的所有实例" +"上生效。要防止这种行为,请通过 [method GeometryInstance3D." +"set_instance_shader_parameter] 使用单实例 uniform,或者使用 [method Resource." +"duplicate] 制作该 [ShaderMaterial] 的副本。单实例 uniform 可以更好地复用着色" +"器,因此速度也更快,所以应该尽可能优先使用,而不是制作 [ShaderMaterial] 的副" +"本。" + msgid "The [Shader] program used to render this material." msgstr "用于渲染此材质的 [Shader] 程序。" @@ -90388,6 +97918,21 @@ msgstr "" "shape_xform])。" msgid "" +"Returns whether this shape would collide with another, if a given movement " +"was applied.\n" +"This method needs the transformation matrix for this shape ([param " +"local_xform]), the movement to test on this shape ([param local_motion]), " +"the shape to check collisions with ([param with_shape]), the transformation " +"matrix of that shape ([param shape_xform]), and the movement to test onto " +"the other object ([param shape_motion])." +msgstr "" +"返回应用给定的运动后,这个形状是否会与另一个形状发生碰撞。\n" +"这个方法需要这个形状的变换矩阵([param local_xform]),要在这个形状上测试的运" +"动([param local_motion]),检查碰撞的形状([param with_shape]),那个形状的" +"变换矩阵([param shape_xform]),以及用于测试其他物体的运动([param " +"shape_motion])。" + +msgid "" "Returns a list of contact point pairs where this shape would touch another, " "if a given movement was applied.\n" "If there would be no collisions, the returned list is empty. Otherwise, the " @@ -90415,9 +97960,28 @@ msgstr "" "with_shape])、那个形状的变换矩阵([param shape_xform])、以及要在其他形状上" "测试的运动([param shape_motion])。" +msgid "" +"Draws a solid shape onto a [CanvasItem] with the [RenderingServer] API " +"filled with the specified [param color]. The exact drawing method is " +"specific for each shape and cannot be configured." +msgstr "" +"用 [RenderingServer] API 在 [CanvasItem] 上绘制实体形状,并填充指定的颜色 " +"[param color]。确切的绘制方法是每个形状特有的,无法配置。" + msgid "Returns a [Rect2] representing the shapes boundary." msgstr "返回代表形状边界的 [Rect2]。" +msgid "" +"The shape's custom solver bias. Defines how much bodies react to enforce " +"contact separation when this shape is involved.\n" +"When set to [code]0[/code], the default value from [member ProjectSettings." +"physics/2d/solver/default_contact_bias] is used." +msgstr "" +"该形状的的自定义求解器偏差。定义了强制接触分离涉及到这个形状时,物体会做出多" +"大的反应。\n" +"设为 [code]0.0[/code] 时,使用的默认值为 [member ProjectSettings.physics/2d/" +"solver/default_contact_bias]。" + msgid "Base class for all 3D shape resources." msgstr "所有 3D 形状资源的基类。" @@ -90429,6 +97993,64 @@ msgstr "" "状。" msgid "" +"Returns the [ArrayMesh] used to draw the debug collision for this [Shape3D]." +msgstr "返回用于绘制此 [Shape3D] 的调试碰撞的 [ArrayMesh]。" + +msgid "" +"The shape's custom solver bias. Defines how much bodies react to enforce " +"contact separation when this shape is involved.\n" +"When set to [code]0[/code], the default value from [member ProjectSettings." +"physics/3d/solver/default_contact_bias] is used." +msgstr "" +"该形状的的自定义求解器偏差。定义了强制接触分离涉及到这个形状时,物体会做出多" +"大的反应。\n" +"设为 [code]0.0[/code] 时,使用的默认值为 [member ProjectSettings.physics/3d/" +"solver/default_contact_bias]。" + +msgid "" +"The collision margin for the shape. This is not used in Godot Physics.\n" +"Collision margins allow collision detection to be more efficient by adding " +"an extra shell around shapes. Collision algorithms are more expensive when " +"objects overlap by more than their margin, so a higher value for margins is " +"better for performance, at the cost of accuracy around edges as it makes " +"them less sharp." +msgstr "" +"该形状的碰撞边距。Godot Physics 中未使用。\n" +"碰撞边距允许通过在形状周围添加额外的外壳来使碰撞检测更有效。当物体重叠的部分" +"超过其边距时,碰撞算法的成本会更高,所以边距的数值越高对性能越好,但代价是边" +"缘的精度会降低,因为会让边缘的锐度降低。" + +msgid "" +"Node for physics collision sweep and immediate overlap queries. Similar to " +"the [RayCast2D] node." +msgstr "用于物理碰撞扫描和即时重叠查询的节点。类似于 [RayCast2D] 节点。" + +msgid "" +"Shape casting allows to detect collision objects by sweeping the [member " +"shape] along the cast direction determined by [member target_position] " +"(useful for things like beam weapons).\n" +"Immediate collision overlaps can be done with the [member target_position] " +"set to [code]Vector2(0, 0)[/code] and by calling [method " +"force_shapecast_update] within the same [b]physics_frame[/b]. This also " +"helps to overcome some limitations of [Area2D] when used as a continuous " +"detection area, often requiring waiting a couple of frames before collision " +"information is available to [Area2D] nodes, and when using the signals " +"creates unnecessary complexity.\n" +"The node can detect multiple collision objects, but it's usually used to " +"detect the first collision.\n" +"[b]Note:[/b] shape casting is more computationally expensive compared to ray " +"casting." +msgstr "" +"形状投射能够让 [member shape] 沿着投射方向扫过,检测途中碰撞到的对象,投射方" +"向由 [member target_position] 决定(可用于类似激光武器的东西)。\n" +"要原地检测碰撞重叠,可以将 [member target_position] 设置为 [code]Vector2(0, " +"0)[/code] 并在同一[b]物理帧[/b]中调用 [method force_shapecast_update]。这样也" +"能克服将 [Area2D] 用于连续碰撞检测的一些限制,[Area2D] 节点通常需要等待几帧才" +"能获取碰撞信息,而使用信号则会产生不必要的复杂度。\n" +"这个节点可以检测到多个碰撞对象,但通常只用于检测第一次碰撞。\n" +"[b]注意:[/b]形状投射所需的计算量比光线投射更大。" + +msgid "" "Adds a collision exception so the shape does not report collisions with the " "specified [CollisionObject2D] node." msgstr "添加碰撞例外,使该形状不汇报与指定 [CollisionObject2D] 节点的碰撞。" @@ -90442,6 +98064,82 @@ msgid "Removes all collision exceptions for this shape." msgstr "移除该形状的所有碰撞例外。" msgid "" +"Updates the collision information for the shape. Use this method to update " +"the collision information immediately instead of waiting for the next " +"[code]_physics_process[/code] call, for example if the shape or its parent " +"has changed state.\n" +"[b]Note:[/b] [code]enabled == true[/code] is not required for this to work." +msgstr "" +"更新形状的碰撞信息。使用此方法会立即更新碰撞信息,不会等待到下一次 " +"[code]_physics_process[/code] 调用,例如,如果形状或其父级已更改状态。\n" +"[b]注意:[/b]此函数不需要 [code]enabled == true[/code] 也能正常工作。" + +msgid "" +"The fraction from the [ShapeCast2D]'s origin to its [member target_position] " +"(between 0 and 1) of how far the shape can move without triggering a " +"collision." +msgstr "" +"从 [ShapeCast2D] 的原点到其 [member target_position](介于 0 和 1 之间)的分" +"数,即形状可以在不触发碰撞的情况下移动多远。" + +msgid "" +"The fraction from the [ShapeCast2D]'s origin to its [member target_position] " +"(between 0 and 1) of how far the shape must move to trigger a collision." +msgstr "" +"从 [ShapeCast2D] 的原点到其 [member target_position](介于 0 和 1 之间)的分" +"数,即形状必须移动多远才能触发碰撞。" + +msgid "" +"Returns the collided [Object] of one of the multiple collisions at [param " +"index], or [code]null[/code] if no object is intersecting the shape (i.e. " +"[method is_colliding] returns [code]false[/code])." +msgstr "" +"返回 [param index] 处多次碰撞之一的碰撞 [Object],如果没有对象与形状相交(即 " +"[method is_colliding] 返回 [code]false[/code]),则返回 [code]null[/code]。" + +msgid "" +"Returns the [RID] of the collided object of one of the multiple collisions " +"at [param index]." +msgstr "返回 [param index] 处多次碰撞之一的碰撞对象的 [RID]。" + +msgid "" +"Returns the shape ID of the colliding shape of one of the multiple " +"collisions at [param index], or [code]0[/code] if no object is intersecting " +"the shape (i.e. [method is_colliding] returns [code]false[/code])." +msgstr "" +"返回 [param index] 处多次碰撞之一的碰撞形状的形状 ID,如果没有对象与该形状相" +"交(即 [method is_colliding] 返回 [code]false[/code]),则返回 [code]0[/" +"code]。" + +msgid "" +"The number of collisions detected at the point of impact. Use this to " +"iterate over multiple collisions as provided by [method get_collider], " +"[method get_collider_shape], [method get_collision_point], and [method " +"get_collision_normal] methods." +msgstr "" +"在撞击点检测到的碰撞次数。使用它来迭代由 [method get_collider]、[method " +"get_collider_shape]、[method get_collision_point]、和 [method " +"get_collision_normal] 方法提供的多个碰撞。" + +msgid "" +"Returns the normal of one of the multiple collisions at [param index] of the " +"intersecting object." +msgstr "返回相交对象 [param index] 处多次碰撞之一的法线。" + +msgid "" +"Returns the collision point of one of the multiple collisions at [param " +"index] where the shape intersects the colliding object.\n" +"[b]Note:[/b] this point is in the [b]global[/b] coordinate system." +msgstr "" +"返回形状与碰撞对象相交的 [param index] 处多次碰撞之一的碰撞点。\n" +"[b]注意:[/b]这个点在[b]全局[/b]坐标系中。" + +msgid "" +"Returns whether any object is intersecting with the shape's vector " +"(considering the vector length)." +msgstr "返回是否有任何对象与形状的向量相交(考虑向量长度)。" + +msgid "" "Removes a collision exception so the shape does report collisions with the " "specified [CollisionObject2D] node." msgstr "移除碰撞例外,使该形状能够汇报与指定 [CollisionObject2D] 节点的碰撞。" @@ -90451,6 +98149,30 @@ msgid "" "specified [RID]." msgstr "移除碰撞例外,使该形状能够汇报与指定 [RID] 的碰撞。" +msgid "" +"The shape's collision mask. Only objects in at least one collision layer " +"enabled in the mask will be detected." +msgstr "" +"该形状的碰撞掩码。只有至少启用了一个在该掩码中的碰撞层的对象才会被检测到。" + +msgid "" +"Returns the complete collision information from the collision sweep. The " +"data returned is the same as in the [method PhysicsDirectSpaceState2D." +"get_rest_info] method." +msgstr "" +"从碰撞扫描中返回完整的碰撞信息。返回的数据与 [method " +"PhysicsDirectSpaceState2D.get_rest_info] 方法中的数据相同。" + +msgid "" +"The collision margin for the shape. A larger margin helps detecting " +"collisions more consistently, at the cost of precision." +msgstr "该形状的碰撞边距。较大的边距有助于更一致地检测碰撞,但代价是牺牲精度。" + +msgid "" +"The number of intersections can be limited with this parameter, to reduce " +"the processing time." +msgstr "可以使用这个参数来限制相交点的数量,减少处理时间。" + msgid "The [Shape2D]-derived shape to be used for collision queries." msgstr "派生自 [Shape2D] 的形状,用于碰撞查询。" @@ -90458,9 +98180,104 @@ msgid "" "The shape's destination point, relative to this node's [code]position[/code]." msgstr "该形状的目标点,相对于该节点的 [code]position[/code]。" +msgid "" +"Node for physics collision sweep and immediate overlap queries. Similar to " +"the [RayCast3D] node." +msgstr "用于物理碰撞扫描和即时重叠查询的节点。类似于 [RayCast3D] 节点。" + +msgid "" +"Shape casting allows to detect collision objects by sweeping the [member " +"shape] along the cast direction determined by [member target_position] " +"(useful for things like beam weapons).\n" +"Immediate collision overlaps can be done with the [member target_position] " +"set to [code]Vector3(0, 0, 0)[/code] and by calling [method " +"force_shapecast_update] within the same [b]physics_frame[/b]. This also " +"helps to overcome some limitations of [Area3D] when used as a continuous " +"detection area, often requiring waiting a couple of frames before collision " +"information is available to [Area3D] nodes, and when using the signals " +"creates unnecessary complexity.\n" +"The node can detect multiple collision objects, but it's usually used to " +"detect the first collision.\n" +"[b]Note:[/b] Shape casting is more computationally expensive compared to ray " +"casting." +msgstr "" +"形状投射能够让 [member shape] 沿着投射方向扫过,检测途中碰撞到的对象,投射方" +"向由 [member target_position] 决定(可用于类似激光武器的东西)。\n" +"要原地检测碰撞重叠,可以将 [member target_position] 设置为 [code]Vector3(0, " +"0, 0)[/code] 并在同一[b]物理帧[/b]中调用 [method force_shapecast_update]。这" +"样也能克服将 [Area2D] 用于连续碰撞检测的一些限制,[Area3D] 节点通常需要等待几" +"帧才能获取碰撞信息,而使用信号则会产生不必要的复杂度。\n" +"这个节点可以检测到多个碰撞对象,但通常只用于检测第一次碰撞。\n" +"[b]注意:[/b]形状投射所需的计算量比光线投射更大。" + +msgid "" +"Adds a collision exception so the shape does not report collisions with the " +"specified [CollisionObject3D] node." +msgstr "添加碰撞例外,让该形状不再汇报与指定 [CollisionObject3D] 节点的碰撞。" + msgid "Removes all collision exceptions for this [ShapeCast3D]." msgstr "移除该 [ShapeCast3D] 的所有碰撞例外。" +msgid "" +"The fraction from the [ShapeCast3D]'s origin to its [member target_position] " +"(between 0 and 1) of how far the shape can move without triggering a " +"collision." +msgstr "" +"从 [ShapeCast3D] 的原点到其 [member target_position](介于 0 和 1 之间)的分" +"数,即形状可以在不触发碰撞的情况下移动多远。" + +msgid "" +"The fraction from the [ShapeCast3D]'s origin to its [member target_position] " +"(between 0 and 1) of how far the shape must move to trigger a collision." +msgstr "" +"从 [ShapeCast3D] 的原点到其 [member target_position](介于 0 和 1 之间)的分" +"数,即形状必须移动多远才能触发碰撞。" + +msgid "" +"Removes a collision exception so the shape does report collisions with the " +"specified [CollisionObject3D] node." +msgstr "移除碰撞例外,让该形状汇报与指定 [CollisionObject3D] 节点的碰撞。" + +msgid "" +"This method is used internally to update the debug gizmo in the editor. Any " +"code placed in this function will be called whenever the [member shape] " +"resource is modified." +msgstr "" +"该方法在内部被用于更新编辑器中的调试小工具。每当修改 [member shape] 资源时," +"都会调用该函数中放置的任何代码。" + +msgid "" +"The shape's collision mask. Only objects in at least one collision layer " +"enabled in the mask will be detected. See [url=$DOCS_URL/tutorials/physics/" +"physics_introduction.html#collision-layers-and-masks]Collision layers and " +"masks[/url] in the documentation for more information." +msgstr "" +"形状的碰撞掩码。只有至少启用了一个在该掩码中的碰撞层的对象才会被检测到。有关" +"详细信息,请参阅文档中的[url=$DOCS_URL/tutorials/physics/" +"physics_introduction.html#collision-layers-and-masks]《碰撞层和掩码》[/url]。" + +msgid "" +"Returns the complete collision information from the collision sweep. The " +"data returned is the same as in the [method PhysicsDirectSpaceState3D." +"get_rest_info] method." +msgstr "" +"从碰撞扫描返回完整的碰撞信息。返回的数据与 [method PhysicsDirectSpaceState3D." +"get_rest_info] 方法中的数据相同。" + +msgid "" +"The custom color to use to draw the shape in the editor and at run-time if " +"[b]Visible Collision Shapes[/b] is enabled in the [b]Debug[/b] menu. This " +"color will be highlighted at run-time if the [ShapeCast3D] is colliding with " +"something.\n" +"If set to [code]Color(0.0, 0.0, 0.0)[/code] (by default), the color set in " +"[member ProjectSettings.debug/shapes/collision/shape_color] is used." +msgstr "" +"如果在[b]调试[/b]菜单中启用了[b]可见碰撞形状[/b],则用于在编辑器中和运行时中" +"绘制形状的自定义颜色。如果 [ShapeCast3D] 与某物发生碰撞,该颜色将在运行时突出" +"显示。\n" +"如果设置为 [code]Color(0.0, 0.0, 0.0)[/code](默认值),则使用 [member " +"ProjectSettings.debug/shapes/collision/shape_color] 中设置的颜色。" + msgid "The [Shape3D]-derived shape to be used for collision queries." msgstr "派生自 [Shape3D] 的形状,用于碰撞查询。" @@ -90663,10 +98480,42 @@ msgstr "如果信号的对象和名称相同,则返回 [code]true[/code]。" msgid "Skeleton for 2D characters and animated objects." msgstr "2D 角色和动画对象的骨架。" +msgid "" +"Skeleton2D parents a hierarchy of [Bone2D] objects. It is a requirement of " +"[Bone2D]. Skeleton2D holds a reference to the rest pose of its children and " +"acts as a single point of access to its bones.\n" +"To setup different types of inverse kinematics for the given Skeleton2D, a " +"[SkeletonModificationStack2D] should be created. They can be applied by " +"creating the desired number of modifications, which can be done by " +"increasing [member SkeletonModificationStack2D.modification_count]." +msgstr "" +"Skeleton2D 是 [Bone2D] 对象树形结构的父级。它是 [Bone2D] 所必需的。" +"Skeleton2D 持有对其子级的放松姿势的引用,充当其骨骼的单一访问点。\n" +"要为给定的 Skeleton2D 设置不同类型的反向运动学机制,应创建一个 " +"[SkeletonModificationStack2D]。这些机制可以通过创建所需数量的修改器来应用,增" +"加 [member SkeletonModificationStack2D.modification_count] 即可创建。" + msgid "2D skeletons" msgstr "2D 骨架" msgid "" +"Executes all the modifications on the [SkeletonModificationStack2D], if the " +"Skeleton2D has one assigned." +msgstr "" +"如果该 Skeleton2D 分配有 [SkeletonModificationStack2D],则执行其中的所有修" +"改。" + +msgid "" +"Returns a [Bone2D] from the node hierarchy parented by Skeleton2D. The " +"object to return is identified by the parameter [param idx]. Bones are " +"indexed by descending the node hierarchy from top to bottom, adding the " +"children of each branch before moving to the next sibling." +msgstr "" +"从由 Skeleton2D 为父节点的节点层次结构中返回 [Bone2D]。要返回的对象由参数 " +"[param idx] 标识。骨骼通过从上到下降低节点层次结构来索引,在移动到下一个兄弟" +"节点之前添加每个分支的子节点。" + +msgid "" "Returns the number of [Bone2D] nodes in the node hierarchy parented by " "Skeleton2D." msgstr "返回由 Skeleton2D 为父节点的节点层次结构中 [Bone2D] 节点的数量。" @@ -90682,9 +98531,29 @@ msgstr "如果存在,则返回附加到此骨架的 [SkeletonModificationStack msgid "Returns the [RID] of a Skeleton2D instance." msgstr "返回 Skeleton2D 实例的 [RID]。" +msgid "" +"Sets the local pose transform, [param override_pose], for the bone at [param " +"bone_idx].\n" +"[param strength] is the interpolation strength that will be used when " +"applying the pose, and [param persistent] determines if the applied pose " +"will remain.\n" +"[b]Note:[/b] The pose transform needs to be a local transform relative to " +"the [Bone2D] node at [param bone_idx]!" +msgstr "" +"为 [param bone_idx] 处的骨骼设置局部姿势变换 [param override_pose]。\n" +"[param strength] 是应用姿势时将使用的插值强度,[param persistent] 决定是否会" +"保持应用的姿势。\n" +"[b]注意:[/b]姿势变换需要是相对于 [param bone_idx] 处的 [Bone2D] 节点的局部变" +"换!" + msgid "Sets the [SkeletonModificationStack2D] attached to this skeleton." msgstr "设置附加到此骨架的 [SkeletonModificationStack2D]。" +msgid "" +"Emitted when the [Bone2D] setup attached to this skeletons changes. This is " +"primarily used internally within the skeleton." +msgstr "当附加到该骨架的 [Bone2D] 设置更改时发出。这主要在骨架内部使用。" + msgid "Skeleton for characters and animated objects." msgstr "角色和动画对象的骨架。" @@ -90732,6 +98601,12 @@ msgid "" "its children." msgstr "强制更新索引为 [param bone_idx] 的骨骼及其所有子项的变换/姿势。" +msgid "" +"Returns an array containing the bone indexes of all the children node of the " +"passed in bone, [param bone_idx]." +msgstr "" +"返回一个数组,其中包含传入骨骼 [param bone_idx] 的所有子节点的骨骼索引。" + msgid "Returns the number of bones in the skeleton." msgstr "返回骨架中骨骼的数量。" @@ -90779,6 +98654,30 @@ msgstr "" msgid "Returns the rest transform for a bone [param bone_idx]." msgstr "返回骨骼 [param bone_idx] 的放松变换。" +msgid "" +"Returns an array with all of the bones that are parentless. Another way to " +"look at this is that it returns the indexes of all the bones that are not " +"dependent or modified by other bones in the Skeleton." +msgstr "" +"返回一个包含所有无父级的骨骼的数组。另一种看待这一点的方法是,它返回所有骨骼" +"的索引,这些骨骼不依赖于该骨架中的其他骨骼,或不被该骨架中的其他骨骼修改。" + +msgid "" +"Returns the number of times the bone hierarchy has changed within this " +"skeleton, including renames.\n" +"The Skeleton version is not serialized: only use within a single instance of " +"Skeleton3D.\n" +"Use for invalidating caches in IK solvers and other nodes which process " +"bones." +msgstr "" +"返回骨骼层次结构在该骨架中更改的次数,包括重命名。\n" +"骨架版本没有被序列化:只能在 Skeleton3D 的单个实例中使用。\n" +"用于使 IK 解算器中的和处理骨骼的其他节点中的缓存失效。" + +msgid "" +"Returns whether the bone pose for the bone at [param bone_idx] is enabled." +msgstr "返回位于 [param bone_idx] 的骨骼是否启用了骨骼姿势。" + msgid "Returns all bones in the skeleton to their rest poses." msgstr "将骨架中的所有骨骼都恢复到放松姿势。" @@ -90818,6 +98717,13 @@ msgid "Sets all bone poses to rests." msgstr "将所有骨骼都设置为放松姿势。" msgid "" +"Disables the pose for the bone at [param bone_idx] if [code]false[/code], " +"enables the bone pose if [code]true[/code]." +msgstr "" +"如果为 [code]false[/code] 则为位于 [param bone_idx] 的骨骼禁用姿势,如果为 " +"[code]true[/code] 则启用该骨骼姿势。" + +msgid "" "Sets the global pose transform, [param pose], for the bone at [param " "bone_idx].\n" "[param amount] is the interpolation strength that will be used when applying " @@ -90848,6 +98754,30 @@ msgid "Sets the rest transform for bone [param bone_idx]." msgstr "设置骨骼 [param bone_idx] 的放松变换。" msgid "" +"Unparents the bone at [param bone_idx] and sets its rest position to that of " +"its parent prior to being reset." +msgstr "" +"让位于 [param bone_idx] 的骨骼不再有父级,并将其放松位置设置为之前父级放松时" +"的位置。" + +msgid "" +"Multiplies the position 3D track animation.\n" +"[b]Note:[/b] Unless this value is [code]1.0[/code], the key value in " +"animation will not match the actual position value." +msgstr "" +"乘以位置 3D 轨迹动画。\n" +"[b]注意:[/b]除非这个值是 [code]1.0[/code],否则动画中的关键值将与实际位置值" +"不匹配。" + +msgid "" +"This signal is emitted when one of the bones in the Skeleton3D node have " +"changed their pose. This is used to inform nodes that rely on bone positions " +"that one of the bones in the Skeleton3D have changed their transform/pose." +msgstr "" +"当该 Skeleton3D 节点中的任一骨骼,改变了它们的姿势时,就会发出这个信号。这用" +"于通知依赖骨骼位置的节点,Skeleton3D 中的任一骨骼已经改变了它们的变换/姿势。" + +msgid "" "SkeletonIK3D is used to place the end bone of a [Skeleton3D] bone chain at a " "certain point in 3D by rotating all bones in the chain accordingly." msgstr "" @@ -90915,6 +98845,55 @@ msgstr "" "[/codeblock]" msgid "" +"Returns the parent [Skeleton3D] Node that was present when SkeletonIK " +"entered the [SceneTree]. Returns null if the parent node was not a " +"[Skeleton3D] Node when SkeletonIK3D entered the [SceneTree]." +msgstr "" +"返回 SkeletonIK 进入 [SceneTree] 时存在的父级 [Skeleton3D] 节点。如果 " +"SkeletonIK3D 进入 [SceneTree] 时父节点不是 [Skeleton3D] 节点,则返回 null。" + +msgid "" +"Returns [code]true[/code] if SkeletonIK is applying IK effects on continues " +"frames to the [Skeleton3D] bones. Returns [code]false[/code] if SkeletonIK " +"is stopped or [method start] was used with the [code]one_time[/code] " +"parameter set to [code]true[/code]." +msgstr "" +"如果 SkeletonIK 正将 IK 效果应用到 [Skeleton3D] 骨骼的连续帧上,则返回 " +"[code]true[/code]。如果 SkeletonIK 被停止或 [method start] 被使用时 " +"[code]one_time[/code] 参数被设置为 [code]true[/code],则返回 [code]false[/" +"code]。" + +msgid "" +"Starts applying IK effects on each frame to the [Skeleton3D] bones but will " +"only take effect starting on the next frame. If [code]one_time[/code] is " +"[code]true[/code], this will take effect immediately but also reset on the " +"next frame." +msgstr "" +"开始将 IK 效果应用到每一帧的 [Skeleton3D] 骨骼,但只会在下一帧开始生效。如果 " +"[code]one_time[/code] 为 [code]true[/code],这将立即生效,但仍会在下一帧重" +"置。" + +msgid "" +"Stops applying IK effects on each frame to the [Skeleton3D] bones and also " +"calls [method Skeleton3D.clear_bones_global_pose_override] to remove " +"existing overrides on all bones." +msgstr "" +"停止将 IK 效果应用到每帧的 [Skeleton3D] 骨骼,并调用 [method Skeleton3D." +"clear_bones_global_pose_override] 来移除所有骨骼上的现有覆盖。" + +msgid "" +"Interpolation value for how much the IK results are applied to the current " +"skeleton bone chain. A value of [code]1.0[/code] will overwrite all skeleton " +"bone transforms completely while a value of [code]0.0[/code] will visually " +"disable the SkeletonIK. A value at or below [code]0.01[/code] also calls " +"[method Skeleton3D.clear_bones_global_pose_override]." +msgstr "" +"IK 效果被应用于当前骨架骨骼链的程度的插值。[code]1.0[/code] 的值将完全覆盖所" +"有骨架骨骼变换,而 [code]0.0[/code] 的值将在视觉上禁用 SkeletonIK。等于或低" +"于 [code]0.01[/code] 的值也会调用 [method Skeleton3D." +"clear_bones_global_pose_override]。" + +msgid "" "Secondary target position (first is [member target] property or [member " "target_node]) for the IK chain. Use magnet position (pole target) to control " "the bending of the IK chain. Only works if the bone chain has more than 2 " @@ -90983,11 +98962,131 @@ msgid "A resource that operates on [Bone2D] nodes in a [Skeleton2D]." msgstr "对 [Skeleton2D] 中的 [Bone2D] 节点进行操作的资源。" msgid "" +"This resource provides an interface that can be expanded so code that " +"operates on [Bone2D] nodes in a [Skeleton2D] can be mixed and matched " +"together to create complex interactions.\n" +"This is used to provide Godot with a flexible and powerful Inverse " +"Kinematics solution that can be adapted for many different uses." +msgstr "" +"该资源提供了一个可以扩展的接口,因此在 [Skeleton2D] 中的 [Bone2D] 节点上运行" +"的代码可以被混合并匹配在一起,以创建复杂的交互。\n" +"这用于为 Godot 提供一套灵活而强大的反向运动学解决方案,该解决方案可以适用许多" +"不同的用途。" + +msgid "" +"Used for drawing [b]editor-only[/b] modification gizmos. This function will " +"only be called in the Godot editor and can be overridden to draw custom " +"gizmos.\n" +"[b]Note:[/b] You will need to use the Skeleton2D from [method " +"SkeletonModificationStack2D.get_skeleton] and it's draw functions, as the " +"[SkeletonModification2D] resource cannot draw on its own." +msgstr "" +"用于绘制[b]编辑器专用[/b]的修改器小工具。此函数只会在 Godot 编辑器中调用,并" +"且可以被覆盖,来绘制自定义小工具。\n" +"[b]注意:[/b]你需要使用来自 [method SkeletonModificationStack2D." +"get_skeleton] 的 Skeleton2D 及其绘制函数,因为 [SkeletonModification2D] 资源" +"本身无法进行绘制。" + +msgid "" +"Executes the given modification. This is where the modification performs " +"whatever function it is designed to do." +msgstr "执行给定的修改器。修改器在此时执行应执行的函数。" + +msgid "" +"Called when the modification is setup. This is where the modification " +"performs initialization." +msgstr "安装修改器时调用。修改器在此时执行初始化。" + +msgid "" +"Takes a angle and clamps it so it is within the passed-in [param min] and " +"[param max] range. [param invert] will inversely clamp the angle, clamping " +"it to the range outside of the given bounds." +msgstr "" +"接受角度并将其钳制在传入的 [param min] 和 [param max] 范围内。[param invert] " +"会逆向钳制该角度,将其钳制在给定范围之外。" + +msgid "" +"Returns whether this modification will call [method _draw_editor_gizmo] in " +"the Godot editor to draw modification-specific gizmos." +msgstr "" +"返回这个修改器是否会在 Godot 编辑器中调用 [method _draw_editor_gizmo] 绘制针" +"对修改器的小工具。" + +msgid "Returns whether this modification has been successfully setup or not." +msgstr "返回此修改器是否已被成功安装。" + +msgid "" +"Returns the [SkeletonModificationStack2D] that this modification is bound " +"to. Through the modification stack, you can access the Skeleton2D the " +"modification is operating on." +msgstr "" +"返回该修改器绑定的 [SkeletonModificationStack2D]。你可以通过这个修改器栈来访" +"问修改器所操作的 Skeleton2D。" + +msgid "" +"Sets whether this modification will call [method _draw_editor_gizmo] in the " +"Godot editor to draw modification-specific gizmos." +msgstr "" +"设置这个修改器是否会在 Godot 编辑器中调用 [method _draw_editor_gizmo] 绘制针" +"对修改器的小工具。" + +msgid "" +"Manually allows you to set the setup state of the modification. This " +"function should only rarely be used, as the [SkeletonModificationStack2D] " +"the modification is bound to should handle setting the modification up." +msgstr "" +"允许你手动设置该修改器的安装状态。这个函数应很少使用,因为该修改器所绑定的 " +"[SkeletonModificationStack2D] 应该对该修改器进行安装。" + +msgid "" +"If [code]true[/code], the modification's [method _execute] function will be " +"called by the [SkeletonModificationStack2D]." +msgstr "" +"如果为 [code]true[/code],则该修改器的 [method _execute] 函数将被该 " +"[SkeletonModificationStack2D] 调用。" + +msgid "" +"The execution mode for the modification. This tells the modification stack " +"when to execute the modification. Some modifications have settings that are " +"only available in certain execution modes." +msgstr "" +"修改器的执行模式。会告诉修改器栈何时执行该修改器。某修修改器存在只能在特定执" +"行模式下可用的设置。" + +msgid "" "A modification that uses CCDIK to manipulate a series of bones to reach a " "target in 2D." msgstr "使用 CCDIK 操纵一系列骨骼到达某个 2D 目标的修改器。" msgid "" +"This [SkeletonModification2D] uses an algorithm called Cyclic Coordinate " +"Descent Inverse Kinematics, or CCDIK, to manipulate a chain of bones in a " +"[Skeleton2D] so it reaches a defined target.\n" +"CCDIK works by rotating a set of bones, typically called a \"bone chain\", " +"on a single axis. Each bone is rotated to face the target from the tip (by " +"default), which over a chain of bones allow it to rotate properly to reach " +"the target. Because the bones only rotate on a single axis, CCDIK [i]can[/i] " +"look more robotic than other IK solvers.\n" +"[b]Note:[/b] The CCDIK modifier has [code]ccdik_joints[/code], which are the " +"data objects that hold the data for each joint in the CCDIK chain. This is " +"different from a bone! CCDIK joints hold the data needed for each bone in " +"the bone chain used by CCDIK.\n" +"CCDIK also fully supports angle constraints, allowing for more control over " +"how a solution is met." +msgstr "" +"这种 [SkeletonModification2D] 使用的是名为循环坐标下降逆向运动学(Cyclic " +"Coordinate Descent Inverse Kinematics)的算法,即 CCDIK,能够对 [Skeleton2D] " +"中的一条骨骼链进行操作,从而抵达指定的目标。\n" +"CCDIK 的工作原理是让一组骨骼围绕单一轴旋转,这组骨骼通常称作“骨骼链”。每根骨" +"骼的尖端都会转向目标(默认),这样整条骨骼链就能够正确旋转,从而抵达目标。因" +"为这些骨骼都只围绕单一轴进行旋转,CCDIK 看起来[i]能够[/i]比其他 IK 解算器更加" +"机械。\n" +"[b]注意:[/b]CCDIK 修改器具有关节属性 [code]ccdik_joints[/code],里面是存放 " +"CCDIK 链中各个关节数据的数据对象。关节和骨骼是两码事!CCDIK 关节存放的是 " +"CCDIK 所使用的骨骼链中每根骨骼所需的数据。\n" +"CCDIK 还完全支持角度约束,能够对求解过程进行更多控制。" + +msgid "" "Returns the [Bone2D] node assigned to the CCDIK joint at [param joint_idx]." msgstr "返回分配给位于 [param joint_idx] 的 CCDIK 关节的 [Bone2D] 节点。" @@ -91017,10 +99116,27 @@ msgid "" msgstr "返回索引为 [param joint_idx] 的 CCDIK 关节是否启用角度约束。" msgid "" +"Returns whether the joint at [param joint_idx] is set to rotate from the " +"joint, [code]true[/code], or to rotate from the tip, [code]false[/code]. The " +"default is to rotate from the tip." +msgstr "" +"返回位于 [param joint_idx] 的关节是从该关节旋转,[code]true[/code],还是从尖" +"端旋转,[code]false[/code]。默认是从尖端旋转。" + +msgid "" "Sets the [Bone2D] node assigned to the CCDIK joint at [param joint_idx]." msgstr "设置分配给位于 [param joint_idx] 的 CCDIK 关节的 [Bone2D] 节点。" msgid "" +"Sets the bone index, [param bone_idx], of the CCDIK joint at [param " +"joint_idx]. When possible, this will also update the [code]bone2d_node[/" +"code] of the CCDIK joint based on data provided by the linked skeleton." +msgstr "" +"设置位于 [param joint_idx] 的 CCDIK 关节的骨骼索引 [param joint_idx]。可能" +"时,还会根据所链接的骨架提供的信息来更新 CCDIK 关节的 [code]bone2d_node[/" +"code]。" + +msgid "" "Sets whether the CCDIK joint at [param joint_idx] uses an inverted joint " "constraint.\n" "An inverted joint constraint only constraints the CCDIK joint to the angles " @@ -91046,15 +99162,76 @@ msgstr "" "决定是否启用 [param joint_idx] 处 CCDIK 关节上的角度约束。为 [code]true[/" "code] 时将启用约束,在求解时纳入考虑范围。" +msgid "" +"Sets whether the joint at [param joint_idx] is set to rotate from the joint, " +"[code]true[/code], or to rotate from the tip, [code]false[/code]." +msgstr "" +"设置位于 [param joint_idx] 的关节是设为从关节旋转,[code]true[/code],还是从" +"尖端旋转,[code]false[/code]。" + msgid "The number of CCDIK joints in the CCDIK modification." msgstr "CCDIK 修改中 CCDIK 关节的数量。" msgid "" +"The NodePath to the node that is the target for the CCDIK modification. This " +"node is what the CCDIK chain will attempt to rotate the bone chain to." +msgstr "" +"作为 CCDIK 修改目标的节点的 NodePath。该节点是 CCDIK 链会尝试将该骨骼链旋转到" +"的节点。" + +msgid "" +"The end position of the CCDIK chain. Typically, this should be a child of a " +"[Bone2D] node attached to the final [Bone2D] in the CCDIK chain." +msgstr "" +"该 CCDIK 链的结束位置。通常,这应该是一个 [Bone2D] 节点的一个子节点,被附加" +"到 CCDIK 链中的最终 [Bone2D] 上。" + +msgid "" "A modification that uses FABRIK to manipulate a series of [Bone2D] nodes to " "reach a target." msgstr "使用 FABRIK 操纵一系列 [Bone2D] 到达某个目标的修改器。" msgid "" +"This [SkeletonModification2D] uses an algorithm called Forward And Backward " +"Reaching Inverse Kinematics, or FABRIK, to rotate a bone chain so that it " +"reaches a target.\n" +"FABRIK works by knowing the positions and lengths of a series of bones, " +"typically called a \"bone chain\". It first starts by running a forward " +"pass, which places the final bone at the target's position. Then all other " +"bones are moved towards the tip bone, so they stay at the defined bone " +"length away. Then a backwards pass is performed, where the root/first bone " +"in the FABRIK chain is placed back at the origin. then all other bones are " +"moved so they stay at the defined bone length away. This positions the bone " +"chain so that it reaches the target when possible, but all of the bones stay " +"the correct length away from each other.\n" +"Because of how FABRIK works, it often gives more natural results than those " +"seen in [SkeletonModification2DCCDIK]. FABRIK also supports angle " +"constraints, which are fully taken into account when solving.\n" +"[b]Note:[/b] The FABRIK modifier has [code]fabrik_joints[/code], which are " +"the data objects that hold the data for each joint in the FABRIK chain. This " +"is different from [Bone2D] nodes! FABRIK joints hold the data needed for " +"each [Bone2D] in the bone chain used by FABRIK.\n" +"To help control how the FABRIK joints move, a magnet vector can be passed, " +"which can nudge the bones in a certain direction prior to solving, giving a " +"level of control over the final result." +msgstr "" +"这种 [SkeletonModification2D] 使用的是名为前后延伸反向运动学(Forward And " +"Backward Reaching Inverse Kinematics)的算法,即 FABRIK,能够对一条骨骼链进行" +"旋转,从而抵达目标。\n" +"FABRIK 需要先拿到一系列骨骼的位置和长度,这组骨骼通常称作“骨骼链”。它首先会做" +"一次向前处理,将最终的骨骼放置在目标的位置。然后让所有其他骨骼朝尖端骨骼移" +"动,恢复原有的骨骼长度。然后再做一次向后处理,将 FABRIK 链中的根/第一根骨骼放" +"回原点。然后移动所有其他骨骼,恢复原有的骨骼长度。这样就尽可能地让骨骼链抵达" +"了目标,并且所有骨骼之间的长度仍然为正确的长度。\n" +"由于 FABRIK 的工作原理,它通常比 [SkeletonModification2DCCDIK] 得到的结果更加" +"自然。FABRIK 还支持角度约束,在求解过程中会完全遵守这些约束。\n" +"[b]注意:[/b]FABRIK 修改器具有关节属性 [code]fabrik_joints[/code],里面是存" +"放 FABRIK 链中各个关节数据的数据对象。关节和 [Bone2D] 是两码事!FABRIK 关节存" +"放的是 FABRIK 所使用的骨骼链中每根 [Bone2D] 所需的数据。\n" +"可以传入磁铁向量来帮助控制 FABRIK 关节的移动,会在求解前让骨骼朝某个方向做略" +"微的移动,对最终结果进行微调。" + +msgid "" "Returns the [Bone2D] node assigned to the FABRIK joint at [param joint_idx]." msgstr "返回分配给位于 [param joint_idx] 的 FABRIK 关节的 [Bone2D] 节点。" @@ -91064,14 +99241,54 @@ msgid "" msgstr "" "返回分配给位于 [param joint_idx] 的 FABRIK 关节的 [Bone2D] 节点的索引。" +msgid "Returns the magnet position vector for the joint at [param joint_idx]." +msgstr "返回位于 [param joint_idx] 的关节的磁吸位置向量。" + +msgid "" +"Returns whether the joint is using the target's rotation rather than " +"allowing FABRIK to rotate the joint. This option only applies to the tip/" +"final joint in the chain." +msgstr "" +"返回关节是否正在使用目标的旋转,而不是允许 FABRIK 旋转关节。此选项仅适用于链" +"中的末端/最终关节。" + msgid "" "Sets the [Bone2D] node assigned to the FABRIK joint at [param joint_idx]." msgstr "设置分配给位于 [param joint_idx] 的 FABRIK 关节的 [Bone2D] 节点。" +msgid "" +"Sets the bone index, [param bone_idx], of the FABRIK joint at [param " +"joint_idx]. When possible, this will also update the [code]bone2d_node[/" +"code] of the FABRIK joint based on data provided by the linked skeleton." +msgstr "" +"设置位于 [param joint_idx] 的 FABRIK 关节的骨骼索引 [param bone_idx]。可能" +"时,这也会根据链接骨架所提供的数据来更新 FABRIK 关节的 [code]bone2d_node[/" +"code]。" + +msgid "Sets the magnet position vector for the joint at [param joint_idx]." +msgstr "设置位于 [param joint_idx] 的关节的磁吸位置向量。" + +msgid "" +"Sets whether the joint at [param joint_idx] will use the target node's " +"rotation rather than letting FABRIK rotate the node.\n" +"[b]Note:[/b] This option only works for the tip/final joint in the chain. " +"For all other nodes, this option will be ignored." +msgstr "" +"设置位于 [param joint_idx] 的关节是否正在使用目标节点的旋转,而不是让 FABRIK " +"旋转关节。\n" +"[b]注意:[/b]这个选项仅适用于链中的末端/最终关节。对于所有其他节点,这个选项" +"将被忽略。" + msgid "The number of FABRIK joints in the FABRIK modification." msgstr "FABRIK 修改中 FABRIK 关节的数量。" msgid "" +"The NodePath to the node that is the target for the FABRIK modification. " +"This node is what the FABRIK chain will attempt to rotate the bone chain to." +msgstr "" +"FABRIK 修改器的目标节点的 NodePath。FABRIK 链会尝试将骨骼链转向这个节点。" + +msgid "" "A modification that jiggles [Bone2D] nodes as they move towards a target." msgstr "让 [Bone2D] 节点在朝某个目标移动的过程中产生摇晃的修改器。" @@ -91143,7 +99360,7 @@ msgstr "返回表示 [param joint_idx] 处 Jiggle 关节是否使用重力的布 msgid "" "Returns whether the jiggle modifier is taking physics colliders into account " "when solving." -msgstr "返回 [param joint_idx] 处 Jiggle 关节在求解时是否考虑物理碰撞器。" +msgstr "返回 Jiggle 修改器在求解时是否考虑物理碰撞器。" msgid "" "Sets the collision mask that the Jiggle modifier will use when reacting to " @@ -91252,29 +99469,123 @@ msgstr "" "这种 [SkeletonModification2D] 会对骨骼进行旋转,让它看向某个目标。适合让角色" "的头部看向玩家、让炮塔看向目标以及其他需要让骨骼朝某个东西快速旋转的情况。" +msgid "" +"Returns the amount of additional rotation that is applied after the LookAt " +"modification executes." +msgstr "返回执行 LookAt 修改后被应用的额外旋转的量。" + +msgid "" +"Returns whether the constraints to this modification are inverted or not." +msgstr "返回该修改的约束是否反转。" + msgid "Returns the constraint's maximum allowed angle." msgstr "返回该约束允许的最大角度。" msgid "Returns the constraint's minimum allowed angle." msgstr "返回该约束允许的最小角度。" +msgid "" +"Returns [code]true[/code] if the LookAt modification is using constraints." +msgstr "如果该 LookAt 修改器正在使用约束,则返回 [code]true[/code]。" + +msgid "" +"Sets the amount of additional rotation that is to be applied after executing " +"the modification. This allows for offsetting the results by the inputted " +"rotation amount." +msgstr "设置执行该修改后要被应用的额外旋转的量。这允许将结果偏移输入的旋转量。" + +msgid "" +"When [code]true[/code], the modification will use an inverted joint " +"constraint.\n" +"An inverted joint constraint only constraints the [Bone2D] to the angles " +"[i]outside of[/i] the inputted minimum and maximum angles. For this reason, " +"it is referred to as an inverted joint constraint, as it constraints the " +"joint to the outside of the inputted values." +msgstr "" +"当为 [code]true[/code] 时,修改将使用一个反转的关节约束。\n" +"反转的关节约束仅将该 [Bone2D] 约束到输入的最小角度和最大角度[i]之外[/i]的角" +"度。出于这个原因,它被称为反向关节约束,因为它将关节约束在输入值的外部。" + msgid "Sets the constraint's maximum allowed angle." msgstr "设置该约束允许的最大角度。" msgid "Sets the constraint's minimum allowed angle." msgstr "设置该约束允许的最小角度。" +msgid "" +"Sets whether this modification will use constraints or not. When [code]true[/" +"code], constraints will be applied when solving the LookAt modification." +msgstr "" +"设置此修改器是否使用约束。为 [code]true[/code] 时,会在求解 LookAt 修改器时应" +"用约束。" + msgid "The [Bone2D] node that the modification will operate on." msgstr "要修改的 [Bone2D] 节点。" +msgid "The index of the [Bone2D] node that the modification will operate on." +msgstr "要执行修改的 [Bone2D] 节点的索引。" + +msgid "" +"The NodePath to the node that is the target for the LookAt modification. " +"This node is what the modification will rotate the [Bone2D] to." +msgstr "" +"作为 LookAt 修改目标的节点的 NodePath。该节点是该修改将 [Bone2D] 旋转到的节" +"点。" + msgid "" "A modification that applies the transforms of [PhysicalBone2D] nodes to " "[Bone2D] nodes." msgstr "将 [PhysicalBone2D] 节点的变换应用到 [Bone2D] 节点的修改器。" +msgid "" +"This modification takes the transforms of [PhysicalBone2D] nodes and applies " +"them to [Bone2D] nodes. This allows the [Bone2D] nodes to react to physics " +"thanks to the linked [PhysicalBone2D] nodes.\n" +"Experimental. Physical bones may be changed in the future to perform the " +"position update of [Bone2D] on their own." +msgstr "" +"该修改采用 [PhysicalBone2D] 节点的变换并将它们应用于 [Bone2D] 节点。由于链接" +"的 [PhysicalBone2D] 节点,这允许 [Bone2D] 节点对物理做出反应。\n" +"实验性的。物理骨骼在未来可能会被改变,以便自行执行 [Bone2D] 的位置更新。" + +msgid "" +"Empties the list of [PhysicalBone2D] nodes and populates it will all " +"[PhysicalBone2D] nodes that are children of the [Skeleton2D]." +msgstr "" +"清空 [PhysicalBone2D] 节点列表,并使用该 [Skeleton2D] 节点的所有 " +"[PhysicalBone2D] 子节点填充该列表。" + msgid "Returns the [PhysicalBone2D] node at [param joint_idx]." msgstr "返回位于 [param joint_idx] 的 [PhysicalBone2D] 节点。" +msgid "" +"Sets the [PhysicalBone2D] node at [param joint_idx].\n" +"[b]Note:[/b] This is just the index used for this modification, not the bone " +"index used in the [Skeleton2D]." +msgstr "" +"设置位于 [param joint_idx] 的 [PhysicalBone2D] 节点。\n" +"[b]注意:[/b]这个索引只适用于这个修改器,不是 [Skeleton2D] 使用的骨骼索引。" + +msgid "" +"Tell the [PhysicalBone2D] nodes to start simulating and interacting with the " +"physics world.\n" +"Optionally, an array of bone names can be passed to this function, and that " +"will cause only [PhysicalBone2D] nodes with those names to start simulating." +msgstr "" +"让 [PhysicalBone2D] 节点开始模拟,开始与物理世界进行交互。\n" +"还可以把骨骼名称数组传给这个函数,会导致只有这些名称的 [PhysicalBone2D] 节点" +"开始模拟。" + +msgid "" +"Tell the [PhysicalBone2D] nodes to stop simulating and interacting with the " +"physics world.\n" +"Optionally, an array of bone names can be passed to this function, and that " +"will cause only [PhysicalBone2D] nodes with those names to stop simulating." +msgstr "" +"让 [PhysicalBone2D] 节点停止模拟,不再与物理世界进行交互。\n" +"还可以把骨骼名称数组传给这个函数,会导致只有这些名称的 [PhysicalBone2D] 节点" +"停止模拟。" + msgid "The number of [PhysicalBone2D] nodes linked in this modification." msgstr "在这个修改器中链接的 [PhysicalBone2D] 节点的数量。" @@ -91312,6 +99623,26 @@ msgid "" msgstr "这种修改器会让两个骨骼按照余弦定理进行旋转,最终抵达目标。" msgid "" +"This [SkeletonModification2D] uses an algorithm typically called TwoBoneIK. " +"This algorithm works by leveraging the law of cosigns and the lengths of the " +"bones to figure out what rotation the bones currently have, and what " +"rotation they need to make a complete triangle, where the first bone, the " +"second bone, and the target form the three vertices of the triangle. Because " +"the algorithm works by making a triangle, it can only operate on two bones.\n" +"TwoBoneIK is great for arms, legs, and really any joints that can be " +"represented by just two bones that bend to reach a target. This solver is " +"more lightweight than [SkeletonModification2DFABRIK], but gives similar, " +"natural looking results." +msgstr "" +"这种 [SkeletonModification2D] 所使用的算法一般称之为 TwoBoneIK。这种算法的原" +"理是利用余弦定理和骨骼的长度来推算骨骼当前的旋转量和构成三角形所需的旋转量," +"三角形由第一根骨骼、第二根骨骼以及目标构成。因为这种算法的原理是构成三角形," +"所以仅能对两根骨骼进行操作。\n" +"TwoBoneIK 适用于手臂、腿部,其实任何能够用两根骨头弯向某个目标来代表的关节均" +"能使用。求解器比 [SkeletonModification2DFABRIK] 更轻量,但也能得到类似的比较" +"自然的结果。" + +msgid "" "Returns the [Bone2D] node that is being used as the first bone in the " "TwoBoneIK modification." msgstr "返回 TwoBoneIK 修改器中作为第一个骨骼的 [Bone2D] 节点。" @@ -91351,16 +99682,91 @@ msgid "" "the TwoBoneIK modification." msgstr "设置 TwoBoneIK 修改器中作为第二个骨骼的 [Bone2D] 节点的索引。" +msgid "" +"If [code]true[/code], the bones in the modification will blend outward as " +"opposed to inwards when contracting. If [code]false[/code], the bones will " +"bend inwards when contracting." +msgstr "" +"如果为 [code]true[/code],则该修改中的骨骼在收缩时将向外弯曲,而不是向内弯" +"曲。如果为 [code]false[/code],则骨骼在收缩时会向内弯曲。" + +msgid "" +"The maximum distance the target can be at. If the target is farther than " +"this distance, the modification will solve as if it's at this maximum " +"distance. When set to [code]0[/code], the modification will solve without " +"distance constraints." +msgstr "" +"该目标可以到达的最大距离。如果目标比这个距离更远,则该修改将如同它就在这个最" +"大距离处一样求解。当设置为 [code]0[/code] 时,则该修改将不受距离限制地求解。" + +msgid "" +"The minimum distance the target can be at. If the target is closer than this " +"distance, the modification will solve as if it's at this minimum distance. " +"When set to [code]0[/code], the modification will solve without distance " +"constraints." +msgstr "" +"该目标可以到达的最小距离。如果目标比这个距离更近,则该修改将如同它就在这个最" +"小距离处一样求解。当设置为 [code]0[/code] 时,则该修改将不受距离限制地求解。" + +msgid "" +"The NodePath to the node that is the target for the TwoBoneIK modification. " +"This node is what the modification will use when bending the [Bone2D] nodes." +msgstr "" +"作为 TwoBoneIK 修改目标的节点的 NodePath。该节点是弯曲 [Bone2D] 节点时该修改" +"将使用的节点。" + msgid "A resource that holds a stack of [SkeletonModification2D]s." msgstr "存放 [SkeletonModification2D] 栈的资源。" +msgid "" +"This resource is used by the Skeleton and holds a stack of " +"[SkeletonModification2D]s.\n" +"This controls the order of the modifications and how they are applied. " +"Modification order is especially important for full-body IK setups, as you " +"need to execute the modifications in the correct order to get the desired " +"results. For example, you want to execute a modification on the spine " +"[i]before[/i] the arms on a humanoid skeleton.\n" +"This resource also controls how strongly all of the modifications are " +"applied to the [Skeleton2D]." +msgstr "" +"该资源由 Skeleton 使用,并持有一个 [SkeletonModification2D] 堆栈。\n" +"这控制了修改的顺序以及它们的应用方式。修改顺序对于全身 IK 设置尤为重要,因为" +"需要以正确的顺序执行修改以获得所需的结果。例如,想在人形骨骼的手臂[i]之前[/i]" +"对脊柱执行一个修改。\n" +"该资源还控制所有修改被应用于 [Skeleton2D] 的强度。" + msgid "Adds the passed-in [SkeletonModification2D] to the stack." msgstr "将传入的 [SkeletonModification2D] 入栈。" +msgid "" +"Deletes the [SkeletonModification2D] at the index position [param mod_idx], " +"if it exists." +msgstr "" +"如果存在,则删除位于索引位置 [param mod_idx] 的 [SkeletonModification2D]。" + msgid "Enables all [SkeletonModification2D]s in the stack." msgstr "启用栈中的所有 [SkeletonModification2D]。" msgid "" +"Executes all of the [SkeletonModification2D]s in the stack that use the same " +"execution mode as the passed-in [param execution_mode], starting from index " +"[code]0[/code] to [member modification_count].\n" +"[b]Note:[/b] The order of the modifications can matter depending on the " +"modifications. For example, modifications on a spine should operate before " +"modifications on the arms in order to get proper results." +msgstr "" +"使用传入的执行模式 [param execution_mode] 执行栈中的所有 " +"[SkeletonModification2D],从索引 [code]0[/code] 执行到 [member " +"modification_count]。\n" +"[b]注意:[/b]根据修改器的不同,结果可能会因修改器顺序的不同而不同。例如,对脊" +"柱的修改应该在对手臂的修改之前执行,这样才能得到正确的结果。" + +msgid "" +"Returns a boolean that indicates whether the modification stack is setup and " +"can execute." +msgstr "返回一个布尔值,指示该修改堆栈是否已被设置并可以执行。" + +msgid "" "Returns the [SkeletonModification2D] at the passed-in index, [param mod_idx]." msgstr "返回传入索引 [param mod_idx] 处的 [SkeletonModification2D]。" @@ -91369,25 +99775,193 @@ msgid "" "to." msgstr "返回 SkeletonModification2D 绑定到的 [Skeleton2D] 节点。" +msgid "" +"Sets the modification at [param mod_idx] to the passed-in modification, " +"[param modification]." +msgstr "将位于 [param mod_idx] 的修改器设置为传入的 [param modification]。" + +msgid "" +"Sets up the modification stack so it can execute. This function should be " +"called by [Skeleton2D] and shouldn't be manually called unless you know what " +"you are doing." +msgstr "" +"设置该修改堆栈以便它可以执行。该函数应由 [Skeleton2D] 调用,除非知道自己在做" +"什么,否则不应被手动调用。" + +msgid "" +"If [code]true[/code], the modification's in the stack will be called. This " +"is handled automatically through the [Skeleton2D] node." +msgstr "" +"如果为 [code]true[/code],则会调用该堆栈中的修改器。这是通过 [Skeleton2D] 节" +"点自动处理的。" + msgid "The number of modifications in the stack." msgstr "栈中修改器的数量。" +msgid "" +"The interpolation strength of the modifications in stack. A value of " +"[code]0[/code] will make it where the modifications are not applied, a " +"strength of [code]0.5[/code] will be half applied, and a strength of " +"[code]1[/code] will allow the modifications to be fully applied and override " +"the [Skeleton2D] [Bone2D] poses." +msgstr "" +"堆栈中修改的插值强度。[code]0[/code] 的值将使修改不被应用,[code]0.5[/code] " +"的强度将应用一半,[code]1[/code] 的强度将允许修改被完全应用并覆盖 " +"[Skeleton2D] [Bone2D] 姿势。" + +msgid "Profile of a virtual skeleton used as a target for retargeting." +msgstr "用作重定向目标的虚拟骨架的配置文件。" + +msgid "" +"This resource is used in [EditorScenePostImport]. Some parameters are " +"referring to bones in [Skeleton3D], [Skin], [Animation], and some other " +"nodes are rewritten based on the parameters of [SkeletonProfile].\n" +"[b]Note:[/b] These parameters need to be set only when creating a custom " +"profile. In [SkeletonProfileHumanoid], they are defined internally as read-" +"only values." +msgstr "" +"这个资源在 [EditorScenePostImport] 中使用。一些参数是指 [Skeleton3D]、" +"[Skin]、[Animation] 中的骨骼,还有一些节点是根据 [SkeletonProfile] 中的参数改" +"写的。\n" +"[b]注意:[/b]只有在创建自定义配置时这些参数才需要被设置。在 " +"[SkeletonProfileHumanoid] 中,它们在内部被定义为只读值。" + +msgid "Returns the bone index that matches [param bone_name] as its name." +msgstr "返回名称与 [param bone_name] 匹配的骨骼的索引。" + +msgid "" +"Returns the name of the bone at [param bone_idx] that will be the key name " +"in the [BoneMap].\n" +"In the retargeting process, the returned bone name is the bone name of the " +"target skeleton." +msgstr "" +"返回位于 [param bone_idx] 的骨骼的名称,会成为 [BoneMap] 中的键名。\n" +"在重定向过程中,返回的骨骼名称是目标骨架中的骨骼名称。" + +msgid "" +"Returns the name of the bone which is the parent to the bone at [param " +"bone_idx]. The result is empty if the bone has no parent." +msgstr "" +"返回位于 [param bone_idx] 的骨骼的父级骨骼的名称。如果该骨骼没有父级,则结果" +"为空。" + +msgid "" +"Returns the name of the bone which is the tail of the bone at [param " +"bone_idx]." +msgstr "返回 [param bone_idx] 处骨骼的尾部骨骼的名称。" + msgid "Returns the group of the bone at [param bone_idx]." msgstr "返回索引为 [param bone_idx] 的骨骼的分组。" +msgid "" +"Returns the name of the group at [param group_idx] that will be the drawing " +"group in the [BoneMap] editor." +msgstr "" +"返回 [param group_idx] 处的组的名称,该组将成为 [BoneMap] 编辑器中的绘制组。" + +msgid "" +"Returns the offset of the bone at [param bone_idx] that will be the button " +"position in the [BoneMap] editor.\n" +"This is the offset with origin at the top left corner of the square." +msgstr "" +"返回在 [param bone_idx] 处的骨骼的偏移量,这将是 [BoneMap] 编辑器中的按钮位" +"置。\n" +"这是一个偏移量,原点在正方形的左上角。" + msgid "Returns the reference pose transform for bone [param bone_idx]." msgstr "返回索引为 [param bone_idx] 的骨骼的参考姿势变换。" msgid "Returns the tail direction of the bone at [param bone_idx]." msgstr "返回索引为 [param bone_idx] 的骨骼的尾部方向。" +msgid "" +"Returns the texture of the group at [param group_idx] that will be the " +"drawing group background image in the [BoneMap] editor." +msgstr "" +"返回 [param group_idx] 处的组的纹理,该组将作为 [BoneMap] 编辑器中的绘制组的" +"背景图像。" + +msgid "" +"Sets the name of the bone at [param bone_idx] that will be the key name in " +"the [BoneMap].\n" +"In the retargeting process, the setting bone name is the bone name of the " +"target skeleton." +msgstr "" +"设置在 [param bone_idx] 处的骨骼的名称,这将是 [BoneMap] 中的键名。\n" +"在重定向过程中,设置的骨骼名称是目标骨架的骨骼名称。" + +msgid "" +"Sets the bone with name [param bone_parent] as the parent of the bone at " +"[param bone_idx]. If an empty string is passed, then the bone has no parent." +msgstr "" +"将名称为 [param bone_parent] 的骨骼设置为索引为 [param bone_idx] 的骨骼的父" +"级。如果传入的是空字符串,则该骨骼没有父级。" + +msgid "" +"Sets the bone with name [param bone_tail] as the tail of the bone at [param " +"bone_idx]." +msgstr "" +"将名称为 [param bone_tail] 的骨骼设置为索引为 [param bone_idx] 的骨骼的尾部。" + msgid "Sets the group of the bone at [param bone_idx]." msgstr "设置索引为 [param bone_idx] 的骨骼的分组。" +msgid "" +"Sets the name of the group at [param group_idx] that will be the drawing " +"group in the [BoneMap] editor." +msgstr "" +"设置在 [param group_idx] 处的组的名称,这将是 [BoneMap] 编辑器中的绘制组。" + +msgid "" +"Sets the offset of the bone at [param bone_idx] that will be the button " +"position in the [BoneMap] editor.\n" +"This is the offset with origin at the top left corner of the square." +msgstr "" +"设置在 [param bone_idx] 处的骨骼的偏移量,这将是 [BoneMap] 编辑器中的按钮位" +"置。\n" +"这是原点在正方形左上角的偏移量。" + msgid "Sets the reference pose transform for bone [param bone_idx]." msgstr "设置骨骼 [param bone_idx] 的参考姿势变换。" msgid "" +"Sets the tail direction of the bone at [param bone_idx].\n" +"[b]Note:[/b] This only specifies the method of calculation. The actual " +"coordinates required should be stored in an external skeleton, so the " +"calculation itself needs to be done externally." +msgstr "" +"设置在 [param bone_idx] 处的骨骼的尾部方向。\n" +"[b]注意:[/b]这里只规定了计算方法。所需的实际坐标应该存储在外部骨架中,因此计" +"算本身需要在外部完成。" + +msgid "" +"Sets the texture of the group at [param group_idx] that will be the drawing " +"group background image in the [BoneMap] editor." +msgstr "" +"设置在 [param group_idx] 处的组的纹理,这将是 [BoneMap] 编辑器中绘制组的背景" +"图像。" + +msgid "" +"The amount of bones in retargeting section's [BoneMap] editor. For example, " +"[SkeletonProfileHumanoid] has 56 bones.\n" +"The size of elements in [BoneMap] updates when changing this property in " +"it's assigned [SkeletonProfile]." +msgstr "" +"重定向部分的 [BoneMap] 编辑器中的骨骼数量。例如,[SkeletonProfileHumanoid] " +"有 56 块骨头。\n" +"[BoneMap] 中元素的大小在其分配的 [SkeletonProfile] 中更改该属性时更新。" + +msgid "" +"The amount of groups of bones in retargeting section's [BoneMap] editor. For " +"example, [SkeletonProfileHumanoid] has 4 groups.\n" +"This property exists to separate the bone list into several sections in the " +"editor." +msgstr "" +"重定向部分的 [BoneMap] 编辑器中的骨骼组的数量。例如," +"[SkeletonProfileHumanoid] 有 4 个组。\n" +"这个属性的存在是为了在编辑器中把骨骼列表分成几个部分。" + +msgid "" "A bone name that will be used as the root bone in [AnimationTree]. This " "should be the bone of the parent of hips that exists at the world origin." msgstr "" @@ -91402,16 +99976,55 @@ msgstr "" "骨骼的名称,将使用模型的高度作为归一化的系数。例如," "[SkeletonProfileHumanoid] 将其定义为 [code]Hips[/code] 。" +msgid "" +"This signal is emitted when change the value in profile. This is used to " +"update key name in the [BoneMap] and to redraw the [BoneMap] editor.\n" +"[b]Note:[/b] This signal is not connected directly to editor to simplify the " +"reference, instead it is passed on to editor through the [BoneMap]." +msgstr "" +"更改配置中的值时会发出该信号。这被用于更新 [BoneMap] 中的键名并重绘 " +"[BoneMap] 编辑器。\n" +"[b]注意:[/b]为了简化引用,这个信号没有直接连接到编辑器,而是通过 [BoneMap] " +"传递给编辑器。" + +msgid "Direction to the average coordinates of bone children." +msgstr "子级骨骼平均坐标的方向。" + +msgid "Direction to the coordinates of specified bone child." +msgstr "指定子级骨骼坐标的方向。" + msgid "Direction is not calculated." msgstr "不计算方向。" msgid "A humanoid [SkeletonProfile] preset." msgstr "人形 [SkeletonProfile] 预设。" +msgid "" +"A [SkeletonProfile] as a preset that is optimized for the human form. This " +"exists for standardization, so all parameters are read-only." +msgstr "" +"针对人体优化的 [SkeletonProfile] 预设。存在的意义是进行标准化,所以所有参数都" +"是只读的。" + msgid "Background that uses a [Material] to draw a sky." msgstr "使用 [Material] 绘制天空的背景。" msgid "" +"The [Sky] class uses a [Material] to draw the background and update the " +"reflection/radiance cubemaps." +msgstr "[Sky] 类使用 [Material] 来绘制背景,会更新反射/辐照度立方体贴图。" + +msgid "" +"Sets the method for generating the radiance map from the sky. The radiance " +"map is a cubemap with increasingly blurry versions of the sky corresponding " +"to different levels of roughness. Radiance maps can be expensive to " +"calculate. See [enum ProcessMode] for options." +msgstr "" +"设置从天空生成辐照度贴图的方法。辐照度贴图是一个立方体贴图,具有递增的模糊版" +"本的天空,以对应于不同级别的粗糙度。辐照度贴图的计算成本很高。有关选项,请参" +"阅 [enum ProcessMode]。" + +msgid "" "The [Sky]'s radiance map size. The higher the radiance map size, the more " "detailed the lighting from the [Sky] will be.\n" "See [enum RadianceSize] constants for values.\n" @@ -91457,6 +100070,62 @@ msgstr "辐照度纹理尺寸为 2048×2048 像素。" msgid "Represents the size of the [enum RadianceSize] enum." msgstr "代表 [enum RadianceSize] 枚举的大小。" +msgid "" +"Automatically selects the appropriate process mode based on your sky shader. " +"If your shader uses [code]TIME[/code] or [code]POSITION[/code], this will " +"use [constant PROCESS_MODE_REALTIME]. If your shader uses any of the " +"[code]LIGHT_*[/code] variables or any custom uniforms, this uses [constant " +"PROCESS_MODE_INCREMENTAL]. Otherwise, this defaults to [constant " +"PROCESS_MODE_QUALITY]." +msgstr "" +"根据天空着色器自动选择合适的处理模式。如果着色器使用 [code]TIME[/code] 或 " +"[code]POSITION[/code],这将使用 [constant PROCESS_MODE_REALTIME]。如果着色器" +"使用任何 [code]LIGHT_*[/code] 变量或任何自定义 uniform,这将使用 [constant " +"PROCESS_MODE_INCREMENTAL]。否则,这默认为 [constant PROCESS_MODE_QUALITY]。" + +msgid "" +"Uses high quality importance sampling to process the radiance map. In " +"general, this results in much higher quality than [constant " +"PROCESS_MODE_REALTIME] but takes much longer to generate. This should not be " +"used if you plan on changing the sky at runtime. If you are finding that the " +"reflection is not blurry enough and is showing sparkles or fireflies, try " +"increasing [member ProjectSettings.rendering/reflections/sky_reflections/" +"ggx_samples]." +msgstr "" +"使用高质量重要性采样处理辐照度贴图。得到的结果通常比 [constant " +"PROCESS_MODE_REALTIME] 的质量更高,但需要花费更多的时间来生成。如果你计划在运" +"行时修改天空,则不应使用。如果你发现反射不够模糊,出现了火花或者萤火虫,请尝" +"试增大 [member ProjectSettings.rendering/reflections/sky_reflections/" +"ggx_samples]。" + +msgid "" +"Uses the same high quality importance sampling to process the radiance map " +"as [constant PROCESS_MODE_QUALITY], but updates over several frames. The " +"number of frames is determined by [member ProjectSettings.rendering/" +"reflections/sky_reflections/roughness_layers]. Use this when you need " +"highest quality radiance maps, but have a sky that updates slowly." +msgstr "" +"使用与 [constant PROCESS_MODE_QUALITY] 相同的高质量重要性采样来处理辐照度贴" +"图,但更新会占用几帧。帧数由 [member ProjectSettings.rendering/reflections/" +"sky_reflections/roughness_layers] 决定。当需要最高质量的辐照度贴图,但天空更" +"新缓慢时,请使用该选项。" + +msgid "" +"Uses the fast filtering algorithm to process the radiance map. In general " +"this results in lower quality, but substantially faster run times. If you " +"need better quality, but still need to update the sky every frame, consider " +"turning on [member ProjectSettings.rendering/reflections/sky_reflections/" +"fast_filter_high_quality].\n" +"[b]Note:[/b] The fast filtering algorithm is limited to 256x256 cubemaps, so " +"[member radiance_size] must be set to [constant RADIANCE_SIZE_256]." +msgstr "" +"使用快速过滤算法处理辐照度贴图。一般来说,这会导致质量较低,但运行时间会大大" +"加快。如果需要更好的质量,但仍需要每帧更新天空,请考虑开启 [member " +"ProjectSettings.rendering/reflections/sky_reflections/" +"fast_filter_high_quality]。\n" +"[b]注意:[/b]快速过滤算法被限制为 256x256 立方体贴图,因此 [member " +"radiance_size] 必须被设置为 [constant RADIANCE_SIZE_256]。" + msgid "Base class for GUI sliders." msgstr "GUI 滑动条的基类。" @@ -91489,6 +100158,13 @@ msgid "" "values." msgstr "如果为 [code]true[/code],则滑动条将显示最小值和最大值的刻度。" +msgid "" +"Emitted when dragging stops. If [param value_changed] is true, [member Range." +"value] is different from the value when you started the dragging." +msgstr "" +"拖拽停止时触发。如果 [param value_changed] 为 true,则 [member Range.value] " +"与开始拖拽时的值不同。" + msgid "Emitted when dragging is started." msgstr "拖拽开始时触发。" @@ -91496,6 +100172,10 @@ msgid "Slider between two PhysicsBodies in 3D." msgstr "3D 中,两个 PhysicsBody 之间的滑动条。" msgid "" +"Slides across the X axis of the pivot object. See also [Generic6DOFJoint3D]." +msgstr "沿着轴心对象的 X 轴进行滑动。另见 [Generic6DOFJoint3D]。" + +msgid "" "The amount of damping of the rotation when the limit is surpassed.\n" "A lower damping value allows a rotation initiated by body A to travel to " "body B slower." @@ -91540,6 +100220,18 @@ msgstr "超出限制后的补偿。数值越低,损失的速度能量越多。 msgid "A soft mesh physics body." msgstr "柔性网格物理体。" +msgid "" +"A deformable physics body. Used to create elastic or deformable objects such " +"as cloth, rubber, or other flexible materials.\n" +"[b]Note:[/b] There are many known bugs in [SoftBody3D]. Therefore, it's not " +"recommended to use them for things that can affect gameplay (such as a " +"player character made entirely out of soft bodies)." +msgstr "" +"一种可形变的物理物体。用于创建弹性或可形变的对象,例如布料、橡胶、或其他柔性" +"材质。\n" +"[b]注意:[/b][SoftBody3D] 中有许多已知的问题。因此,不建议将它们用于可能影响" +"游戏玩法的东西上(例如完全由软体制作的玩家角色)。" + msgid "SoftBody" msgstr "SoftBody" @@ -91599,6 +100291,11 @@ msgstr "" "象 B 的接触。有关更多信息,请参阅文档中的[url=$DOCS_URL/tutorials/physics/" "physics_introduction.html#collision-layers-and-masks]《碰撞层与掩码》[/url]。" +msgid "" +"[NodePath] to a [CollisionObject3D] this SoftBody3D should avoid clipping." +msgstr "" +"指向 [CollisionObject3D] 的 [NodePath],这个 SoftBody3D 应该避免穿过它。" + msgid "If [code]true[/code], the [SoftBody3D] will respond to [RayCast3D]s." msgstr "如果为 [code]true[/code],则该 [SoftBody3D] 会响应 [RayCast3D]。" @@ -91647,6 +100344,15 @@ msgstr "沿着球体高度的段数。" msgid "Spherical shape for use with occlusion culling in [OccluderInstance3D]." msgstr "在 [OccluderInstance3D] 中进行遮挡剔除的球体形状。" +msgid "" +"[SphereOccluder3D] stores a sphere shape that can be used by the engine's " +"occlusion culling system.\n" +"See [OccluderInstance3D]'s documentation for instructions on setting up " +"occlusion culling." +msgstr "" +"[SphereOccluder3D] 存储的是球体形状,可供引擎的遮挡剔除系统使用。\n" +"有关设置遮挡剔除的说明,请参阅 [OccluderInstance3D] 的文档。" + msgid "The sphere's radius in 3D units." msgstr "球体半径,使用 3D 单位。" @@ -91672,6 +100378,61 @@ msgstr "球体的半径。形状的直径是半径的两倍。" msgid "Numerical input text field." msgstr "数值输入文本字段。" +msgid "" +"SpinBox is a numerical input text field. It allows entering integers and " +"floats.\n" +"[b]Example:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"var spin_box = SpinBox.new()\n" +"add_child(spin_box)\n" +"var line_edit = spin_box.get_line_edit()\n" +"line_edit.context_menu_enabled = false\n" +"spin_box.horizontal_alignment = LineEdit.HORIZONTAL_ALIGNMENT_RIGHT\n" +"[/gdscript]\n" +"[csharp]\n" +"var spinBox = new SpinBox();\n" +"AddChild(spinBox);\n" +"var lineEdit = spinBox.GetLineEdit();\n" +"lineEdit.ContextMenuEnabled = false;\n" +"spinBox.AlignHorizontal = LineEdit.HorizontalAlignEnum.Right;\n" +"[/csharp]\n" +"[/codeblocks]\n" +"The above code will create a [SpinBox], disable context menu on it and set " +"the text alignment to right.\n" +"See [Range] class for more options over the [SpinBox].\n" +"[b]Note:[/b] [SpinBox] relies on an underlying [LineEdit] node. To theme a " +"[SpinBox]'s background, add theme items for [LineEdit] and customize them.\n" +"[b]Note:[/b] If you want to implement drag and drop for the underlying " +"[LineEdit], you can use [method Control.set_drag_forwarding] on the node " +"returned by [method get_line_edit]." +msgstr "" +"SpinBox 是一种用于输入数值的文本字段,允许输入整数和浮点数。\n" +"[b]示例:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"var spin_box = SpinBox.new()\n" +"add_child(spin_box)\n" +"var line_edit = spin_box.get_line_edit()\n" +"line_edit.context_menu_enabled = false\n" +"spin_box.horizontal_alignment = LineEdit.HORIZONTAL_ALIGNMENT_RIGHT\n" +"[/gdscript]\n" +"[csharp]\n" +"var spinBox = new SpinBox();\n" +"AddChild(spinBox);\n" +"var lineEdit = spinBox.GetLineEdit();\n" +"lineEdit.ContextMenuEnabled = false;\n" +"spinBox.AlignHorizontal = LineEdit.HorizontalAlignEnum.Right;\n" +"[/csharp]\n" +"[/codeblocks]\n" +"上面的代码会创建一个 [SpinBox],禁用其中的上下文菜单,并将文本设置为右对" +"齐。\n" +"[SpinBox] 的更多选项见 [Range] 类。\n" +"[b]注意:[/b][SpinBox] 依赖底层的 [LineEdit] 节点。要为 [SpinBox] 的背景设置" +"主题,请为 [LineEdit] 添加主题项目并进行自定义。\n" +"[b]注意:[/b]如果你想要为底层的 [LineEdit] 实现拖放,可以对 [method " +"get_line_edit] 所返回的节点使用 [method Control.set_drag_forwarding]。" + msgid "Applies the current value of this [SpinBox]." msgstr "应用此 [SpinBox] 的当前值。" @@ -91691,6 +100452,14 @@ msgid "Changes the alignment of the underlying [LineEdit]." msgstr "更改底层 [LineEdit] 的对齐方式。" msgid "" +"If not [code]0[/code], [code]value[/code] will always be rounded to a " +"multiple of [code]custom_arrow_step[/code] when interacting with the arrow " +"buttons of the [SpinBox]." +msgstr "" +"如果不是 [code]0[/code],则在与 [SpinBox] 的箭头按钮交互时,[code]value[/" +"code] 将始终四舍五入为 [code]custom_arrow_step[/code] 的倍数。" + +msgid "" "If [code]true[/code], the [SpinBox] will be editable. Otherwise, it will be " "read only." msgstr "" @@ -91714,6 +100483,15 @@ msgid "" "the [SpinBox]." msgstr "在 [SpinBox] 的数值后添加指定的 [code]suffix[/code] 字符串。" +msgid "" +"Sets the value of the [Range] for this [SpinBox] when the [LineEdit] text is " +"[i]changed[/i] instead of [i]submitted[/i]. See [signal LineEdit." +"text_changed] and [signal LineEdit.text_submitted]." +msgstr "" +"当 [LineEdit] 的文本[i]发生变化[/i]而不是[i]被提交[/i]时,设置这个 [SpinBox] " +"的 [Range] 的值。见 [signal LineEdit.text_changed] 和 [signal LineEdit." +"text_submitted]。" + msgid "Sets a custom [Texture2D] for up and down arrows of the [SpinBox]." msgstr "为该 [SpinBox] 的上下箭头设置自定义的 [Texture2D]。" @@ -91771,6 +100549,16 @@ msgid "The split dragger is never visible and its space collapsed." msgstr "拆分拖动器永远不可见,其空间也被折叠。" msgid "" +"The minimum thickness of the area users can click on to grab the splitting " +"line. If [theme_item separation] or [theme_item h_grabber] / [theme_item " +"v_grabber]'s thickness are too small, this ensure that the splitting line " +"can still be dragged." +msgstr "" +"用户可以点击以抓取分割线的区域的最小厚度。如果 [theme_item separation] 或 " +"[theme_item h_grabber] / [theme_item v_grabber] 的厚度太小,这样可以确保拆分" +"线仍然可以被拖动。" + +msgid "" "The icon used for the grabber drawn in the middle area when [member " "vertical] is [code]false[/code]." msgstr "[member vertical] 为 [code]false[/code] 时绘制在中间区域的抓取器图标。" @@ -91850,10 +100638,42 @@ msgstr "" "像素)。为了提升性能,请使用尽可能低的 [member spot_attenuation] 值来达成想要" "的显示效果。" +msgid "" +"The maximal range that can be reached by the spotlight. Note that the " +"effectively lit area may appear to be smaller depending on the [member " +"spot_attenuation] in use. No matter the [member spot_attenuation] in use, " +"the light will never reach anything outside this range.\n" +"[b]Note:[/b] [member spot_range] is not affected by [member Node3D.scale] " +"(the light's scale or its parent's scale)." +msgstr "" +"聚光灯可以达到的最大范围。请注意,根据使用的 [member spot_attenuation],有效" +"照明区域可能看起来更小。无论 [member spot_attenuation] 为何值,光都不会到达此" +"范围之外的任何东西。\n" +"[b]注意:[/b][member spot_angle] 不受 [member Node3D.scale] 的影响(无论是该" +"灯光的缩放还是其父节点的缩放)。" + msgid "A helper node, mostly used in 3rd person cameras." msgstr "辅助节点,主要用于第三人称相机。" msgid "" +"The SpringArm3D node is a node that casts a ray (or collision shape) along " +"its z axis and moves all its direct children to the collision point, minus a " +"margin.\n" +"The most common use case for this is to make a 3rd person camera that reacts " +"to collisions in the environment.\n" +"The SpringArm3D will either cast a ray, or if a shape is given, it will cast " +"the shape in the direction of its z axis.\n" +"If you use the SpringArm3D as a camera controller for your player, you might " +"need to exclude the player's collider from the SpringArm3D's collision check." +msgstr "" +"SpringArm3D 节点是一种会沿着自己的 Z 轴投射射线(或碰撞形状)的节点,会将其所" +"有的直接子级移动到碰撞点减去一段边距的位置。\n" +"最常见的用例是制作第三人称相机,让它对环境中的碰撞做出反应。\n" +"SpringArm3D 投射的是射线,如果给定了形状,则会沿着 Z 轴投射这个形状。\n" +"如果使用 SpringArm3D 作为玩家的相机控制器,你可能需要从该 SpringArm3D 的碰撞" +"检查中排除玩家的碰撞器。" + +msgid "" "Adds the [PhysicsBody3D] object with the given [RID] to the list of " "[PhysicsBody3D] objects excluded from the collision check." msgstr "" @@ -91881,6 +100701,43 @@ msgstr "" "碰撞检测的目标层。更多信息请参阅文档中的[url=$DOCS_URL/tutorials/physics/" "physics_introduction.html#collision-layers-and-masks]《碰撞层与遮罩》[/url]。" +msgid "" +"When the collision check is made, a candidate length for the SpringArm3D is " +"given.\n" +"The margin is then subtracted to this length and the translation is applied " +"to the child objects of the SpringArm3D.\n" +"This margin is useful for when the SpringArm3D has a [Camera3D] as a child " +"node: without the margin, the [Camera3D] would be placed on the exact point " +"of collision, while with the margin the [Camera3D] would be placed close to " +"the point of collision." +msgstr "" +"进行碰撞检测时,会给出 SpringArm3D 的一个候选长度。\n" +"然后将边距减去该长度,并将该平移应用于该 SpringArm3D 的子对象。\n" +"当 SpringArm3D 有一个 [Camera3D] 作为子节点时,该边距很有用:如果没有边距," +"该 [Camera3D] 将被放置在准确的碰撞点上;而有边距时,该 [Camera3D] 将被放置在" +"靠近碰撞点的地方。" + +msgid "" +"The [Shape3D] to use for the SpringArm3D.\n" +"When the shape is set, the SpringArm3D will cast the [Shape3D] on its z axis " +"instead of performing a ray cast." +msgstr "" +"用于该 SpringArm3D 的 [Shape3D]。\n" +"当该形状被设置后,SpringArm3D 将在其 z 轴上投射该 [Shape3D],而不是执行一个射" +"线投射。" + +msgid "" +"The maximum extent of the SpringArm3D. This is used as a length for both the " +"ray and the shape cast used internally to calculate the desired position of " +"the SpringArm3D's child nodes.\n" +"To know more about how to perform a shape cast or a ray cast, please consult " +"the [PhysicsDirectSpaceState3D] documentation." +msgstr "" +"SpringArm3D 的最大范围。这用作内部使用的射线和形状投射的长度,以计算 " +"SpringArm3D 子节点的所需位置。\n" +"要了解有关如何执行形状投射或射线投射的更多信息,请参阅 " +"[PhysicsDirectSpaceState3D] 文档。" + msgid "General-purpose sprite node." msgstr "通用精灵节点。" @@ -92049,6 +100906,13 @@ msgstr "" "在 3D 环境中显示 2D 纹理信息的节点。另请参阅 [Sprite3D],其中定义了许多其他属" "性。" +msgid "" +"Returns a [TriangleMesh] with the sprite's vertices following its current " +"configuration (such as its [member axis] and [member pixel_size])." +msgstr "" +"返回一个 [TriangleMesh],其中精灵的顶点遵循它的当前配置(例如它的 [member " +"axis] 和 [member pixel_size])。" + msgid "Returns the rectangle representing this sprite." msgstr "返回表示此精灵的矩形。" @@ -92075,6 +100939,25 @@ msgstr "" "如果为 [code]true[/code],则从后面也可以看到纹理,如果为 [code]false[/code]," "则从后面看它是不可见的。" +msgid "" +"A color value used to [i]multiply[/i] the texture's colors. Can be used for " +"mood-coloring or to simulate the color of light.\n" +"[b]Note:[/b] If a [member GeometryInstance3D.material_override] is defined " +"on the [SpriteBase3D], the material override must be configured to take " +"vertex colors into account for albedo. Otherwise, the color defined in " +"[member modulate] will be ignored. For a [BaseMaterial3D], [member " +"BaseMaterial3D.vertex_color_use_as_albedo] must be [code]true[/code]. For a " +"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/code] must be inserted in the " +"shader's [code]fragment()[/code] function." +msgstr "" +"用于[i]乘以[/i]纹理颜色的颜色值。可用于氛围着色或模拟光的颜色。\n" +"[b]注意:[/b]如果在 [SpriteBase3D] 上定义了 [member GeometryInstance3D." +"material_override],则必须配置该材质,让它的反照率考虑顶点颜色。否则 [member " +"modulate] 中定义的颜色将被忽略。对于 [BaseMaterial3D],[member " +"BaseMaterial3D.vertex_color_use_as_albedo] 必须为 [code]true[/code]。对于 " +"[ShaderMaterial],必须将 [code]ALBEDO *= COLOR.rgb;[/code],插入到着色器的 " +"[code]fragment()[/code] 函数中。" + msgid "The size of one pixel's width on the sprite to scale it in 3D." msgstr "精灵上一个像素宽度的大小,以 3D 缩放。" @@ -92115,6 +100998,12 @@ msgid "If set, lights in the environment affect the sprite." msgstr "如果设置,环境中的灯光会影响精灵。" msgid "" +"If set, texture can be seen from the back as well. If not, the texture is " +"invisible when looking at it from behind." +msgstr "" +"如果启用,则纹理也可以从背面看到。如果未启用,则纹理从后面查看时不可见。" + +msgid "" "This mode performs standard alpha blending. It can display translucent " "areas, but transparency sorting issues may be visible when multiple " "transparent materials are overlapping." @@ -92122,6 +101011,31 @@ msgstr "" "这个模式会进行标准的 Alpha 混合。可以显示半透明区域,但透明材质存在重叠时可能" "会暴露透明度排序问题。" +msgid "" +"This mode only allows fully transparent or fully opaque pixels. Harsh edges " +"will be visible unless some form of screen-space antialiasing is enabled " +"(see [member ProjectSettings.rendering/anti_aliasing/quality/" +"screen_space_aa]). On the bright side, this mode doesn't suffer from " +"transparency sorting issues when multiple transparent materials are " +"overlapping. This mode is also known as [i]alpha testing[/i] or [i]1-bit " +"transparency[/i]." +msgstr "" +"该模式仅允许完全透明或完全不透明的像素。除非启用了某种形式的屏幕空间抗锯齿" +"(请参阅 [member ProjectSettings.rendering/anti_aliasing/quality/" +"screen_space_aa]),否则会看到粗糙的边缘。从好的方面来说,当多个透明材质重叠" +"时,该模式不会出现透明度排序问题。这种模式也被称为 [i]alpha 测试[/i]或 [i]1 " +"位透明度[/i]。" + +msgid "" +"This mode draws fully opaque pixels in the depth prepass. This is slower " +"than [constant ALPHA_CUT_DISABLED] or [constant ALPHA_CUT_DISCARD], but it " +"allows displaying translucent areas and smooth edges while using proper " +"sorting." +msgstr "" +"该模式在深度预渲染阶段绘制完全不透明的像素。这比 [constant " +"ALPHA_CUT_DISABLED] 或 [constant ALPHA_CUT_DISCARD] 慢,但它允许在使用正确排" +"序的同时显示半透明区域和平滑边缘。" + msgid "Sprite frame library for AnimatedSprite2D and AnimatedSprite3D." msgstr "精灵帧库,用于 AnimatedSprite2D 和 AnimatedSprite3D。" @@ -92169,6 +101083,31 @@ msgid "Returns the number of frames for the [param anim] animation." msgstr "返回 [param anim] 动画中的帧数。" msgid "" +"Returns a relative duration of the frame [param idx] in the [param anim] " +"animation (defaults to [code]1.0[/code]). For example, a frame with a " +"duration of [code]2.0[/code] is displayed twice as long as a frame with a " +"duration of [code]1.0[/code]. You can calculate the absolute duration (in " +"seconds) of a frame using the following formula:\n" +"[codeblock]\n" +"absolute_duration = relative_duration / (animation_fps * " +"abs(playing_speed))\n" +"[/codeblock]\n" +"In this example, [code]playing_speed[/code] refers to either [method " +"AnimatedSprite2D.get_playing_speed] or [method AnimatedSprite3D." +"get_playing_speed]." +msgstr "" +"返回 [param anim] 动画中 [param idx] 帧的相对持续时间(默认为 [code]1.0[/" +"code])。例如,持续时间为 [code]2.0[/code] 的帧的显示长度是持续时间为 " +"[code]1.0[/code] 的帧的两倍。可以使用如下公式计算某一帧的绝对持续时间(单位为" +"秒):\n" +"[codeblock]\n" +"absolute_duration = relative_duration / (animation_fps * " +"abs(playing_speed))\n" +"[/codeblock]\n" +"在这个例子中,[code]playing_speed[/code] 是 [method AnimatedSprite2D." +"get_playing_speed] 或 [method AnimatedSprite3D.get_playing_speed]。" + +msgid "" "Returns the texture of the frame [param idx] in the [param anim] animation." msgstr "返回 [param anim] 动画中帧索引为 [param idx] 的纹理。" @@ -92564,6 +101503,32 @@ msgstr "内部的数据缓冲。设置该值会重置指针。" msgid "Stream peer handling GZIP and deflate compression/decompresison." msgstr "处理 GZIP 和 deflate 压缩/解压缩的流对等体。" +msgid "" +"This class allows to compress or decompress data using GZIP/deflate in a " +"streaming fashion. This is particularly useful when compressing or " +"decompressing files that has to be sent through the network without having " +"to allocate them all in memory.\n" +"After starting the stream via [method start_compression] (or [method " +"start_decompression]), calling [method StreamPeer.put_partial_data] on this " +"stream will compress (or decompress) the data, writing it to the internal " +"buffer. Calling [method StreamPeer.get_available_bytes] will return the " +"pending bytes in the internal buffer, and [method StreamPeer." +"get_partial_data] will retrieve the compressed (or decompressed) bytes from " +"it. When the stream is over, you must call [method finish] to ensure the " +"internal buffer is properly flushed (make sure to call [method StreamPeer." +"get_available_bytes] on last time to check if more data needs to be read " +"after that)." +msgstr "" +"这个类能够使用 GZIP/deflate 对数据进行流式压缩或解压缩。压缩或解压缩经过网络" +"发送的文件时尤其有用,不必事先分配内存。\n" +"使用 [method start_compression](或 [method start_decompression])开启流之" +"后,在这个流上调用 [method StreamPeer.put_partial_data] 会对数据进行压缩(或" +"解压缩)并写入内部缓冲区。调用 [method StreamPeer.get_available_bytes] 会返回" +"内部缓冲区中待处理的字节数,[method StreamPeer.get_partial_data] 会从中获取压" +"缩后(或解压后)的字节。流结束后,你必须调用 [method finish] 来确保正确清空内" +"部缓冲区(请务必最后再调用一次 [method StreamPeer.get_available_bytes],检查" +"此时是否还有需要读取的数据)。" + msgid "Clears this stream, resetting the internal state." msgstr "清空该流,重设内部状态。" @@ -92660,7 +101625,7 @@ msgid "A status representing a [StreamPeerTCP] that is connecting to a host." msgstr "表示连接到主机的 [StreamPeerTCP] 的状态。" msgid "A status representing a [StreamPeerTCP] that is connected to a host." -msgstr "表示连接到主机的 [StreamPeerSSL] 的状态。" +msgstr "表示连接到主机的 [StreamPeerTCP] 的状态。" msgid "A status representing a [StreamPeerTCP] in error state." msgstr "表示处于错误状态的 [StreamPeerTCP] 的状态。" @@ -92716,16 +101681,16 @@ msgstr "" "它以使其正常工作。" msgid "A status representing a [StreamPeerTLS] that is disconnected." -msgstr "状态,表示 [StreamPeerSSL] 已断开连接。" +msgstr "状态,表示 [StreamPeerTLS] 已断开连接。" msgid "A status representing a [StreamPeerTLS] during handshaking." -msgstr "状态,表示 [StreamPeerSSL] 处于握手阶段。" +msgstr "状态,表示 [StreamPeerTLS] 处于握手阶段。" msgid "A status representing a [StreamPeerTLS] that is connected to a host." -msgstr "状态,表示 [StreamPeerSSL] 已连接至主机。" +msgstr "状态,表示 [StreamPeerTLS] 已连接至主机。" msgid "A status representing a [StreamPeerTLS] in error state." -msgstr "状态,表示 [StreamPeerSSL] 处于出错状态。" +msgstr "状态,表示 [StreamPeerTLS] 处于出错状态。" msgid "" "An error status that shows a mismatch in the TLS certificate domain " @@ -95316,6 +104281,79 @@ msgid "Helper tool to create geometry." msgstr "创建几何图形的辅助工具。" msgid "" +"The [SurfaceTool] is used to construct a [Mesh] by specifying vertex " +"attributes individually. It can be used to construct a [Mesh] from a script. " +"All properties except indices need to be added before calling [method " +"add_vertex]. For example, to add vertex colors and UVs:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var st = SurfaceTool.new()\n" +"st.begin(Mesh.PRIMITIVE_TRIANGLES)\n" +"st.set_color(Color(1, 0, 0))\n" +"st.set_uv(Vector2(0, 0))\n" +"st.add_vertex(Vector3(0, 0, 0))\n" +"[/gdscript]\n" +"[csharp]\n" +"var st = new SurfaceTool();\n" +"st.Begin(Mesh.PrimitiveType.Triangles);\n" +"st.SetColor(new Color(1, 0, 0));\n" +"st.SetUv(new Vector2(0, 0));\n" +"st.AddVertex(new Vector3(0, 0, 0));\n" +"[/csharp]\n" +"[/codeblocks]\n" +"The above [SurfaceTool] now contains one vertex of a triangle which has a UV " +"coordinate and a specified [Color]. If another vertex were added without " +"calling [method set_uv] or [method set_color], then the last values would be " +"used.\n" +"Vertex attributes must be passed [b]before[/b] calling [method add_vertex]. " +"Failure to do so will result in an error when committing the vertex " +"information to a mesh.\n" +"Additionally, the attributes used before the first vertex is added determine " +"the format of the mesh. For example, if you only add UVs to the first " +"vertex, you cannot add color to any of the subsequent vertices.\n" +"See also [ArrayMesh], [ImmediateMesh] and [MeshDataTool] for procedural " +"geometry generation.\n" +"[b]Note:[/b] Godot uses clockwise [url=https://learnopengl.com/Advanced-" +"OpenGL/Face-culling]winding order[/url] for front faces of triangle " +"primitive modes." +msgstr "" +"[SurfaceTool] 可用于通过指定单独的顶点属性来构造 [Mesh]。可以用来从脚本中构" +"建 [Mesh]。除索引外的所有属性都需要在调用 [method add_vertex] 之前添加。例" +"如,要添加顶点颜色和 UV:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var st = SurfaceTool.new()\n" +"st.begin(Mesh.PRIMITIVE_TRIANGLES)\n" +"st.set_color(Color(1, 0, 0))\n" +"st.set_uv(Vector2(0, 0))\n" +"st.add_vertex(Vector3(0, 0, 0))\n" +"[/gdscript]\n" +"[csharp]\n" +"var st = new SurfaceTool();\n" +"st.Begin(Mesh.PrimitiveType.Triangles);\n" +"st.SetColor(new Color(1, 0, 0));\n" +"st.SetUv(new Vector2(0, 0));\n" +"st.AddVertex(new Vector3(0, 0, 0));\n" +"[/csharp]\n" +"[/codeblocks]\n" +"上面的 [SurfaceTool] 现在就包含了三角形中的一个顶点,具有 UV 坐标和指定的 " +"[Color]。如果又添加了一个顶点,而没有调用 [method set_uv] 或 [method " +"set_color],则会使用之前的值。\n" +"顶点属性必须在调用 [method add_vertex] [b]之前[/b]传递。不传的话,就会在向网" +"格提交顶点信息时出错。\n" +"另外,添加第一个顶点前所使用的属性会用来确定网格的格式。例如,如果你只为第一" +"个顶点添加了 UV,那么你就无法为后续的顶点添加颜色。\n" +"程序式几何体生成另见 [ArrayMesh]、[ImmediateMesh] 以及 [MeshDataTool]。\n" +"[b]注意:[/b]Godot 中三角形图元模式的正面使用顺时针 [url=https://learnopengl-" +"cn.github.io/04%20Advanced%20OpenGL/04%20Face%20culling/]缠绕顺序[/url]。" + +msgid "" +"Adds a vertex to index array if you are using indexed vertices. Does not " +"need to be called before adding vertices." +msgstr "" +"如果你在使用顶点索引,则向索引数组中添加一个顶点。不需要在添加顶点前调用。" + +msgid "" "Inserts a triangle fan made of array data into [Mesh] being constructed.\n" "Requires the primitive type be set to [constant Mesh.PRIMITIVE_TRIANGLES]." msgstr "" @@ -95328,6 +104366,12 @@ msgid "" msgstr "指定当前顶点的位置。应在指定其他顶点属性(例如颜色、UV)后调用。" msgid "" +"Append vertices from a given [Mesh] surface onto the current vertex array " +"with specified [Transform3D]." +msgstr "" +"使用指定的 [Transform3D] 将来自给定 [Mesh] 表面的顶点追加到当前的顶点数组中。" + +msgid "" "Called before adding any vertices. Takes the primitive type as an argument " "(e.g. [constant Mesh.PRIMITIVE_TRIANGLES])." msgstr "" @@ -95371,6 +104415,18 @@ msgid "Removes the index array by expanding the vertex array." msgstr "通过扩展顶点数组移除索引数组。" msgid "" +"Generates a LOD for a given [param nd_threshold] in linear units (square " +"root of quadric error metric), using at most [param target_index_count] " +"indices.\n" +"Deprecated. Unused internally and neglects to preserve normals or UVs. " +"Consider using [method ImporterMesh.generate_lods] instead." +msgstr "" +"为给定的 [param nd_threshold] 生成 LOD,使用线性单位(四次误差的平方根),最" +"多使用 [param target_index_count] 个索引。\n" +"已弃用。内部不再使用,忽略后能够保持法线和 UV。请考虑改用 [method " +"ImporterMesh.generate_lods]。" + +msgid "" "Generates normals from vertices so you do not have to do it manually. If " "[param flip] is [code]true[/code], the resulting normals will be inverted. " "[method generate_normals] should be called [i]after[/i] generating geometry " @@ -95421,16 +104477,46 @@ msgid "" msgstr "返回网格几何体的类型,例如 [constant Mesh.PRIMITIVE_TRIANGLES]。" msgid "" +"By default, returns [constant SKIN_4_WEIGHTS] to indicate only 4 bone " +"influences per vertex are used.\n" +"Returns [constant SKIN_8_WEIGHTS] if up to 8 influences are used.\n" +"[b]Note:[/b] This function returns an enum, not the exact number of weights." +msgstr "" +"默认情况下,返回 [constant SKIN_4_WEIGHTS] 以指示每个顶点仅使用 4 个骨骼影" +"响。\n" +"如果使用最多 8 个影响,则返回 [constant SKIN_8_WEIGHTS]。\n" +"[b]注意:[/b]该函数返回一个枚举,而不是确切的权重数量。" + +msgid "" "Shrinks the vertex array by creating an index array. This can improve " "performance by avoiding vertex reuse." msgstr "通过创建索引数组来缩小顶点数组。这可以避免顶点重复而提高性能。" msgid "" +"Optimizes triangle sorting for performance. Requires that [method " +"get_primitive_type] is [constant Mesh.PRIMITIVE_TRIANGLES]." +msgstr "" +"优化三角形排序以提高性能。要求 [method get_primitive_type] 为 [constant Mesh." +"PRIMITIVE_TRIANGLES]。" + +msgid "" "Specifies an array of bones to use for the [i]next[/i] vertex. [param bones] " "must contain 4 integers." msgstr "指定用于[i]下一个[/i]顶点的骨骼数组。[param bones] 必须包含 4 个整数。" msgid "" +"Specifies a [Color] to use for the [i]next[/i] vertex. If every vertex needs " +"to have this information set and you fail to submit it for the first vertex, " +"this information may not be used at all.\n" +"[b]Note:[/b] The material must have [member BaseMaterial3D." +"vertex_color_use_as_albedo] enabled for the vertex color to be visible." +msgstr "" +"指定[i]下一个[/i]顶点使用的 [Color]。如果每个顶点都需要设置此信息,而你没有成" +"功为第一个顶点提交,则可能根本不会使用此信息。\n" +"[b]注意:[/b]材质必须启用 [member BaseMaterial3D.vertex_color_use_as_albedo] " +"才能使顶点颜色可见。" + +msgid "" "Sets the custom value on this vertex for [param channel_index].\n" "[method set_custom_format] must be called first for this [param " "channel_index]. Formats which are not RGBA will ignore other color channels." @@ -95462,6 +104548,16 @@ msgstr "" "一个顶点提交,则可能根本无法使用此信息。" msgid "" +"Set to [constant SKIN_8_WEIGHTS] to indicate that up to 8 bone influences " +"per vertex may be used.\n" +"By default, only 4 bone influences are used ([constant SKIN_4_WEIGHTS])\n" +"[b]Note:[/b] This function takes an enum, not the exact number of weights." +msgstr "" +"设置为 [constant SKIN_8_WEIGHTS] 表示每个顶点最多可以使用 8 个骨骼影响。\n" +"默认情况下,仅使用 4 个骨骼影响([constant SKIN_4_WEIGHTS])\n" +"[b]注意:[/b]该函数接受一个枚举,而不是权重的确切数量。" + +msgid "" "Specifies the smooth group to use for the [i]next[/i] vertex. If this is " "never called, all vertices will have the default smooth group of [code]0[/" "code] and will be smoothed with adjacent vertices of the same group. To " @@ -95563,6 +104659,9 @@ msgstr "" "将传递给 [method set_custom] 的数据存储为全精度浮点数,使用所有颜色通道。见 " "[constant Mesh.ARRAY_CUSTOM_RGBA_FLOAT]。" +msgid "Used to indicate a disabled custom channel." +msgstr "用于表示已禁用的自定义通道。" + msgid "Each individual vertex can be influenced by only 4 bone weights." msgstr "每个单独的顶点只能受到 4 个骨骼权重的影响。" @@ -95572,6 +104671,19 @@ msgstr "每个单独的顶点最多能够受到 8 个骨骼权重的影响。" msgid "Base Syntax highlighter resource for [TextEdit]." msgstr "用于 [TextEdit] 的基础语法高亮器资源。" +msgid "" +"Base syntax highlighter resource all syntax highlighters extend from, " +"provides syntax highlighting data to [TextEdit].\n" +"The associated [TextEdit] node will call into the [SyntaxHighlighter] on a " +"as needed basis.\n" +"[b]Note:[/b] Each Syntax highlighter instance should not be shared across " +"multiple [TextEdit] nodes." +msgstr "" +"基础语法高亮器资源,所有语法高亮器都从这个类继承,向 [TextEdit] 提供语法高亮" +"数据。\n" +"关联的 [TextEdit] 节点会根据需要调用 [SyntaxHighlighter]。\n" +"[b]注意:[/b]不应在多个 [TextEdit] 节点间共享语法高亮器实例。" + msgid "Virtual method which can be overridden to clear any local caches." msgstr "虚方法,覆盖后可以清空本地缓存。" @@ -95592,10 +104704,58 @@ msgstr "" "清空所有缓存的语法高亮数据。\n" "然后调用可覆盖的 [method _clear_highlighting_cache] 方法。" +msgid "" +"Returns syntax highlighting data for a single line. If the line is not " +"cached, calls [method _get_line_syntax_highlighting] to calculate the data.\n" +"The return [Dictionary] is column number to [Dictionary]. The column number " +"notes the start of a region, the region will end if another region is found, " +"or at the end of the line. The nested [Dictionary] contains the data for " +"that region, currently only the key \"color\" is supported.\n" +"[b]Example return:[/b]\n" +"[codeblock]\n" +"var color_map = {\n" +" 0: {\n" +" \"color\": Color(1, 0, 0)\n" +" },\n" +" 5: {\n" +" \"color\": Color(0, 1, 0)\n" +" }\n" +"}\n" +"[/codeblock]\n" +"This will color columns 0-4 red, and columns 5-eol in green." +msgstr "" +"返回某一行的语法高亮数据。如果尚未缓存该行,则会调用 [method " +"_get_line_syntax_highlighting] 来计算相关数据。\n" +"返回的 [Dictionary] 是将列号映射到另一个 [Dictionary]。列号代表区域的开始位" +"置,当前区域在遇到其他区域或行尾时结束。嵌套的 [Dictionary] 中包含该区域的数" +"据,目前仅支持“color”字段。\n" +"[b]示例返回:[/b]\n" +"[codeblock]\n" +"var color_map = {\n" +" 0: {\n" +" \"color\": Color(1, 0, 0)\n" +" },\n" +" 5: {\n" +" \"color\": Color(0, 1, 0)\n" +" }\n" +"}\n" +"[/codeblock]\n" +"这样就会让 0-4 列为红色,让 5-行尾为绿色。" + msgid "Returns the associated [TextEdit] node." msgstr "返回关联的 [TextEdit] 节点。" msgid "" +"Clears then updates the [SyntaxHighlighter] caches. Override [method " +"_update_cache] for a callback.\n" +"[b]Note:[/b] This is called automatically when the associated [TextEdit] " +"node, updates its own cache." +msgstr "" +"清除然后更新 [SyntaxHighlighter] 缓存。为一个回调重写 [method " +"_update_cache]。\n" +"[b]注意:[/b]当关联的 [TextEdit] 节点更新它自己的缓存时,该函数会被自动调用。" + +msgid "" "Font loaded from a system font.\n" "[b]Note:[/b] This class is implemented on iOS, Linux, macOS and Windows, on " "other platforms it will fallback to default theme font." @@ -95652,10 +104812,28 @@ msgid "Font hinting mode." msgstr "字体微调模式。" msgid "" +"If set to [code]true[/code], glyphs of all sizes are rendered using single " +"multichannel signed distance field generated from the dynamic font vector " +"data." +msgstr "" +"如果设置为 [code]true[/code],则所有大小的字形都将使用从动态字体矢量数据生成" +"的单个多通道带符号距离场渲染。" + +msgid "" "Font oversampling factor, if set to [code]0.0[/code] global oversampling " "factor is used instead." msgstr "字体过采样系数,如果设置为 [code]0.0[/code] 则使用全局过采样系数。" +msgid "" +"Font glyph subpixel positioning mode. Subpixel positioning provides shaper " +"text and better kerning for smaller font sizes, at the cost of memory usage " +"and font rasterization speed. Use [constant TextServer." +"SUBPIXEL_POSITIONING_AUTO] to automatically enable it based on the font size." +msgstr "" +"字体字形的次像素定位模式。次像素定位为较小的字体提供了更清晰的文本和更好的字" +"偶距,但会牺牲内存占用和字体栅格化速度。使用 [constant TextServer." +"SUBPIXEL_POSITIONING_AUTO] 可以根据字体大小自动启用。" + msgid "Tab bar control." msgstr "选项卡栏控件。" @@ -95775,6 +104953,14 @@ msgstr "设置选项卡标题的基础书写方向。" msgid "Sets a [param title] for the tab at index [param tab_idx]." msgstr "设置索引 [param tab_idx] 处的选项卡的标题 [param title]。" +msgid "" +"If [code]true[/code], tabs overflowing this node's width will be hidden, " +"displaying two navigation buttons instead. Otherwise, this node's minimum " +"size is updated so that all tabs are visible." +msgstr "" +"如果为 [code]true[/code],则会隐藏超出该节点宽度的选项卡,改为显示两个导航按" +"钮。否则,会更新该节点的最小尺寸,让所有选项卡均可见。" + msgid "Select tab at index [code]tab_idx[/code]." msgstr "选择索引 [code]tab_idx[/code] 处的选项卡。" @@ -95788,6 +104974,13 @@ msgstr "" "设置所有选项卡应被限制的最大宽度。如果设置为 [code]0[/code],则无限制。" msgid "" +"If [code]true[/code], the tab offset will be changed to keep the the " +"currently selected tab visible." +msgstr "" +"如果为 [code]true[/code],则会更改选项卡偏移量,从而保持当前选中的选项卡可" +"见。" + +msgid "" "if [code]true[/code], the mouse's scroll wheel can be used to navigate the " "scroll view." msgstr "如果为 [code]true[/code],鼠标的滚轮可用于导航滚动视图。" @@ -95812,6 +105005,15 @@ msgid "The number of tabs currently in the bar." msgstr "选项卡栏中当前的选项卡数量。" msgid "" +"[TabBar]s with the same rearrange group ID will allow dragging the tabs " +"between them. Enable drag with [member drag_to_rearrange_enabled].\n" +"Setting this to [code]-1[/code] will disable rearranging between [TabBar]s." +msgstr "" +"具有相同重新排列组 ID 的 [TabBar] 将允许在它们之间拖动选项卡。使用 [member " +"drag_to_rearrange_enabled] 启用拖动。\n" +"将该属性设置为 [code]-1[/code] 将禁用 [TabBar] 之间的重新排列。" + +msgid "" "Emitted when the active tab is rearranged via mouse drag. See [member " "drag_to_rearrange_enabled]." msgstr "" @@ -95828,6 +105030,32 @@ msgstr "切换到另一个选项卡时发出。" msgid "Emitted when a tab is clicked, even if it is the current tab." msgstr "单击选项卡时发出,即使它是当前选项卡。" +msgid "" +"Emitted when a tab's close button is pressed.\n" +"[b]Note:[/b] Tabs are not removed automatically once the close button is " +"pressed, this behavior needs to be programmed manually. For example:\n" +"[codeblocks]\n" +"[gdscript]\n" +"$TabBar.tab_close_pressed.connect($TabBar.remove_tab)\n" +"[/gdscript]\n" +"[csharp]\n" +"GetNode<TabBar>(\"TabBar\").TabClosePressed += GetNode<TabBar>(\"TabBar\")." +"RemoveTab;\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"按下某个选项卡的关闭按钮时发出。\n" +"[b]注意:[/b]按下关闭按钮后选项卡不会自动移除,这种行为需要手动实现。例如:\n" +"[codeblocks]\n" +"[gdscript]\n" +"$TabBar.tab_close_pressed.connect($TabBar.remove_tab)\n" +"[/gdscript]\n" +"[csharp]\n" +"GetNode<TabBar>(\"TabBar\").TabClosePressed += GetNode<TabBar>(\"TabBar\")." +"RemoveTab;\n" +"[/csharp]\n" +"[/codeblocks]" + msgid "Emitted when a tab is hovered by the mouse." msgstr "当鼠标悬停选项卡时发出。" @@ -95982,6 +105210,17 @@ msgstr "" msgid "Returns the child [Control] node located at the active tab index." msgstr "返回位于活动选项卡索引处的子 [Control] 节点。" +msgid "" +"Returns the [Popup] node instance if one has been set already with [method " +"set_popup].\n" +"[b]Warning:[/b] This is a required internal node, removing and freeing it " +"may cause a crash. If you wish to hide it or any of its children, use their " +"[member Window.visible] property." +msgstr "" +"如果已经使用 [method set_popup] 设置了 [Popup] 节点实例,则返回该节点实例。\n" +"[b]警告:[/b]这是一个必需的内部节点,移除和释放它可能会导致崩溃。如果希望隐藏" +"它或它的任何子项,请使用它们的 [member Window.visible] 属性。" + msgid "Returns the button icon from the tab at index [param tab_idx]." msgstr "返回索引为 [param tab_idx] 的选项卡的按钮图标。" @@ -95998,6 +105237,23 @@ msgstr "" "返回与给定的 [param control] 绑定的标签的索引。该控件必须为 [TabContainer] 的" "子节点。" +msgid "" +"Returns the title of the tab at index [param tab_idx]. Tab titles default to " +"the name of the indexed child node, but this can be overridden with [method " +"set_tab_title]." +msgstr "" +"返回索引 [param tab_idx] 处选项卡的标题。选项卡的标题默认为索引子节点的名称," +"但可以用 [method set_tab_title] 覆盖。" + +msgid "" +"If set on a [Popup] node instance, a popup menu icon appears in the top-" +"right corner of the [TabContainer] (setting it to [code]null[/code] will " +"make it go away). Clicking it will expand the [Popup] node." +msgstr "" +"如果在一个 [Popup] 节点实例上设置,则一个弹出菜单图标会出现在该 " +"[TabContainer] 的右上角(将其设置为 [code]null[/code] 将使其消失)。点击它将" +"展开该 [Popup] 节点。" + msgid "Sets the button icon from the tab at index [param tab_idx]." msgstr "设置索引为 [param tab_idx] 的选项卡的按钮图标。" @@ -96005,6 +105261,14 @@ msgid "Sets an icon for the tab at index [param tab_idx]." msgstr "设置索引为 [param tab_idx] 的选项卡的图标。" msgid "" +"Sets a custom title for the tab at index [param tab_idx] (tab titles default " +"to the name of the indexed child node). Set it back to the child's name to " +"make the tab default to it again." +msgstr "" +"为索引 [param tab_idx] 处的选项卡设置自定义标题(选项卡标题默认为索引子节点的" +"名称)。将其设置回孩子的名字,使选项卡再次默认为该名字。" + +msgid "" "If [code]true[/code], all tabs are drawn in front of the panel. If " "[code]false[/code], inactive tabs are drawn behind the panel." msgstr "" @@ -96025,6 +105289,16 @@ msgid "" msgstr "设置选项卡的放置位置。详情见 [enum TabBar.AlignmentMode]。" msgid "" +"[TabContainer]s with the same rearrange group ID will allow dragging the " +"tabs between them. Enable drag with [member drag_to_rearrange_enabled].\n" +"Setting this to [code]-1[/code] will disable rearranging between " +"[TabContainer]s." +msgstr "" +"具有相同重新排列组 ID 的 [TabContainer] 将允许在它们之间拖动选项卡。使用 " +"[member drag_to_rearrange_enabled] 启用拖动。\n" +"将该属性设置为 [code]-1[/code] 将禁用 [TabContainer] 之间的重新排列。" + +msgid "" "If [code]true[/code], tabs are visible. If [code]false[/code], tabs' content " "and titles are hidden." msgstr "" @@ -96055,6 +105329,19 @@ msgstr "选择选项卡时发出,即使它是当前选项卡。" msgid "Space between tab's name and its icon." msgstr "选项卡名称与其图标之间的间距。" +msgid "" +"The space at the left or right edges of the tab bar, accordingly with the " +"current [member tab_alignment].\n" +"The margin is ignored with [constant TabBar.ALIGNMENT_RIGHT] if the tabs are " +"clipped (see [member clip_tabs]) or a popup has been set (see [method " +"set_popup]). The margin is always ignored with [constant TabBar." +"ALIGNMENT_CENTER]." +msgstr "" +"标签栏左侧或右侧边缘的间距,取决于当前的 [member tab_alignment]。\n" +"如果标签页被裁剪(见 [member clip_tabs])或者设置了弹出框(见 [method " +"set_popup]),则会忽略 [constant TabBar.ALIGNMENT_RIGHT] 的边距。使用 " +"[constant TabBar.ALIGNMENT_CENTER] 时始终忽略边距。" + msgid "The icon for the menu button (see [method set_popup])." msgstr "菜单按钮的图标(见 [method set_popup])。" @@ -96196,6 +105483,27 @@ msgstr "" "在每个光标上方或下方添加一个额外的光标。如果 [param below] 为 true,则会在下" "方添加新光标,否则为上方。" +msgid "" +"Register a new gutter to this [TextEdit]. Use [param at] to have a specific " +"gutter order. A value of [code]-1[/code] appends the gutter to the right." +msgstr "" +"为这个 [TextEdit] 注册一个新的边栏。请使用 [param at] 指定边栏的顺序。" +"[code]-1[/code] 会将该边栏追加到右侧。" + +msgid "" +"Adds a selection and a caret for the next occurrence of the current " +"selection. If there is no active selection, selects word under caret." +msgstr "" +"选中当前所选内容下一次出现的位置并添加文本光标。如果没有活动的选中内容,则选" +"中当前光标所处的单词。" + +msgid "" +"Reposition the carets affected by the edit. This assumes edits are applied " +"in edit order, see [method get_caret_index_edit_order]." +msgstr "" +"重新定位受编辑影响的文本光标。这个操作假定编辑是按照编辑顺序应用的,见 " +"[method get_caret_index_edit_order]。" + msgid "Adjust the viewport so the caret is visible." msgstr "调整视口,让光标可见。" @@ -96204,6 +105512,20 @@ msgid "" "[method _backspace]." msgstr "用户按下退格键时调用。可以用 [method _backspace] 覆盖。" +msgid "" +"Starts a multipart edit. All edits will be treated as one action until " +"[method end_complex_operation] is called." +msgstr "" +"开始一个多部分编辑。在调用 [method end_complex_operation] 之前,所有编辑都将" +"被视为一个动作。" + +msgid "" +"Centers the viewport on the line the editing caret is at. This also resets " +"the [member scroll_horizontal] value to [code]0[/code]." +msgstr "" +"将视口居中在正在编辑的插入符号所在的行上。这也将 [member scroll_horizontal] " +"值重置为 [code]0[/code]。" + msgid "Performs a full reset of [TextEdit], including undo history." msgstr "执行对 [TextEdit] 的完全重置,包括撤消历史。" @@ -96223,6 +105545,19 @@ msgstr "删除选定的文本。" msgid "Deselects the current selection." msgstr "取消当前选择。" +msgid "" +"Marks the end of steps in the current action started with [method " +"start_action]." +msgstr "标记在 [method start_action] 开始的当前动作中步骤的末尾。" + +msgid "" +"Ends a multipart edit, started with [method begin_complex_operation]. If " +"called outside a complex operation, the current operation is pushed onto the " +"undo/redo stack." +msgstr "" +"结束一个多部分编辑,该多部分编辑从 [method begin_complex_operation] 开始。如" +"果在一个复杂动作之外调用,则将当前动作将被压入撤消/重做堆栈。" + msgid "Returns the column the editing caret is at." msgstr "返回编辑光标所在的列。" @@ -96232,9 +105567,20 @@ msgstr "返回该 [TextEdit] 中的光标数。" msgid "Returns the caret pixel draw position." msgstr "返回光标的像素绘制位置。" +msgid "" +"Returns a list of caret indexes in their edit order, this done from bottom " +"to top. Edit order refers to the way actions such as [method " +"insert_text_at_caret] are applied." +msgstr "" +"返回文本光标索引的列表,使用编辑顺序,从下到上进行。编辑顺序是 [method " +"insert_text_at_caret] 等动作的应用顺序。" + msgid "Returns the line the editing caret is on." msgstr "返回编辑光标所在的行。" +msgid "Returns the wrap index the editing caret is on." +msgstr "返回正编辑的文本光标所在的换行索引。" + msgid "Returns the first column containing a non-whitespace character." msgstr "返回第一个非空白字符列。" @@ -96261,10 +105607,30 @@ msgid "" "first char." msgstr "返回第一个字符前的空格和 [code]tab * tab_size[/code] 数。" +msgid "" +"Returns the last visible line. Use [method " +"get_last_full_visible_line_wrap_index] for the wrap index." +msgstr "" +"返回最后一个可见的行。获得换行索引的话,使用 [method " +"get_last_full_visible_line_wrap_index]。" + +msgid "Returns the last visible wrap index of the last visible line." +msgstr "返回最后一个可见行的最后一个可见换行索引。" + +msgid "Returns the last unhidden line in the entire [TextEdit]." +msgstr "返回整个 [TextEdit] 中最后一个未隐藏的行。" + msgid "Returns the text of a specific line." msgstr "返回特定行的文本。" msgid "" +"Returns the current background color of the line. [code]Color(0, 0, 0, 0)[/" +"code] is returned if no color is set." +msgstr "" +"返回该行的当前背景色。如果没有设置颜色,则返回 [code]Color(0, 0, 0, 0)[/" +"code]。" + +msgid "" "Returns the line and column at the given position. In the returned vector, " "[code]x[/code] is the column, [code]y[/code] is the line. If [param " "allow_out_of_bounds] is [code]false[/code] and the position is not over the " @@ -96292,12 +105658,21 @@ msgstr "返回边栏 [param gutter] 中,当前位于 [param line] 行的文本 msgid "Returns the height of a largest line." msgstr "返回最大行的高度。" +msgid "Returns the width in pixels of the [param wrap_index] on [param line]." +msgstr "返回位于 [param line] 的 [param wrap_index] 的像素宽度。" + msgid "Returns the number of times the given line is wrapped." msgstr "返回给定行换行的次数。" +msgid "Returns the wrap index of the given line column." +msgstr "返回给定行的列的换行索引。" + msgid "Returns an array of [String]s representing each wrapped index." msgstr "返回代表各个换行索引的 [String] 数组。" +msgid "Returns the local mouse position adjusted for the text direction." +msgstr "返回针对文本方向调整过的局部鼠标位置。" + msgid "" "Returns the [PopupMenu] of this [TextEdit]. By default, this menu is " "displayed when right-clicking on the [TextEdit].\n" @@ -96397,6 +105772,24 @@ msgid "Returns the number of lines that may be drawn on the minimap." msgstr "返回小地图上能够绘制的行数。" msgid "" +"Similar to [method get_next_visible_line_offset_from], but takes into " +"account the line wrap indexes. In the returned vector, [code]x[/code] is the " +"line, [code]y[/code] is the wrap index." +msgstr "" +"类似于 [method get_next_visible_line_offset_from],但考虑了换行索引。在返回的" +"向量中,[code]x[/code] 是行,[code]y[/code] 是换行索引。" + +msgid "" +"Returns the count to the next visible line from [param line] to [code]line + " +"visible_amount[/code]. Can also count backwards. For example if a [TextEdit] " +"has 5 lines with lines 2 and 3 hidden, calling this with [code]line = 1, " +"visible_amount = 1[/code] would return 3." +msgstr "" +"返回从 [param line] 到 [code]line + visible_amount[/code] 的下一个可见行的计" +"数。也可以倒数计数。例如,如果 [TextEdit] 有 5 行,其中隐藏了第 2 行和第 3 " +"行,使用 [code]line = 1, visible_amount = 1[/code] 调用它会返回 3。" + +msgid "" "Returns the local position for the given [param line] and [param column]. If " "[code]x[/code] or [code]y[/code] of the returned vector equal [code]-1[/" "code], the position is outside of the viewable area of the control.\n" @@ -96427,6 +105820,9 @@ msgstr "" msgid "Returns the last tagged saved version from [method tag_saved_version]." msgstr "从 [method tag_saved_version] 返回最后一个标记的保存版本。" +msgid "Returns the scroll position for [param wrap_index] of [param line]." +msgstr "返回 [param line] 的 [param wrap_index] 对应的滚动位置。" + msgid "Returns the text inside the selection." msgstr "返回选择内的文本。" @@ -96457,12 +105853,24 @@ msgstr "返回可绘制的行数。" msgid "Returns the [VScrollBar] of the [TextEdit]." msgstr "设置该 [TextEdit] 所使用的 [StyleBox]。" +msgid "" +"Returns the current version of the [TextEdit]. The version is a count of " +"recorded operations by the undo/redo history." +msgstr "返回该 [TextEdit] 的当前版本。版本是撤消/重做历史所记录操作的计数。" + msgid "Returns the number of visible lines, including wrapped text." msgstr "返回可见行数,包括自动换行。" +msgid "" +"Returns the total number of visible + wrapped lines between the two lines." +msgstr "返回两行之间,可见行与换行的行的总数。" + msgid "Returns the word at [param position]." msgstr "返回位于 [param position] 的单词。" +msgid "Returns a [String] text with the word under the caret's location." +msgstr "返回一个 [String] 文本,其中包含文本光标位置下的单词。" + msgid "Returns if the user has IME text." msgstr "返回用户是否有 IME 文本。" @@ -96481,6 +105889,11 @@ msgstr "在光标位置插入指定的文本。" msgid "Returns [code]true[/code] if the caret is visible on the screen." msgstr "如果光标在屏幕上可见,则返回 [code]true[/code]。" +msgid "" +"Returns [code]true[/code] if the user is dragging their mouse for scrolling " +"or selecting." +msgstr "如果用户拖动鼠标进行滚动或选择,则返回 [code]true[/code]。" + msgid "Returns whether the gutter is clickable." msgstr "返回该边栏是否可点击。" @@ -96503,12 +105916,41 @@ msgstr "" "返回鼠标是否位于选区之上。如果 [param edges] 为 [code]true[/code],则边界会被" "认为是选区的一部分。" +msgid "Returns whether the user is in overtype mode." +msgstr "返回用户是否处于改写模式。" + +msgid "" +"Merge the gutters from [param from_line] into [param to_line]. Only " +"overwritable gutters will be copied." +msgstr "" +"合并从 [param from_line] 到 [param to_line] 的边栏。只会复制可覆盖的边栏。" + +msgid "" +"Merges any overlapping carets. Will favor the newest caret, or the caret " +"with a selection.\n" +"[b]Note:[/b] This is not called when a caret changes position but after " +"certain actions, so it is possible to get into a state where carets overlap." +msgstr "" +"合并重叠的文本光标。会保留最新的光标,或者存在选中内容的光标。\n" +"[b]注意:[/b]光标改变位置后不会进行调用,而是在某些动作之后调用,所以进入光标" +"重叠的状态是可能的。" + +msgid "Paste at the current location. Can be overridden with [method _paste]." +msgstr "粘贴到当前位置。可以用 [method _paste] 覆盖。" + msgid "Pastes the primary clipboard." msgstr "粘贴主剪贴板。" msgid "Perform redo operation." msgstr "执行重做操作。" +msgid "" +"Removes the given caret index.\n" +"[b]Note:[/b] This can result in adjustment of all other caret indices." +msgstr "" +"移除给定的文本光标索引。\n" +"[b]注意:[/b]可能导致所有其他光标索引的调整。" + msgid "Removes the gutter from this [TextEdit]." msgstr "从 [TextEdit] 中移除该边栏。" @@ -96516,6 +105958,62 @@ msgid "Removes all additional carets." msgstr "移除所有额外的光标。" msgid "" +"Removes text between the given positions.\n" +"[b]Note:[/b] This does not adjust the caret or selection, which as a result " +"it can end up in an invalid position." +msgstr "" +"移除给定位置之间的文本。\n" +"[b]注意:[/b]文本光标和选区不会进行调整,因此可能最终处于无效位置。" + +msgid "" +"Perform a search inside the text. Search flags can be specified in the [enum " +"SearchFlags] enum.\n" +"In the returned vector, [code]x[/code] is the column, [code]y[/code] is the " +"line. If no results are found, both are equal to [code]-1[/code].\n" +"[codeblocks]\n" +"[gdscript]\n" +"var result = search(\"print\", SEARCH_WHOLE_WORDS, 0, 0)\n" +"if result.x != -1:\n" +" # Result found.\n" +" var line_number = result.y\n" +" var column_number = result.x\n" +"[/gdscript]\n" +"[csharp]\n" +"Vector2I result = Search(\"print\", (uint)TextEdit.SearchFlags.WholeWords, " +"0, 0);\n" +"if (result.X != -1)\n" +"{\n" +" // Result found.\n" +" int lineNumber = result.Y;\n" +" int columnNumber = result.X;\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"在文本内部进行搜索。搜索标志可以在 [enum SearchFlags] 枚举中指定。\n" +"在返回的向量中,[code]x[/code] 是列,[code]y[/code] 是行。如果没有找到结果," +"则两者都等于 [code]-1[/code] 。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var result = search(\"print\", SEARCH_WHOLE_WORDS, 0, 0)\n" +"if result.x != -1:\n" +" # 找到了结果。\n" +" var line_number = result.y\n" +" var column_number = result.x\n" +"[/gdscript]\n" +"[csharp]\n" +"Vector2I result = Search(\"print\", (uint)TextEdit.SearchFlags.WholeWords, " +"0, 0);\n" +"if (result.X != -1)\n" +"{\n" +" // 找到了结果。\n" +" int lineNumber = result.Y;\n" +" int columnNumber = result.X;\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" "Perform selection, from line/column to line/column.\n" "If [member selecting_enabled] is [code]false[/code], no selection will occur." msgstr "" @@ -96562,6 +106060,18 @@ msgstr "" "[b]注意:[/b]如果支持多个光标,则不会检查任何重叠。请参阅 [method " "merge_overlapping_carets]。" +msgid "" +"Sets the gutter as clickable. This will change the mouse cursor to a " +"pointing hand when hovering over the gutter." +msgstr "将边栏设置为可点击。当鼠标在边栏上悬停时,会将鼠标光标变为指点的手形。" + +msgid "" +"Set a custom draw method for the gutter. The callback method must take the " +"following args: [code]line: int, gutter: int, Area: Rect2[/code]." +msgstr "" +"为边栏设置自定义的绘制方法。回调方法必须接受以下参数:[code]line: int, " +"gutter: int, Area: Rect2[/code]。" + msgid "Sets whether the gutter should be drawn." msgstr "设置该边栏是否应被绘制。" @@ -96581,11 +106091,32 @@ msgid "Sets the text for a specific line." msgstr "设置特定行的文本。" msgid "" +"Positions the [param wrap_index] of [param line] at the center of the " +"viewport." +msgstr "将 [param line] 的 [param wrap_index] 放置在视口的中心。" + +msgid "" +"Positions the [param wrap_index] of [param line] at the top of the viewport." +msgstr "将 [param line] 的 [param wrap_index] 放置在视口的顶部。" + +msgid "" +"Positions the [param wrap_index] of [param line] at the bottom of the " +"viewport." +msgstr "将 [param line] 的 [param wrap_index] 放置在视口的底部。" + +msgid "" "Sets the current background color of the line. Set to [code]Color(0, 0, 0, 0)" "[/code] for no color." msgstr "" "设置该行的当前背景色。设置为 [code]Color(0, 0, 0, 0)[/code] 则没有颜色。" +msgid "" +"If [param clickable] is [code]true[/code], makes the [param gutter] on " +"[param line] clickable. See [signal gutter_clicked]." +msgstr "" +"如果 [param clickable] 为 [code]true[/code],则让位于 [param line] 的 [param " +"gutter] 可点击。见 [signal gutter_clicked]。" + msgid "Sets the icon for [param gutter] on [param line] to [param icon]." msgstr "将边栏 [param gutter] 在第 [param line] 行的图标设置为 [param icon]。" @@ -96600,6 +106131,21 @@ msgstr "" msgid "Sets the text for [param gutter] on [param line] to [param text]." msgstr "将边栏 [param gutter] 在第 [param line] 行的文本设置为 [param text]。" +msgid "" +"If [code]true[/code], sets the user into overtype mode. When the user types " +"in this mode, it will override existing text." +msgstr "" +"如果为 [code]true[/code],则将用户设置为改写模式。当用户在该模式下键入时,它" +"将覆盖现有文本。" + +msgid "" +"Sets the search [param flags]. This is used with [method set_search_text] to " +"highlight occurrences of the searched text. Search flags can be specified " +"from the [enum SearchFlags] enum." +msgstr "" +"设置搜索标志 [param flags]。配合 [method set_search_text] 使用可以高亮被搜索" +"的文本。搜索标志可以使用 [enum SearchFlags] 枚举指定。" + msgid "Sets the search text. See [method set_search_flags]." msgstr "设置搜索文本。见 [method set_search_flags]。" @@ -96616,6 +106162,19 @@ msgstr "" "提供自定义工具提示文本。该回调方法必须接受以下参数:[code]hovered_word: " "String[/code]。" +msgid "" +"Starts an action, will end the current action if [code]action[/code] is " +"different.\n" +"An action will also end after a call to [method end_action], after [member " +"ProjectSettings.gui/timers/text_edit_idle_detect_sec] is triggered or a new " +"undoable step outside the [method start_action] and [method end_action] " +"calls." +msgstr "" +"开始一个动作,如果 [code]action[/code] 与当前动作不同,则会终止当前动作。\n" +"调用 [method end_action]、触发 [member ProjectSettings.gui/timers/" +"text_edit_idle_detect_sec] 或者在 [method start_action] 和 [method " +"end_action] 之外调用可撤销的操作都会导致动作的终止。" + msgid "Swaps the two lines." msgstr "交换两行。" @@ -96628,6 +106187,15 @@ msgstr "执行撤销操作。" msgid "Sets if the caret should blink." msgstr "设置文本光标是否应该闪烁。" +msgid "" +"If [code]true[/code], a right-click moves the caret at the mouse position " +"before displaying the context menu.\n" +"If [code]false[/code], the context menu disregards mouse location." +msgstr "" +"如果为 [code]true[/code],则单击右键时会先将文本光标移动到鼠标位置,然后再显" +"示上下文菜单。\n" +"如果为 [code]false[/code],则上下文菜单将忽略鼠标位置。" + msgid "Sets if multiple carets are allowed." msgstr "设置是否允许使用多个文本光标。" @@ -96671,6 +106239,13 @@ msgstr "" "text])。" msgid "" +"If [code]true[/code], [TextEdit] will disable vertical scroll and fit " +"minimum height to the number of visible lines." +msgstr "" +"如果为 [code]true[/code],则 [TextEdit] 将禁用垂直滚动,并将最小高度与可见行" +"数相匹配。" + +msgid "" "If there is a horizontal scrollbar, this determines the current horizontal " "scroll value in pixels." msgstr "如果有一个水平滚动条,这决定了当前的水平滚动值,单位是像素。" @@ -96678,6 +106253,14 @@ msgstr "如果有一个水平滚动条,这决定了当前的水平滚动值, msgid "Allow scrolling past the last line into \"virtual\" space." msgstr "允许滚动过最后一行,进入“虚拟”空间。" +msgid "Scroll smoothly over the text rather then jumping to the next location." +msgstr "在文本上平滑滚动,而不是跳到下一个位置。" + +msgid "" +"Sets the scroll speed with the minimap or when [member scroll_smooth] is " +"enabled." +msgstr "设置使用小地图或当 [member scroll_smooth] 被启用时的滚动速度。" + msgid "" "If there is a vertical scrollbar, this determines the current vertical " "scroll value in line numbers, starting at 0 for the top line." @@ -96822,6 +106405,17 @@ msgid "" msgstr "" "设置多次出现的高亮 [Color] 颜色。须启用 [member highlight_all_occurrences] 。" +msgid "" +"The caret's width in pixels. Greater values can be used to improve " +"accessibility by ensuring the caret is easily visible, or to ensure " +"consistency with a large font size. If set to [code]0[/code] or lower, the " +"caret width is automatically set to 1 pixel and multiplied by the display " +"scaling factor." +msgstr "" +"文本光标的像素宽度。较大的值能够确保光标易于看到,确保光标与较大的字体保持一" +"致,从而提高可访问性。如果设置为 [code]0[/code] 或更低,光标的宽度将被自动设" +"置为 1 像素,并乘以显示缩放系数。" + msgid "Sets the [StyleBox] of this [TextEdit]." msgstr "设置这个 [TextEdit] 的 [StyleBox]。" @@ -96845,6 +106439,16 @@ msgstr "" msgid "Adds text span and font to draw it." msgstr "添加文本区间以及用于绘制的字体。" +msgid "Clears text line (removes text and inline objects)." +msgstr "清除文本行(移除文本和内联对象)。" + +msgid "" +"Draw text into a canvas item at a given position, with [param color]. [param " +"pos] specifies the top left corner of the bounding box." +msgstr "" +"在画布项中的给定位置绘制文本,颜色为 [param color]。[param pos] 指定的是边界" +"框的左上角。" + msgid "" "Returns the text ascent (number of pixels above the baseline for horizontal " "layout or to the left of baseline for vertical)." @@ -96866,6 +106470,9 @@ msgid "" "Returns width (for horizontal layout) or height (for vertical) of the text." msgstr "返回文本的宽度(对于水平排版)或高度(对于垂直排版)。" +msgid "Returns bounding rectangle of the inline object." +msgstr "返回内联对象的边界矩形。" + msgid "Returns array of inline objects." msgstr "返回内联对象的数组。" @@ -96875,9 +106482,29 @@ msgstr "返回 TextServer 缓冲区 RID。" msgid "Returns size of the bounding box of the text." msgstr "返回文本边界框的大小。" +msgid "" +"Returns caret character offset at the specified pixel offset at the " +"baseline. This function always returns a valid position." +msgstr "" +"返回基线处指定像素偏移处的文本光标的偏移量。该函数始终返回一个有效位置。" + +msgid "Sets new size and alignment of embedded object." +msgstr "设置嵌入对象的新大小和对齐方式。" + +msgid "" +"Overrides BiDi for the structured text.\n" +"Override ranges should cover full source text without overlaps. BiDi " +"algorithm will be used on each range separately." +msgstr "" +"重写用于结构化文本的 BiDi。\n" +"重写范围应覆盖完整的源文本而没有重叠。BiDi 算法将分别被用于每个范围。" + msgid "Aligns text to the given tab-stops." msgstr "将文本与给定的制表位对齐。" +msgid "Sets text alignment within the line as if the line was horizontal." +msgstr "设置行内的文本对齐方式,始终按照该行为横向的情况设置。" + msgid "Text writing direction." msgstr "文本书写方向。" @@ -96893,6 +106520,13 @@ msgstr "如果设置为 [code]true[/code],则将在文本中显示控制字符 msgid "If set to [code]true[/code] text will display invalid characters." msgstr "如果设置为 [code]true[/code],则将在文本中显示无效字符。" +msgid "" +"Sets the clipping behavior when the text exceeds the text line's set width. " +"See [enum TextServer.OverrunBehavior] for a description of all modes." +msgstr "" +"设置文本超出文本行的设置宽度时的裁剪行为。有关所有模式的描述,请参阅 [enum " +"TextServer.OverrunBehavior]。" + msgid "Text line width." msgstr "文本行宽。" @@ -96957,6 +106591,51 @@ msgstr "清空文本段落(移除文本和内联对象)。" msgid "Removes dropcap." msgstr "移除首字下沉。" +msgid "" +"Draw all lines of the text and drop cap into a canvas item at a given " +"position, with [param color]. [param pos] specifies the top left corner of " +"the bounding box." +msgstr "" +"在画布项中的给定位置绘制文本中所有行和首字下沉,颜色为 [param color]。[param " +"pos] 指定的是边界框的左上角。" + +msgid "" +"Draw drop cap into a canvas item at a given position, with [param color]. " +"[param pos] specifies the top left corner of the bounding box." +msgstr "" +"在画布项中的给定位置绘制首字下沉,颜色为 [param color]。[param pos] 指定的是" +"边界框的左上角。" + +msgid "" +"Draw drop cap outline into a canvas item at a given position, with [param " +"color]. [param pos] specifies the top left corner of the bounding box." +msgstr "" +"在画布项中的给定位置绘制首字下沉的轮廓,颜色为 [param color]。[param pos] 指" +"定的是边界框的左上角。" + +msgid "" +"Draw single line of text into a canvas item at a given position, with [param " +"color]. [param pos] specifies the top left corner of the bounding box." +msgstr "" +"在画布项中的给定位置绘制一行文本,颜色为 [param color]。[param pos] 指定的是" +"边界框的左上角。" + +msgid "" +"Draw outline of the single line of text into a canvas item at a given " +"position, with [param color]. [param pos] specifies the top left corner of " +"the bounding box." +msgstr "" +"在画布项中的给定位置绘制一行文本的轮廓,颜色为 [param color]。[param pos] 指" +"定的是边界框的左上角。" + +msgid "" +"Draw outlines of all lines of the text and drop cap into a canvas item at a " +"given position, with [param color]. [param pos] specifies the top left " +"corner of the bounding box." +msgstr "" +"在画布项中的给定位置绘制文本中所有行和首字下沉的轮廓,颜色为 [param color]。" +"[param pos] 指定的是边界框的左上角。" + msgid "Returns number of lines used by dropcap." msgstr "返回首字下沉使用的行数。" @@ -96966,9 +106645,29 @@ msgstr "返回首字下沉文本缓冲 RID。" msgid "Returns drop cap bounding box size." msgstr "返回首字下沉边界框大小。" +msgid "" +"Returns the text line ascent (number of pixels above the baseline for " +"horizontal layout or to the left of baseline for vertical)." +msgstr "" +"返回文本行上高(对于水平布局,为基线上方的像素数;或对于垂直布局,基线左侧的" +"像素数)。" + msgid "Returns number of lines in the paragraph." msgstr "返回段落中的行数。" +msgid "" +"Returns the text line descent (number of pixels below the baseline for " +"horizontal layout or to the right of baseline for vertical)." +msgstr "" +"返回文本行下深(对于水平布局,为基线下方的像素数;或对于垂直布局,基线右侧的" +"像素数)。" + +msgid "Returns array of inline objects in the line." +msgstr "返回某行中内联对象的数组。" + +msgid "Returns character range of the line." +msgstr "返回某行中的字符范围。" + msgid "Returns TextServer line buffer RID." msgstr "返回 TextServer 行缓冲 RID。" @@ -96984,9 +106683,25 @@ msgid "" "Returns the size of the bounding box of the paragraph, without line breaks." msgstr "返回段落边界框的大小,不带换行符。" +msgid "Returns TextServer full string buffer RID." +msgstr "返回 TextServer 完整字符串缓冲区的 RID。" + msgid "Returns the size of the bounding box of the paragraph." msgstr "返回段落边界框的大小。" +msgid "" +"Returns caret character offset at the specified coordinates. This function " +"always returns a valid position." +msgstr "返回指定坐标处的文本光标的偏移量。该函数始终返回一个有效位置。" + +msgid "" +"Sets drop cap, overrides previously set drop cap. Drop cap (dropped capital) " +"is a decorative element at the beginning of a paragraph that is larger than " +"the rest of the text." +msgstr "" +"设置首字下沉,会覆盖之前设置的首字下沉。首字下沉是段落开头的装饰元素,比文本" +"的其余部分大。" + msgid "Aligns paragraph to the given tab-stops." msgstr "将段落与给定的制表位对齐。" @@ -97005,6 +106720,13 @@ msgstr "" msgid "Limits the lines of text shown." msgstr "限制显示文本的行数。" +msgid "" +"Sets the clipping behavior when the text exceeds the paragraph's set width. " +"See [enum TextServer.OverrunBehavior] for a description of all modes." +msgstr "" +"设置当文本超过段落的设置宽度时的裁剪行为。有关所有模式的描述,请参阅 [enum " +"TextServer.OverrunBehavior]。" + msgid "Paragraph width." msgstr "段落宽度。" @@ -97110,18 +106832,65 @@ msgid "" "Returns the font oversampling factor, shared by all fonts in the TextServer." msgstr "返回字体过采样系数,由 TextServer 中的所有字体共享。" +msgid "" +"Returns outline contours of the glyph as a [code]Dictionary[/code] with the " +"following contents:\n" +"[code]points[/code] - [PackedVector3Array], containing outline " +"points. [code]x[/code] and [code]y[/code] are point coordinates. [code]z[/" +"code] is the type of the point, using the [enum ContourPointTag] values.\n" +"[code]contours[/code] - [PackedInt32Array], containing indices the end " +"points of each contour.\n" +"[code]orientation[/code] - [bool], contour orientation. If [code]true[/" +"code], clockwise contours must be filled." +msgstr "" +"将字形的轮廓线轮廓返回为具有以下内容的一个 [code]Dictionary[/code]:\n" +"[code]points[/code] - [PackedVector3Array],包含轮廓点。[code]x[/" +"code] 和 [code]y[/code] 是点坐标。[code]z[/code] 是点的类型,使用 [enum " +"ContourPointTag] 值。\n" +"[code]contours[/code] - [PackedInt32Array],包含每个轮廓端点的索引。\n" +"[code]orientation[/code] - [bool],轮廓方向。如果为 [code]true[/code],则" +"顺时针轮廓必须被填充。" + msgid "Returns size of the glyph." msgstr "返回该字形的大小。" +msgid "" +"Returns resource ID of the cache texture containing the glyph.\n" +"[b]Note:[/b] If there are pending glyphs to render, calling this function " +"might trigger the texture cache update." +msgstr "" +"返回包含字形的缓存纹理的资源 ID。\n" +"[b]注意:[/b]如果有待渲染的字形,调用此函数可能会触发纹理缓存的更新。" + +msgid "" +"Returns size of the cache texture containing the glyph.\n" +"[b]Note:[/b] If there are pending glyphs to render, calling this function " +"might trigger the texture cache update." +msgstr "" +"返回包含字形的缓存纹理的大小。\n" +"[b]注意:[/b]如果有待渲染的字形,调用此函数可能会触发纹理缓存的更新。" + msgid "Returns the font hinting mode. Used by dynamic fonts only." msgstr "返回字体微调模式。仅用于动态字体。" +msgid "" +"Returns the width of the range around the shape between the minimum and " +"maximum representable signed distance." +msgstr "返回最小和最大可表示有符号距离之间形状周围范围的宽度。" + msgid "Returns source font size used to generate MSDF textures." msgstr "返回用于生成 MSDF 纹理的源字体大小。" msgid "Returns font OpenType feature set override." msgstr "返回字体 OpenType 特性集覆盖。" +msgid "" +"Returns font oversampling factor, if set to [code]0.0[/code] global " +"oversampling factor is used instead. Used by dynamic fonts only." +msgstr "" +"返回字体过采样系数,如果设置为 [code]0.0[/code],则使用全局过采样系数。仅由动" +"态字体使用。" + msgid "Returns font style flags, see [enum FontStyle]." msgstr "返回字体样式标志,见 [enum FontStyle]。" @@ -97134,18 +106903,60 @@ msgstr "返回包含字体中所有可用字符的字符串。" msgid "Returns font cache texture image data." msgstr "返回字体缓存纹理图像数据。" +msgid "Returns array containing glyph packing data." +msgstr "返回包含字形打包数据的数组。" + msgid "Returns 2D transform applied to the font outlines." msgstr "返回应用于字体轮廓的 2D 变换。" msgid "" +"Returns variation coordinates for the specified font cache entry. See " +"[method font_supported_variation_list] for more info." +msgstr "" +"返回指定字体缓存条目的变体坐标。详见 [method font_supported_variation_list]。" + +msgid "" "Returns [code]true[/code] if system fonts can be automatically used as " "fallbacks." msgstr "如果可以自动使用系统字体作为回退字体,则返回 [code]true[/code]。" msgid "" +"Returns [code]true[/code] if auto-hinting is supported and preferred over " +"font built-in hinting. Used by dynamic fonts only." +msgstr "" +"如果自动提示被支持且优先于字体内置提示,则返回 [code]true[/code]。仅由动态字" +"体使用。" + +msgid "" +"Returns [code]true[/code] if glyphs of all sizes are rendered using single " +"multichannel signed distance field generated from the dynamic font vector " +"data." +msgstr "" +"如果使用从动态字体矢量数据生成的单个多通道有符号距离场渲染所有大小的字形,则" +"返回 [code]true[/code]。" + +msgid "" "Returns [code]true[/code], if font supports given script (ISO 15924 code)." msgstr "如果字体支持给定的文字(ISO 15924 代码),则返回 [code]true[/code]。" +msgid "" +"Removes specified rendered glyph information from the cache entry.\n" +"[b]Note:[/b] This function will not remove textures associated with the " +"glyphs, use [method font_remove_texture] to remove them manually." +msgstr "" +"从缓存条目中移除指定的渲染字形信息。\n" +"[b]注意:[/b]这个函数不会移除与字形相关的纹理,请使用 [method " +"font_remove_texture] 手动移除。" + +msgid "" +"Removes specified texture from the cache entry.\n" +"[b]Note:[/b] This function will not remove glyphs associated with the " +"texture, remove them manually, using [method font_remove_glyph]." +msgstr "" +"从缓存条目中移除指定纹理。\n" +"[b]注意:[/b]这个函数不会移除与纹理关联的字形,请使用 [method " +"font_remove_glyph] 手动移除。" + msgid "Sets font anti-aliasing mode." msgstr "使用字体抗锯齿模式。" @@ -97159,6 +106970,29 @@ msgstr "" "设置字体的加粗强度。如果 [param strength] 不等于零,则会加粗字体轮廓。负值会" "减小轮廓的粗细度。" +msgid "" +"Sets bitmap font fixed size. If set to value greater than zero, same cache " +"entry will be used for all font sizes." +msgstr "" +"设置位图字体的固定大小。如果设置为大于零的值,则会为所有字体大小使用相同的缓" +"存条目。" + +msgid "" +"If set to [code]true[/code] auto-hinting is preferred over font built-in " +"hinting." +msgstr "" +"如果设置为 [code]true[/code],则优先使用自动微调,而不是字体的内置微调。" + +msgid "If set to [code]true[/code] font texture mipmap generation is enabled." +msgstr "如果设置为 [code]true[/code],则启用字体纹理 mipmap 生成。" + +msgid "" +"Sets oversampling factor, shared by all font in the TextServer.\n" +"[b]Note:[/b] This value can be automatically changed by display server." +msgstr "" +"设置过采样系数,由 TextServer 中的所有字体共享。\n" +"[b]注意:[/b]显示服务器可能自动更改这个值。" + msgid "Sets size of the glyph." msgstr "设置字形的大小。" @@ -97168,15 +107002,52 @@ msgstr "设置字体微调模式。仅由动态字体使用。" msgid "Adds override for [method font_is_language_supported]." msgstr "为 [method font_is_language_supported] 添加覆盖。" +msgid "" +"Sets the width of the range around the shape between the minimum and maximum " +"representable signed distance." +msgstr "设置最小和最大可表示有符号距离之间形状周围范围的宽度。" + msgid "Sets source font size used to generate MSDF textures." msgstr "设置用于生成 MSDF 纹理的源字体大小。" +msgid "" +"If set to [code]true[/code], glyphs of all sizes are rendered using single " +"multichannel signed distance field generated from the dynamic font vector " +"data. MSDF rendering allows displaying the font at any scaling factor " +"without blurriness, and without incurring a CPU cost when the font size " +"changes (since the font no longer needs to be rasterized on the CPU). As a " +"downside, font hinting is not available with MSDF. The lack of font hinting " +"may result in less crisp and less readable fonts at small sizes.\n" +"[b]Note:[/b] MSDF font rendering does not render glyphs with overlapping " +"shapes correctly. Overlapping shapes are not valid per the OpenType " +"standard, but are still commonly found in many font files, especially those " +"converted by Google Fonts. To avoid issues with overlapping glyphs, consider " +"downloading the font file directly from the type foundry instead of relying " +"on Google Fonts." +msgstr "" +"如果设置为 [code]true[/code],则所有大小的字形都使用同一个从动态字体向量数据" +"生成的多通道带符号距离场进行渲染。MSDF 渲染能够使用任意缩放系数显示字体,字体" +"不会变得模糊,字体大小的改变也不会消耗 CPU 的性能(因为字体不再需要在 CPU 上" +"进行光栅化)。缺点是MSDF 无法使用字体微调。缺少字体微调时,锐度可能降低,较小" +"的字体可能不易阅读。\n" +"[b]注意:[/b]MSDF 字体渲染无法正确渲染存在形状重叠的字形。重叠的形状在 " +"OpenType 标准中是无效的,但在很多字体文件中仍然很常见,尤其是经过 Google " +"Fonts 转换后的那些。要避免形状重叠带来的问题,请考虑直接从字体厂商下载字体文" +"件,不要依赖 Google Fonts。" + msgid "Sets the font family name." msgstr "设置该字体的家族名称。" msgid "Sets font OpenType feature set override." msgstr "设置字体 OpenType 特性集覆盖。" +msgid "" +"Sets font oversampling factor, if set to [code]0.0[/code] global " +"oversampling factor is used instead. Used by dynamic fonts only." +msgstr "" +"设置字体的过采样系数,如果设置为 [code]0.0[/code],则会改用全局过采样系数。仅" +"由动态字体使用。" + msgid "Adds override for [method font_is_script_supported]." msgstr "为 [method font_is_script_supported] 添加覆盖。" @@ -97215,6 +107086,23 @@ msgid "Sets font cache texture image data." msgstr "设置字体的缓存纹理图像数据。" msgid "" +"Sets 2D transform, applied to the font outlines, can be used for slanting, " +"flipping and rotating glyphs.\n" +"For example, to simulate italic typeface by slanting, apply the following " +"transform [code]Transform2D(1.0, slant, 0.0, 1.0, 0.0, 0.0)[/code]." +msgstr "" +"设置应用于字体轮廓的 2D 变换,可用于倾斜、翻转和旋转字形。\n" +"例如,要通过倾斜来模拟斜体字体,请应用以下变换 [code]Transform2D(1.0, slant, " +"0.0, 1.0, 0.0, 0.0)[/code]。" + +msgid "" +"Sets variation coordinates for the specified font cache entry. See [method " +"font_supported_variation_list] for more info." +msgstr "" +"为指定的字体缓存条目设置变体坐标。详见 [method " +"font_supported_variation_list]。" + +msgid "" "Sets weight (boldness) of the font. A value in the [code]100...999[/code] " "range, normal font weight is [code]400[/code], bold font weight is " "[code]700[/code].\n" @@ -97275,6 +107163,21 @@ msgstr "" msgid "Returns [code]true[/code] if the server supports a feature." msgstr "如果服务器支持某个功能,则返回 [code]true[/code]。" +msgid "" +"Returns index of the first string in [param dict] which is visually " +"confusable with the [param string], or [code]-1[/code] if none is found.\n" +"[b]Note:[/b] This method doesn't detect invisible characters, for spoof " +"detection use it in combination with [method spoof_check].\n" +"[b]Note:[/b] Always returns [code]-1[/code] if the server does not support " +"the [constant FEATURE_UNICODE_SECURITY] feature." +msgstr "" +"返回 [param dict] 中可能与 [param string] 发生视觉混淆的第一个字符串的索引," +"如果没有找到则返回 [code]-1[/code]。\n" +"[b]注意:[/b]这个方法不检测不可见字符,要进行欺骗性检测,请与 [method " +"spoof_check] 结合使用。\n" +"[b]注意:[/b]如果该服务器不支持 [constant FEATURE_UNICODE_SECURITY] 特性,则" +"始终返回 [code]-1[/code]。" + msgid "Returns [code]true[/code] if locale is right-to-left." msgstr "如果区域设置为从右至左,则返回 [code]true[/code]。" @@ -97306,6 +107209,16 @@ msgstr "" "- 其他位置可以包含 XID_Continue 类的 Unicode 字符。" msgid "" +"Loads optional TextServer database (e.g. ICU break iterators and " +"dictionaries).\n" +"[b]Note:[/b] This function should be called before any other TextServer " +"functions used, otherwise it won't have any effect." +msgstr "" +"加载可选的 TextServer 数据库(例如 ICU 断字迭代器和字典)。\n" +"[b]注意:[/b]这个函数应该在使用任何其他 TextServer 函数之前调用,否则不会起任" +"何作用。" + +msgid "" "Converts readable feature, variation, script or language name to OpenType " "tag." msgstr "将特性、变体、文字、语言的可读名称转换为 OpenType 标记。" @@ -97328,11 +107241,20 @@ msgid "Returns percent sign used in the [param language]." msgstr "返回语言 [param language] 中使用的百分比符号。" msgid "" +"Saves optional TextServer database (e.g. ICU break iterators and " +"dictionaries) to the file.\n" +"[b]Note:[/b] This function is used by during project export, to include " +"TextServer database." +msgstr "" +"将可选的 TextServer 数据库(例如 ICU 断字迭代器和字典)保存到文件中。\n" +"[b]注意:[/b]这个函数在导出项目时会用到,用于包含 TextServer 数据库。" + +msgid "" "Returns number of text spans added using [method shaped_text_add_string] or " "[method shaped_text_add_object]." msgstr "" -"返回使用 [method shape_text_add_string] 或 [method shape_text_add_object] 添" -"加的文本区间的数量。" +"返回使用 [method shaped_text_add_string] 或 [method shaped_text_add_object] " +"添加的文本区间的数量。" msgid "Returns text span metadata." msgstr "返回文本区间的元数据。" @@ -97348,6 +107270,57 @@ msgstr "添加文本区间和字体,将其绘制到文本缓冲中。" msgid "Clears text buffer (removes text and inline objects)." msgstr "清空文本缓冲(移除文本和内联对象)。" +msgid "" +"Draw shaped text into a canvas item at a given position, with [param color]. " +"[param pos] specifies the leftmost point of the baseline (for horizontal " +"layout) or topmost point of the baseline (for vertical layout)." +msgstr "" +"在画布项的给定位置绘制塑形后的文本,颜色为 [param color]。[param pos] 指定的" +"是基线的最左侧(横向排版)或基线的最顶部(纵向排版)。" + +msgid "" +"Draw the outline of the shaped text into a canvas item at a given position, " +"with [param color]. [param pos] specifies the leftmost point of the baseline " +"(for horizontal layout) or topmost point of the baseline (for vertical " +"layout)." +msgstr "" +"在画布项的给定位置绘制塑形后的文本轮廓,颜色为 [param color]。[param pos] 指" +"定的是基线的最左侧(横向排版)或基线的最顶部(纵向排版)。" + +msgid "Adjusts text width to fit to specified width, returns new text width." +msgstr "两端对齐文本以适合指定宽度,返回新的文本宽度。" + +msgid "" +"Returns the text ascent (number of pixels above the baseline for horizontal " +"layout or to the left of baseline for vertical).\n" +"[b]Note:[/b] Overall ascent can be higher than font ascent, if some glyphs " +"are displaced from the baseline." +msgstr "" +"返回文本上高(水平布局基线上方的像素数,或垂直布局基线左侧的像素数)。\n" +"[b]注意:[/b]如果某些字形偏离基线,则总体上高可能高于字体上高。" + +msgid "" +"Returns shapes of the carets corresponding to the character offset [param " +"position] in the text. Returned caret shape is 1 pixel wide rectangle." +msgstr "" +"返回与文本中字符偏移 [param position] 对应的文本光标的形状。返回的光标形状是" +"宽度为 1 像素的矩形。" + +msgid "" +"Returns custom punctuation character list, used for word breaking. If set to " +"empty string, server defaults are used." +msgstr "" +"返回自定义标点字符列表,用于断字。如果被设置为空字符串,则使用服务的默认值。" + +msgid "" +"Returns the text descent (number of pixels below the baseline for horizontal " +"layout or to the right of baseline for vertical).\n" +"[b]Note:[/b] Overall descent can be higher than font descent, if some glyphs " +"are displaced from the baseline." +msgstr "" +"返回文本下深(水平布局基线下方的像素数,或垂直布局基线右侧的像素数)。\n" +"[b]注意:[/b]如果某些字形偏离基线,则总体下深可能高于字体下深。" + msgid "Returns direction of the text." msgstr "返回文本的方向。" @@ -97369,6 +107342,21 @@ msgstr "返回缓冲区中的字形数。" msgid "Returns an array of glyphs in the visual order." msgstr "返回字形数组,按视觉顺序排序。" +msgid "" +"Returns composite character's bounds as offsets from the start of the line." +msgstr "将复合字符的边界返回为距行首的偏移量。" + +msgid "Returns direction of the text, inferred by the BiDi algorithm." +msgstr "返回由 BiDi 算法推断的文本书写方向。" + +msgid "Breaks text to the lines and returns character ranges for each line." +msgstr "对文本进行断行,返回每一行的字符范围。" + +msgid "" +"Breaks text to the lines and columns. Returns character ranges for each " +"segment." +msgstr "将文本拆分为行和列。返回每段的字符范围。" + msgid "Returns text orientation." msgstr "返回文本朝向。" @@ -97402,6 +107390,9 @@ msgstr "返回该文本的大小。" msgid "Returns extra spacing added between glyphs or lines in pixels." msgstr "返回字形或行之间添加的额外间距,单位为像素。" +msgid "Returns the position of the overrun trim." +msgstr "返回超出修剪的位置。" + msgid "" "Breaks text into words and returns array of character ranges. Use [param " "grapheme_flags] to set what characters are used for breaking (see [enum " @@ -97417,6 +107408,9 @@ msgstr "" "返回字素的索引,该字素位于基线上指定像素偏移的位置,如果没有找到,则返回 " "[code]-1[/code]。" +msgid "Returns [code]true[/code] if buffer is successfully shaped." +msgstr "如果缓冲区成功塑形,则返回 [code]true[/code]。" + msgid "Returns composite character end position closest to the [param pos]." msgstr "返回距离 [param pos] 最近的组合字符结束位置。" @@ -97427,6 +107421,32 @@ msgid "Returns composite character start position closest to the [param pos]." msgstr "返回距离 [param pos] 最近的组合字符开始位置。" msgid "" +"Sets custom punctuation character list, used for word breaking. If set to " +"empty string, server defaults are used." +msgstr "" +"设置自定义标点字符列表,用于断字。如果被设置为空字符串,则使用服务的默认值。" + +msgid "" +"Sets desired text direction. If set to [constant DIRECTION_AUTO], direction " +"will be detected based on the buffer contents and current locale.\n" +"[b]Note:[/b] Direction is ignored if server does not support [constant " +"FEATURE_BIDI_LAYOUT] feature (supported by [TextServerAdvanced])." +msgstr "" +"设置所需的文本方向。如果设置为 [constant DIRECTION_AUTO],方向将根据缓冲区的" +"内容和当前的区域设置来检测。\n" +"[b]注意:[/b] 如果服务器不支持 [constant FEATURE_BIDI_LAYOUT] 特性,则方向会" +"被忽略([TextServerAdvanced] 支持)。" + +msgid "" +"Sets desired text orientation.\n" +"[b]Note:[/b] Orientation is ignored if server does not support [constant " +"FEATURE_VERTICAL_LAYOUT] feature (supported by [TextServerAdvanced])." +msgstr "" +"设置所需的文本排版方向。\n" +"[b]注意:[/b]如果服务不支持 [constant FEATURE_VERTICAL_LAYOUT] 功能(由 " +"[TextServerAdvanced] 支持),则排版方向将被忽略。" + +msgid "" "If set to [code]true[/code] text buffer will display control characters." msgstr "如果设置为 [code]true[/code],则文本缓冲区将显示控制字符。" @@ -97440,10 +107460,63 @@ msgstr "" msgid "Sets extra spacing added between glyphs or lines in pixels." msgstr "设置字形之间或行与行之间添加的额外像素间距。" +msgid "" +"Shapes buffer if it's not shaped. Returns [code]true[/code] if the string is " +"shaped successfully.\n" +"[b]Note:[/b] It is not necessary to call this function manually, buffer will " +"be shaped automatically as soon as any of its output data is requested." +msgstr "" +"形状缓冲区(如果未整形)。如果字符串整形成功,则返回 [code]true[/code]。\n" +"[b]注意:[/b]无需手动调用该函数,只要请求其任何输出数据,缓冲区就会自动被整" +"形。" + +msgid "Returns text glyphs in the logical order." +msgstr "按逻辑顺序返回文本字形。" + +msgid "" +"Returns text buffer for the substring of the text in the [param shaped] text " +"buffer (including inline objects)." +msgstr "" +"返回 [param shaped] 文本缓冲区中字符串的子字符串的文本缓冲区(包括内联对" +"象)。" + msgid "Aligns shaped text to the given tab-stops." msgstr "将塑形文本与给定的制表位对齐。" msgid "" +"Returns [code]true[/code] if [param string] is likely to be an attempt at " +"confusing the reader.\n" +"[b]Note:[/b] Always returns [code]false[/code] if the server does not " +"support the [constant FEATURE_UNICODE_SECURITY] feature." +msgstr "" +"如果 [param string] 可能造成读者的混淆,则返回 [code]true[/code]。\n" +"[b]注意:[/b]如果服务器不支持 [constant FEATURE_UNICODE_SECURITY] 特性,则始" +"终返回 [code]false[/code]。" + +msgid "" +"Returns an array of the word break boundaries. Elements in the returned " +"array are the offsets of the start and end of words. Therefore the length of " +"the array is always even.\n" +"When [param chars_per_line] is greater than zero, line break boundaries are " +"returned instead.\n" +"[codeblock]\n" +"var ts = TextServerManager.get_primary_interface()\n" +"print(ts.string_get_word_breaks(\"Godot Engine\")) # Prints [0, 5, 6, 12]\n" +"print(ts.string_get_word_breaks(\"Godot Engine\", \"en\", 5)) # Prints [0, " +"5, 6, 11, 11, 12]\n" +"[/codeblock]" +msgstr "" +"返回分词边界的数组。返回数组中的元素是单词的起点和终点偏移量。因此,该数组的" +"长度始终为偶数。\n" +"[param chars_per_line] 大于零时,返回的是分行边界。\n" +"[codeblock]\n" +"var ts = TextServerManager.get_primary_interface()\n" +"print(ts.string_get_word_breaks(\"Godot Engine\")) # 输出 [0, 5, 6, 12]\n" +"print(ts.string_get_word_breaks(\"Godot Engine\", \"en\", 5)) # 输出 [0, 5, " +"6, 11, 11, 12]\n" +"[/codeblock]" + +msgid "" "Returns the string converted to lowercase.\n" "[b]Note:[/b] Casing is locale dependent and context sensitive if server " "support [constant FEATURE_CONTEXT_SENSITIVE_CASE_CONVERSION] feature " @@ -97537,8 +107610,8 @@ msgid "" "Left to right text is written vertically from top to bottom.\n" "Right to left text is written vertically from bottom to top." msgstr "" -"从左至右的文本从上到下垂直书写。\n" -"从右至左的文本从下到上垂直书写。" +"从左至右的文本从上到下书写。\n" +"从右至左的文本从下到上书写。" msgid "Do not justify text." msgstr "不两端对齐文本。" @@ -97555,6 +107628,9 @@ msgstr "从两端对齐的文本中移除前缀和后缀的空格。" msgid "Only apply justification to the part of the text after the last tab." msgstr "仅对最后一个制表符之后的文本应用两端对齐。" +msgid "Apply justification to the trimmed line with ellipsis." +msgstr "使用省略号对修剪行应用对齐。" + msgid "Autowrap is disabled." msgstr "自动换行已禁用。" @@ -97571,6 +107647,13 @@ msgid "" "words." msgstr "让文本在节点的边界矩形内自动换行,允许在单词之间进行软换行。" +msgid "" +"Behaves similarly to [constant AUTOWRAP_WORD], but force-breaks a word if " +"that single word does not fit in one line." +msgstr "" +"行为与 [constant AUTOWRAP_WORD] 类似,但如果一行的大小无法放下该单词,则会强" +"制断开该单词。" + msgid "Do not break the line." msgstr "不换行。" @@ -97597,6 +107680,22 @@ msgid "Remove edge spaces from the broken line segments." msgstr "移除每一行头尾的空格。" msgid "" +"Trims text before the shaping. e.g, increasing [member Label." +"visible_characters] or [member RichTextLabel.visible_characters] value is " +"visually identical to typing the text." +msgstr "" +"塑形前截断文本。例如,增加 [member Label.visible_characters] 或 [member " +"RichTextLabel.visible_characters] 的值在视觉上会与输入该文本等价。" + +msgid "" +"Displays glyphs that are mapped to the first [member Label." +"visible_characters] or [member RichTextLabel.visible_characters] characters " +"from the beginning of the text." +msgstr "" +"显示映射到文本开头的前 [member Label.visible_characters] 或 [member " +"RichTextLabel.visible_characters] 个字符的字形。" + +msgid "" "Displays [member Label.visible_ratio] or [member RichTextLabel." "visible_ratio] glyphs, starting from the left or from the right, depending " "on [member Control.layout_direction] value." @@ -97701,6 +107800,16 @@ msgid "Use the light font hinting mode." msgstr "使用浅色字体提示模式。" msgid "" +"Use the default font hinting mode (crisper but less smooth).\n" +"[b]Note:[/b] This hinting mode changes both horizontal and vertical glyph " +"metrics. If applied to monospace font, some glyphs might have different " +"width." +msgstr "" +"使用默认的字体微调模式(更锐利,但平滑度更低)。\n" +"[b]注意:[/b]此处的微调模式会改变字形的水平和垂直度量。应用于等宽字体时,可能" +"会让部分字形的宽度发生变化。" + +msgid "" "Glyph horizontal position is rounded to the whole pixel size, each glyph is " "rasterized once." msgstr "将字形的水平位置舍入至整数像素大小,每个字形光栅化一次。" @@ -97800,7 +107909,7 @@ msgid "" "Technical Standard #39[/url] based spoof detection features." msgstr "" "TextServer 支持基于 [url=https://unicode.org/reports/tr36/]Unicode 技术报告 " -"#36[/url] 和 [url=https://unicode.org/reports/tr39/]Unicode 技术标准 #39[ /" +"#36[/url] 和 [url=https://unicode.org/reports/tr39/]Unicode 技术标准 #39[/" "url] 的欺骗检测功能。" msgid "Contour point is on the curve." @@ -97970,6 +108079,34 @@ msgstr "" "否应按列主顺序而不是行主顺序执行(会导致顺时针旋转 90 度)。\n" "[b]注意:[/b]仅用于 2D 渲染,不用于 3D。" +msgid "" +"Called when the [Texture2D] is requested to be drawn onto [CanvasItem]'s " +"specified [param rect]. [param modulate] specifies a multiplier for the " +"colors being drawn, while [param transpose] specifies whether drawing should " +"be performed in column-major order instead of row-major order (resulting in " +"90-degree clockwise rotation).\n" +"[b]Note:[/b] This is only used in 2D rendering, not 3D." +msgstr "" +"请求将 [Texture2D] 绘制到 [CanvasItem] 的指定 [param rect] 上时调用。[param " +"modulate] 指定的是绘制时颜色的乘数,而 [param transpose] 指定的是绘制时是否使" +"用列优先顺序,而不是使用行优先顺序(产生顺时针 90 度旋转)。\n" +"[b]注意:[/b]仅在 2D 渲染时使用,3D 不使用。" + +msgid "" +"Called when a part of the [Texture2D] specified by [param src_rect]'s " +"coordinates is requested to be drawn onto [CanvasItem]'s specified [param " +"rect]. [param modulate] specifies a multiplier for the colors being drawn, " +"while [param transpose] specifies whether drawing should be performed in " +"column-major order instead of row-major order (resulting in 90-degree " +"clockwise rotation).\n" +"[b]Note:[/b] This is only used in 2D rendering, not 3D." +msgstr "" +"请求将 [Texture2D] 由 [param src_rect] 的坐标指定的部分绘制到 [CanvasItem] 的" +"指定 [param rect] 上时调用。[param modulate] 指定的是绘制时颜色的乘数,而 " +"[param transpose] 指定的是绘制时是否使用列优先顺序,而不是使用行优先顺序(产" +"生顺时针 90 度旋转)。\n" +"[b]注意:[/b]仅在 2D 渲染时使用,3D 不使用。" + msgid "Called when the [Texture2D]'s height is queried." msgstr "查询该 [Texture2D] 的高度时调用。" @@ -97981,6 +108118,12 @@ msgid "" msgstr "查询该 [Texture2D] 是否存在 alpha 通道时调用。" msgid "" +"Called when a pixel's opaque state in the [Texture2D] is queried at the " +"specified [code](x, y)[/code] position." +msgstr "" +"查询 [Texture2D] 中指定位置 [code](x, y)[/code] 的像素的不透明状态时调用。" + +msgid "" "Creates a placeholder version of this resource ([PlaceholderTexture2D])." msgstr "创建该资源的占位符版本([PlaceholderTexture2D])。" @@ -98002,6 +108145,17 @@ msgstr "使用 [RenderingServer] API 在 [CanvasItem] 上绘制纹理的一部 msgid "Returns the texture height in pixels." msgstr "返回该纹理的高度,单位为像素。" +msgid "" +"Returns an [Image] that is a copy of data from this [Texture2D] (a new " +"[Image] is created each time). [Image]s can be accessed and manipulated " +"directly.\n" +"[b]Note:[/b] This will fetch the texture data from the GPU, which might " +"cause performance problems when overused." +msgstr "" +"返回一个 [Image],是这个 [Texture2D] 中数据的副本(每次都会新建一个 " +"[Image])。可以直接访问并操作 [Image]。\n" +"[b]注意:[/b]这个函数会从 GPU 获取纹理数据,过度使用可能会引起性能问题。" + msgid "Returns the texture size in pixels." msgstr "返回该纹理的大小,单位为像素。" @@ -98018,12 +108172,51 @@ msgstr "" "由多个独立图像构成的单个纹理资源。每个图像的尺寸和 mipmap 级别数都相同。" msgid "" +"A Texture2DArray is different from a Texture3D: The Texture2DArray does not " +"support trilinear interpolation between the [Image]s, i.e. no blending. See " +"also [Cubemap] and [CubemapArray], which are texture arrays with specialized " +"cubemap functions.\n" +"A Texture2DArray is also different from an [AtlasTexture]: In a " +"Texture2DArray, all images are treated separately. In an atlas, the regions " +"(i.e. the single images) can be of different sizes. Furthermore, you usually " +"need to add a padding around the regions, to prevent accidental UV mapping " +"to more than one region. The same goes for mipmapping: Mipmap chains are " +"handled separately for each layer. In an atlas, the slicing has to be done " +"manually in the fragment shader.\n" +"To create such a texture file yourself, reimport your image files using the " +"Godot Editor import presets." +msgstr "" +"Texture2DArray 与 Texture3D 不同:Texture2DArray 不支持在 [Image] 之间进行三" +"线性插值,即不会进行混合。另见 [Cubemap] 和 [CubemapArray],这些纹理数组具有" +"针对立方体贴图设计的函数。\n" +"Texture2DArray 与 [AtlasTexture] 也不同:Texture2DArray 中的图形都是单独处理" +"的。而在图集中,区域(即单张图像)的大小可以不同。此外,你通常会需要围绕区域" +"添加边距,防止 UV 映射意外进入多个区域。多级渐远纹理 mipmap 也是一样:每一层" +"的 mipmap 链都是单独处理的。而在图集中,需要在片段着色器中手动切片。\n" +"要自己创建这样的纹理文件,请使用 Godot 编辑器导入预设重新导入图像文件。" + +msgid "" "Creates a placeholder version of this resource ([PlaceholderTexture2DArray])." msgstr "创建该资源的占位符版本([PlaceholderTexture2DArray])。" msgid "Base class for 3-dimensionnal textures." msgstr "3D 纹理的基类。" +msgid "" +"Base class for [ImageTexture3D] and [CompressedTexture3D]. Cannot be used " +"directly, but contains all the functions necessary for accessing the derived " +"resource types. [Texture3D] is the base class for all 3-dimensional texture " +"types. See also [TextureLayered].\n" +"All images need to have the same width, height and number of mipmap levels.\n" +"To create such a texture file yourself, reimport your image files using the " +"Godot Editor import presets." +msgstr "" +"[ImageTexture3D] 和 [CompressedTexture3D] 的基类。无法直接使用,但包含所有访" +"问派生资源类型所需的函数。[Texture3D] 是所有三维纹理类型的基类。另见 " +"[TextureLayered]。\n" +"所有图像都需要有相同的宽度、高度和 mipmap 层数。\n" +"要自己创建这样的纹理文件,请使用 Godot 编辑器的导入预设重新导入你的图像文件。" + msgid "Called when the [Texture3D]'s data is queried." msgstr "查询该 [Texture3D] 的数据时被调用。" @@ -98099,6 +108292,20 @@ msgstr "" "也请参阅 [BaseButton],它包含了与该节点相关的通用属性和方法。" msgid "" +"If [code]true[/code], the size of the texture won't be considered for " +"minimum size calculation, so the [TextureButton] can be shrunk down past the " +"texture size." +msgstr "" +"如果为 [code]true[/code],则计算最小尺寸时不会考虑该纹理的大小,因此 " +"[TextureButton] 能够调整地比该纹理大小还要小。" + +msgid "" +"Controls the texture's behavior when you resize the node's bounding " +"rectangle. See the [enum StretchMode] constants for available options." +msgstr "" +"控制调整节点包围矩形时纹理的行为。可用的选项见 [enum StretchMode] 常量。" + +msgid "" "Pure black and white [BitMap] image to use for click detection. On the mask, " "white pixels represent the button's clickable area. Use it to create buttons " "with curved shapes." @@ -98111,6 +108318,22 @@ msgid "" "disabled]." msgstr "节点被禁用时显示的纹理。参阅 [member BaseButton.disabled]。" +msgid "" +"Texture to display when the node has mouse or keyboard focus. [member " +"texture_focused] is displayed [i]over[/i] the base texture, so a partially " +"transparent texture should be used to ensure the base texture remains " +"visible. A texture that represents an outline or an underline works well for " +"this purpose. To disable the focus visual effect, assign a fully transparent " +"texture of any size. Note that disabling the focus visual effect will harm " +"keyboard/controller navigation usability, so this is not recommended for " +"accessibility reasons." +msgstr "" +"该节点具有鼠标或键盘焦点时显示的纹理。[member texture_focused] 会在基础纹理" +"[i]之上[/i]显示,所以要让基础纹理可见就应该使用半透明纹理。这种情况下比较适用" +"代表轮廓或者下划线的纹理。要禁用焦点的视觉效果,请分配一张任意大小的全透明纹" +"理。请注意,禁用焦点的视觉效果不利于键盘/控制器的导航,所以出于可用性的原因并" +"不建议这么做。" + msgid "Texture to display when the mouse hovers the node." msgstr "当鼠标悬停在节点上时显示的纹理。" @@ -98163,25 +108386,6 @@ msgid "" "Each image is of the same size and format." msgstr "包含多个 [Image] 的纹理类型的基类。每个图像的大小和格式都是一样的。" -msgid "" -"Base class for [ImageTextureLayered]. Cannot be used directly, but contains " -"all the functions necessary for accessing the derived resource types. See " -"also [Texture3D].\n" -"Data is set on a per-layer basis. For [Texture2DArray]s, the layer specifies " -"the array layer.\n" -"All images need to have the same width, height and number of mipmap levels.\n" -"A [TextureLayered] can be loaded with [method ResourceLoader.load].\n" -"Internally, Godot maps these files to their respective counterparts in the " -"target rendering driver (Vulkan, OpenGL3)." -msgstr "" -"[ImageTextureLayered] 的基类。不能直接使用,但包含访问派生资源类型所需的所有" -"功能。另见 [Texture3D]。\n" -"数据是按层设置的。对于 [Texture2DArray],层指定数组层。\n" -"所有图像都需要具有相同的宽度、高度和 mipmap 级别数。\n" -"[TextureLayered] 可以用 [method ResourceLoader.load] 加载。\n" -"在内部,Godot 将这些文件映射到目标渲染驱动程序(Vulkan、OpenGL3)中的对应文" -"件。" - msgid "Called when the [TextureLayered]'s format is queried." msgstr "查询该 [TextureLayered] 的格式时被调用。" @@ -98244,6 +108448,14 @@ msgid "" msgstr "基于纹理的进度条。适用于加载屏幕和生命或体力条。" msgid "" +"TextureProgressBar works like [ProgressBar], but uses up to 3 textures " +"instead of Godot's [Theme] resource. It can be used to create horizontal, " +"vertical and radial progress bars." +msgstr "" +"TextureProgressBar 的工作方式类似于 [ProgressBar],但最多使用 3 个纹理,不使" +"用 Godot 的 [Theme] 资源。可用于创建水平、垂直和径向进度条。" + +msgid "" "Returns the stretch margin with the specified index. See [member " "stretch_margin_bottom] and related properties." msgstr "返回给定索引的拉伸边距。见 [member stretch_margin_bottom] 及相关属性。" @@ -98321,6 +108533,21 @@ msgstr "" "texture_progress] 的上层边框。" msgid "" +"[Texture2D] that clips based on the node's [code]value[/code] and [member " +"fill_mode]. As [code]value[/code] increased, the texture fills up. It shows " +"entirely when [code]value[/code] reaches [code]max_value[/code]. It doesn't " +"show at all if [code]value[/code] is equal to [code]min_value[/code].\n" +"The [code]value[/code] property comes from [Range]. See [member Range." +"value], [member Range.min_value], [member Range.max_value]." +msgstr "" +"被裁剪的 [Texture2D]。裁剪基于该节点的 [code]value[/code] 和 [member " +"fill_mode]。随着 [code]value[/code] 的增加,该纹理将被填满。当 [code]value[/" +"code] 达到 [code]max_value[/code] 时,它将完整显示。如果 [code]value[/code] " +"等于 [code]min_value[/code],则它根本不显示。\n" +"[code]value[/code] 属性来自 [Range]。参见 [member Range.value]、[member " +"Range.min_value]、[member Range.max_value]。" + +msgid "" "The offset of [member texture_progress]. Useful for [member texture_over] " "and [member texture_under] with fancy borders, to avoid transparent margins " "in your progress texture." @@ -98469,7 +108696,34 @@ msgid "" msgstr "缩放纹理以适应节点的边界矩形,使其居中并保持其长宽比。" msgid "Theme resource for styling/skinning [Control]s and [Window]s." -msgstr "用于样式化/皮肤化 [Control] 和 [Windows] 的主题资源。" +msgstr "用于样式化/皮肤化 [Control] 和 [Window] 的主题资源。" + +msgid "" +"A theme resource is used for styling/skinning [Control] and [Window] nodes. " +"While individual controls can be styled using their local theme overrides " +"(see [method Control.add_theme_color_override]), theme resources allow you " +"to store and apply the same settings between all controls sharing the same " +"type (e.g. style all [Button]s the same). One theme resource can be used for " +"the entire project, but you can also set a separate theme resource to a " +"branch of control nodes. A theme resources assigned to a control node " +"applies to the control itself, as well as all of its direct and indirect " +"children (as long as a chain of controls is uninterrupted).\n" +"Use [member ProjectSettings.gui/theme/custom] to set up a project-scope " +"theme that will be available to every control in your project.\n" +"Use [member Control.theme] of any control node to set up a theme that will " +"be available to that control and all of its direct and indirect children." +msgstr "" +"主题资源可用于对 [Control] 和 [Window] 节点进行风格化/皮肤化。控件可以使用本" +"地的主题覆盖项进行单独的风格化(见 [method Control." +"add_theme_color_override]),而主题资源则能够存储这些设置,在所有同类型的控件" +"之间实现共享(例如将所有 [Button] 都设置为相同的风格)。主题资源可以在整个项" +"目上使用,但你也可以为单独的一个控件节点分支设置不同的主题资源。为某个控件节" +"点分配的主题资源不仅会对它自己生效,也会对它的所有直接和间接子节点生效(只要" +"控件链没有中断)。\n" +"项目范围的主题请使用 [member ProjectSettings.gui/theme/custom] 设置,这样项目" +"中的所有控件就都能够使用。\n" +"控件节点的主题请使用 [member Control.theme] 设置,这样该控件和它的所有直接和" +"间接子节点就都能够使用。" msgid "GUI skinning" msgstr "GUI 皮肤" @@ -98846,7 +109100,7 @@ msgid "" msgstr "" "如果主题类型 [param theme_type] 中存在名为 [param name] 的字体大小属性,则返" "回 [code]true[/code]。\n" -"不存在时返回 [code]false[/code]。定义请使用 [method set_color_size]。" +"不存在时返回 [code]false[/code]。定义请使用 [method set_font_size]。" msgid "" "Returns [code]true[/code] if the icon property defined by [param name] and " @@ -99270,6 +109524,26 @@ msgstr "" "改。\n" "成功时返回 [constant OK],失败时返回 [constant ERR_CANT_CREATE]。" +msgid "" +"Joins the [Thread] and waits for it to finish. Returns the output of the " +"[Callable] passed to [method start].\n" +"Should either be used when you want to retrieve the value returned from the " +"method called by the [Thread] or before freeing the instance that contains " +"the [Thread].\n" +"To determine if this can be called without blocking the calling thread, " +"check if [method is_alive] is [code]false[/code].\n" +"[b]Note:[/b] After the [Thread] finishes joining it will be disposed. If you " +"want to use it again you will have to create a new instance of it." +msgstr "" +"合并该 [Thread] 并等待其完成。返回传入 [method start] 的 [Callable] 的输" +"出。\n" +"应该在你想要获取该 [Thread] 所调用的方法的返回值时使用,或者在释放包含该 " +"[Thread] 的实例前使用。\n" +"要确定调用时是否不会阻塞调用线程,请检查 [method is_alive] 是否为 " +"[code]false[/code]。\n" +"[b]注意:[/b][Thread] 完成合并后就会被丢弃。如果想要再次使用,你必须再创建一" +"个新的实例。" + msgid "A thread running with lower priority than normally." msgstr "线程以比正常情况下更低的优先级运行。" @@ -99295,6 +109569,20 @@ msgid "" msgstr "为该图块在给定的 TileSet 物理层上添加碰撞多边形。" msgid "" +"Returns the one-way margin (for one-way platforms) of the polygon at index " +"[param polygon_index] for TileSet physics layer with index [param layer_id]." +msgstr "" +"返回在索引为 [param layer_id] 的 TileSet 物理层上,索引为 [param " +"polygon_index] 的多边形的单向边距(用于单向平台)。" + +msgid "" +"Returns the points of the polygon at index [param polygon_index] for TileSet " +"physics layer with index [param layer_id]." +msgstr "" +"返回在索引为 [param layer_id] 的 TileSet 物理层上,索引为 [param " +"polygon_index] 的多边形的点。" + +msgid "" "Returns how many polygons the tile has for TileSet physics layer with index " "[param layer_id]." msgstr "设置该图块中索引为 [param layer_id] 的 TileSet 物理层中多边形的数量。" @@ -99335,6 +109623,34 @@ msgid "" msgstr "返回该图块给定 [param peering_bit] 方向的地形位。" msgid "" +"Returns whether one-way collisions are enabled for the polygon at index " +"[param polygon_index] for TileSet physics layer with index [param layer_id]." +msgstr "" +"返回索引为 [param layer_id] 的 TileSet 物理层上索引为 [param polygon_index] " +"的多边形是否启用了单向碰撞。" + +msgid "" +"Removes the polygon at index [param polygon_index] for TileSet physics layer " +"with index [param layer_id]." +msgstr "" +"移除索引为 [param layer_id] 的 TileSet 物理层上索引为 [param polygon_index] " +"的多边形。" + +msgid "" +"Enables/disables one-way collisions on the polygon at index [param " +"polygon_index] for TileSet physics layer with index [param layer_id]." +msgstr "" +"启用/禁用索引为 [param layer_id] 的 TileSet 物理层上索引为 [param " +"polygon_index] 的多边形的单向碰撞。" + +msgid "" +"Sets the points of the polygon at index [param polygon_index] for TileSet " +"physics layer with index [param layer_id]." +msgstr "" +"设置索引为 [param layer_id] 的 TileSet 物理层上索引为 [param polygon_index] " +"的多边形的顶点。" + +msgid "" "Sets the polygons count for TileSet physics layer with index [param " "layer_id]." msgstr "设置索引为 [param layer_id] 的 TileSet 物理层中多边形的数量。" @@ -99548,6 +109864,38 @@ msgstr "" "理,返回原始的备选标识符。见 [method TileSet.map_tile_proxy]。" msgid "" +"Returns the [TileData] object associated with the given cell, or [code]null[/" +"code] if the cell does not exist or is not a [TileSetAtlasSource].\n" +"If [param use_proxies] is [code]false[/code], ignores the [TileSet]'s tile " +"proxies, returning the raw alternative identifier. See [method TileSet." +"map_tile_proxy].\n" +"[codeblock]\n" +"func get_clicked_tile_power():\n" +" var clicked_cell = tile_map.local_to_map(tile_map." +"get_local_mouse_position())\n" +" var data = tile_map.get_cell_tile_data(0, clicked_cell)\n" +" if data:\n" +" return data.get_custom_data(\"power\")\n" +" else:\n" +" return 0\n" +"[/codeblock]" +msgstr "" +"返回与给定单元格关联的 [TileData] 对象,如果单元格不存在或者不是 " +"[TileSetAtlasSource] 则返回 [code]null[/code]。\n" +"如果 [param use_proxies] 为 [code]false[/code],则会忽略 [TileSet] 的图块代" +"理,返回原始的备选标识符。见 [method TileSet.map_tile_proxy]。\n" +"[codeblock]\n" +"func get_clicked_tile_power():\n" +" var clicked_cell = tile_map.local_to_map(tile_map." +"get_local_mouse_position())\n" +" var data = tile_map.get_cell_tile_data(0, clicked_cell)\n" +" if data:\n" +" return data.get_custom_data(\"power\")\n" +" else:\n" +" return 0\n" +"[/codeblock]" + +msgid "" "Returns the coordinates of the tile for given physics body RID. Such RID can " "be retrieved from [method KinematicCollision2D.get_collider_rid], when " "colliding with a tile." @@ -99588,6 +109936,14 @@ msgstr "" "NavigationAgent2D.set_navigation_map] 和从 [method get_navigation_map] 接收的" "导航地图。" +msgid "" +"Returns the neighboring cell to the one at coordinates [param coords], " +"identified by the [param neighbor] direction. This method takes into account " +"the different layouts a TileMap can take." +msgstr "" +"返回与位于坐标 [param coords] 的单元格相邻的单元格,方向由 [param neighbor] " +"表示。这个方法会考虑 TileMap 的不同布局。" + msgid "Creates a new [TileMapPattern] from the given layer and set of cells." msgstr "从给定的层和一组单元格,新建 [TileMapPattern]。" @@ -99637,6 +109993,16 @@ msgid "Returns if a layer Y-sorts its tiles." msgstr "返回图层是否对其图块进行 Y 排序。" msgid "" +"Returns the map coordinates of the cell containing the given [param " +"local_position]. If [param local_position] is in global coordinates, " +"consider using [method Node2D.to_local] before passing it to this method. " +"See also [method map_to_local]." +msgstr "" +"返回包含给定 [param local_position] 的单元格地图坐标。如果 [param " +"local_position] 使用全局坐标,请考虑在传入这个方法前使用 [method Node2D." +"to_local]。另见 [method map_to_local]。" + +msgid "" "Returns for the given coordinate [param coords_in_pattern] in a " "[TileMapPattern] the corresponding cell coordinates if the pattern was " "pasted at the [param position_in_tilemap] coordinates (see [method " @@ -99672,6 +110038,84 @@ msgid "Removes the layer at index [param layer]." msgstr "移除索引为 [param layer] 的层。" msgid "" +"Sets the tile indentifiers for the cell on layer [param layer] at " +"coordinates [param coords]. Each tile of the [TileSet] is identified using " +"three parts:\n" +"- The source identifier [param source_id] identifies a [TileSetSource] " +"identifier. See [method TileSet.set_source_id],\n" +"- The atlas coordinates identifier [param atlas_coords] identifies a tile " +"coordinates in the atlas (if the source is a [TileSetAtlasSource]). For " +"[TileSetScenesCollectionSource] it should always be [code]Vector2i(0, 0)[/" +"code]),\n" +"- The alternative tile identifier [param alternative_tile] identifies a tile " +"alternative in the atlas (if the source is a [TileSetAtlasSource]), and the " +"scene for a [TileSetScenesCollectionSource].\n" +"If [param source_id] is set to [code]-1[/code], [param atlas_coords] to " +"[code]Vector2i(-1, -1)[/code] or [param alternative_tile] to [code]-1[/" +"code], the cell will be erased. An erased cell gets [b]all[/b] its " +"identifiers automatically set to their respective invalid values, namely " +"[code]-1[/code], [code]Vector2i(-1, -1)[/code] and [code]-1[/code]." +msgstr "" +"设置位于层 [param layer] 坐标为 [param coords] 的单元格的图块标识符。" +"[TileSet] 中的每个图块都由三部分进行标识:\n" +"- 源标识符 [param source_id] 标识的是 [TileSetSource] 标识符。见 [method " +"TileSet.set_source_id],\n" +"- 图集坐标标识符 [param atlas_coords] 标识的是图集中的图块坐标(如果使用的是 " +"[TileSetAtlasSource] 源)。如果使用的是 [TileSetScenesCollectionSource],应该" +"始终为 [code]Vector2i(0, 0)[/code],\n" +"- 备选图块标识符 [param alternative_tile] 标识的是图集中的图块备选项(如果使" +"用的是 [TileSetAtlasSource] 源),如果使用的是 " +"[TileSetScenesCollectionSource] 则标识的是场景。\n" +"如果 [param source_id] 为 [code]-1[/code]、[param atlas_coords] 为 " +"[code]Vector2i(-1, -1)[/code] 或 [param alternative_tile] 为 [code]-1[/" +"code],则会擦除该单元格。擦除后的单元格中,[b]所有[/b]标识符都会自动设为对应" +"的无效值,即 [code]-1[/code]、[code]Vector2i(-1, -1)[/code] 和 [code]-1[/" +"code]。" + +msgid "" +"Update all the cells in the [param cells] coordinates array so that they use " +"the given [param terrain] for the given [param terrain_set]. If an updated " +"cell has the same terrain as one of its neighboring cells, this function " +"tries to join the two. This function might update neighboring tiles if " +"needed to create correct terrain transitions.\n" +"If [param ignore_empty_terrains] is true, empty terrains will be ignored " +"when trying to find the best fitting tile for the given terrain " +"constraints.\n" +"[b]Note:[/b] To work correctly, [code]set_cells_terrain_connect[/code] " +"requires the TileMap's TileSet to have terrains set up with all required " +"terrain combinations. Otherwise, it may produce unexpected results." +msgstr "" +"更新 [param cells] 坐标数组中的所有单元格,以便它们将给定的 [param terrain] " +"用于给定的 [param terrain_set]。如果一个更新的单元格与其相邻单元格之一具有相" +"同的地形,则该函数会尝试将两者连接起来。如果需要创建正确的地形过渡,该函数可" +"能会更新相邻的图块。\n" +"如果 [param ignore_empty_terrains] 为真,则在尝试为给定地形约束找到最合适的图" +"块时,空地形将被忽略。\n" +"[b]注意:[/b]要正常工作,[code]set_cells_terrain_connect[/code] 需要 TileMap " +"的 TileSet 设置了具有所有必需地形组合的地形。否则,可能会产生意想不到的结果。" + +msgid "" +"Update all the cells in the [param path] coordinates array so that they use " +"the given [param terrain] for the given [param terrain_set]. The function " +"will also connect two successive cell in the path with the same terrain. " +"This function might update neighboring tiles if needed to create correct " +"terrain transitions.\n" +"If [param ignore_empty_terrains] is true, empty terrains will be ignored " +"when trying to find the best fitting tile for the given terrain " +"constraints.\n" +"[b]Note:[/b] To work correctly, [code]set_cells_terrain_path[/code] requires " +"the TileMap's TileSet to have terrains set up with all required terrain " +"combinations. Otherwise, it may produce unexpected results." +msgstr "" +"更新 [param path] 坐标数组中的所有单元格,以便它们将给定的 [param terrain] 用" +"于给定的 [param terrain_set]。该函数还将连接路径中具有相同地形的两个连续单元" +"格。如果需要创建正确的地形过渡,该函数可能会更新相邻的图块。\n" +"如果 [param ignore_empty_terrains] 为真,则在尝试为给定地形约束找到最合适的图" +"块时将忽略空地形。\n" +"[b]注意:[/b]要正常工作,[code]set_cells_terrain_path[/code] 需要 TileMap 的 " +"TileSet 设置了具有所有必需地形组合的地形。否则,可能会产生意想不到的结果。" + +msgid "" "Enables or disables the layer [param layer]. A disabled layer is not " "processed at all (no rendering, no physics, etc...).\n" "If [param layer] is negative, the layers are accessed from the last one." @@ -99758,11 +110202,24 @@ msgid "" msgstr "该 TileMap 的象限大小。会使用这个大小的区块对绘制进行批处理优化。" msgid "" +"If enabled, the TileMap will see its collisions synced to the physics tick " +"and change its collision type from static to kinematic. This is required to " +"create TileMap-based moving platform.\n" +"[b]Note:[/b] Enabling [code]collision_animatable[/code] may have a small " +"performance impact, only do it if the TileMap is moving and has colliding " +"tiles." +msgstr "" +"如果启用,TileMap 将看到它的碰撞同步到物理周期并将其碰撞类型从静态更改为运动" +"学。这是创建基于 TileMap 的移动的平台所必需的。\n" +"[b]注意:[/b]启用 [code]collision_animatable[/code] 可能会对性能产生一个很小" +"的影响,只有在该 TileMap 正在移动并且有碰撞的图块时才这样做。" + +msgid "" "Show or hide the TileMap's collision shapes. If set to [constant " "VISIBILITY_MODE_DEFAULT], this depends on the show collision debug settings." msgstr "" -"显示或隐藏该 TileMap 的碰撞形状。如果设置为 [constant VISIBILITY " -"MODE_DEFAULT],则取决于调试设置“显示碰撞”。" +"显示或隐藏该 TileMap 的碰撞形状。如果设置为 [constant " +"VISIBILITY_MODE_DEFAULT],则取决于调试设置“显示碰撞”。" msgid "" "Show or hide the TileMap's navigation meshes. If set to [constant " @@ -99985,6 +110442,11 @@ msgstr "" "返回由给定的 [param layer_index] 标识的 TileSet 导航数据层是否启用了指定的导" "航层,导航层 [param layer_number] 在 1 和 32 之间。" +msgid "" +"Returns the navigation layers (as in the Navigation server) of the given " +"TileSet navigation layer." +msgstr "返回给定 TileSet 导航层的(导航服务器中的)导航层。" + msgid "Returns the navigation layers count." msgstr "返回导航层的数量。" @@ -100072,6 +110534,20 @@ msgid "Returns if there is a source-level proxy for the given source ID." msgstr "返回给定的源 ID 是否存在源级别的代理。" msgid "" +"According to the configured proxies, maps the provided indentifiers to a new " +"set of identifiers. The source ID, atlas coordinates ID and alternative tile " +"ID are returned as a 3 elements Array.\n" +"This function first look for matching alternative-level proxies, then " +"coordinates-level proxies, then source-level proxies.\n" +"If no proxy corresponding to provided identifiers are found, returns the " +"same values the ones used as arguments." +msgstr "" +"根据配置的代理,将提供的标识符映射到一组新的标识符。返回的是由源 ID、图集坐" +"标 ID 和备选图块 ID 这三个元素构成的 Array。\n" +"这个函数首先查找匹配的备选级代理,然后是坐标级代理,然后是源级代理。\n" +"如果未找到与提供的标识符对应的代理,则返回与用作参数的值相同的值。" + +msgid "" "Moves the custom data layer at index [param layer_index] to the given " "position [param to_position] in the array. Also updates the atlas tiles " "accordingly." @@ -100164,6 +110640,44 @@ msgid "" "tiles accordingly." msgstr "移除索引为 [param terrain_set] 的地形集。也会相应地更新图集中的图块。" +msgid "" +"Create an alternative-level proxy for the given identifiers. A proxy will " +"map set of tile identifiers to another set of identifiers.\n" +"This can be used to replace a tile in all TileMaps using this TileSet, as " +"TileMap nodes will find and use the proxy's target tile when one is " +"available.\n" +"Proxied tiles can be automatically replaced in TileMap nodes using the " +"editor." +msgstr "" +"为给定的标识符创建备选级代理。代理会将一组图块标识符映射到另一组标识符。\n" +"可以用来替换使用此 TileSet 的所有 TileMap 中的某个图块,因为 TileMap 节点将在" +"目标图块可用时找到并使用代理的目标图块。\n" +"可以使用编辑器自动替换 TileMap 节点中的代理图块。" + +msgid "" +"Creates a coordinates-level proxy for the given identifiers. A proxy will " +"map set of tile identifiers to another set of identifiers. The alternative " +"tile ID is kept the same when using coordinates-level proxies.\n" +"This can be used to replace a tile in all TileMaps using this TileSet, as " +"TileMap nodes will find and use the proxy's target tile when one is " +"available.\n" +"Proxied tiles can be automatically replaced in TileMap nodes using the " +"editor." +msgstr "" +"为给定的标识符创建坐标级代理。代理会将一组图块标识符映射到另一组标识符。使用" +"坐标级代理时,备选图块 ID 保持不变。\n" +"可以用来替换使用此 TileSet 的所有 TileMap 中的某个图块,因为 TileMap 节点将在" +"目标图块可用时找到并使用代理的目标图块。\n" +"可以使用编辑器自动替换 TileMap 节点中的代理图块。" + +msgid "" +"Sets the name of the custom data layer identified by the given index. Names " +"are identifiers of the layer therefore if the name is already taken it will " +"fail and raise an error." +msgstr "" +"设置由给定索引标识的自定义数据层的名称。名称是层的标识符,因此如果名称已被使" +"用就会失败并报错。" + msgid "Sets the type of the custom data layer identified by the given index." msgstr "设置自定义数据层的类型,该自定义数据层由索引表示。" @@ -100178,11 +110692,21 @@ msgstr "" "间。" msgid "" +"Sets the navigation layers (as in the navigation server) for navigation " +"regions in the given TileSet navigation layer." +msgstr "设置给定 TileSet 导航层中导航区域的导航层(导航服务器中使用)。" + +msgid "" "Sets the occlusion layer (as in the rendering server) for occluders in the " "given TileSet occlusion layer." msgstr "设置给定 TileSet 遮挡层中遮挡器的遮挡层(渲染服务器中使用)。" msgid "" +"Enables or disables SDF collision for occluders in the given TileSet " +"occlusion layer." +msgstr "启用或禁用给定 TileSet 遮挡层中遮挡器的 SDF 碰撞。" + +msgid "" "Sets the physics layer (as in the physics server) for bodies in the given " "TileSet physics layer." msgstr "设置给定 TileSet 物理层中物体的物理层(物理服务器中使用)。" @@ -100195,6 +110719,23 @@ msgid "Changes a source's ID." msgstr "更改源的 ID。" msgid "" +"Creates a source-level proxy for the given source ID. A proxy will map set " +"of tile identifiers to another set of identifiers. Both the atlac " +"coordinates ID and the alternative tile ID are kept the same when using " +"source-level proxies.\n" +"This can be used to replace a source in all TileMaps using this TileSet, as " +"TileMap nodes will find and use the proxy's target source when one is " +"available.\n" +"Proxied tiles can be automatically replaced in TileMap nodes using the " +"editor." +msgstr "" +"为给定的源 ID 创建源级代理。代理会将一组图块标识符映射到另一组标识符。使用源" +"级代理时,图集坐标 ID 和备选图块 ID 均保持不变。\n" +"可以用来替换使用此 TileSet 的所有 TileMap 中的某个源,因为 TileMap 节点将在目" +"标源可用时找到并使用代理的目标源。\n" +"可以使用编辑器自动替换 TileMap 节点中的代理图块。" + +msgid "" "Sets a terrain's color. This color is used for identifying the different " "terrains in the TileSet editor." msgstr "设置地形的颜色。该颜色用于在 TileSet 编辑器中区分不同的地形。" @@ -100353,11 +110894,86 @@ msgid "Exposes a 2D atlas texture as a set of tiles for a [TileSet] resource." msgstr "以一组图块的形式向 [TileSet] 资源暴露 2D 图集纹理。" msgid "" +"An atlas is a grid of tiles laid out on a texture. Each tile in the grid " +"must be exposed using [method create_tile]. Those tiles are then indexed " +"using their coordinates in the grid.\n" +"Each tile can also have a size in the grid coordinates, making it more or " +"less cells in the atlas.\n" +"Alternatives version of a tile can be created using [method " +"create_alternative_tile], which are then indexed using an alternative ID. " +"The main tile (the one in the grid), is accessed with an alternative ID " +"equal to 0.\n" +"Each tile alternate has a set of properties that is defined by the source's " +"[TileSet] layers. Those properties are stored in a TileData object that can " +"be accessed and modified using [method get_tile_data].\n" +"As TileData properties are stored directly in the TileSetAtlasSource " +"resource, their properties might also be set using [code]TileSetAtlasSource." +"set(\"<coords_x>:<coords_y>/<alternative_id>/<tile_data_property>\")[/code]." +msgstr "" +"图集是在纹理上铺设的图块栅格。栅格中的每个图块都必须使用 [method " +"create_tile] 公开。然后使用它们在栅格中的坐标,对这些图块进行索引。\n" +"每个图块也可以在栅格坐标中有一个大小,使其在地图集中的单元格更多或更少。\n" +"可以使用 [method create_alternative_tile] 创建图块的替代版本,然后使用替代 " +"ID 对其进行索引。主图块(栅格中的那个)使用一个等于 0 的替代 ID 进行访问。\n" +"每个图块替代品都有一组由源的 [TileSet] 图层定义的属性。这些属性存储在 " +"TileData 对象中,该对象可以使用 [method get_tile_data] 来访问和修改。\n" +"由于 TileData 属性直接存储在 TileSetAtlasSource 资源中,它们的属性也可以使用 " +"[code]TileSetAtlasSource.set(\"<coords_x>:<coords_y>/<alternative_id>/" +"<tile_data_property>\")[/code] 设置。" + +msgid "" +"Creates an alternative tile for the tile at coordinates [param " +"atlas_coords]. If [param alternative_id_override] is -1, give it an " +"automatically generated unique ID, or assigns it the given ID otherwise.\n" +"Returns the new alternative identifier, or -1 if the alternative could not " +"be created with a provided [param alternative_id_override]." +msgstr "" +"为坐标为 [param atlas_coords] 的图块创建备选图块。如果 [param " +"alternative_id_override] 为 -1,则会给予自动生成的唯一 ID,否则使用给定的 ID " +"赋值。\n" +"返回新的备选标识符,如果无法使用提供的 [param alternative_id_override] 创建则" +"返回 -1。" + +msgid "" "Creates a new tile at coordinates [param atlas_coords] with the given [param " "size]." msgstr "在坐标 [param atlas_coords] 处新建给定大小 [param size] 的图块。" msgid "" +"Returns the atlas grid size, which depends on how many tiles can fit in the " +"texture. It thus depends on the Texture's size, the atlas [code]margins[/" +"code] the tiles' [code]texture_region_size[/code]." +msgstr "" +"返回图集栅格大小,这取决于纹理中可以容纳多少个图块。因此,它取决于纹理的大" +"小,该图集 [code]margins[/code]、和该图块的 [code]texture_region_size[/" +"code]。" + +msgid "" +"Returns the alternative ID a following call to [method " +"create_alternative_tile] would return." +msgstr "返回后续调用 [method create_alternative_tile] 时将返回的备选 ID。" + +msgid "" +"If [member use_texture_padding] is [code]false[/code], returns [member " +"texture]. Otherwise, returns and internal [ImageTexture] created that " +"includes the padding." +msgstr "" +"如果 [member use_texture_padding] 为 [code]false[/code],则返回 [member " +"texture]。否则,创建并返回包含内边距的内部 [ImageTexture]。" + +msgid "" +"Returns the region of the tile at coordinates [param atlas_coords] for the " +"given [param frame] inside the texture returned by [method " +"get_runtime_texture].\n" +"[b]Note:[/b] If [member use_texture_padding] is [code]false[/code], returns " +"the same as [method get_tile_texture_region]." +msgstr "" +"返回由 [method get_runtime_texture] 返回的纹理内给定 [param frame] 的坐标 " +"[param atlas_coords] 处的图块区块。\n" +"[b]注意:[/b]如果 [member use_texture_padding] 为 [code]false[/code],则返回" +"与 [method get_tile_texture_region] 相同的结果。" + +msgid "" "Returns how many columns the tile at [param atlas_coords] has in its " "animation layout." msgstr "返回位于坐标 [param atlas_coords] 的图块的动画布局中有多少列。" @@ -100385,6 +111001,22 @@ msgid "" msgstr "返回位于坐标 [param atlas_coords] 的图块的动画速度。" msgid "" +"Returns the sum of the sum of the frame durations of the tile at coordinates " +"[param atlas_coords]. This value needs to be divided by the animation speed " +"to get the actual animation loop duration." +msgstr "" +"返回坐标 [param atlas_coords] 处的图块的帧持续时间的总和。这个值需要除以动画" +"速度才能得到实际的动画循环持续时间。" + +msgid "" +"If there is a tile covering the [param atlas_coords] coordinates, returns " +"the top-left coordinates of the tile (thus its coordinate ID). Returns " +"[code]Vector2i(-1, -1)[/code] otherwise." +msgstr "" +"如果有覆盖 [param atlas_coords] 坐标的图块,则返回该图块左上角的坐标(即它的" +"坐标 ID)。否则返回 [code]Vector2i(-1, -1)[/code]。" + +msgid "" "Returns the [TileData] object for the given atlas coordinates and " "alternative ID." msgstr "返回给定图集坐标和备选 ID 对应的 [TileData] 对象。" @@ -100394,6 +111026,61 @@ msgid "" "[param atlas_coords]." msgstr "返回位于坐标 [param atlas_coords] 的图块的大小(使用栅格坐标系)。" +msgid "" +"Returns a tile's texture region in the atlas texture. For animated tiles, a " +"[param frame] argument might be provided for the different frames of the " +"animation." +msgstr "" +"返回某个图块在图集纹理中的纹理区域。对于动画图块,可以提供 [param frame] 参数" +"来获取动画中不同的帧对应的区域。" + +msgid "" +"Returns an array of tiles coordinates ID that will be automatically removed " +"when modifying one or several of those properties: [param texture], [param " +"margins], [param separation] or [param texture_region_size]. This can be " +"used to undo changes that would have caused tiles data loss." +msgstr "" +"返回修改以下任意属性时将会自动移除的图块坐标 ID 的数组:[param texture]、" +"[param margins]、[param separation]、[param texture_region_size]。可以用来撤" +"销可能造成图块数据丢失的更改。" + +msgid "" +"Returns whether there is enough room in an atlas to create/modify a tile " +"with the given properties. If [param ignored_tile] is provided, act as is " +"the given tile was not present in the atlas. This may be used when you want " +"to modify a tile's properties." +msgstr "" +"返回图集中是否有足够的空间来使用给定的属性创建/修改图块。如果提供了 [param " +"ignored_tile],则判断时会和给定的图块在图集中不存在一样。可以在想要修改某个图" +"块的属性时使用。" + +msgid "" +"Move the tile and its alternatives at the [param atlas_coords] coordinates " +"to the [param new_atlas_coords] coordinates with the [param new_size] size. " +"This functions will fail if a tile is already present in the given area.\n" +"If [param new_atlas_coords] is [code]Vector2i(-1, -1)[/code], keeps the " +"tile's coordinates. If [param new_size] is [code]Vector2i(-1, -1)[/code], " +"keeps the tile's size.\n" +"To avoid an error, first check if a move is possible using [method " +"has_room_for_tile]." +msgstr "" +"将 [param atlas_coords] 坐标处的图块及其替代物移动到具有 [param new_size] 大" +"小的 [param new_atlas_coords] 坐标。如果给定区域中已经存在一个图块,则该函数" +"将失败。\n" +"如果 [param new_atlas_coords] 为 [code]Vector2i(-1, -1)[/code],则保持图块的" +"坐标。如果 [param new_size] 为 [code]Vector2i(-1, -1)[/code],则保持图块的大" +"小。\n" +"为避免错误,请首先使用 [method has_room_for_tile] 来检查移动是否可行。" + +msgid "" +"Remove a tile's alternative with alternative ID [param alternative_tile].\n" +"Calling this function with [param alternative_tile] equals to 0 will fail, " +"as the base tile alternative cannot be removed." +msgstr "" +"移除备选 ID 为 [param alternative_tile] 的备选图块。\n" +"使用为 0 的 [param alternative_tile] 调用这个函数会失败,因为基础图块备选项无" +"法被移除。" + msgid "Remove a tile and its alternative at coordinates [param atlas_coords]." msgstr "移除位于坐标 [param atlas_coords] 的图块及其备选项。" @@ -100454,10 +111141,38 @@ msgstr "" "纹理中的基础图块大小(以像素为单位)。该大小必须大于该 TileSet 中的 " "[code]tile_size[/code] 值。" +msgid "" +"If [code]true[/code], generates an internal texture with an additional one " +"pixel padding around each tile. Texture padding avoids a common artifact " +"where lines appear between tiles.\n" +"Disabling this setting might lead a small performance improvement, as " +"generating the internal texture requires both memory and processing time " +"when the TileSetAtlasSource resource is modified." +msgstr "" +"如果为 [code]true[/code],则生成一个内部纹理,每个图块周围有一个额外的单像素" +"填充。纹理填充避免了图块之间出现线条状的常见伪像。\n" +"禁用该设置可能会导致性能略有提高,因为在 TileSetAtlasSource 资源被修改时,生" +"成内部纹理需要内存和处理时间。" + msgid "Exposes a set of scenes as tiles for a [TileSet] resource." msgstr "以图块的形式向 [TileSet] 资源暴露一组场景。" msgid "" +"When placed on a [TileMap], tiles from [TileSetScenesCollectionSource] will " +"automatically instantiate an associated scene at the cell's position in the " +"TileMap.\n" +"Scenes are instantiated as children of the [TileMap] when it enters the " +"tree. If you add/remove a scene tile in the [TileMap] that is already inside " +"the tree, the [TileMap] will automatically instantiate/free the scene " +"accordingly." +msgstr "" +"当放置在 [TileMap] 上时,来自 [TileSetScenesCollectionSource] 中的图块将在 " +"TileMap 中的单元格位置自动实例化一个关联场景。\n" +"当该 [TileMap] 进入树时,场景被实例化为该 [TileMap] 的子级。如果在已在树内的 " +"[TileMap] 中添加/移除一个场景图块,则该 [TileMap] 将相应地自动实例化/释放该场" +"景。" + +msgid "" "Creates a scene-based tile out of the given scene.\n" "Returns a newly generated unique ID." msgstr "" @@ -100497,6 +111212,21 @@ msgstr "" "设置 ID 为 [param id] 的场景图块是否应该在编辑器中显示为占位符。对不可见的场" "景可能有用。" +msgid "" +"Changes a scene tile's ID from [param id] to [param new_id]. This will fail " +"if there is already a tile with a ID equal to [param new_id]." +msgstr "" +"将场景图块的 ID 从 [param id] 改为 [param new_id]。如果已经存在 ID 为 [param " +"new_id] 的图块则会失败。" + +msgid "" +"Assigns a [PackedScene] resource to the scene tile with [param id]. This " +"will fail if the scene does not extend CanvasItem, as positioning properties " +"are needed to place the scene on the TileMap." +msgstr "" +"将 [PackedScene] 资源分配给 ID 为 [param id] 的场景图块。如果该场景扩展的不" +"是 CanvasItem 则会失败,因为将场景放置到 TileMap 上需要位置属性。" + msgid "Exposes a set of tiles for a [TileSet] resource." msgstr "向 [TileSet] 资源暴露一组图块。" @@ -100527,7 +111257,7 @@ msgid "" "Returns the alternative ID for the tile with coordinates ID [param " "atlas_coords] at index [param index]." msgstr "" -"返回坐标 ID 为 [parma atlas_coords] 的图块的索引为 [parma index] 的备选 ID。" +"返回坐标 ID 为 [param atlas_coords] 的图块的索引为 [param index] 的备选 ID。" msgid "" "Returns the number of alternatives tiles for the coordinates ID [param " @@ -100536,7 +111266,7 @@ msgid "" "with ID 0 is always part of the alternatives list.\n" "Returns -1 if there is not tile at the given coords." msgstr "" -"返回坐标 ID 为 [parma atlas_coords] 的图块的备选图块数量。\n" +"返回坐标 ID 为 [param atlas_coords] 的图块的备选图块数量。\n" "[TileSetAtlasSource] 返回的数量至少为 1,因为备选列表中始终存在 ID 为 0 的基" "础图块。\n" "如果给定的坐标处没有图块,则返回 -1。" @@ -101036,7 +111766,7 @@ msgstr "" "创建 TLS 客户端配置,验证证书及其通用名称(完整域名)。\n" "你可以指定自定义的证书颁发机构信任链 [param trusted_chain](如果为 " "[code]null[/code] 则使用默认 CA 列表)。如果你希望证书拥有服务器 FQDN 之外的" -"通用名称,还可以提供通用名称覆盖 [common_name_override]。\n" +"通用名称,还可以提供通用名称覆盖 [param common_name_override]。\n" "注意:在 Web 平台上,TLS 验证始终强制使用 Web 浏览器的 CA 列表。这是一种安全" "特性。" @@ -101232,6 +111962,14 @@ msgstr "" "[method affine_inverse])。" msgid "" +"Returns [code]true[/code] if this transform and [param xform] are " +"approximately equal, by calling [code]is_equal_approx[/code] on each " +"component." +msgstr "" +"如果该变换和 [param xform] 近似相等,则返回 [code]true[/code],确定近似相等的" +"方法是在每个分量上调用 [code]is_equal_approx[/code]。" + +msgid "" "Returns [code]true[/code] if this transform is finite, by calling [method " "@GlobalScope.is_finite] on each component." msgstr "" @@ -101239,11 +111977,95 @@ msgstr "" "[method @GlobalScope.is_finite]。" msgid "" +"Returns a copy of the transform rotated such that the rotated X-axis points " +"towards the [param target] position.\n" +"Operations take place in global space." +msgstr "" +"返回一个旋转后的变换副本,使旋转后的 X 轴指向 [param target] 位置。\n" +"操作发生在全局空间中。" + +msgid "" "Returns the transform with the basis orthogonal (90 degrees), and normalized " "axis vectors (scale of 1 or -1)." msgstr "返回使用正交基(90 度)以及归一化的轴向量(缩放为 1 或 -1)的变换。" msgid "" +"Returns a copy of the transform rotated by the given [param angle] (in " +"radians).\n" +"This method is an optimized version of multiplying the given transform " +"[code]X[/code] with a corresponding rotation transform [code]R[/code] from " +"the left, i.e., [code]R * X[/code].\n" +"This can be seen as transforming with respect to the global/parent frame." +msgstr "" +"返回该变换的副本,该副本进行了夹角为 [param angle] 的旋转操作(单位为弧" +"度)。\n" +"这个方法的结果和让 [code]X[/code] 变换与相应的旋转变换 [code]R[/code] 从左侧" +"相乘一致,即 [code]R * X[/code],但进行了优化。\n" +"可以视作在全局/父级坐标系中的变换。" + +msgid "" +"Returns a copy of the transform rotated by the given [param angle] (in " +"radians).\n" +"This method is an optimized version of multiplying the given transform " +"[code]X[/code] with a corresponding rotation transform [code]R[/code] from " +"the right, i.e., [code]X * R[/code].\n" +"This can be seen as transforming with respect to the local frame." +msgstr "" +"返回该变换的副本,该副本进行了夹角为 [param angle] 的旋转操作(单位为弧" +"度)。\n" +"这个方法的结果和让 [code]X[/code] 变换与相应的旋转变换 [code]R[/code] 从右侧" +"相乘一致,即 [code]X * R[/code],但进行了优化。\n" +"可以视作在局部坐标系中的变换。" + +msgid "" +"Returns a copy of the transform scaled by the given [param scale] factor.\n" +"This method is an optimized version of multiplying the given transform " +"[code]X[/code] with a corresponding scaling transform [code]S[/code] from " +"the left, i.e., [code]S * X[/code].\n" +"This can be seen as transforming with respect to the global/parent frame." +msgstr "" +"返回该变换的副本,该副本进行了系数为 [param scale] 的缩放操作。\n" +"这个方法的结果和让 [code]X[/code] 变换与相应的缩放变换 [code]S[/code] 从左侧" +"相乘一致,即 [code]S * X[/code],但进行了优化。\n" +"可以视作在全局/父级坐标系中的变换。" + +msgid "" +"Returns a copy of the transform scaled by the given [param scale] factor.\n" +"This method is an optimized version of multiplying the given transform " +"[code]X[/code] with a corresponding scaling transform [code]S[/code] from " +"the right, i.e., [code]X * S[/code].\n" +"This can be seen as transforming with respect to the local frame." +msgstr "" +"返回该变换的副本,该副本进行了系数为 [param scale] 的缩放操作。\n" +"这个方法的结果和让 [code]X[/code] 变换与相应的缩放变换 [code]S[/code] 从右侧" +"相乘一致,即 [code]X * S[/code],但进行了优化。\n" +"可以视作在局部坐标系中的变换。" + +msgid "" +"Returns a copy of the transform translated by the given [param offset].\n" +"This method is an optimized version of multiplying the given transform " +"[code]X[/code] with a corresponding translation transform [code]T[/code] " +"from the left, i.e., [code]T * X[/code].\n" +"This can be seen as transforming with respect to the global/parent frame." +msgstr "" +"返回该变换的副本,该副本进行了偏移量为 [param offset] 的平移操作。\n" +"这个方法的结果和让 [code]X[/code] 变换与相应的平移变换 [code]T[/code] 从左侧" +"相乘一致,即 [code]T * X[/code],但进行了优化。\n" +"可以视作在全局/父级坐标系中的变换。" + +msgid "" +"Returns a copy of the transform translated by the given [param offset].\n" +"This method is an optimized version of multiplying the given transform " +"[code]X[/code] with a corresponding translation transform [code]T[/code] " +"from the right, i.e., [code]X * T[/code].\n" +"This can be seen as transforming with respect to the local frame." +msgstr "" +"返回该变换的副本,该副本进行了偏移量为 [param offset] 的平移操作。\n" +"这个方法的结果和让 [code]X[/code] 变换与相应的平移变换 [code]T[/code] 从右侧" +"相乘一致,即 [code]X * T[/code],但进行了优化。\n" +"可以视作在局部坐标系中的变换。" + +msgid "" "The origin vector (column 2, the third column). Equivalent to array index " "[code]2[/code]. The origin vector represents translation." msgstr "" @@ -101284,6 +112106,14 @@ msgid "Transforms (multiplies) the [Rect2] by the given [Transform2D] matrix." msgstr "使用给定的 [Transform2D] 矩阵将该 [Rect2] 进行变换(相乘)。" msgid "" +"Composes these two transformation matrices by multiplying them together. " +"This has the effect of transforming the second transform (the child) by the " +"first transform (the parent)." +msgstr "" +"通过将这两个变换矩阵相乘来组合它们。这具有通过第一个变换(父项)来变换第二个" +"变换(子项)的效果。" + +msgid "" "Transforms (multiplies) the [Vector2] by the given [Transform2D] matrix." msgstr "使用给定的 [Transform2D] 矩阵将该 [Vector2] 进行变换(相乘)。" @@ -101303,6 +112133,15 @@ msgstr "" "[b]注意:[/b]由于浮点数精度误差,请考虑改用 [method is_equal_approx],会更可" "靠。" +msgid "" +"Access transform components using their index. [code]t[0][/code] is " +"equivalent to [code]t.x[/code], [code]t[1][/code] is equivalent to [code]t." +"y[/code], and [code]t[2][/code] is equivalent to [code]t.origin[/code]." +msgstr "" +"使用其索引访问变换的分量。[code]t[0][/code] 相当于 [code]t.x[/code]," +"[code]t[1][/code] 相当于 [code]t.y[/code],[code]t[2][/code] 相当于 [code]t." +"origin[/code]。" + msgid "3D transformation (3×4 matrix)." msgstr "3D 变换(3×4 矩阵)。" @@ -101330,6 +112169,22 @@ msgid "Constructs a Transform3D from a [Basis] and [Vector3]." msgstr "从 [Basis] 和 [Vector3] 构造 Transform3D。" msgid "" +"Constructs a Transform3D from a [Projection] by trimming the last row of the " +"projection matrix ([code]from.x.w[/code], [code]from.y.w[/code], [code]from." +"z.w[/code], and [code]from.w.w[/code] are not copied over)." +msgstr "" +"通过修剪投影矩阵的最后一行,从 [Projection] 中构造 Transform3D(不会复制 " +"[code]from.x.w[/code]、[code]from.y.w[/code]、[code]from.z.w[/code]、" +"[code]from.w.w[/code])。" + +msgid "" +"Constructs a Transform3D from four [Vector3] values (matrix columns). Each " +"axis corresponds to local basis vectors (some of which may be scaled)." +msgstr "" +"从四个 [Vector3] 值(矩阵列)构造 Transform3D。每个轴对应于局部基向量(其中一" +"些可能已被缩放)。" + +msgid "" "Returns a copy of the transform rotated such that the forward axis (-Z) " "points towards the [param target] position.\n" "The up axis (+Y) points as close to the [param up] vector as possible while " @@ -101345,6 +112200,38 @@ msgstr "" "target] 和 [param up] 向量不能为零,不能相互平行,并且在全局/父空间中定义。" msgid "" +"Returns a copy of the transform rotated around the given [param axis] by the " +"given [param angle] (in radians).\n" +"The [param axis] must be a normalized vector.\n" +"This method is an optimized version of multiplying the given transform " +"[code]X[/code] with a corresponding rotation transform [code]R[/code] from " +"the left, i.e., [code]R * X[/code].\n" +"This can be seen as transforming with respect to the global/parent frame." +msgstr "" +"返回该变换的副本,该副本围绕给定的 [param axis] 轴进行了夹角为 [param angle] " +"的旋转操作(单位为弧度)。\n" +"[param axis] 必须为归一化的向量。\n" +"这个方法的结果和让 [code]X[/code] 变换与相应的旋转变换 [code]R[/code] 从左侧" +"相乘一致,即 [code]R * X[/code],但进行了优化。\n" +"可以视作在全局/父级坐标系中的变换。" + +msgid "" +"Returns a copy of the transform rotated around the given [param axis] by the " +"given [param angle] (in radians).\n" +"The [param axis] must be a normalized vector.\n" +"This method is an optimized version of multiplying the given transform " +"[code]X[/code] with a corresponding rotation transform [code]R[/code] from " +"the right, i.e., [code]X * R[/code].\n" +"This can be seen as transforming with respect to the local frame." +msgstr "" +"返回该变换的副本,该副本围绕给定的 [param axis] 轴进行了夹角为 [param angle] " +"的旋转操作(单位为弧度)。\n" +"[param axis] 必须为归一化的向量。\n" +"这个方法的结果和让 [code]X[/code] 变换与相应的旋转变换 [code]R[/code] 从右侧" +"相乘一致,即 [code]R * X[/code],但进行了优化。\n" +"可以视作在局部坐标系中的变换。" + +msgid "" "The basis is a matrix containing 3 [Vector3] as its columns: X axis, Y axis, " "and Z axis. These vectors can be interpreted as the basis vectors of local " "coordinate system traveling with the object." @@ -101418,6 +112305,23 @@ msgstr "覆盖 [method get_message] 的虚方法。" msgid "Virtual method to override [method get_plural_message]." msgstr "覆盖 [method get_plural_message] 的虚方法。" +msgid "" +"Adds a message if nonexistent, followed by its translation.\n" +"An additional context could be used to specify the translation context or " +"differentiate polysemic words." +msgstr "" +"如果不存在,则添加一条消息,后跟其翻译。\n" +"可以使用一个额外的上下文,来指定翻译上下文或区分多义词。" + +msgid "" +"Adds a message involving plural translation if nonexistent, followed by its " +"translation.\n" +"An additional context could be used to specify the translation context or " +"differentiate polysemic words." +msgstr "" +"如果不存在,则添加一条涉及复数翻译的消息,后跟其翻译。\n" +"可以使用一个额外的上下文,来指定翻译上下文或区分多义词。" + msgid "Erases a message." msgstr "删除信息。" @@ -101430,6 +112334,16 @@ msgstr "返回现有信息的数量。" msgid "Returns all the messages (keys)." msgstr "返回所有的信息(键值)。" +msgid "" +"Returns a message's translation involving plurals.\n" +"The number [param n] is the number or quantity of the plural object. It will " +"be used to guide the translation system to fetch the correct plural form for " +"the selected language." +msgstr "" +"返回一条消息涉及复数的翻译。\n" +"数字 [param n] 是复数对象的数目或数量。它将被用于指导翻译系统为所选语言获取正" +"确的复数形式。" + msgid "Returns all the messages (translated text)." msgstr "返回所有信息(翻译后的文本)。" @@ -101544,9 +112458,117 @@ msgid "" "context." msgstr "返回给定消息(键)和上下文的翻译,使用当前区域设置。" +msgid "" +"Returns the current locale's translation for the given message (key), plural " +"message and context.\n" +"The number [param n] is the number or quantity of the plural object. It will " +"be used to guide the translation system to fetch the correct plural form for " +"the selected language." +msgstr "" +"返回给定消息(键)、复数消息和上下文的翻译,使用当前区域设置。\n" +"数字 [param n] 是复数对象的数量。翻译系统会根据这个数字来针对所选语言获取正确" +"的复数形式。" + +msgid "" +"If [code]true[/code], enables the use of pseudolocalization. See [member " +"ProjectSettings.internationalization/pseudolocalization/" +"use_pseudolocalization] for details." +msgstr "" +"如果为 [code]true[/code],则启用伪本地化。有关详细信息,请参阅 [member " +"ProjectSettings.internationalization/pseudolocalization/" +"use_pseudolocalization]。" + msgid "Control to show a tree of items." msgstr "以树状形式显示项目的控件。" +msgid "" +"This shows a tree of items that can be selected, expanded and collapsed. The " +"tree can have multiple columns with custom controls like text editing, " +"buttons and popups. It can be useful for structured displays and " +"interactions.\n" +"Trees are built via code, using [TreeItem] objects to create the structure. " +"They have a single root but multiple roots can be simulated if a dummy " +"hidden root is added.\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _ready():\n" +" var tree = Tree.new()\n" +" var root = tree.create_item()\n" +" tree.hide_root = true\n" +" var child1 = tree.create_item(root)\n" +" var child2 = tree.create_item(root)\n" +" var subchild1 = tree.create_item(child1)\n" +" subchild1.set_text(0, \"Subchild1\")\n" +"[/gdscript]\n" +"[csharp]\n" +"public override void _Ready()\n" +"{\n" +" var tree = new Tree();\n" +" TreeItem root = tree.CreateItem();\n" +" tree.HideRoot = true;\n" +" TreeItem child1 = tree.CreateItem(root);\n" +" TreeItem child2 = tree.CreateItem(root);\n" +" TreeItem subchild1 = tree.CreateItem(child1);\n" +" subchild1.SetText(0, \"Subchild1\");\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"To iterate over all the [TreeItem] objects in a [Tree] object, use [method " +"TreeItem.get_next] and [method TreeItem.get_first_child] after getting the " +"root through [method get_root]. You can use [method Object.free] on a " +"[TreeItem] to remove it from the [Tree].\n" +"[b]Incremental search:[/b] Like [ItemList] and [PopupMenu], [Tree] supports " +"searching within the list while the control is focused. Press a key that " +"matches the first letter of an item's name to select the first item starting " +"with the given letter. After that point, there are two ways to perform " +"incremental search: 1) Press the same key again before the timeout duration " +"to select the next item starting with the same letter. 2) Press letter keys " +"that match the rest of the word before the timeout duration to match to " +"select the item in question directly. Both of these actions will be reset to " +"the beginning of the list if the timeout duration has passed since the last " +"keystroke was registered. You can adjust the timeout duration by changing " +"[member ProjectSettings.gui/timers/incremental_search_max_interval_msec]." +msgstr "" +"这展示了一个可以选择、展开和折叠的项目树。该树可以有多列的自定义控件,如文本" +"编辑、按钮和弹出窗口。对于结构化显示和互动很有用。\n" +"树通过代码建立,使用 [TreeItem] 对象来构建结构。根项目只有一个,但如果添加的" +"是虚设的隐藏根项目,就可以模拟多个根项目。\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _ready():\n" +" var tree = Tree.new()\n" +" var root = tree.create_item()\n" +" tree.hide_root = true\n" +" var child1 = tree.create_item(root)\n" +" var child2 = tree.create_item(root)\n" +" var subchild1 = tree.create_item(child1)\n" +" subchild1.set_text(0, \"Subchild1\")\n" +"[/gdscript]\n" +"[csharp]\n" +"public override void _Ready()\n" +"{\n" +" var tree = new Tree();\n" +" TreeItem root = tree.CreateItem();\n" +" tree.HideRoot = true;\n" +" TreeItem child1 = tree.CreateItem(root);\n" +" TreeItem child2 = tree.CreateItem(root);\n" +" TreeItem subchild1 = tree.CreateItem(child1);\n" +" subchild1.SetText(0, \"Subchild1\");\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"要遍历 [Tree] 对象中的所有 [TreeItem] 对象,请在通过 [method get_root] 获得根" +"项目之后,使用 [method TreeItem.get_next] 和 [method TreeItem.get_children] " +"方法。你可以对 [TreeItem] 使用 [method Object.free] 来把它从 [Tree] 中移" +"除。\n" +"[b]增量搜索:[/b]与 [ItemList] 和 [PopupMenu] 类似,[Tree] 也支持在聚焦控件时" +"在列表中进行搜索。按下与某个条目名称首字母一致的按键,就会选中以该字母开头的" +"第一个条目。在此之后,进行增量搜索的办法有两种:1)在超时前再次按下同一个按" +"键,选中以该字母开头的下一个条目。2)在超时前按下剩余字母对应的按键,直接匹配" +"并选中所需的条目。这两个动作都会在最后一次按键超时后重置回列表顶端。你可以通" +"过 [member ProjectSettings.gui/timers/incremental_search_max_interval_msec] " +"修改超时时长。" + msgid "Clears the tree. This removes all items." msgstr "清除树。这将删除所有项目。" @@ -101624,10 +112646,80 @@ msgstr "" "返回自定义弹出窗口的矩形。帮助创建显示弹出式的自定义单元格控件。见 [method " "TreeItem.set_cell_mode]。" +msgid "" +"Returns the drop section at [param position], or -100 if no item is there.\n" +"Values -1, 0, or 1 will be returned for the \"above item\", \"on item\", and " +"\"below item\" drop sections, respectively. See [enum DropModeFlags] for a " +"description of each drop section.\n" +"To get the item which the returned drop section is relative to, use [method " +"get_item_at_position]." +msgstr "" +"返回位于 [param position] 的放置部分,如果没有项目,则返回 -100。\n" +"在“项目上方”“项目之上”和“项目下方”的放置部分将分别返回 -1、0 或 1 的值。请参" +"阅 [enum DropModeFlags] 以了解每个放置部分的描述。\n" +"要获得返回的放置部分相对项,请使用 [method get_item_at_position]。" + +msgid "" +"Returns the currently edited item. Can be used with [signal item_edited] to " +"get the item that was modified.\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _ready():\n" +" $Tree.item_edited.connect(on_Tree_item_edited)\n" +"\n" +"func on_Tree_item_edited():\n" +" print($Tree.get_edited()) # This item just got edited (e.g. checked).\n" +"[/gdscript]\n" +"[csharp]\n" +"public override void _Ready()\n" +"{\n" +" GetNode<Tree>(\"Tree\").ItemEdited += OnTreeItemEdited;\n" +"}\n" +"\n" +"public void OnTreeItemEdited()\n" +"{\n" +" GD.Print(GetNode<Tree>(\"Tree\").GetEdited()); // This item just got " +"edited (e.g. checked).\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回当前编辑的项。可以与 [signal item_edited] 一起使用以获取被修改的项。\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _ready():\n" +" $Tree.item_edited.connect(on_Tree_item_edited)\n" +"\n" +"func on_Tree_item_edited():\n" +" print($Tree.get_edited()) # 该项刚刚被编辑(例如被勾选)。\n" +"[/gdscript]\n" +"[csharp]\n" +"public override void _Ready()\n" +"{\n" +" GetNode<Tree>(\"Tree\").ItemEdited += OnTreeItemEdited;\n" +"}\n" +"\n" +"public void OnTreeItemEdited()\n" +"{\n" +" GD.Print(GetNode<Tree>(\"Tree\").GetEdited()); // 该项刚刚被编辑(例如被" +"勾选)。\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" + msgid "Returns the column for the currently edited item." msgstr "返回当前编辑项的列。" msgid "" +"Returns the rectangle area for the specified [TreeItem]. If [param column] " +"is specified, only get the position and size of that column, otherwise get " +"the rectangle containing all columns. If a button index is specified, the " +"rectangle of that button will be returned." +msgstr "" +"返回指定 [TreeItem] 的矩形区域。如果指定了[param column],则只获取该列的位置" +"和大小,否则获取包含所有列的矩形。如果指定了按钮索引,则将返回该按钮的矩形。" + +msgid "" "Returns the tree item at the specified position (relative to the tree origin " "position)." msgstr "返回指定位置,即相对于树的原点位置的树中项。" @@ -101713,6 +112805,16 @@ msgstr "" "用它们的最小宽度“min_width”。" msgid "" +"If [code]true[/code], the column will have the \"Expand\" flag of [Control]. " +"Columns that have the \"Expand\" flag will use their expand ratio in a " +"similar fashion to [member Control.size_flags_stretch_ratio] (see [method " +"set_column_expand_ratio])." +msgstr "" +"如果为 [code]true[/code],该列将具有 [Control] 的“Expand”标志。具有“Expand”标" +"志的列将以与 [member Control.size_flags_stretch_ratio] 类似的方式,使用它们的" +"扩展比率(参见 [method set_column_expand_ratio])。" + +msgid "" "Sets the relative expand ratio for a column. See [method set_column_expand]." msgstr "设置列的相对扩展比。见 [method set_column_expand]。" @@ -102126,6 +113228,27 @@ msgstr "" "控件 [Tree] 中的单个项目。可以有子级 [TreeItem]、样式、包含按钮。\n" "您可以使用 [method Object.free] 删除 [TreeItem]。" +msgid "" +"Adds a button with [Texture2D] [param button] at column [param column]. The " +"[param id] is used to identify the button in the according [signal Tree." +"button_clicked] signal and can be different from the buttons index. If not " +"specified, the next available index is used, which may be retrieved by " +"calling [method get_button_count] immediately before this method. " +"Optionally, the button can be [param disabled] and have a [param " +"tooltip_text]." +msgstr "" +"在 [param column] 列添加一个带有 [Texture] [param button] 的按钮。[param id] " +"用于标识按钮。如果未指定,则使用下一个可用索引,可以在此方法之前调用 [method " +"get_button_count] 来获取该索引。另外,该按钮还可以通过 [param disabled] 禁" +"用、通过 [param tooltip_text] 设置工具提示。" + +msgid "" +"Calls the [param method] on the actual TreeItem and its children " +"recursively. Pass parameters as a comma separated list." +msgstr "" +"递归调用在实际 TreeItem 及其子项上的 [param method]。将参数作为一个逗号分隔列" +"表传递。" + msgid "Resets the background color for the given column to default." msgstr "重置指定列默认的背景颜色。" @@ -102180,6 +113303,15 @@ msgstr "" msgid "Returns the column's cell mode." msgstr "返回该列的单元格模式。" +msgid "" +"Returns a child item by its [param index] (see [method get_child_count]). " +"This method is often used for iterating all children of an item.\n" +"Negative indices access the children from the last one." +msgstr "" +"按其 [param index] 返回一个子项(参见 [method get_child_count])。该方法通常" +"被用于迭代一个项目的所有子项。\n" +"负索引将从最后一个访问孩子。" + msgid "Returns the number of child items." msgstr "返回子项的数量。" @@ -102287,6 +113419,15 @@ msgid "Returns the [Tree] that owns this TreeItem." msgstr "返回拥有此 TreeItem 的 [Tree]。" msgid "" +"Returns [code]true[/code] if this [TreeItem], or any of its descendants, is " +"collapsed.\n" +"If [param only_visible] is [code]true[/code] it ignores non-visible " +"[TreeItem]s." +msgstr "" +"如果这个 [TreeItem] 或其任意子级为折叠状态,则返回 [code]true[/code]。\n" +"如果 [param only_visible] 为 [code]true[/code],则会忽略不可见的 [TreeItem]。" + +msgid "" "Returns [code]true[/code] if the button at index [param button_index] for " "the given [param column] is disabled." msgstr "" @@ -102323,6 +113464,21 @@ msgstr "" "[b]注意:[/b]无法移动至根部,也无法移动根部。" msgid "" +"Propagates this item's checked status to its children and parents for the " +"given [param column]. It is possible to process the items affected by this " +"method call by connecting to [signal Tree.check_propagated_to_item]. The " +"order that the items affected will be processed is as follows: the item " +"invoking this method, children of that item, and finally parents of that " +"item. If [param emit_signal] is [code]false[/code], then [signal Tree." +"check_propagated_to_item] will not be emitted." +msgstr "" +"将该项的勾选状态传播给给定 [param column] 的子项和父项。可以通过连接到 " +"[signal Tree.check_propagated_to_item] 来处理受该方法调用影响的项目。受影响的" +"项目的处理顺序如下:调用该方法的项目、该项的子项,最后是该项的父项。如果 " +"[param emit_signal] 为 [code]false[/code],则不会发出 [signal Tree." +"check_propagated_to_item]。" + +msgid "" "Removes the given child [TreeItem] and all its children from the [Tree]. " "Note that it doesn't free the item from memory, so it can be reused later. " "To completely remove a [TreeItem] use [method Object.free]." @@ -102378,6 +113534,16 @@ msgstr "设置给定列的自定义背景颜色,以及是否只将其作为一 msgid "Sets the given column's custom color." msgstr "设置给定列的自定义颜色。" +msgid "" +"Sets the given column's custom draw callback to [param callback] method on " +"[param object].\n" +"The [param callback] should accept two arguments: the [TreeItem] that is " +"drawn and its position and size as a [Rect2]." +msgstr "" +"将给定列的自定义绘制回调设置为 [param object] 上的 [param callback] 方法。\n" +"[param callback] 应该接受两个参数:被绘制的 [TreeItem] 及其作为一个 [Rect2] " +"的位置和大小。" + msgid "Sets custom font used to draw text in the given [param column]." msgstr "设置用于在给定列 [param column] 中绘制文本的自定义字体。" @@ -102404,6 +113570,17 @@ msgid "Sets the given column's icon's texture region." msgstr "设置给定列的图标的纹理区域。" msgid "" +"If [code]true[/code], the given [param column] is marked [param " +"indeterminate].\n" +"[b]Note:[/b] If set [code]true[/code] from [code]false[/code], then column " +"is cleared of checked status." +msgstr "" +"如果为 [code]true[/code],则给定的 [param column] 被标记为 [param " +"indeterminate]。\n" +"[b]注意:[/b]如果从 [code]false[/code] 设置为 [code]true[/code],则列被清除勾" +"选状态。" + +msgid "" "Sets the metadata value for the given column, which can be retrieved later " "using [method get_metadata]. This can be used, for example, to store a " "reference to the original data." @@ -102500,6 +113677,264 @@ msgid "" msgstr "通过脚本进行通用动画的轻量级对象,使用 [Tweener]。" msgid "" +"Tweens are mostly useful for animations requiring a numerical property to be " +"interpolated over a range of values. The name [i]tween[/i] comes from [i]in-" +"betweening[/i], an animation technique where you specify [i]keyframes[/i] " +"and the computer interpolates the frames that appear between them. Animating " +"something with a [Tween] is called tweening.\n" +"[Tween] is more suited than [AnimationPlayer] for animations where you don't " +"know the final values in advance. For example, interpolating a dynamically-" +"chosen camera zoom value is best done with a [Tween]; it would be difficult " +"to do the same thing with an [AnimationPlayer] node. Tweens are also more " +"light-weight than [AnimationPlayer], so they are very much suited for simple " +"animations or general tasks that don't require visual tweaking provided by " +"the editor. They can be used in a fire-and-forget manner for some logic that " +"normally would be done by code. You can e.g. make something shoot " +"periodically by using a looped [CallbackTweener] with a delay.\n" +"A [Tween] can be created by using either [method SceneTree.create_tween] or " +"[method Node.create_tween]. [Tween]s created manually (i.e. by using " +"[code]Tween.new()[/code]) are invalid and can't be used for tweening " +"values.\n" +"A tween animation is created by adding [Tweener]s to the [Tween] object, " +"using [method tween_property], [method tween_interval], [method " +"tween_callback] or [method tween_method]:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var tween = get_tree().create_tween()\n" +"tween.tween_property($Sprite, \"modulate\", Color.RED, 1)\n" +"tween.tween_property($Sprite, \"scale\", Vector2(), 1)\n" +"tween.tween_callback($Sprite.queue_free)\n" +"[/gdscript]\n" +"[csharp]\n" +"Tween tween = GetTree().CreateTween();\n" +"tween.TweenProperty(GetNode(\"Sprite\"), \"modulate\", Colors.Red, 1.0f);\n" +"tween.TweenProperty(GetNode(\"Sprite\"), \"scale\", Vector2.Zero, 1.0f);\n" +"tween.TweenCallback(Callable.From(GetNode(\"Sprite\").QueueFree));\n" +"[/csharp]\n" +"[/codeblocks]\n" +"This sequence will make the [code]$Sprite[/code] node turn red, then shrink, " +"before finally calling [method Node.queue_free] to free the sprite. " +"[Tweener]s are executed one after another by default. This behavior can be " +"changed using [method parallel] and [method set_parallel].\n" +"When a [Tweener] is created with one of the [code]tween_*[/code] methods, a " +"chained method call can be used to tweak the properties of this [Tweener]. " +"For example, if you want to set a different transition type in the above " +"example, you can use [method set_trans]:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var tween = get_tree().create_tween()\n" +"tween.tween_property($Sprite, \"modulate\", Color.RED, 1).set_trans(Tween." +"TRANS_SINE)\n" +"tween.tween_property($Sprite, \"scale\", Vector2(), 1).set_trans(Tween." +"TRANS_BOUNCE)\n" +"tween.tween_callback($Sprite.queue_free)\n" +"[/gdscript]\n" +"[csharp]\n" +"Tween tween = GetTree().CreateTween();\n" +"tween.TweenProperty(GetNode(\"Sprite\"), \"modulate\", Colors.Red, 1.0f)." +"SetTrans(Tween.TransitionType.Sine);\n" +"tween.TweenProperty(GetNode(\"Sprite\"), \"scale\", Vector2.Zero, 1.0f)." +"SetTrans(Tween.TransitionType.Bounce);\n" +"tween.TweenCallback(Callable.From(GetNode(\"Sprite\").QueueFree));\n" +"[/csharp]\n" +"[/codeblocks]\n" +"Most of the [Tween] methods can be chained this way too. In the following " +"example the [Tween] is bound to the running script's node and a default " +"transition is set for its [Tweener]s:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var tween = get_tree().create_tween().bind_node(self).set_trans(Tween." +"TRANS_ELASTIC)\n" +"tween.tween_property($Sprite, \"modulate\", Color.RED, 1)\n" +"tween.tween_property($Sprite, \"scale\", Vector2(), 1)\n" +"tween.tween_callback($Sprite.queue_free)\n" +"[/gdscript]\n" +"[csharp]\n" +"var tween = GetTree().CreateTween().BindNode(this).SetTrans(Tween." +"TransitionType.Elastic);\n" +"tween.TweenProperty(GetNode(\"Sprite\"), \"modulate\", Colors.Red, 1.0f);\n" +"tween.TweenProperty(GetNode(\"Sprite\"), \"scale\", Vector2.Zero, 1.0f);\n" +"tween.TweenCallback(Callable.From(GetNode(\"Sprite\").QueueFree));\n" +"[/csharp]\n" +"[/codeblocks]\n" +"Another interesting use for [Tween]s is animating arbitrary sets of " +"objects:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var tween = create_tween()\n" +"for sprite in get_children():\n" +" tween.tween_property(sprite, \"position\", Vector2(0, 0), 1)\n" +"[/gdscript]\n" +"[csharp]\n" +"Tween tween = CreateTween();\n" +"foreach (Node sprite in GetChildren())\n" +" tween.TweenProperty(sprite, \"position\", Vector2.Zero, 1.0f);\n" +"[/csharp]\n" +"[/codeblocks]\n" +"In the example above, all children of a node are moved one after another to " +"position (0, 0).\n" +"You should avoid using more than one [Tween] per object's property. If two " +"or more tweens animate one property at the same time, the last one created " +"will take priority and assign the final value. If you want to interrupt and " +"restart an animation, consider assigning the [Tween] to a variable:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var tween\n" +"func animate():\n" +" if tween:\n" +" tween.kill() # Abort the previous animation.\n" +" tween = create_tween()\n" +"[/gdscript]\n" +"[csharp]\n" +"private Tween _tween;\n" +"\n" +"public void Animate()\n" +"{\n" +" if (_tween != null)\n" +" _tween.Kill(); // Abort the previous animation\n" +" _tween = CreateTween();\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"Some [Tweener]s use transitions and eases. The first accepts a [enum " +"TransitionType] constant, and refers to the way the timing of the animation " +"is handled (see [url=https://easings.net/]easings.net[/url] for some " +"examples). The second accepts an [enum EaseType] constant, and controls " +"where the [code]trans_type[/code] is applied to the interpolation (in the " +"beginning, the end, or both). If you don't know which transition and easing " +"to pick, you can try different [enum TransitionType] constants with " +"[constant EASE_IN_OUT], and use the one that looks best.\n" +"[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/" +"tween_cheatsheet.png]Tween easing and transition types cheatsheet[/url]\n" +"[b]Note:[/b] Tweens are not designed to be re-used and trying to do so " +"results in an undefined behavior. Create a new Tween for each animation and " +"every time you replay an animation from start. Keep in mind that Tweens " +"start immediately, so only create a Tween when you want to start animating.\n" +"[b]Note:[/b] Tweens are processing after all of nodes in the current frame, " +"i.e. after [method Node._process] or [method Node._physics_process] " +"(depending on [enum TweenProcessMode])." +msgstr "" +"Tween 主要用于需要将一个数值属性插值到一系列值的动画。[i]tween[/i] 这个名字来" +"自 [i]in-betweening[/i],这是一种动画技术,可以在其中指定 [i]关键帧[/i],然后" +"计算机会插入出现在它们之间的帧。使用 [Tween] 制作动画被称为补间动画。\n" +"[Tween] 比 [AnimationPlayer] 更适合事先不知道最终值的动画。例如,插入动态选择" +"的相机缩放值最好使用 [Tween] 完成;很难使用 [AnimationPlayer] 节点做同样的事" +"情。Tween 也比 [AnimationPlayer] 更轻量级,因此它们非常适合简单的动画,或不需" +"要编辑器提供的视觉调整的通用任务。对于通常由代码完成的某些逻辑,它们可以以即" +"用即弃的方式使用。例如,可以使用带延迟的循环 [CallbackTweener] 定期射击。\n" +"可以使用 [method SceneTree.create_tween] 或 [method Node.create_tween] 创建 " +"[Tween]。手动创建的 [Tween](即使用 [code]Tween.new()[/code])无效,不能用于" +"对值进行补间。\n" +"通过使用 [method tween_property]、[method tween_interval]、[method " +"tween_callback]、或 [method tween_method],可将 [Tweener] 添加到 [Tween] 对象" +"来创建一个补间动画:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var tween = get_tree().create_tween()\n" +"tween.tween_property($Sprite, \"modulate\", Color.RED, 1)\n" +"tween.tween_property($Sprite, \"scale\", Vector2(), 1)\n" +"tween.tween_callback($Sprite.queue_free)\n" +"[/gdscript]\n" +"[csharp]\n" +"Tween tween = GetTree().CreateTween();\n" +"tween.TweenProperty(GetNode(\"Sprite\"), \"modulate\", Colors.Red, 1.0f);\n" +"tween.TweenProperty(GetNode(\"Sprite\"), \"scale\", Vector2.Zero, 1.0f);\n" +"tween.TweenCallback(Callable.From(GetNode(\"Sprite\").QueueFree));\n" +"[/csharp]\n" +"[/codeblocks]\n" +"该序列将使 [code]$Sprite[/code] 节点变红,然后缩小,最后调用 [method Node." +"queue_free] 来释放该精灵。默认情况下,[Tweener] 一个接一个地执行。这种行为可" +"以使用 [method parallel] 和 [method set_parallel] 来更改。\n" +"当使用 [code]tween_*[/code] 方法之一创建 [Tweener] 时,可以使用链式方法调用来" +"调整该 [Tweener] 的属性。例如,如果想在上面的例子中设置一个不同的过渡类型,可" +"以使用 [method set_trans]:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var tween = get_tree().create_tween()\n" +"tween.tween_property($Sprite, \"modulate\", Color.RED, 1).set_trans(Tween." +"TRANS_SINE)\n" +"tween.tween_property($Sprite, \"scale\", Vector2(), 1).set_trans(Tween." +"TRANS_BOUNCE)\n" +"tween.tween_callback($Sprite.queue_free)\n" +"[/gdscript]\n" +"[csharp]\n" +"Tween tween = GetTree().CreateTween();\n" +"tween.TweenProperty(GetNode(\"Sprite\"), \"modulate\", Colors.Red, 1.0f)." +"SetTrans(Tween.TransitionType.Sine);\n" +"tween.TweenProperty(GetNode(\"Sprite\"), \"scale\", Vector2.Zero, 1.0f)." +"SetTrans(Tween.TransitionType.Bounce);\n" +"tween.TweenCallback(Callable.From(GetNode(\"Sprite\").QueueFree));\n" +"[/csharp]\n" +"[/codeblocks]\n" +"大多数 [Tween] 方法也可以这样链式调用。在下面的示例中,[Tween] 被绑定到运行脚" +"本的节点,并为其 [Tweener] 设置了默认过渡:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var tween = get_tree().create_tween().bind_node(self).set_trans(Tween." +"TRANS_ELASTIC)\n" +"tween.tween_property($Sprite, \"modulate\", Color.RED, 1)\n" +"tween.tween_property($Sprite, \"scale\", Vector2(), 1)\n" +"tween.tween_callback($Sprite.queue_free)\n" +"[/gdscript]\n" +"[csharp]\n" +"var tween = GetTree().CreateTween().BindNode(this).SetTrans(Tween." +"TransitionType.Elastic);\n" +"tween.TweenProperty(GetNode(\"Sprite\"), \"modulate\", Colors.Red, 1.0f);\n" +"tween.TweenProperty(GetNode(\"Sprite\"), \"scale\", Vector2.Zero, 1.0f);\n" +"tween.TweenCallback(Callable.From(GetNode(\"Sprite\").QueueFree));\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[Tween] 的另一个有趣用途是动画化任意对象集:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var tween = create_tween()\n" +"for sprite in get_children():\n" +" tween.tween_property(sprite, \"position\", Vector2(0, 0), 1)\n" +"[/gdscript]\n" +"[csharp]\n" +"Tween tween = CreateTween();\n" +"foreach (Node sprite in GetChildren())\n" +" tween.TweenProperty(sprite, \"position\", Vector2.Zero, 1.0f);\n" +"[/csharp]\n" +"[/codeblocks]\n" +"在上面的示例中,一个节点的所有子节点都被依次移动到位置 (0, 0)。\n" +"应该避免为对象的同一属性使用多个 [Tween]。如果两个或多个补间同时为同一个属性" +"设置动画,则最后创建的补间将优先使用,并分配最终值。如果要中断并重新启动动" +"画,请考虑将 [Tween] 赋给变量:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var tween\n" +"func animate():\n" +" if tween:\n" +" tween.kill() # 终止之前的补间动画。\n" +" tween = create_tween()\n" +"[/gdscript]\n" +"[csharp]\n" +"private Tween _tween;\n" +"\n" +"public void Animate()\n" +"{\n" +" if (_tween != null)\n" +" _tween.Kill(); // 终止之前的补间动画。\n" +" _tween = CreateTween();\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"一些 [Tweener] 会使用过渡和缓动。第一个接受一个 [enum TransitionType] 常量," +"指的是处理动画时间的方式(有关示例,请参见 [url=https://easings.net/]easings." +"net[/url])。第二个接受一个 [enum EaseType] 常量,并控制 [code]trans_type[/" +"code] 应用于插值的位置(在开头、结尾、或两者)。如果不知道该选择哪种过渡和缓" +"动,可以尝试使用 [constant EASE_IN_OUT] 并配合不同 [enum TransitionType] 常" +"量,并使用看起来最好的那个。\n" +"[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/" +"tween_cheatsheet.png]补间缓动与过渡类型速查表[/url]\n" +"[b]注意:[/b]Tween 并不是针对重用设计的,尝试重用会造成未定义行为。每次从头开" +"始重新播放每个动画都请新建一个 Tween。请记住,Tween 是会立即开始的,所以请只" +"在需要开始动画时创建 Tween。\n" +"[b]注意:[/b]Tween 在当前帧中的所有节点之后处理,即在 [method Node._process] " +"或 [method Node._physics_process] 之后(取决于 [enum TweenProcessMode])。" + +msgid "" "Binds this [Tween] with the given [param node]. [Tween]s are processed " "directly by the [SceneTree], so they run independently of the animated " "nodes. When you bind a [Node] with the [Tween], the [Tween] will halt the " @@ -102623,7 +114058,7 @@ msgstr "" "返回该 [Tween] 是否有效。有效的 [Tween] 是由场景树包含的 [Tween](即 [method " "SceneTree.get_processed_tweens] 返回的数组中包含这个 [Tween])。[Tween] 失效" "的情况有:补间完成、被销毁、使用 [code]Tween.new()[/code] 创建。无效的 " -"[SceneTreeTween] 不能追加 [Tweener]。" +"[Tween] 不能追加 [Tweener]。" msgid "Aborts all tweening operations and invalidates the [Tween]." msgstr "中止所有补间操作,并使该 [Tween] 无效。" @@ -103513,6 +114948,136 @@ msgstr "" "弃。把这个值设置为[code]0[/code]可以有效地防止任何新的待定连接被接受,例如," "当你的所有玩家都连接时。" +msgid "General-purpose helper to manage undo/redo operations." +msgstr "管理撤销/重做操作的通用辅助工具。" + +msgid "" +"UndoRedo works by registering methods and property changes inside " +"\"actions\".\n" +"Common behavior is to create an action, then add do/undo calls to functions " +"or property changes, then committing the action.\n" +"Here's an example on how to add an UndoRedo action:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var undo_redo = UndoRedo.new()\n" +"\n" +"func do_something():\n" +" pass # Put your code here.\n" +"\n" +"func undo_something():\n" +" pass # Put here the code that reverts what's done by " +"\"do_something()\".\n" +"\n" +"func _on_my_button_pressed():\n" +" var node = get_node(\"MyNode2D\")\n" +" undo_redo.create_action(\"Move the node\")\n" +" undo_redo.add_do_method(do_something)\n" +" undo_redo.add_undo_method(undo_something)\n" +" undo_redo.add_do_property(node, \"position\", Vector2(100,100))\n" +" undo_redo.add_undo_property(node, \"position\", node.position)\n" +" undo_redo.commit_action()\n" +"[/gdscript]\n" +"[csharp]\n" +"private UndoRedo _undoRedo;\n" +"\n" +"public override void _Ready()\n" +"{\n" +" _undoRedo = new UndoRedo();\n" +"}\n" +"\n" +"public void DoSomething()\n" +"{\n" +" // Put your code here.\n" +"}\n" +"\n" +"public void UndoSomething()\n" +"{\n" +" // Put here the code that reverts what's done by \"DoSomething()\".\n" +"}\n" +"\n" +"private void OnMyButtonPressed()\n" +"{\n" +" var node = GetNode<Node2D>(\"MyNode2D\");\n" +" _undoRedo.CreateAction(\"Move the node\");\n" +" _undoRedo.AddDoMethod(new Callable(this, MethodName.DoSomething));\n" +" _undoRedo.AddUndoMethod(new Callable(this, MethodName.UndoSomething));\n" +" _undoRedo.AddDoProperty(node, \"position\", new Vector2(100, 100));\n" +" _undoRedo.AddUndoProperty(node, \"position\", node.Position);\n" +" _undoRedo.CommitAction();\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[method create_action], [method add_do_method], [method add_undo_method], " +"[method add_do_property], [method add_undo_property], and [method " +"commit_action] should be called one after the other, like in the example. " +"Not doing so could lead to crashes.\n" +"If you don't need to register a method, you can leave [method add_do_method] " +"and [method add_undo_method] out; the same goes for properties. You can also " +"register more than one method/property.\n" +"If you are making an [EditorPlugin] and want to integrate into the editor's " +"undo history, use [EditorUndoRedoManager] instead." +msgstr "" +"UndoRedo 的工作原理是在“动作”中注册方法和属性的变化。\n" +"一般用法是创建一个动作,然后添加 do/undo(执行/撤销)对应的函数调用或属性变" +"化,然后提交该动作。\n" +"以下是如何添加 UndoRedo 动作的示例:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var undo_redo = UndoRedo.new()\n" +"\n" +"func do_something():\n" +" pass # 在此处编写你的代码。\n" +"\n" +"func undo_something():\n" +" pass # 在此处编写恢复“do_something()”里所做事情的代码。\n" +"\n" +"func _on_my_button_pressed():\n" +" var node = get_node(\"MyNode2D\")\n" +" undo_redo.create_action(\"移动节点\")\n" +" undo_redo.add_do_method(do_something)\n" +" undo_redo.add_undo_method(undo_something)\n" +" undo_redo.add_do_property(node, \"position\", Vector2(100,100))\n" +" undo_redo.add_undo_property(node, \"position\", node.position)\n" +" undo_redo.commit_action()\n" +"[/gdscript]\n" +"[csharp]\n" +"private UndoRedo _undoRedo;\n" +"\n" +"public override void _Ready()\n" +"{\n" +" _undoRedo = new UndoRedo();\n" +"}\n" +"\n" +"public void DoSomething()\n" +"{\n" +" // 在此处编写你的代码。\n" +"}\n" +"\n" +"public void UndoSomething()\n" +"{\n" +" // 在此处编写恢复“DoSomething()”里所做事情的代码。\n" +"}\n" +"\n" +"private void OnMyButtonPressed()\n" +"{\n" +" var node = GetNode<Node2D>(\"MyNode2D\");\n" +" _undoRedo.CreateAction(\"移动节点\");\n" +" _undoRedo.AddDoMethod(new Callable(this, MethodName.DoSomething));\n" +" _undoRedo.AddUndoMethod(new Callable(this, MethodName.UndoSomething));\n" +" _undoRedo.AddDoProperty(node, \"position\", new Vector2(100, 100));\n" +" _undoRedo.AddUndoProperty(node, \"position\", node.Position);\n" +" _undoRedo.CommitAction();\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"应当和示例中一样依次调用 [method create_action]、[method add_do_method]、" +"[method add_undo_method]、[method add_do_property]、[method " +"add_undo_property]、[method commit_action]。否则可能导致崩溃。\n" +"如果你不需要注册方法,则可以将 [method add_do_method] 和 [method " +"add_undo_method] 省去;属性同理。你也可以注册多个方法/属性。\n" +"如果你在在制作 [EditorPlugin],希望集成编辑器的撤销历史,请改用 " +"[EditorUndoRedoManager]。" + msgid "Register a [Callable] that will be called when the action is committed." msgstr "注册 [Callable],会在提交动作时调用。" @@ -103521,6 +115086,30 @@ msgid "" "when the action is committed." msgstr "注册 [param property],会在提交动作时将其值更改为 [param value]。" +msgid "" +"Register a reference for \"do\" that will be erased if the \"do\" history is " +"lost. This is useful mostly for new nodes created for the \"do\" call. Do " +"not use for resources.\n" +"[codeblock]\n" +"var node = Node2D.new()\n" +"undo_redo.create_action(\"Add node\")\n" +"undo_redo.add_do_method(add_child.bind(node))\n" +"undo_redo.add_do_reference(node)\n" +"undo_redo.add_undo_method(remove_child.bind(node))\n" +"undo_redo.commit_action()\n" +"[/codeblock]" +msgstr "" +"为“do”(执行)注册引用,丢弃该“do”历史时会擦除该引用。主要可用于“do”调用新建" +"的节点。请勿用于资源。\n" +"[codeblock]\n" +"var node = Node2D.new()\n" +"undo_redo.create_action(\"添加节点\")\n" +"undo_redo.add_do_method(add_child.bind(node))\n" +"undo_redo.add_do_reference(node)\n" +"undo_redo.add_undo_method(remove_child.bind(node))\n" +"undo_redo.commit_action()\n" +"[/codeblock]" + msgid "Register a [Callable] that will be called when the action is undone." msgstr "注册 [Callable],会在撤销动作时调用。" @@ -103530,6 +115119,39 @@ msgid "" msgstr "注册 [param property],会在撤销动作时将其值更改为 [param value]。" msgid "" +"Register a reference for \"undo\" that will be erased if the \"undo\" " +"history is lost. This is useful mostly for nodes removed with the \"do\" " +"call (not the \"undo\" call!).\n" +"[codeblock]\n" +"var node = $Node2D\n" +"undo_redo.create_action(\"Remove node\")\n" +"undo_redo.add_do_method(remove_child.bind(node))\n" +"undo_redo.add_undo_method(add_child.bind(node))\n" +"undo_redo.add_undo_reference(node)\n" +"undo_redo.commit_action()\n" +"[/codeblock]" +msgstr "" +"为“undo”(撤销)注册引用,丢弃该“undo”历史时会擦除该引用。主要可用于“do”调用" +"移除的节点(不是“undo”调用)。\n" +"[codeblock]\n" +"var node = $Node2D\n" +"undo_redo.create_action(\"移除节点\")\n" +"undo_redo.add_do_method(remove_child.bind(node))\n" +"undo_redo.add_undo_method(add_child.bind(node))\n" +"undo_redo.add_undo_reference(node)\n" +"undo_redo.commit_action()\n" +"[/codeblock]" + +msgid "" +"Clear the undo/redo history and associated references.\n" +"Passing [code]false[/code] to [param increase_version] will prevent the " +"version number from increasing when the history is cleared." +msgstr "" +"清除撤销/重做历史和相关的引用。\n" +"将 [code]false[/code] 传递给 [param increase_version] 将防止在清除历史记录时" +"增加版本号。" + +msgid "" "Commit the action. If [param execute] is [code]true[/code] (which it is by " "default), all \"do\" methods/properties are called/set when this function is " "called." @@ -103550,6 +115172,14 @@ msgstr "" "用,然后使用 [method commit_action] 提交这个动作。\n" "合并操作的方式由 [param merge_mode] 决定。详情见 [enum MergeMode]。" +msgid "" +"Stops marking operations as to be processed even if the action gets merged " +"with another in the [constant MERGE_ENDS] mode. See [method " +"start_force_keep_in_merge_ends]." +msgstr "" +"停止将操作标记为要处理,即使该动作在 [constant MERGE_ENDS] 模式下与另一个动作" +"合并。请参阅 [method start_force_keep_in_merge_ends]。" + msgid "Gets the action name from its index." msgstr "根据索引获取动作名称。" @@ -103585,6 +115215,15 @@ msgstr "" msgid "Redo the last action." msgstr "重做上一个动作。" +msgid "" +"Marks the next \"do\" and \"undo\" operations to be processed even if the " +"action gets merged with another in the [constant MERGE_ENDS] mode. Return to " +"normal operation using [method end_force_keep_in_merge_ends]." +msgstr "" +"标记要处理的下一个“执行”和“撤消”操作,即使该动作在 [constant MERGE_ENDS] 模式" +"下与另一个动作合并。使用 [method end_force_keep_in_merge_ends] 返回到正常操" +"作。" + msgid "Undo the last action." msgstr "撤销上一个动作。" @@ -103594,6 +115233,14 @@ msgstr "当 [method undo] 或 [method redo] 被调用时调用。" msgid "Makes \"do\"/\"undo\" operations stay in separate actions." msgstr "使“do”/“undo”操作保持在单独的动作中。" +msgid "" +"Makes so that the action's \"undo\" operations are from the first action " +"created and the \"do\" operations are from the last subsequent action with " +"the same name." +msgstr "" +"使得动作的“撤消”操作来自创建的第一个动作,“执行”操作来自最后一个具有相同名称" +"的后续动作。" + msgid "Makes subsequent actions with the same name be merged into one." msgstr "使具有相同名称的后续动作合并为一个。" @@ -103602,13 +115249,246 @@ msgid "" "querying and port forwarding." msgstr "通用即插即用(UPnP)功能,用于网络设备的发现、查询及端口映射。" +msgid "" +"This class can be used to discover compatible [UPNPDevice]s on the local " +"network and execute commands on them, like managing port mappings (for port " +"forwarding/NAT traversal) and querying the local and remote network IP " +"address. Note that methods on this class are synchronous and block the " +"calling thread.\n" +"To forward a specific port (here [code]7777[/code], note both [method " +"discover] and [method add_port_mapping] can return errors that should be " +"checked):\n" +"[codeblock]\n" +"var upnp = UPNP.new()\n" +"upnp.discover()\n" +"upnp.add_port_mapping(7777)\n" +"[/codeblock]\n" +"To close a specific port (e.g. after you have finished using it):\n" +"[codeblock]\n" +"upnp.delete_port_mapping(port)\n" +"[/codeblock]\n" +"[b]Note:[/b] UPnP discovery blocks the current thread. To perform discovery " +"without blocking the main thread, use [Thread]s like this:\n" +"[codeblock]\n" +"# Emitted when UPnP port mapping setup is completed (regardless of success " +"or failure).\n" +"signal upnp_completed(error)\n" +"\n" +"# Replace this with your own server port number between 1024 and 65535.\n" +"const SERVER_PORT = 3928\n" +"var thread = null\n" +"\n" +"func _upnp_setup(server_port):\n" +" # UPNP queries take some time.\n" +" var upnp = UPNP.new()\n" +" var err = upnp.discover()\n" +"\n" +" if err != OK:\n" +" push_error(str(err))\n" +" emit_signal(\"upnp_completed\", err)\n" +" return\n" +"\n" +" if upnp.get_gateway() and upnp.get_gateway().is_valid_gateway():\n" +" upnp.add_port_mapping(server_port, server_port, ProjectSettings." +"get_setting(\"application/config/name\"), \"UDP\")\n" +" upnp.add_port_mapping(server_port, server_port, ProjectSettings." +"get_setting(\"application/config/name\"), \"TCP\")\n" +" emit_signal(\"upnp_completed\", OK)\n" +"\n" +"func _ready():\n" +" thread = Thread.new()\n" +" thread.start(_upnp_setup.bind(SERVER_PORT))\n" +"\n" +"func _exit_tree():\n" +" # Wait for thread finish here to handle game exit while the thread is " +"running.\n" +" thread.wait_to_finish()\n" +"[/codeblock]\n" +"[b]Terminology:[/b] In the context of UPnP networking, \"gateway\" (or " +"\"internet gateway device\", short IGD) refers to network devices that allow " +"computers in the local network to access the internet (\"wide area " +"network\", WAN). These gateways are often also called \"routers\".\n" +"[b]Pitfalls:[/b]\n" +"- As explained above, these calls are blocking and shouldn't be run on the " +"main thread, especially as they can block for multiple seconds at a time. " +"Use threading!\n" +"- Networking is physical and messy. Packets get lost in transit or get " +"filtered, addresses, free ports and assigned mappings change, and devices " +"may leave or join the network at any time. Be mindful of this, be diligent " +"when checking and handling errors, and handle these gracefully if you can: " +"add clear error UI, timeouts and re-try handling.\n" +"- Port mappings may change (and be removed) at any time, and the remote/" +"external IP address of the gateway can change likewise. You should consider " +"re-querying the external IP and try to update/refresh the port mapping " +"periodically (for example, every 5 minutes and on networking failures).\n" +"- Not all devices support UPnP, and some users disable UPnP support. You " +"need to handle this (e.g. documenting and requiring the user to manually " +"forward ports, or adding alternative methods of NAT traversal, like a relay/" +"mirror server, or NAT hole punching, STUN/TURN, etc.).\n" +"- Consider what happens on mapping conflicts. Maybe multiple users on the " +"same network would like to play your game at the same time, or maybe another " +"application uses the same port. Make the port configurable, and optimally " +"choose a port automatically (re-trying with a different port on failure).\n" +"[b]Further reading:[/b] If you want to know more about UPnP (and the " +"Internet Gateway Device (IGD) and Port Control Protocol (PCP) specifically), " +"[url=https://en.wikipedia.org/wiki/Universal_Plug_and_Play]Wikipedia[/url] " +"is a good first stop, the specification can be found at the [url=https://" +"openconnectivity.org/developer/specifications/upnp-resources/upnp/]Open " +"Connectivity Foundation[/url] and Godot's implementation is based on the " +"[url=https://github.com/miniupnp/miniupnp]MiniUPnP client[/url]." +msgstr "" +"这个类可用于在本地网络中发现兼容的 [UPNPDevice] 并在这些设备上执行命令,如管" +"理端口映射(用于端口转发/NAT 穿透)和查询本地及远程网络 IP 地址。请注意,这个" +"类的方法都是同步的,会阻塞调用线程。\n" +"要转发指定端口(此处为 [code]7777[/code],请注意 [method discover] 和 " +"[method add_port_mapping] 都可能返回错误,应进行检查):\n" +"[codeblock]\n" +"var upnp = UPNP.new()\n" +"upnp.discover()\n" +"upnp.add_port_mapping(7777)\n" +"[/codeblock]\n" +"要关闭指定端口(例如结束使用后):\n" +"[codeblock]\n" +"upnp.delete_port_mapping(port)\n" +"[/codeblock]\n" +"[b]注意:[/b]UPnP 发现会阻塞当前线程。要在不阻塞主线程的前提下执行发现,请像" +"这样使用 [Thread]:\n" +"[codeblock]\n" +"# UPnP 端口映射建立完成时发出(无论成败)。\n" +"signal upnp_completed(error)\n" +"\n" +"# 请将其替换为你自己的服务器端口号,在 1024 和 65535 之间。\n" +"const SERVER_PORT = 3928\n" +"var thread = null\n" +"\n" +"func _upnp_setup(server_port):\n" +" # UPNP 查询比较耗时。\n" +" var upnp = UPNP.new()\n" +" var err = upnp.discover()\n" +"\n" +" if err != OK:\n" +" push_error(str(err))\n" +" emit_signal(\"upnp_completed\", err)\n" +" return\n" +"\n" +" if upnp.get_gateway() and upnp.get_gateway().is_valid_gateway():\n" +" upnp.add_port_mapping(server_port, server_port, ProjectSettings." +"get_setting(\"application/config/name\"), \"UDP\")\n" +" upnp.add_port_mapping(server_port, server_port, ProjectSettings." +"get_setting(\"application/config/name\"), \"TCP\")\n" +" emit_signal(\"upnp_completed\", OK)\n" +"\n" +"func _ready():\n" +" thread = Thread.new()\n" +" thread.start(_upnp_setup.bind(SERVER_PORT))\n" +"\n" +"func _exit_tree():\n" +" # 游戏退出但线程还在运行时,在此处等待线程完成。\n" +" thread.wait_to_finish()\n" +"[/codeblock]\n" +"[b]术语:[/b]UPnP 网络中,“网关”(gateway,或称“互联网网关设备”,internet " +"gateway device,简称 IGD)指的是在局域网中让计算机能够访问互联网(“广域网”," +"wide area network,WAN)的网络设备。这些网关经常也叫做“路由器”。\n" +"[b]陷阱:[/b]\n" +"- 前文解释过,这些调用都是阻塞的,不应该在主线程上执行,一次就能阻塞上很多" +"秒。用用线程吧!\n" +"- 网络是实打实的混乱。数据包可能会在传输过程中丢失或者被过滤掉,地址、空闲端" +"口、端口映射有可能发生变化,设备可以随时离开或者加入网络。请考虑周全,老老实" +"实地检查错误并进行处理,处理错误时请尽量友好:添加简洁的报错 UI、超时处理、重" +"试机制。\n" +"- 端口映射是随时会变的(也可以被删除),网关的远程/外部 IP 也可能发生改变。你" +"应该考虑定期重新查询外部 IP、尝试更新/刷新端口映射(例如每隔 5 分钟或者在发生" +"网络错误时执行)。\n" +"- 并不是所有的设备都支持 UPnP,有些用户还会禁用 UPnP 支持。你需要处理这种情况" +"(例如编写文档,要求用户手动进行端口映射,或者加入接力/镜像服务器、NAT 打洞、" +"STUN/TURN 等 NAT 穿透的备用方案)。\n" +"- 请考虑映射冲突时该怎么办。可能在同一个网络上同时有多个用户想要来玩你的游" +"戏,或者有其他应用程序用了一样的端口。请把端口号做成可配置的,最好能够自动选" +"择(失败时重试其他端口)。\n" +"[b]拓展阅读:[/b]如果你想了解更多关于 UPnP(尤其是 Internet Gateway Device" +"(IGD)和 Port Control Protocol(PCP)),可以首先查看[url=https://en." +"wikipedia.org/wiki/Universal_Plug_and_Play]维基百科[/url],技术规范可以在 " +"[url=https://openconnectivity.org/developer/specifications/upnp-resources/" +"upnp/]Open Connectivity 基金会[/url]找到,Godot 的实现基于的是 [url=https://" +"github.com/miniupnp/miniupnp]MiniUPnP 客户端[/url]。" + msgid "Adds the given [UPNPDevice] to the list of discovered devices." msgstr "将给定的 [UPNPDevice] 添加到已发现设备的列表中。" +msgid "" +"Adds a mapping to forward the external [code]port[/code] (between 1 and " +"65535, although recommended to use port 1024 or above) on the default " +"gateway (see [method get_gateway]) to the [code]internal_port[/code] on the " +"local machine for the given protocol [code]proto[/code] (either " +"[code]\"TCP\"[/code] or [code]\"UDP\"[/code], with UDP being the default). " +"If a port mapping for the given port and protocol combination already exists " +"on that gateway device, this method tries to overwrite it. If that is not " +"desired, you can retrieve the gateway manually with [method get_gateway] and " +"call [method add_port_mapping] on it, if any. Note that forwarding a well-" +"known port (below 1024) with UPnP may fail depending on the device.\n" +"Depending on the gateway device, if a mapping for that port already exists, " +"it will either be updated or it will refuse this command due to that " +"conflict, especially if the existing mapping for that port wasn't created " +"via UPnP or points to a different network address (or device) than this " +"one.\n" +"If [code]internal_port[/code] is [code]0[/code] (the default), the same port " +"number is used for both the external and the internal port (the [code]port[/" +"code] value).\n" +"The description ([code]desc[/code]) is shown in some routers management UIs " +"and can be used to point out which application added the mapping.\n" +"The mapping's lease [code]duration[/code] can be limited by specifying a " +"duration in seconds. The default of [code]0[/code] means no duration, i.e. a " +"permanent lease and notably some devices only support these permanent " +"leases. Note that whether permanent or not, this is only a request and the " +"gateway may still decide at any point to remove the mapping (which usually " +"happens on a reboot of the gateway, when its external IP address changes, or " +"on some models when it detects a port mapping has become inactive, i.e. had " +"no traffic for multiple minutes). If not [code]0[/code] (permanent), the " +"allowed range according to spec is between [code]120[/code] (2 minutes) and " +"[code]86400[/code] seconds (24 hours).\n" +"See [enum UPNPResult] for possible return values." +msgstr "" +"添加映射,针对给定的协议 [code]proto[/code]([code]\"TCP\"[/code] 或 " +"[code]\"UDP\"[/code],默认为 UDP),将默认网关(见 [method get_gateway])上的" +"外部端口 [code]port[/code](在 1 到 65535 之间,不过推荐使用 1024 以上的端" +"口)映射到本机上的内部端口 [code]internal_port[/code]。如果该网关上已经存在给" +"定的端口与协议的组合,这个方法会尝试进行覆盖。如果不希望如此,你可以使用 " +"[method get_gateway] 手动获取网关,获取到后调用其 [method add_port_mapping] " +"方法。请注意,使用 UPnP 转发公认端口(1024 以下)在有些设备上可能会失败。\n" +"如果端口的映射已存在,有些网关设备可能会对其进行更新,有些则会因为冲突而拒绝" +"这个命令,尤其当现有端口映射不是由 UPnP 创建的,或者指向的是别的网络地址(或" +"设备)的时候。\n" +"如果 [code]internal_port[/code] 为 [code]0[/code](默认),表示内外部端口相同" +"(使用 [code]port[/code] 的值)。\n" +"描述([code]desc[/code])会显示在一些路由器的管理界面上,可以用来识别添加映射" +"的程序。\n" +"映射的租赁时长 [code]duration[/code] 可以通过指定秒数来限定。默认的 [code]0[/" +"code] 表示没有时长,即永久租赁,有些设备只支持这种永久租赁。请注意,无论是否" +"永久都只是一种请求,网关仍然可以随时移除映射(通常发生在重启网关后外部 IP 地" +"址发生变化时,也有些型号会在映射不再活动,即若干分钟无流量时移除)。如果非 " +"[code]0[/code](永久),技术规格所允许的范围是 [code]120[/code](2 分钟)到 " +"[code]86400[/code] 秒(24 小时)。\n" +"可能的返回值见 [enum UPNPResult]。" + msgid "Clears the list of discovered devices." msgstr "清除已发现设备的列表。" msgid "" +"Deletes the port mapping for the given port and protocol combination on the " +"default gateway (see [method get_gateway]) if one exists. [code]port[/code] " +"must be a valid port between 1 and 65535, [code]proto[/code] can be either " +"[code]\"TCP\"[/code] or [code]\"UDP\"[/code]. May be refused for mappings " +"pointing to addresses other than this one, for well-known ports (below " +"1024), or for mappings not added via UPnP. See [enum UPNPResult] for " +"possible return values." +msgstr "" +"如果默认网关上存在对给定端口和协议组合的端口映射,则将其删除(见 [method " +"get_gateway])。[code]port[/code] 必须是 1 和 65535 之间的有效端口," +"[code]proto[/code] 可以是 [code]\"TCP\"[/code] 或 [code]\"UDP\"[/code]。拒绝" +"的原因可能是映射指向其他地址、端口为公认端口(1024 以下)、映射不是由 UPnP 添" +"加的。可能的返回值见 [enum UPNPResult]。" + +msgid "" "Discovers local [UPNPDevice]s. Clears the list of previously discovered " "devices.\n" "Filters for IGD (InternetGatewayDevice) type devices by default, as those " @@ -104335,6 +116215,14 @@ msgstr "" "[/codeblock]" msgid "" +"Returns [code]true[/code] if this vector and [code]v[/code] are " +"approximately equal, by running [method @GlobalScope.is_equal_approx] on " +"each component." +msgstr "" +"如果这个向量和 [code]v[/code] 大约相等,则返回 [code]true[/code],比较的方法" +"是对每个分量执行 [method @GlobalScope.is_equal_approx]。" + +msgid "" "Returns [code]true[/code] if this vector is finite, by calling [method " "@GlobalScope.is_finite] on each component." msgstr "" @@ -104342,6 +116230,11 @@ msgstr "" "@GlobalScope.is_finite]。" msgid "" +"Returns [code]true[/code] if the vector is normalized, i.e. its length is " +"approximately equal to 1." +msgstr "如果该向量是归一化的,即长度约等于 1,则返回 [code]true[/code]。" + +msgid "" "Returns [code]true[/code] if this vector's values are approximately zero, by " "running [method @GlobalScope.is_zero_approx] on each component.\n" "This method is faster than using [method is_equal_approx] with one value as " @@ -104401,6 +116294,16 @@ msgstr "" "终值。" msgid "" +"Returns the result of scaling the vector to unit length. Equivalent to " +"[code]v / v.length()[/code]. See also [method is_normalized].\n" +"[b]Note:[/b] This function may return incorrect values if the initial vector " +"length is near zero." +msgstr "" +"返回该向量缩放至单位长度的结果。等价于 [code]v / v.length()[/code]。另见 " +"[method is_normalized]。\n" +"[b]注意:[/b]如果初始向量的长度接近零,则这个函数可能返回不正确的值。" + +msgid "" "Returns a perpendicular vector rotated 90 degrees counter-clockwise compared " "to the original, with the same length." msgstr "返回一个与原来相比逆时针旋转 90 度的垂直向量,长度不变。" @@ -104424,6 +116327,11 @@ msgid "" msgstr "返回将该向量投影到给定向量 [param b] 上的结果。" msgid "" +"Returns the result of reflecting the vector from a line defined by the given " +"direction vector [param n]." +msgstr "返回经过直线反射后的向量,该直线由给定的方向向量 [param n] 定义。" + +msgid "" "Returns the result of rotating this vector by [param angle] (in radians). " "See also [method @GlobalScope.deg_to_rad]." msgstr "" @@ -104447,6 +116355,32 @@ msgstr "" "[method @GlobalScope.sign] 一致。" msgid "" +"Returns the result of spherical linear interpolation between this vector and " +"[param to], by amount [param weight]. [param weight] is on the range of 0.0 " +"to 1.0, representing the amount of interpolation.\n" +"This method also handles interpolating the lengths if the input vectors have " +"different lengths. For the special case of one or both input vectors having " +"zero length, this method behaves like [method lerp]." +msgstr "" +"返回在这个向量和 [param to] 之间进行 [param weight] 的球面线性插值的结果。" +"[param weight] 在 0.0 和 1.0 的范围内,代表插值的量。\n" +"如果输入向量的长度不同,这个函数也会对长度进行插值处理。对于输入向量中存在长" +"度为零的向量的特殊情况,这个方法的行为与 [method lerp] 一致。" + +msgid "" +"Returns the result of sliding the vector along a plane defined by the given " +"normal." +msgstr "返回沿着平面进行滑动后的向量,该平面由给定的法线定义。" + +msgid "" +"Returns a new vector with each component snapped to the nearest multiple of " +"the corresponding component in [param step]. This can also be used to round " +"the components to an arbitrary number of decimals." +msgstr "" +"返回新的向量,每个分量都吸附到了与 [param step] 中对应分量最接近的倍数。也可" +"以用于将分量四舍五入至小数点后的任意位置。" + +msgid "" "The vector's X component. Also accessible by using the index position [code]" "[0][/code]." msgstr "向量的 X 分量。也可以通过使用索引位置 [code][0][/code] 访问。" @@ -104501,6 +116435,11 @@ msgstr "" "靠。" msgid "" +"Inversely transforms (multiplies) the [Vector2] by the given [Transform2D] " +"transformation matrix." +msgstr "使用给定的 [Transform2D] 变换矩阵对该 [Vector2] 进行逆变换(相乘)。" + +msgid "" "Multiplies each component of the [Vector2] by the components of the given " "[Vector2].\n" "[codeblock]\n" @@ -104617,6 +116556,15 @@ msgstr "" "使用向量分量的 [param index] 来访问向量分量。[code]v[0][/code] 等价于 " "[code]v.x[/code]、[code]v[1][/code] 等价于 [code]v.y[/code]。" +msgid "" +"Returns the negative value of the [Vector2]. This is the same as writing " +"[code]Vector2(-v.x, -v.y)[/code]. This operation flips the direction of the " +"vector while keeping the same magnitude. With floats, the number zero can be " +"either positive or negative." +msgstr "" +"返回该 [Vector2] 的负值。和写 [code]Vector2(-v.x, -v.y)[/code] 是一样的。该操" +"作在保持相同幅度的同时,翻转向量的方向。对于浮点数,零也有正负两种。" + msgid "Vector used for 2D math using integer coordinates." msgstr "整数坐标向量,用于 2D 数学。" @@ -104647,11 +116595,6 @@ msgstr "构造默认初始化的 [Vector2i],所有分量都为 [code]0[/code] msgid "Constructs a [Vector2i] as a copy of the given [Vector2i]." msgstr "构造给定 [Vector2i] 的副本。" -msgid "" -"Constructs a new [Vector2i] from [Vector2]. The floating point coordinates " -"will be truncated." -msgstr "从 [Vector2] 构造新的 [Vector2i]。浮点数坐标将被截断。" - msgid "Constructs a new [Vector2i] from the given [param x] and [param y]." msgstr "从给定的 [param x] 和 [param y] 构造新的 [Vector2i]。" @@ -104665,10 +116608,49 @@ msgstr "" "[code]-1[/code] ,如果是零,[code]0[/code] 。其结果与对每个分量调用[method " "@GlobalScope.sign]相同。" +msgid "" +"Returns a new vector with each component snapped to the closest multiple of " +"the corresponding component in [param step]." +msgstr "" +"返回新的向量,每个分量都吸附到了与 [param step] 中对应分量最接近的倍数。" + msgid "Returns [code]true[/code] if the vectors are not equal." msgstr "如果向量不相等,则返回 [code]true[/code]。" msgid "" +"Gets the remainder of each component of the [Vector2i] with the components " +"of the given [Vector2i]. This operation uses truncated division, which is " +"often not desired as it does not work well with negative numbers. Consider " +"using [method @GlobalScope.posmod] instead if you want to handle negative " +"numbers.\n" +"[codeblock]\n" +"print(Vector2i(10, -20) % Vector2i(7, 8)) # Prints \"(3, -4)\"\n" +"[/codeblock]" +msgstr "" +"获取该 [Vector2i] 的每个分量与给定 [Vector2i] 中分量的余数。这个运算使用的是" +"截断式除法,因为对负数不友好,所以通常不会想要使用。如果你想要处理负数,请考" +"虑改用 [method @GlobalScope.posmod]。\n" +"[codeblock]\n" +"print(Vector2i(10, -20) % Vector2i(7, 8)) # 输出 \"(3, -4)\"\n" +"[/codeblock]" + +msgid "" +"Gets the remainder of each component of the [Vector2i] with the the given " +"[int]. This operation uses truncated division, which is often not desired as " +"it does not work well with negative numbers. Consider using [method " +"@GlobalScope.posmod] instead if you want to handle negative numbers.\n" +"[codeblock]\n" +"print(Vector2i(10, -20) % 7) # Prints \"(3, -6)\"\n" +"[/codeblock]" +msgstr "" +"获取该 [Vector2i] 的每个分量与给定的 [int] 的余数。这个运算使用的是截断式除" +"法,因为对负数不友好,所以通常不会想要使用。如果你想要处理负数,请考虑改用 " +"[method @GlobalScope.posmod]。\n" +"[codeblock]\n" +"print(Vector2i(10, -20) % 7) # 输出 \"(3, -6)\"\n" +"[/codeblock]" + +msgid "" "Multiplies each component of the [Vector2i] by the components of the given " "[Vector2i].\n" "[codeblock]\n" @@ -104846,6 +116828,20 @@ msgid "Returns the cross product of this vector and [param with]." msgstr "返回该向量与 [param with] 的叉积。" msgid "" +"Returns the inverse of the vector. This is the same as [code]Vector3(1.0 / v." +"x, 1.0 / v.y, 1.0 / v.z)[/code]." +msgstr "" +"返回该向量的逆向量。与 [code]Vector3(1.0 / v.x, 1.0 / v.y, 1.0 / v.z)[/code] " +"相同。" + +msgid "" +"Returns [code]true[/code] if this vector and [param to] are approximately " +"equal, by running [method @GlobalScope.is_equal_approx] on each component." +msgstr "" +"如果这个向量与 [param to] 大致相等,则返回 [code]true[/code],判断方法是对每" +"个分量执行 [method @GlobalScope.is_equal_approx]。" + +msgid "" "Returns the axis of the vector's lowest value. See [code]AXIS_*[/code] " "constants. If all components are equal, this method returns [constant " "AXIS_Z]." @@ -104854,6 +116850,23 @@ msgstr "" "法返回 [constant AXIS_Z]。" msgid "" +"Returns the result of scaling the vector to unit length. Equivalent to " +"[code]v / v.length()[/code]. See also [method is_normalized].\n" +"[b]Note:[/b] This function may return incorrect values if the input vector " +"length is near zero." +msgstr "" +"返回该向量缩放至单位长度的结果。等价于 [code]v / v.length()[/code]。另见 " +"[method is_normalized]。\n" +"[b]注意:[/b]如果输入向量的长度接近零,则这个函数可能返回不正确的值。" + +msgid "" +"Returns the [Vector3] from an octahedral-compressed form created using " +"[method octahedron_encode] (stored as a [Vector2])." +msgstr "" +"根据使用 [method octahedron_encode] 进行八面体压缩后的形式(存储为 " +"[Vector2])返回 [Vector3]。" + +msgid "" "Returns the octahedral-encoded (oct32) form of this [Vector3] as a " "[Vector2]. Since a [Vector2] occupies 1/3 less memory compared to [Vector3], " "this form of compression can be used to pass greater amounts of [method " @@ -104880,6 +116893,30 @@ msgid "Returns the outer product with [param with]." msgstr "返回与 [param with] 的外积。" msgid "" +"Returns the result of reflecting the vector from a plane defined by the " +"given normal [param n]." +msgstr "返回经过平面反射后的向量,该平面由给定的法线 [param n] 定义。" + +msgid "" +"Returns the result of rotating this vector around a given axis by [param " +"angle] (in radians). The axis must be a normalized vector. See also [method " +"@GlobalScope.deg_to_rad]." +msgstr "" +"返回将这个向量围绕给定的轴旋转 [param angle](单位为弧度)的结果。旋转轴必须" +"为归一化的向量。另见 [method @GlobalScope.deg_to_rad]。" + +msgid "" +"Returns the signed angle to the given vector, in radians. The sign of the " +"angle is positive in a counter-clockwise direction and negative in a " +"clockwise direction when viewed from the side specified by the [param axis]." +msgstr "" +"返回给定向量的带符号角度,单位为弧度。从 [param axis] 指定的一侧看,该角度在" +"逆时针方向时符号为正,在顺时针方向时符号为负。" + +msgid "Returns a new vector slid along a plane defined by the given normal." +msgstr "返回沿着由给定法线定义的平面滑动后的新向量。" + +msgid "" "The vector's Z component. Also accessible by using the index position [code]" "[2][/code]." msgstr "向量的 Z 分量。也可以通过使用索引位置 [code][2][/code] 访问。" @@ -105039,6 +117076,15 @@ msgstr "" "[code]v.x[/code],[code]v[1][/code] 等价于 [code]v.y[/code],[code]v[2][/" "code] 等价于 [code]v.z[/code]。" +msgid "" +"Returns the negative value of the [Vector3]. This is the same as writing " +"[code]Vector3(-v.x, -v.y, -v.z)[/code]. This operation flips the direction " +"of the vector while keeping the same magnitude. With floats, the number zero " +"can be either positive or negative." +msgstr "" +"返回该 [Vector3] 的负值。和写 [code]Vector3(-v.x, -v.y, -v.z)[/code] 是一样" +"的。该操作在保持相同幅度的同时,翻转向量的方向。对于浮点数,零也有正负两种。" + msgid "Vector used for 3D math using integer coordinates." msgstr "整数坐标向量,用于 3D 数学。" @@ -105069,15 +117115,43 @@ msgstr "构造默认初始化的 [Vector3i],所有分量都为 [code]0[/code] msgid "Constructs a [Vector3i] as a copy of the given [Vector3i]." msgstr "构造给定 [Vector3i] 的副本。" -msgid "" -"Constructs a new [Vector3i] from [Vector3]. The floating point coordinates " -"will be truncated." -msgstr "从 [Vector3] 构造新的 [Vector3i]。浮点数坐标将被截断。" - msgid "Returns a [Vector3i] with the given components." msgstr "返回具有给定分量的 [Vector3i]。" msgid "" +"Gets the remainder of each component of the [Vector3i] with the components " +"of the given [Vector3i]. This operation uses truncated division, which is " +"often not desired as it does not work well with negative numbers. Consider " +"using [method @GlobalScope.posmod] instead if you want to handle negative " +"numbers.\n" +"[codeblock]\n" +"print(Vector3i(10, -20, 30) % Vector3i(7, 8, 9)) # Prints \"(3, -4, 3)\"\n" +"[/codeblock]" +msgstr "" +"获取该 [Vector3i] 的每个分量与给定 [Vector3i] 中分量的余数。这个运算使用的是" +"截断式除法,因为对负数不友好,所以通常不会想要使用。如果你想要处理负数,请考" +"虑改用 [method @GlobalScope.posmod]。\n" +"[codeblock]\n" +"print(Vector3i(10, -20, 30) % Vector3i(7, 8, 9)) # 输出 \"(3, -4, 3)\"\n" +"[/codeblock]" + +msgid "" +"Gets the remainder of each component of the [Vector3i] with the the given " +"[int]. This operation uses truncated division, which is often not desired as " +"it does not work well with negative numbers. Consider using [method " +"@GlobalScope.posmod] instead if you want to handle negative numbers.\n" +"[codeblock]\n" +"print(Vector3i(10, -20, 30) % 7) # Prints \"(3, -6, 2)\"\n" +"[/codeblock]" +msgstr "" +"获取该 [Vector3i] 的每个分量与给定的 [int] 的余数。这个运算使用的是截断式除" +"法,因为对负数不友好,所以通常不会想要使用。如果你想要处理负数,请考虑改用 " +"[method @GlobalScope.posmod]。\n" +"[codeblock]\n" +"print(Vector3i(10, -20, 30) % 7) # 输出 \"(3, -6, 2)\"\n" +"[/codeblock]" + +msgid "" "Multiplies each component of the [Vector3i] by the components of the given " "[Vector3i].\n" "[codeblock]\n" @@ -105249,6 +117323,20 @@ msgid "Returns the dot product of this vector and [param with]." msgstr "返回该向量与 [param with] 的点积。" msgid "" +"Returns the inverse of the vector. This is the same as [code]Vector4(1.0 / v." +"x, 1.0 / v.y, 1.0 / v.z, 1.0 / v.w)[/code]." +msgstr "" +"返回该向量的逆向量。与 [code]Vector4(1.0 / v.x, 1.0 / v.y, 1.0 / v.z, 1.0 / " +"v.w)[/code] 相同。" + +msgid "" +"Returns [code]true[/code] if this vector and [param with] are approximately " +"equal, by running [method @GlobalScope.is_equal_approx] on each component." +msgstr "" +"如果这个向量与 [param with] 大致相等,则返回 [code]true[/code],判断方法是对" +"每个分量执行 [method @GlobalScope.is_equal_approx]。" + +msgid "" "Returns the squared length (squared magnitude) of this vector. This method " "runs faster than [method length]." msgstr "" @@ -105263,6 +117351,20 @@ msgstr "" "法返回 [constant AXIS_W]。" msgid "" +"Returns a new vector composed of the [method @GlobalScope.fposmod] of this " +"vector's components and [param mod]." +msgstr "" +"返回新的向量,由这个向量的分量和 [param mod] 进行 [method @GlobalScope." +"fposmod] 构成。" + +msgid "" +"Returns a new vector composed of the [method @GlobalScope.fposmod] of this " +"vector's components and [param modv]'s components." +msgstr "" +"返回新的向量,由这个向量的分量和 [param modv] 的分量进行 [method " +"@GlobalScope.fposmod] 构成。" + +msgid "" "The vector's W component. Also accessible by using the index position [code]" "[3][/code]." msgstr "该向量的 W 分量。也可以通过使用索引位置 [code][3][/code] 访问。" @@ -105274,6 +117376,11 @@ msgstr "" "W 轴的枚举值。由 [method max_axis_index] 和 [method min_axis_index] 返回。" msgid "" +"Inversely transforms (multiplies) the [Vector4] by the given [Projection] " +"matrix." +msgstr "使用给定的 [Projection] 矩阵对该 [Vector4] 进行逆变换(相乘)。" + +msgid "" "Multiplies each component of the [Vector4] by the components of the given " "[Vector4].\n" "[codeblock]\n" @@ -105411,6 +117518,16 @@ msgstr "" "[code]v.x[/code],[code]v[1][/code] 等价于 [code]v.y[/code],[code]v[2][/" "code] 等价于 [code]v.z[/code],[code]v[3][/code] 等价于 [code]v.w[/code]。" +msgid "" +"Returns the negative value of the [Vector4]. This is the same as writing " +"[code]Vector4(-v.x, -v.y, -v.z, -v.w)[/code]. This operation flips the " +"direction of the vector while keeping the same magnitude. With floats, the " +"number zero can be either positive or negative." +msgstr "" +"返回该 [Vector4] 的负值。和写 [code]Vector4(-v.x, -v.y, -v.z, -v.w)[/code] 是" +"一样的。该操作在保持相同幅度的同时,翻转向量的方向。对于浮点数,零也有正负两" +"种。" + msgid "Vector used for 4D math using integer coordinates." msgstr "整数坐标向量,用于 4D 数学。" @@ -105435,13 +117552,45 @@ msgstr "构造默认初始化的 [Vector4i],所有分量都为 [code]0[/code] msgid "Constructs a [Vector4i] as a copy of the given [Vector4i]." msgstr "构造给定 [Vector4i] 的副本。" -msgid "Constructs a new [Vector4i] from the given [Vector4]." -msgstr "从给定的 [Vector4] 构造新的 [Vector4i]。" - msgid "Returns a [Vector4i] with the given components." msgstr "返回具有给定分量的 [Vector4i]。" msgid "" +"Gets the remainder of each component of the [Vector4i] with the components " +"of the given [Vector4i]. This operation uses truncated division, which is " +"often not desired as it does not work well with negative numbers. Consider " +"using [method @GlobalScope.posmod] instead if you want to handle negative " +"numbers.\n" +"[codeblock]\n" +"print(Vector4i(10, -20, 30, -40) % Vector4i(7, 8, 9, 10)) # Prints \"(3, " +"-4, 3, 0)\"\n" +"[/codeblock]" +msgstr "" +"获取该 [Vector4i] 的每个分量与给定 [Vector4i] 中分量的余数。这个运算使用的是" +"截断式除法,因为对负数不友好,所以通常不会想要使用。如果你想要处理负数,请考" +"虑改用 [method @GlobalScope.posmod]。\n" +"[codeblock]\n" +"print(Vector4i(10, -20, 30, -40) % Vector4i(7, 8, 9, 10)) # 输出 \"(3, -4, " +"3, 0)\"\n" +"[/codeblock]" + +msgid "" +"Gets the remainder of each component of the [Vector4i] with the the given " +"[int]. This operation uses truncated division, which is often not desired as " +"it does not work well with negative numbers. Consider using [method " +"@GlobalScope.posmod] instead if you want to handle negative numbers.\n" +"[codeblock]\n" +"print(Vector4i(10, -20, 30, -40) % 7) # Prints \"(3, -6, 2, -5)\"\n" +"[/codeblock]" +msgstr "" +"获取该 [Vector4i] 的每个分量与给定的 [int] 的余数。这个运算使用的是截断式除" +"法,因为对负数不友好,所以通常不会想要使用。如果你想要处理负数,请考虑改用 " +"[method @GlobalScope.posmod]。\n" +"[codeblock]\n" +"print(Vector4i(10, -20, 30, -40) % 7) # 输出 \"(3, -6, 2, -5)\"\n" +"[/codeblock]" + +msgid "" "Multiplies each component of the [Vector4i] by the components of the given " "[Vector4i].\n" "[codeblock]\n" @@ -105576,6 +117725,14 @@ msgstr "" "量的 X 值。如果 X 值完全相等,则用相同的方法检查两个向量的 Y 值、Z 值、W 值。" "该运算符可用于向量排序。" +msgid "" +"Returns the negative value of the [Vector4i]. This is the same as writing " +"[code]Vector4i(-v.x, -v.y, -v.z, -v.w)[/code]. This operation flips the " +"direction of the vector while keeping the same magnitude." +msgstr "" +"返回该 [Vector4i] 的负值。和写 [code]Vector4i(-v.x, -v.y, -v.z, -v.w)[/code] " +"是一样的。这个运算会翻转向量方向,同时保持长度不变。" + msgid "Physics body that simulates the behavior of a car." msgstr "模拟汽车行为的物理体。" @@ -105615,6 +117772,35 @@ msgstr "" "(即在所有轴上相同),并改为更改其碰撞形状的大小。" msgid "" +"Slows down the vehicle by applying a braking force. The vehicle is only " +"slowed down if the wheels are in contact with a surface. The force you need " +"to apply to adequately slow down your vehicle depends on the [member " +"RigidBody3D.mass] of the vehicle. For a vehicle with a mass set to 1000, try " +"a value in the 25 - 30 range for hard braking." +msgstr "" +"通过施加一个制动力使车辆减速。只有当车轮接触到表面时,车辆才会减速。使车辆充" +"分减速所需的力,取决于车辆的 [member RigidBody3D.mass]。对于一个质量被设置为 " +"1000 的车辆,尝试使用 25 - 30 范围内的值进行紧急制动。" + +msgid "" +"Accelerates the vehicle by applying an engine force. The vehicle is only " +"sped up if the wheels that have [member VehicleWheel3D.use_as_traction] set " +"to [code]true[/code] and are in contact with a surface. The [member " +"RigidBody3D.mass] of the vehicle has an effect on the acceleration of the " +"vehicle. For a vehicle with a mass set to 1000, try a value in the 25 - 50 " +"range for acceleration.\n" +"[b]Note:[/b] The simulation does not take the effect of gears into account, " +"you will need to add logic for this if you wish to simulate gears.\n" +"A negative value will result in the vehicle reversing." +msgstr "" +"通过施加一个引擎力来加速车辆。只有当 [member VehicleWheel3D.use_as_traction] " +"被设置为 [code]true[/code] 的车轮与表面接触时,车辆才会加速。车辆的 [member " +"RigidBody3D.mass] 对车辆的加速度有影响。对于质量被设置为 1000 的车辆,请尝试" +"使用 25 - 50 范围内的加速度值。\n" +"[b]注意:[/b]模拟没有考虑齿轮的影响,如果想要模拟齿轮,需要为其添加逻辑。\n" +"负值将导致车辆倒车。" + +msgid "" "The steering angle for the vehicle. Setting this to a non-zero value will " "result in the vehicle turning when it's moving. Wheels that have [member " "VehicleWheel3D.use_as_steering] set to [code]true[/code] will automatically " @@ -105630,6 +117816,32 @@ msgstr "" msgid "Physics object that simulates the behavior of a wheel." msgstr "模拟车轮行为的物理对象。" +msgid "" +"This node needs to be used as a child node of [VehicleBody3D] and simulates " +"the behavior of one of its wheels. This node also acts as a collider to " +"detect if the wheel is touching a surface.\n" +"[b]Note:[/b] This class has known issues and isn't designed to provide " +"realistic 3D vehicle physics. If you want advanced vehicle physics, you will " +"probably have to write your own physics integration using another " +"[PhysicsBody3D] class." +msgstr "" +"该节点需要用作 [VehicleBody3D] 的一个子节点并模拟其中一个车轮的行为。该节点还" +"充当碰撞器以检测轮子是否接触表面。\n" +"[b]注意:[/b]该类存在已知问题,并非旨在提供逼真的 3D 车辆物理效果。如果想要高" +"级车辆物理,可能必须使用另一个 [PhysicsBody3D] 类来编写自己的物理积分函数。" + +msgid "" +"Returns the contacting body node if valid in the tree, as [Node3D]. At the " +"moment, [GridMap] is not supported so the node will be always of type " +"[PhysicsBody3D].\n" +"Returns [code]null[/code] if the wheel is not in contact with a surface, or " +"the contact body is not a [PhysicsBody3D]." +msgstr "" +"如果接触的实体节点在树中有效,则返回接触的实体节点,如 [Node3D]。目前,不支" +"持 [GridMap],因此该节点将始终为 [PhysicsBody3D] 类型。\n" +"如果车轮没有与表面接触,或者接触的实体不是 [PhysicsBody3D],则返回 " +"[code]null[/code]。" + msgid "Returns the rotational speed of the wheel in revolutions per minute." msgstr "返回轮子的旋转速度,单位为每分钟转数。" @@ -105646,6 +117858,17 @@ msgid "Returns [code]true[/code] if this wheel is in contact with a surface." msgstr "如果轮子与表面接触,返回 [code]true[/code]。" msgid "" +"Slows down the wheel by applying a braking force. The wheel is only slowed " +"down if it is in contact with a surface. The force you need to apply to " +"adequately slow down your vehicle depends on the [member RigidBody3D.mass] " +"of the vehicle. For a vehicle with a mass set to 1000, try a value in the 25 " +"- 30 range for hard braking." +msgstr "" +"通过施加制动力使车轮减速。车轮只有在与表面接触时才会减速。使车辆充分减速所需" +"的力,取决于车辆的 [member RigidBody3D.mass]。对于质量被设置为 1000 的车辆," +"尝试使用 25 - 30 范围内的值进行紧急制动。" + +msgid "" "The damping applied to the spring when the spring is being compressed. This " "value should be between 0.0 (no damping) and 1.0. A value of 0.0 means the " "car will keep bouncing as the spring keeps its energy. A good value for this " @@ -105666,6 +117889,36 @@ msgstr "" "damping_compression] 值 0.3,尝试放松值为 0.5。" msgid "" +"Accelerates the wheel by applying an engine force. The wheel is only sped up " +"if it is in contact with a surface. The [member RigidBody3D.mass] of the " +"vehicle has an effect on the acceleration of the vehicle. For a vehicle with " +"a mass set to 1000, try a value in the 25 - 50 range for acceleration.\n" +"[b]Note:[/b] The simulation does not take the effect of gears into account, " +"you will need to add logic for this if you wish to simulate gears.\n" +"A negative value will result in the wheel reversing." +msgstr "" +"通过施加引擎力使车轮加速。车轮只有在与表面接触时才会加速。车辆的 [member " +"RigidBody3D.mass] 对车辆的加速度有影响。对于质量被设置为 1000 的车辆,请尝试" +"使用 25 - 50 范围内的加速度值。\n" +"[b]注意:[/b]模拟没有考虑齿轮的影响,如果想要模拟齿轮,需要为其添加逻辑。\n" +"负值将导致车轮倒转。" + +msgid "" +"The steering angle for the wheel, in radians. Setting this to a non-zero " +"value will result in the vehicle turning when it's moving." +msgstr "车轮的转向角,单位:弧度。将该属性设置为非零值将导致车辆在移动时转向。" + +msgid "" +"The maximum force the spring can resist. This value should be higher than a " +"quarter of the [member RigidBody3D.mass] of the [VehicleBody3D] or the " +"spring will not carry the weight of the vehicle. Good results are often " +"obtained by a value that is about 3× to 4× this number." +msgstr "" +"弹簧所能承受的最大力。该值应高于 [VehicleBody3D] 的 [member RigidBody3D." +"mass] 的四分之一,否则该弹簧无法承载车辆的重量。大约 3 到 4 倍这个数字的值通" +"常会获得良好的结果。" + +msgid "" "This value defines the stiffness of the suspension. Use a value lower than " "50 for an off-road car, a value between 50 and 100 for a race car and try " "something around 200 for something like a Formula 1 car." @@ -105682,6 +117935,25 @@ msgstr "" "根据汽车的类型,试试 0.1 和 0.3 之间的值。" msgid "" +"If [code]true[/code], this wheel will be turned when the car steers. This " +"value is used in conjunction with [member VehicleBody3D.steering] and " +"ignored if you are using the per-wheel [member steering] value instead." +msgstr "" +"如果为 [code]true[/code],当汽车转向时这个轮子会转动。该值与 [member " +"VehicleBody3D.steering] 结合使用,如果使用的是各个车轮的 [member steering] " +"值,则该值将被忽略。" + +msgid "" +"If [code]true[/code], this wheel transfers engine force to the ground to " +"propel the vehicle forward. This value is used in conjunction with [member " +"VehicleBody3D.engine_force] and ignored if you are using the per-wheel " +"[member engine_force] value instead." +msgstr "" +"如果为 [code]true[/code],该车轮会将引擎力传递到地面以推动车辆前进。该值与 " +"[member VehicleBody3D.engine_force] 结合使用,如果使用的是各个车轮的 [member " +"engine_force] 值,则该值将被忽略。" + +msgid "" "This determines how much grip this wheel has. It is combined with the " "friction setting of the surface the wheel is in contact with. 0.0 means no " "grip, 1.0 is normal grip. For a drift car setup, try setting the grip of the " @@ -105781,6 +118053,11 @@ msgid "Returns the paused status, as set by [method _set_paused]." msgstr "返回暂停状态,由 [method _set_paused] 设置。" msgid "" +"Returns the playback state, as determined by calls to [method _play] and " +"[method _stop]." +msgstr "返回由调用 [method _play] 和 [method _stop] 决定的播放状态。" + +msgid "" "Called in response to [member VideoStreamPlayer.autoplay] or [method " "VideoStreamPlayer.play]. Note that manual playback may also invoke [method " "_stop] multiple times before this method is called. [method _is_playing] " @@ -105834,8 +118111,8 @@ msgid "" "error." msgstr "" "从数组中的索引 [code]offset[/code] 开始,从 [code]buffer[/code] 渲染 " -"[code]num_frames[/code] 个音频帧(每帧 [method_get_channels] 个浮点数)。返回" -"渲染的音频帧数,如果出错则返回 -1。" +"[code]num_frames[/code] 个音频帧(每帧 [method _get_channels] 个浮点数)。返" +"回渲染的音频帧数,如果出错则返回 -1。" msgid "Control for playing video streams." msgstr "用于播放视频流的控件。" @@ -105912,6 +118189,15 @@ msgstr "如果为 [code]true[/code],则暂停视频。" msgid "The assigned video stream. See description for supported formats." msgstr "指定的视频流。支持的格式见描述。" +msgid "" +"The current position of the stream, in seconds.\n" +"[b]Note:[/b] Changing this value won't have any effect as seeking is not " +"implemented yet, except in video formats implemented by a GDExtension add-on." +msgstr "" +"流的当前位置,单位:秒。\n" +"[b]注意:[/b]更改此值不会产生任何影响,因为除了由 GDExtension 插件实现的视频" +"格式,搜索定位尚未被实现。" + msgid "Audio volume as a linear value." msgstr "音频音量为线性值。" @@ -105924,6 +118210,19 @@ msgstr "播放结束时触发。" msgid "[VideoStream] resource for Ogg Theora videos." msgstr "[VideoStream] Ogg Theora 视频的资源。" +msgid "" +"[VideoStream] resource handling the [url=https://www.theora.org/]Ogg Theora[/" +"url] video format with [code].ogv[/code] extension. The Theora codec is " +"decoded on the CPU.\n" +"[b]Note:[/b] While Ogg Theora videos can also have an [code].ogg[/code] " +"extension, you will have to rename the extension to [code].ogv[/code] to use " +"those videos within Godot." +msgstr "" +"[VideoStream] 资源处理带有 [code].ogv[/code] 扩展名的 [url=https://www." +"theora.org/]Ogg Theora[/url] 视频格式。Theora 编解码器在 CPU 上进行解码。\n" +"[b]注意:[/b]虽然 Ogg Theora 视频也可以具有一个 [code].ogg[/code] 扩展名,但" +"必须将该扩展名重命名为 [code].ogv[/code],才能在 Godot 中使用这些视频。" + msgid "Base class for viewports." msgstr "视口的基类。" @@ -105990,6 +118289,12 @@ msgid "" msgstr "返回指定象限的 [enum PositionalShadowAtlasQuadrantSubdiv]。" msgid "" +"Returns rendering statistics of the given type. See [enum RenderInfoType] " +"and [enum RenderInfo] for options." +msgstr "" +"返回给定类型的渲染统计。选项见 [enum RenderInfoType] 和 [enum RenderInfo]。" + +msgid "" "Returns the transform from the Viewport's coordinates to the screen " "coordinates of the containing window manager window." msgstr "返回从视口的坐标到包含窗口管理器窗口的屏幕坐标的变换。" @@ -106055,6 +118360,104 @@ msgstr "" "不做。" msgid "" +"Returns whether the current [InputEvent] has been handled. Input events are " +"not handled until [method set_input_as_handled] has been called during the " +"lifetime of an [InputEvent].\n" +"This is usually done as part of input handling methods like [method Node." +"_input], [method Control._gui_input] or others, as well as in corresponding " +"signal handlers.\n" +"If [member handle_input_locally] is set to [code]false[/code], this method " +"will try finding the first parent viewport that is set to handle input " +"locally, and return its value for [method is_input_handled] instead." +msgstr "" +"返回当前的 [InputEvent] 是否已被处理。在 [InputEvent] 生命周期中调用 [method " +"set_input_as_handled] 前,输入事件都处于未处理状态。\n" +"通常作为 [method Node._input]、[method Control._gui_input] 等输入处理方法以及" +"对应的信号处理函数的一部分来实现。\n" +"如果 [member handle_input_locally] 为 [code]false[/code],则这个方法会尝试查" +"找第一个本地处理输入的父级视口,并返回该视口的 [method is_input_handled]。" + +msgid "" +"Triggers the given [param event] in this [Viewport]. This can be used to " +"pass an [InputEvent] between viewports, or to locally apply inputs that were " +"sent over the network or saved to a file.\n" +"If [param in_local_coords] is [code]false[/code], the event's position is in " +"the embedder's coordinates and will be converted to viewport coordinates. If " +"[param in_local_coords] is [code]true[/code], the event's position is in " +"viewport coordinates.\n" +"While this method serves a similar purpose as [method Input." +"parse_input_event], it does not remap the specified [param event] based on " +"project settings like [member ProjectSettings.input_devices/pointing/" +"emulate_touch_from_mouse].\n" +"Calling this method will propagate calls to child nodes for following " +"methods in the given order:\n" +"- [method Node._input]\n" +"- [method Control._gui_input] for [Control] nodes\n" +"If an earlier method marks the input as handled via [method " +"set_input_as_handled], any later method in this list will not be called." +msgstr "" +"在这个 [Viewport] 中触发给定的 [InputEvent]。可用于在视口之间传递输入事件,或" +"者在局部应用通过网络发送或保存至文件的输入。\n" +"如果 [param in_local_coords] 为 [code]false[/code],则事件的位置使用嵌入器的" +"坐标,会被转换为视口坐标。如果 [param in_local_coords] 为 [code]true[/code]," +"则事件的位置使用视口坐标。\n" +"虽然这个方法的功能和 [method Input.parse_input_event] 类似,但是不会根据 " +"[member ProjectSettings.input_devices/pointing/emulate_touch_from_mouse] 等项" +"目设置去重映射指定的 [param event]。\n" +"调用这个方法会将调用传播至子节点,调用的方法依次为:\n" +"- [method Node._input]\n" +"- [Control] 节点的 [method Control._gui_input]\n" +"如果有方法使用 [method set_input_as_handled] 将输入标记为已处理,则不会再调用" +"列表中的后续方法。" + +msgid "" +"Helper method which calls the [code]set_text()[/code] method on the " +"currently focused [Control], provided that it is defined (e.g. if the " +"focused Control is [Button] or [LineEdit])." +msgstr "" +"辅助方法,会调用当前聚焦 [Control] 的 [code]set_text()[/code] 方法,前提是该" +"控件上定义了这个方法(例如聚焦 Control 为 [Button] 或 [LineEdit])。" + +msgid "" +"Triggers the given [InputEvent] in this [Viewport]. This can be used to pass " +"input events between viewports, or to locally apply inputs that were sent " +"over the network or saved to a file.\n" +"If [param in_local_coords] is [code]false[/code], the event's position is in " +"the embedder's coordinates and will be converted to viewport coordinates. If " +"[param in_local_coords] is [code]true[/code], the event's position is in " +"viewport coordinates.\n" +"While this method serves a similar purpose as [method Input." +"parse_input_event], it does not remap the specified [param event] based on " +"project settings like [member ProjectSettings.input_devices/pointing/" +"emulate_touch_from_mouse].\n" +"Calling this method will propagate calls to child nodes for following " +"methods in the given order:\n" +"- [method Node._shortcut_input]\n" +"- [method Node._unhandled_input]\n" +"- [method Node._unhandled_key_input]\n" +"If an earlier method marks the input as handled via [method " +"set_input_as_handled], any later method in this list will not be called.\n" +"If none of the methods handle the event and [member physics_object_picking] " +"is [code]true[/code], the event is used for physics object picking." +msgstr "" +"在这个 [Viewport] 中触发给定的 [InputEvent]。可用于在视口之间传递输入事件,或" +"者在局部应用通过网络发送或保存至文件的输入。\n" +"如果 [param in_local_coords] 为 [code]false[/code],则事件的位置使用嵌入器的" +"坐标,会被转换为视口坐标。如果 [param in_local_coords] 为 [code]true[/code]," +"则事件的位置使用视口坐标。\n" +"虽然这个方法的功能和 [method Input.parse_input_event] 类似,但是不会根据 " +"[member ProjectSettings.input_devices/pointing/emulate_touch_from_mouse] 等项" +"目设置去重映射指定的 [param event]。\n" +"调用这个方法会将调用传播至子节点,调用的方法依次为:\n" +"- [method Node._shortcut_input]\n" +"- [method Node._unhandled_input]\n" +"- [method Node._unhandled_key_input]\n" +"如果有方法使用 [method set_input_as_handled] 将输入标记为已处理,则不会再调用" +"列表中的后续方法。\n" +"如果上述方法没有处理事件,而 [member physics_object_picking] 为 [code]true[/" +"code],则该事件会用于物理对象拾取。" + +msgid "" "Set/clear individual bits on the rendering layer mask. This simplifies " "editing this [Viewport]'s layers." msgstr "设置或清除碰撞掩码上的比特位。可以简化 [Viewport] 层的编辑。" @@ -106122,6 +118525,18 @@ msgid "Disable 3D rendering (but keep 2D rendering)." msgstr "禁用 3D 渲染(但保留 2D 渲染)。" msgid "" +"Determines how sharp the upscaled image will be when using the FSR upscaling " +"mode. Sharpness halves with every whole number. Values go from 0.0 " +"(sharpest) to 2.0. Values above 2.0 won't make a visible difference.\n" +"To control this property on the root viewport, set the [member " +"ProjectSettings.rendering/scaling_3d/fsr_sharpness] project setting." +msgstr "" +"确定使用 FSR 放大模式时,放大后的图像的锐度。每个整数的锐度减半。值从 0.0(最" +"锐利)到 2.0。高于 2.0 的值不会产生明显的差异。\n" +"要在根视口上控制此属性,请设置 [member ProjectSettings.rendering/scaling_3d/" +"fsr_sharpness] 项目设置。" + +msgid "" "The global canvas transform of the viewport. The canvas transform is " "relative to this." msgstr "该视口的全局画布变换。画布变换是相对于这个的。" @@ -106144,6 +118559,67 @@ msgid "" msgstr "如果为 [code]true[/code],该视口上的 GUI 控件将完美地放置像素。" msgid "" +"If [code]true[/code], this viewport will mark incoming input events as " +"handled by itself. If [code]false[/code], this is instead done by the the " +"first parent viewport that is set to handle input locally.\n" +"A [SubViewportContainer] will automatically set this property to " +"[code]false[/code] for the [Viewport] contained inside of it.\n" +"See also [method set_input_as_handled] and [method is_input_handled]." +msgstr "" +"如果为 [code]true[/code],则这个视口会把收到的输入事件标记为已被自身处理。如" +"果为 [code]false[/code],则由第一个设置本地处理输入的父级视口进行这样的操" +"作。\n" +"[SubViewportContainer] 会自动将其包含的 [Viewport] 的这个属性设置为 " +"[code]false[/code]。\n" +"另见 [method set_input_as_handled] 和 [method is_input_handled]。" + +msgid "" +"The automatic LOD bias to use for meshes rendered within the [Viewport] " +"(this is analogous to [member ReflectionProbe.mesh_lod_threshold]). Higher " +"values will use less detailed versions of meshes that have LOD variations " +"generated. If set to [code]0.0[/code], automatic LOD is disabled. Increase " +"[member mesh_lod_threshold] to improve performance at the cost of geometry " +"detail.\n" +"To control this property on the root viewport, set the [member " +"ProjectSettings.rendering/mesh_lod/lod_change/threshold_pixels] project " +"setting.\n" +"[b]Note:[/b] [member mesh_lod_threshold] does not affect " +"[GeometryInstance3D] visibility ranges (also known as \"manual\" LOD or " +"hierarchical LOD)." +msgstr "" +"用于在 [Viewport] 中渲染的网格的自动 LOD 偏置(类似于 [member " +"ReflectionProbe.mesh_lod_threshold])。较高的值将使用生成了 LOD 变化的网格的" +"较不详细版本。如果被设置为 [code]0.0[/code],则自动 LOD 将被禁用。增加 " +"[member mesh_lod_threshold],以牺牲几何细节为代价提高性能。\n" +"要在根视口上控制该属性,请设置 [member ProjectSettings.rendering/mesh_lod/" +"lod_change/threshold_pixels] 项目设置。\n" +"[b]注意:[/b][member mesh_lod_threshold] 不影响 [GeometryInstance3D] 可见性范" +"围(也称为“手动”LOD 或分层 LOD)。" + +msgid "" +"The multisample anti-aliasing mode for 2D/Canvas rendering. A higher number " +"results in smoother edges at the cost of significantly worse performance. A " +"value of 2 or 4 is best unless targeting very high-end systems. This has no " +"effect on shader-induced aliasing or texture aliasing." +msgstr "" +"2D/画布渲染的多重采样抗锯齿模式。数字越高,得到的边缘越平滑,代价是性能也会显" +"著降低。设为 2 或 4 为佳,除非目标是非常高端的系统。对由着色器或纹理导致的锯" +"齿无效。" + +msgid "" +"The multisample anti-aliasing mode for 3D rendering. A higher number results " +"in smoother edges at the cost of significantly worse performance. A value of " +"2 or 4 is best unless targeting very high-end systems. See also bilinear " +"scaling 3d [member scaling_3d_mode] for supersampling, which provides higher " +"quality but is much more expensive. This has no effect on shader-induced " +"aliasing or texture aliasing." +msgstr "" +"3D 渲染的多重采样抗锯齿模式。数字越高,得到的边缘越平滑,代价是性能也会显著降" +"低。设为 2 或 4 为佳,除非目标是非常高端的系统。另请参阅 3D 的双线性缩放 " +"[member scaling_3d_mode] 实现超采样,能够提供更高的质量,但消耗也更高。对由着" +"色器或纹理导致的锯齿无效。" + +msgid "" "If [code]true[/code], the viewport will use a unique copy of the [World3D] " "defined in [member world_3d]." msgstr "" @@ -106190,6 +118666,93 @@ msgstr "" "影)。" msgid "" +"Sets scaling 3d mode. Bilinear scaling renders at different resolution to " +"either undersample or supersample the viewport. FidelityFX Super Resolution " +"1.0, abbreviated to FSR, is an upscaling technology that produces high " +"quality images at fast framerates by using a spatially aware upscaling " +"algorithm. FSR is slightly more expensive than bilinear, but it produces " +"significantly higher image quality. FSR should be used where possible.\n" +"To control this property on the root viewport, set the [member " +"ProjectSettings.rendering/scaling_3d/mode] project setting." +msgstr "" +"设置缩放 3D 模式。双线性缩放会以不同的分辨率进行渲染,对视口进行欠采样或超采" +"样。FidelityFX Super Resolution 1.0,缩写为 FSR,是一种放大技术,通过使用一种" +"空间感知放大算法,以快速帧速率生成高质量图像。FSR 比双线性的性能消耗略高一" +"些,但产生的图像质量却高得多。应尽可能使用 FSR。\n" +"要在根视口上控制这个属性,请使用项目设置 [member ProjectSettings.rendering/" +"scaling_3d/mode]。" + +msgid "" +"Scales the 3D render buffer based on the viewport size uses an image filter " +"specified in [member ProjectSettings.rendering/scaling_3d/mode] to scale the " +"output image to the full viewport size. Values lower than [code]1.0[/code] " +"can be used to speed up 3D rendering at the cost of quality (undersampling). " +"Values greater than [code]1.0[/code] are only valid for bilinear mode and " +"can be used to improve 3D rendering quality at a high performance cost " +"(supersampling). See also [member ProjectSettings.rendering/anti_aliasing/" +"quality/msaa_3d] for multi-sample antialiasing, which is significantly " +"cheaper but only smooths the edges of polygons.\n" +"When using FSR upscaling, AMD recommends exposing the following values as " +"preset options to users \"Ultra Quality: 0.77\", \"Quality: 0.67\", " +"\"Balanced: 0.59\", \"Performance: 0.5\" instead of exposing the entire " +"scale.\n" +"To control this property on the root viewport, set the [member " +"ProjectSettings.rendering/scaling_3d/scale] project setting." +msgstr "" +"根据视口大小缩放 3D 渲染缓冲区,使用 [member ProjectSettings.rendering/" +"scaling_3d/mode] 中指定的图像过滤器将输出图像缩放到完整的视口大小。比 " +"[code]1.0[/code] 小的值可以牺牲质量加速 3D 渲染(欠采样)。比 [code]1.0[/" +"code] 大的值仅在双线性模式下可用,可以提升 3D 渲染质量,但性能消耗较高(超采" +"样)。另见多重采样抗锯齿 [member ProjectSettings.rendering/anti_aliasing/" +"quality/msaa_3d],性能消耗明显更低,但只会对多边形的边缘进行平滑。\n" +"使用 FSR 放大时,AMD 推荐将以下值作为预设选项暴露给用户“极致质量:0.77”“质" +"量:0.67”“平衡:0.59”“性能:0.5”,不暴露特定的缩放值。\n" +"要在根视口上控制这个属性,请使用项目设置 [member ProjectSettings.rendering/" +"scaling_3d/scale]。" + +msgid "" +"Sets the screen-space antialiasing method used. Screen-space antialiasing " +"works by selectively blurring edges in a post-process shader. It differs " +"from MSAA which takes multiple coverage samples while rendering objects. " +"Screen-space AA methods are typically faster than MSAA and will smooth out " +"specular aliasing, but tend to make scenes appear blurry." +msgstr "" +"设置使用的屏幕空间抗锯齿方法。屏幕空间抗锯齿的原理是在后期处理着色器中选择性" +"地模糊边缘。它与 MSAA 不同,后者在渲染对象时采用多个覆盖样本。屏幕空间抗锯齿" +"方法通常比 MSAA 更快,并且会平滑高光锯齿,但往往会使场景显得模糊。" + +msgid "" +"Affects the final texture sharpness by reading from a lower or higher mipmap " +"(also called \"texture LOD bias\"). Negative values make mipmapped textures " +"sharper but grainier when viewed at a distance, while positive values make " +"mipmapped textures blurrier (even when up close).\n" +"Enabling temporal antialiasing ([member use_taa]) will automatically apply a " +"[code]-0.5[/code] offset to this value, while enabling FXAA ([member " +"screen_space_aa]) will automatically apply a [code]-0.25[/code] offset to " +"this value. If both TAA and FXAA are enbled at the same time, an offset of " +"[code]-0.75[/code] is applied to this value.\n" +"[b]Note:[/b] If [member scaling_3d_scale] is lower than [code]1.0[/code] " +"(exclusive), [member texture_mipmap_bias] is used to adjust the automatic " +"mipmap bias which is calculated internally based on the scale factor. The " +"formula for this is [code]log2(scaling_3d_scale) + mipmap_bias[/code].\n" +"To control this property on the root viewport, set the [member " +"ProjectSettings.rendering/textures/default_filters/texture_mipmap_bias] " +"project setting." +msgstr "" +"通过从更低或更高的 mipmap 中读取数据影响最终纹理的锐度(也叫“纹理 LOD 偏" +"置”)。负值会让 mipmap 纹理更锐利,但从较远处观察时颗粒更明显,而正值会让 " +"mipmap 纹理更模糊(即便凑近看也一样)。\n" +"启用时间抗锯齿([member use_taa])会对这个值应用 [code]-0.5[/code] 的偏移量," +"而启用 FXAA([member screen_space_aa])则会对这个值应用 [code]-0.25[/code] 的" +"偏移量。如果同时启用 TAA 和 FXAA,则会对这个值应用 [code]-0.75[/code] 的偏移" +"量。\n" +"[b]注意:[/b]如果 [member scaling_3d_scale] 比 [code]1.0[/code] 小(包含)," +"则会使用 [member texture_mipmap_bias] 自动调整 mipmap 偏置,内部会根据缩放系" +"数进行计算。公式为 [code]log2(scaling_3d_scale) + mipmap_bias[/code]。\n" +"要在根视口上控制这个属性,请使用项目设置 [member ProjectSettings.rendering/" +"textures/default_filters/texture_mipmap_bias]。" + +msgid "" "If [code]true[/code], the viewport should render its background as " "transparent." msgstr "如果为 [code]true[/code],该视口应使其背景渲染为透明。" @@ -106206,12 +118769,54 @@ msgid "" msgstr "" "如果为 [code]true[/code],则使用一个快速的后期处理滤镜,使 3D 的带状现象明显" "减少。除非 [member Environment.background_mode] 为 [constant Environment." -"BG_CANVAS],否则 2D 渲染[i]不会 [/i]受到去条带的影响。另见 [member " +"BG_CANVAS],否则 2D 渲染[i]不会[/i]受到去条带的影响。另见 [member " "ProjectSettings.rendering/anti_aliasing/quality/use_debanding]。\n" "在某些情况下,去条带可能会引入稍微明显的抖动图案。建议仅在实际需要时才启用去" "条带,因为抖动图案会使无损压缩的屏幕截图变大。" msgid "" +"If [code]true[/code], [OccluderInstance3D] nodes will be usable for " +"occlusion culling in 3D for this viewport. For the root viewport, [member " +"ProjectSettings.rendering/occlusion_culling/use_occlusion_culling] must be " +"set to [code]true[/code] instead.\n" +"[b]Note:[/b] Enabling occlusion culling has a cost on the CPU. Only enable " +"occlusion culling if you actually plan to use it, and think whether your " +"scene can actually benefit from occlusion culling. Large, open scenes with " +"few or no objects blocking the view will generally not benefit much from " +"occlusion culling. Large open scenes generally benefit more from mesh LOD " +"and visibility ranges ([member GeometryInstance3D.visibility_range_begin] " +"and [member GeometryInstance3D.visibility_range_end]) compared to occlusion " +"culling." +msgstr "" +"如果为 [code]true[/code],[OccluderInstance3D] 节点将被用于该视口中的 3D 遮挡" +"剔除。对于根视口,[member ProjectSettings.rendering/occlusion_culling/" +"use_occlusion_culling] 必须改为被设置为 [code]true[/code]。\n" +"[b]注意:[/b]启用遮挡剔除会消耗一定的 CPU。仅当确实打算使用遮挡剔除时才启用" +"它,并考虑场景是否真的可以从遮挡剔除中受益。具有很少或没有对象阻挡视图的大型" +"开放场景,通常不会从遮挡剔除中受益更多。与遮挡剔除相比,大型开放场景通常从网" +"格 LOD 和可见性范围([member GeometryInstance3D.visibility_range_begin] 和 " +"[member GeometryInstance3D.visibility_range_end])中受益更多。" + +msgid "" +"Enables Temporal Anti-Aliasing for this viewport. TAA works by jittering the " +"camera and accumulating the images of the last rendered frames, motion " +"vector rendering is used to account for camera and object motion.\n" +"[b]Note:[/b] The implementation is not complete yet, some visual instances " +"such as particles and skinned meshes may show artifacts." +msgstr "" +"为该视口启用时间抗锯齿。TAA 通过抖动相机并累积最后渲染帧的图像来工作,运动向" +"量渲染被用于解释相机和对象的运动。\n" +"[b]注意:[/b]实现尚未完成,一些可视实例,如粒子和蒙皮网格可能会出现伪影。" + +msgid "" +"If [code]true[/code], the viewport will use the primary XR interface to " +"render XR output. When applicable this can result in a stereoscopic image " +"and the resulting render being output to a headset." +msgstr "" +"如果为 [code]true[/code],则视口将使用主 XR 接口来渲染 XR 输出。如果适用,这" +"可以得到立体图像,渲染结果会输出到头戴设备。" + +msgid "" "The Variable Rate Shading (VRS) mode that is used for this viewport. Note, " "if hardware does not support VRS this property is ignored." msgstr "" @@ -106392,9 +118997,51 @@ msgstr "代表 [enum RenderInfo] 枚举的大小。" msgid "Objects are displayed normally." msgstr "对象正常显示。" +msgid "" +"Objects are displayed semi-transparent with additive blending so you can see " +"where they are drawing over top of one another. A higher overdraw means you " +"are wasting performance on drawing pixels that are being hidden behind " +"others." +msgstr "" +"对象通过加法混合显示为半透明,因此可以看到它们在彼此之上绘制的位置。更高的过" +"度绘制意味着在绘制隐藏在其他像素后面的像素时浪费了性能。" + msgid "Objects are displayed in wireframe style." msgstr "对象以线框风格显示。" +msgid "" +"Draws the screen-space ambient occlusion texture instead of the scene so " +"that you can clearly see how it is affecting objects. In order for this " +"display mode to work, you must have [member Environment.ssao_enabled] set in " +"your [WorldEnvironment]." +msgstr "" +"绘制屏幕空间环境光遮蔽纹理而不是场景,以便可以清楚地看到它是如何影响对象的。" +"为了使该显示模式起作用,必须在 [WorldEnvironment] 中设置 [member Environment." +"ssao_enabled]。" + +msgid "" +"Draws the screen-space indirect lighting texture instead of the scene so " +"that you can clearly see how it is affecting objects. In order for this " +"display mode to work, you must have [member Environment.ssil_enabled] set in " +"your [WorldEnvironment]." +msgstr "" +"绘制屏幕空间间接照明纹理而不是场景,以便可以清楚地看到它是如何影响对象的。为" +"了使该显示模式起作用,必须在 [WorldEnvironment] 中设置 [member Environment." +"ssil_enabled]。" + +msgid "" +"Colors each PSSM split for the [DirectionalLight3D]s in the scene a " +"different color so you can see where the splits are. In order, they will be " +"colored red, green, blue, and yellow." +msgstr "" +"为场景中的 [DirectionalLight3D] 的每个 PSSM 分割着色不同的颜色,以便可以看到" +"分割的位置。按顺序,它们将被着色为红色、绿色、蓝色、和黄色。" + +msgid "" +"Draws the decal atlas used by [Decal]s and light projector textures in the " +"upper left quadrant of the [Viewport]." +msgstr "在 [Viewport] 的左上象限中绘制 [Decal] 使用的贴花和光投影仪的纹理。" + msgid "Max value for [enum DefaultCanvasItemTextureFilter] enum." msgstr "[enum DefaultCanvasItemTextureFilter] 枚举的最大值。" @@ -106433,6 +119080,39 @@ msgstr "" msgid "Automatically disables another node if not visible on screen." msgstr "某个节点在屏幕上不可见时自动禁用该节点。" +msgid "" +"VisibleOnScreenEnabler2D detects when it is visible on screen (just like " +"[VisibleOnScreenNotifier2D]) and automatically enables or disables the " +"target node. The target node is disabled when [VisibleOnScreenEnabler2D] is " +"not visible on screen (including when [member CanvasItem.visible] is " +"[code]false[/code]), and enabled when the enabler is visible. The disabling " +"is achieved by changing [member Node.process_mode]." +msgstr "" +"VisibleOnScreenEnabler2D 检测它何时在屏幕上可见(就像 " +"[VisibleOnScreenNotifier2D] 一样)并自动启用或禁用目标节点。当 " +"[VisibleOnScreenEnabler2D] 在屏幕上不可见时(包括当 [member CanvasItem." +"visible] 为 [code]false[/code] 时),目标节点会被禁用;当该启动节点可见时,目" +"标节点会被启用。禁用是通过更改 [member Node.process_mode] 来实现的。" + +msgid "" +"Determines how the node is enabled. Corresponds to [enum Node.ProcessMode]. " +"Disabled node uses [constant Node.PROCESS_MODE_DISABLED]." +msgstr "" +"确定节点的启用方式。与 [enum Node.ProcessMode] 对应。被禁用的节点使用 " +"[constant Node.PROCESS_MODE_DISABLED]。" + +msgid "" +"The path to the target node, relative to the [VisibleOnScreenEnabler2D]. The " +"target node is cached; it's only assigned when setting this property (if the " +"[VisibleOnScreenEnabler2D] is inside scene tree) and every time the " +"[VisibleOnScreenEnabler2D] enters the scene tree. If the path is invalid, " +"nothing will happen." +msgstr "" +"目标节点的路径,相对于 [VisibleOnScreenEnabler2D]。目标节点会被缓存;只有在设" +"置这个属性时([VisibleOnScreenEnabler2D] 位于场景树中),以及 " +"[VisibleOnScreenEnabler2D] 进入场景树时会进行赋值。如果路径无效,则不会发生任" +"何事情。" + msgid "Corresponds to [constant Node.PROCESS_MODE_INHERIT]." msgstr "对应 [constant Node.PROCESS_MODE_INHERIT]。" @@ -106445,6 +119125,30 @@ msgstr "对应 [constant Node.PROCESS_MODE_WHEN_PAUSED]。" msgid "Enables certain nodes only when approximately visible." msgstr "只在大约可见时启用某些节点。" +msgid "" +"The VisibleOnScreenEnabler3D will disable [RigidBody3D] and " +"[AnimationPlayer] nodes when they are not visible. It will only affect other " +"nodes within the same scene as the VisibleOnScreenEnabler3D itself.\n" +"If you just want to receive notifications, use [VisibleOnScreenNotifier3D] " +"instead.\n" +"[b]Note:[/b] VisibleOnScreenEnabler3D uses an approximate heuristic for " +"performance reasons. It doesn't take walls and other occlusion into account. " +"The heuristic is an implementation detail and may change in future versions. " +"If you need precise visibility checking, use another method such as adding " +"an [Area3D] node as a child of a [Camera3D] node and/or [method Vector3." +"dot].\n" +"[b]Note:[/b] VisibleOnScreenEnabler3D will not affect nodes added after " +"scene initialization." +msgstr "" +"VisibleOnScreenEnabler3D 会禁用不可见的 [RigidBody3D] 和 [AnimationPlayer] 节" +"点。它只会影响与 VisibleOnScreenEnabler3D 本身相同场景中的其他节点。\n" +"如果你只是想接收通知,请使用 [VisibleOnScreenNotifier3D] 代替。\n" +"[b]注意:[/b]VisibleOnScreenEnabler3D 由于性能原因使用了一个近似的启发式方" +"法。它不会考虑墙和其他遮挡物。启发式方法属于实现细节,在未来的版本中可能会改" +"变。如果你需要精确的可见性检查,请使用其他方法,例如添加一个 [Area3D] 节点作" +"为 [Camera3D] 节点的子节点和/或 [method Vector3.dot]。\n" +"[b]注意:[/b]VisibleOnScreenEnabler3D 不会影响场景初始化后添加的节点。" + msgid "Detects when the node extents are visible on screen." msgstr "检测节点范围何时在屏幕上可见。" @@ -106529,11 +119233,41 @@ msgid "Parent of all visual 3D nodes." msgstr "所有可视 3D 节点的父节点。" msgid "" +"The [VisualInstance3D] is used to connect a resource to a visual " +"representation. All visual 3D nodes inherit from the [VisualInstance3D]. In " +"general, you should not access the [VisualInstance3D] properties directly as " +"they are accessed and managed by the nodes that inherit from " +"[VisualInstance3D]. [VisualInstance3D] is the node representation of the " +"[RenderingServer] instance." +msgstr "" +"[VisualInstance3D] 可用于将资源连接到视觉表示。所有的可视化 3D 节点都继承自 " +"[VisualInstance3D]。一般来说,你不应该直接访问 [VisualInstance3D] 的属性,因" +"为它们是由继承自 [VisualInstance3D] 的节点访问和管理的。[VisualInstance3D] " +"是 [RenderingServer] 实例的节点表示。" + +msgid "" "Returns the [AABB] (also known as the bounding box) for this " "[VisualInstance3D]." msgstr "返回此 [VisualInstance3D] 的 [AABB](也叫边界框)。" msgid "" +"Returns the RID of the resource associated with this [VisualInstance3D]. For " +"example, if the Node is a [MeshInstance3D], this will return the RID of the " +"associated [Mesh]." +msgstr "" +"返回与此 [VisualInstance3D] 相关联的资源的 RID。例如,如果该节点是 " +"[MeshInstance3D],则会返回相关联的 [Mesh] 的 RID。" + +msgid "" +"Returns the RID of this instance. This RID is the same as the RID returned " +"by [method RenderingServer.instance_create]. This RID is needed if you want " +"to call [RenderingServer] functions directly on this [VisualInstance3D]." +msgstr "" +"返回这个实例的 RID。这个 RID 与 [method RenderingServer.instance_create] 返回" +"的 RID 相同。如果你想为这个 [VisualInstance3D] 直接调用 [RenderingServer] 函" +"数,就需要这个 RID。" + +msgid "" "Returns whether or not the specified layer of the [member layers] is " "enabled, given a [code]layer_number[/code] between 1 and 20." msgstr "" @@ -106541,6 +119275,15 @@ msgstr "" "[code]layer_number[/code] 指定。" msgid "" +"Sets the resource that is instantiated by this [VisualInstance3D], which " +"changes how the engine handles the [VisualInstance3D] under the hood. " +"Equivalent to [method RenderingServer.instance_set_base]." +msgstr "" +"设置由该 [VisualInstance3D] 实例化的资源,这将改变引擎在底层对该 " +"[VisualInstance3D] 的处理方式。相当于 [method RenderingServer." +"instance_set_base]。" + +msgid "" "Based on [param value], enables or disables the specified layer in the " "[member layers], given a [param layer_number] between 1 and 20." msgstr "" @@ -106548,6 +119291,23 @@ msgstr "" "和 20 之间的给定 [param layer_number] 指定。" msgid "" +"The render layer(s) this [VisualInstance3D] is drawn on.\n" +"This object will only be visible for [Camera3D]s whose cull mask includes " +"the render object this [VisualInstance3D] is set to.\n" +"For [Light3D]s, this can be used to control which [VisualInstance3D]s are " +"affected by a specific light. For [GPUParticles3D], this can be used to " +"control which particles are effected by a specific attractor. For [Decal]s, " +"this can be used to control which [VisualInstance3D]s are affected by a " +"specific decal." +msgstr "" +"这个 [VisualInstance3D] 要绘制到的渲染层。\n" +"[Camera3D] 的剔除掩码包含这个 [VisualInstance3D] 所设置的渲染对象时,这个对象" +"才在该相机中可见。\n" +"对于 [Light3D],可以用于控制指定的灯光能够影响哪些 [VisualInstance3D]。对于 " +"[GPUParticles3D],可以用于控制哪些粒子受到吸引器的影响。对于 [Decal],可以用" +"于控制哪些 [VisualInstance3D] 受到指定贴花的影响。" + +msgid "" "The amount by which the depth of this [VisualInstance3D] will be adjusted " "when sorting by depth. Uses the same units as the engine (which are " "typically meters). Adjusting it to a higher value will make the " @@ -106563,6 +119323,18 @@ msgstr "" "位于同一位置),请将值设置为大于该 [VisualInstance3D] 与附近其他 " "[VisualInstance3D] 之间的距离值。" +msgid "" +"If [code]true[/code], the object is sorted based on the [AABB] center. The " +"object will be sorted based on the global position otherwise.\n" +"The [AABB] center based sorting is generally more accurate for 3D models. " +"The position based sorting instead allows to better control the drawing " +"order when working with [GPUParticles3D] and [CPUParticles3D]." +msgstr "" +"如果为 [code]true[/code],则该对象会根据其 [AABB] 中心点排序。否则会根据其全" +"局位置排序。\n" +"对 3D 模型而言,根据 [AABB] 的中心点排序一般更为精确。使用 [GPUParticles3D] " +"和 [CPUParticles3D] 时,根据位置排序能够更好地控制绘制顺序。" + msgid "A custom shader program with a visual editor." msgstr "带有可视化编辑器的自定义着色器程序。" @@ -106720,7 +119492,7 @@ msgid "Varying is of type [Transform3D]." msgstr "Varying 的类型为 [Transform2D]。" msgid "Represents the size of the [enum VaryingType] enum." -msgstr "代表 [enum VariantType] 枚举的大小。" +msgstr "代表 [enum VaryingType] 枚举的大小。" msgid "Denotes invalid [VisualShader] node." msgstr "表示无效的 [VisualShader] 节点。" @@ -107329,6 +120101,12 @@ msgstr "" "翻译为着色器语言中的 [code]uniform samplerCube[/code]。该输出值可被用作 " "[VisualShaderNodeCubemap] 的端口。" +msgid "Performs a [CurveTexture] lookup within the visual shader graph." +msgstr "在可视化着色器图中执行 [CurveTexture] 查找。" + +msgid "Comes with a built-in editor for texture's curves." +msgstr "带有内置的纹理曲线编辑器。" + msgid "The source texture." msgstr "源纹理。" @@ -107341,16 +120119,127 @@ msgid "" msgstr "" "用于定义自定义 [VisualShaderNode] 的虚类,以便在可视化着色器编辑器中使用。" +msgid "" +"By inheriting this class you can create a custom [VisualShader] script addon " +"which will be automatically added to the Visual Shader Editor. The " +"[VisualShaderNode]'s behavior is defined by overriding the provided virtual " +"methods.\n" +"In order for the node to be registered as an editor addon, you must use the " +"[code]@tool[/code] annotation and provide a [code]class_name[/code] for your " +"custom script. For example:\n" +"[codeblock]\n" +"@tool\n" +"extends VisualShaderNodeCustom\n" +"class_name VisualShaderNodeNoise\n" +"[/codeblock]" +msgstr "" +"继承这个类可以创建自定义的 [VisualShader] 脚本扩展,会自动加入到 Visual " +"Shader 编辑器中。[VisualShaderNode] 的行为可以通过覆盖虚方法定义。\n" +"要让节点注册为编辑器扩展,你必须为你的自定义脚本使用 [code]@tool[/code] 注解" +"并提供 [code]class_name[/code]。例如:\n" +"[codeblock]\n" +"@tool\n" +"extends VisualShaderNodeCustom\n" +"class_name VisualShaderNodeNoise\n" +"[/codeblock]" + msgid "Visual Shader plugins" msgstr "可视化着色器插件" msgid "" +"Override this method to define the path to the associated custom node in the " +"Visual Shader Editor's members dialog. The path may look like [code]\"MyGame/" +"MyFunctions/Noise\"[/code].\n" +"Defining this method is [b]optional[/b]. If not overridden, the node will be " +"filed under the \"Addons\" category." +msgstr "" +"覆盖这个方法可以定义 Visual Shader 编辑器的成员对话框中关联的自定义节点的路" +"径。路径类似于 [code]\"MyGame/MyFunctions/Noise\"[/code]。\n" +"定义这个方法是[b]可选[/b]的。不覆盖时,该节点会被归在“Addons”分类下。" + +msgid "" +"Override this method to define the actual shader code of the associated " +"custom node. The shader code should be returned as a string, which can have " +"multiple lines (the [code]\"\"\"[/code] multiline string construct can be " +"used for convenience).\n" +"The [param input_vars] and [param output_vars] arrays contain the string " +"names of the various input and output variables, as defined by " +"[code]_get_input_*[/code] and [code]_get_output_*[/code] virtual methods in " +"this class.\n" +"The output ports can be assigned values in the shader code. For example, " +"[code]return output_vars[0] + \" = \" + input_vars[0] + \";\"[/code].\n" +"You can customize the generated code based on the shader [param mode] (see " +"[enum Shader.Mode]) and/or [param type] (see [enum VisualShader.Type]).\n" +"Defining this method is [b]required[/b]." +msgstr "" +"覆盖这个方法可以定义关联的自定义节点的实际着色器代码。着色器代码应该以字符串" +"形式返回,可以包含多行(用 [code]\"\"\"[/code] 构造多行字符串比较方便)。\n" +"[param input_vars] 和 [param output_vars] 数组包含各个输入和输出变量的字符串" +"名称,这些变量由这个类的 [code]_get_input_*[/code] 和 [code]_get_output_*[/" +"code] 虚方法定义。\n" +"着色器代码中可以为输出端口赋值。例如 [code]return output_vars[0] + \" = \" + " +"input_vars[0] + \";\"[/code]。\n" +"你可以根据着色器模式 [param mode](见 [enum Shader.Mode])和/或类型 [param " +"type](见 [enum VisualShader.Type])自定义生成的代码。\n" +"[b]必须[/b]定义这个方法。" + +msgid "" "Override this method to define the description of the associated custom node " "in the Visual Shader Editor's members dialog.\n" "Defining this method is [b]optional[/b]." msgstr "" -"重写此方法来定义可视化着色器编辑器的成员对话框中的相关自定义节点的描述。\n" -"定义这个方法是[b]optional[/b]可选的。" +"覆盖这个方法可以定义可视化着色器编辑器的成员对话框中的相关自定义节点的描" +"述。\n" +"定义这个方法是[b]可选[/b]的。" + +msgid "" +"Override this method to add a shader code to the beginning of each shader " +"function (once). The shader code should be returned as a string, which can " +"have multiple lines (the [code]\"\"\"[/code] multiline string construct can " +"be used for convenience).\n" +"If there are multiple custom nodes of different types which use this feature " +"the order of each insertion is undefined.\n" +"You can customize the generated code based on the shader [param mode] (see " +"[enum Shader.Mode]) and/or [param type] (see [enum VisualShader.Type]).\n" +"Defining this method is [b]optional[/b]." +msgstr "" +"覆盖这个方法可以在每个着色器函数的开头添加着色器代码(单次)。着色器代码应该" +"以字符串形式返回,可以包含多行(用 [code]\"\"\"[/code] 构造多行字符串比较方" +"便)。\n" +"如果有多个不同类型的自定义节点同时使用这个特性,则插入的顺序是未定义的。\n" +"你可以根据着色器模式 [param mode](见 [enum Shader.Mode])和/或类型 [param " +"type](见 [enum VisualShader.Type])自定义生成的代码。\n" +"定义这个方法是[b]可选[/b]的。" + +msgid "" +"Override this method to add shader code on top of the global shader, to " +"define your own standard library of reusable methods, varyings, constants, " +"uniforms, etc. The shader code should be returned as a string, which can " +"have multiple lines (the [code]\"\"\"[/code] multiline string construct can " +"be used for convenience).\n" +"Be careful with this functionality as it can cause name conflicts with other " +"custom nodes, so be sure to give the defined entities unique names.\n" +"You can customize the generated code based on the shader [param mode] (see " +"[enum Shader.Mode]).\n" +"Defining this method is [b]optional[/b]." +msgstr "" +"覆盖这个方法可以在全局着色器的开头添加着色器代码,定义你自己的标准库,提供可" +"复用的方法、varying、常量、uniform 等内容。着色器代码应该以字符串形式返回,可" +"以包含多行(用 [code]\"\"\"[/code] 构造多行字符串比较方便)。\n" +"使用这个功能时请小心,因为可能造成与其他自定义节点的命名冲突,所以请务必为定" +"义的实体提供唯一名称。\n" +"你可以根据着色器模式 [param mode](见 [enum Shader.Mode])自定义生成的代" +"码。\n" +"定义这个方法是[b]可选[/b]的。" + +msgid "" +"Override this method to define the number of input ports of the associated " +"custom node.\n" +"Defining this method is [b]required[/b]. If not overridden, the node has no " +"input ports." +msgstr "" +"重写该方法以定义关联的自定义节点的输入端口数。\n" +"定义该方法是[b]必需的[/b]。如果没有被重写,则该节点没有输入端口。" msgid "" "Override this method to define the names of input ports of the associated " @@ -107391,6 +120280,15 @@ msgstr "" "\"Unnamed\"。" msgid "" +"Override this method to define the number of output ports of the associated " +"custom node.\n" +"Defining this method is [b]required[/b]. If not overridden, the node has no " +"output ports." +msgstr "" +"重写该方法以定义关联的自定义节点的输出端口数。\n" +"定义该方法是[b]必需的[/b]。如果没有被重写,则该节点没有输出端口。" + +msgid "" "Override this method to define the names of output ports of the associated " "custom node. The names are used both for the output slots in the editor and " "as identifiers in the shader code, and are passed in the [code]output_vars[/" @@ -107426,6 +120324,27 @@ msgstr "" "重写此方法来定义可视化着色器编辑器的成员对话框中相关自定义节点的返回图标。\n" "定义这个方法是[b]可选的[/b]。如果不重写,就不会显示返回图标。" +msgid "" +"Override this method to prevent the node to be visible in the member dialog " +"for the certain [param mode] (see [enum Shader.Mode]) and/or [param type] " +"(see [enum VisualShader.Type]).\n" +"Defining this method is [b]optional[/b]. If not overridden, it's [code]true[/" +"code]." +msgstr "" +"覆盖这个方法可以防止该节点出现在特定模式 [param mode](见 [enum Shader." +"Mode])和/或类型 [param type](见 [enum VisualShader.Type])的成员对话框" +"中。\n" +"定义这个方法是[b]可选[/b]的。未覆盖时为 [code]true[/code]。" + +msgid "" +"Override this method to enable high-end mark in the Visual Shader Editor's " +"members dialog.\n" +"Defining this method is [b]optional[/b]. If not overridden, it's " +"[code]false[/code]." +msgstr "" +"覆盖这个方法可以在 Visual Shader 编辑器的成员对话框中启用高端标记。\n" +"定义这个方法是[b]可选[/b]的。未覆盖时为 [code]false[/code]。" + msgid "Calculates a derivative within the visual shader graph." msgstr "在可视化着色器图中,计算导数。" @@ -107501,6 +120420,11 @@ msgstr "翻译为着色器语言中的 [code]determinant(x)[/code]。" msgid "A visual shader node representing distance fade effect." msgstr "表示按距离淡出效果的可视化着色器节点。" +msgid "" +"The distance fade effect fades out each pixel based on its distance to " +"another object." +msgstr "距离淡出效果会根据每个像素与另一个对象的距离淡出。" + msgid "Calculates a dot product of two vectors within the visual shader graph." msgstr "计算可视化着色器图中两个向量的点积。" @@ -107836,6 +120760,16 @@ msgstr "" "返回参数的反正切值。在 Godot 着色器语言中,会被翻译为 [code]atan(a, b)[/" "code]。" +msgid "" +"Generates a step function by comparing [code]b[/code](x) to [code]a[/code]" +"(edge). Returns 0.0 if [code]x[/code] is smaller than [code]edge[/code] and " +"otherwise 1.0. Translates to [code]step(a, b)[/code] in the Godot Shader " +"Language." +msgstr "" +"通过将 [code]b[/code](x)与 [code]a[/code](edge)进行比较来生成 step 函数。" +"如果 [code]x[/code] 小于 [code]edge[/code] 则返回 0.0,否则返回 1.0。翻译为 " +"Godot 着色器语言中的 [code]step(a, b)[/code]。" + msgid "A scalar float parameter to be used within the visual shader graph." msgstr "标量浮点数参数,在可视化着色器图中使用。" @@ -107915,6 +120849,11 @@ msgstr "" "义,以便以后在[VisualShaderNodeExpression]中调用,这些函数被注入到主着色器函" "数中。你还可以声明varyings、uniforms 和全局常量。" +msgid "" +"Base class for a family of nodes with variable number of input and output " +"ports within the visual shader graph." +msgstr "可视化着色器图中,具有可变数量的输入和输出端口的系列节点的基类。" + msgid "Currently, has no direct usage, use the derived classes instead." msgstr "目前,没有直接使用,而用派生类代替。" @@ -108017,6 +120956,22 @@ msgstr "" "使用一个[String]格式的以冒号分隔的列表来定义所有输出端口: [code]id,type,name;" "[/code] ,参阅[method add_output_port]。" +msgid "" +"Compares two floating-point numbers in order to return a required vector " +"within the visual shader graph." +msgstr "" +"在可视化着色器图中,对两个浮点数进行比较,并根据比较结果返回不同的向量。" + +msgid "" +"First two ports are scalar floating-point numbers to compare, third is " +"tolerance comparison amount and last three ports represents a vectors " +"returned if [code]a == b[/code], [code]a > b[/code] and [code]a < b[/code] " +"respectively." +msgstr "" +"前两个端口是要比较的浮点数标量,第三个是容差比较量,最后三个端口分别表示当 " +"[code]a == b[/code]、[code]a > b[/code] 和 [code]a < b[/code] 时对应返回的向" +"量。" + msgid "Represents the input shader parameter within the visual shader graph." msgstr "在可视化着色器图中,代表输入着色器参数。" @@ -108032,6 +120987,14 @@ msgid "Shading reference index" msgstr "着色参考索引" msgid "" +"Returns a translated name of the current constant in the Godot Shader " +"Language. E.g. [code]\"ALBEDO\"[/code] if the [member input_name] equal to " +"[code]\"albedo\"[/code]." +msgstr "" +"返回当前常量名称翻译至 Godot 着色器语言后的名称。例如,如果 [member " +"input_name] 等于 [code]\"albedo\"[/code],则返回 [code]\"ALBEDO\"[/code]。" + +msgid "" "One of the several input constants in lower-case style like: " "\"vertex\" ([code]VERTEX[/code]) or \"point_size\" ([code]POINT_SIZE[/code])." msgstr "" @@ -108277,6 +121240,14 @@ msgid "A base type for the parameters within the visual shader graph." msgstr "可视化着色器图中,参数的基础类型。" msgid "" +"A parameter represents a variable in the shader which is set externally, i." +"e. from the [ShaderMaterial]. Parameters are exposed as properties in the " +"[ShaderMaterial] and can be assigned from the Inspector or from a script." +msgstr "" +"参数代表着色器中的一个变量,是由外部设置的,即从 [ShaderMaterial] 中设置。参" +"数在 [ShaderMaterial] 中以属性的形式暴露,可以从检查器或脚本中分配。" + +msgid "" "Name of the parameter, by which it can be accessed through the " "[ShaderMaterial] properties." msgstr "参数的名称,该参数可以通过该名称作为 [ShaderMaterial] 的属性访问。" @@ -108301,18 +121272,80 @@ msgstr "代表 [enum Qualifier] 枚举的大小。" msgid "A reference to an existing [VisualShaderNodeParameter]." msgstr "对现有 [VisualShaderNodeParameter] 的引用。" +msgid "" +"Creating a reference to a [VisualShaderNodeParameter] allows you to reuse " +"this parameter in different shaders or shader stages easily." +msgstr "" +"创建对 [VisualShaderNodeParameter] 的引用,可以让你在不同的着色器或着色阶段轻" +"松地重复使用这个参数。" + +msgid "The name of the parameter which this reference points to." +msgstr "这个引用所指向的参数的名称。" + msgid "A visual shader node that accelerates particles." msgstr "对粒子进行加速的可视着色器节点。" +msgid "" +"Particle accelerator can be used in \"process\" step of particle shader. It " +"will accelerate the particles. Connect it to the Velocity output port." +msgstr "" +"可以在粒子着色器“process”步骤中使用的粒子加速器。会对粒子进行加速。请将其连接" +"至 Velocity 输出端口。" + +msgid "Defines in what manner the particles will be accelerated." +msgstr "定义粒子将以何种方式被加速。" + msgid "The particles will be accelerated based on their velocity." msgstr "粒子会根据速度进行加速。" msgid "The particles will be accelerated towards or away from the center." msgstr "粒子会根据朝向中心或远离中心的方向进行加速。" +msgid "" +"The particles will be accelerated tangentially to the radius vector from " +"center to their position." +msgstr "粒子从中心到它们位置,将被切向加速到的半径向量。" + msgid "Represents the size of the [enum Mode] enum." msgstr "代表 [enum Mode] 枚举的大小。" +msgid "A visual shader node that makes particles emitted in a box shape." +msgstr "让粒子以盒状发射的可视化着色器节点。" + +msgid "" +"[VisualShaderNodeParticleEmitter] that makes the particles emitted in box " +"shape with the specified extents." +msgstr "[VisualShaderNodeParticleEmitter] 使粒子在指定范围的盒形形状发射。" + +msgid "A visual shader node that makes particles move in a cone shape." +msgstr "让粒子以圆锥形移动的可视化着色器节点。" + +msgid "" +"This node can be used in \"start\" step of particle shader. It defines the " +"initial velocity of the particles, making them move in cone shape starting " +"from the center, with a given spread." +msgstr "" +"该节点可被用于粒子着色器的“开始”步骤。它定义了粒子的初始速度,使它们以给定的" +"散布,从中心开始以锥形运动。" + +msgid "A visual shader node that forces to emit a particle from a sub-emitter." +msgstr "一种可视化着色器节点,强制从子发射器中发射一个粒子。" + +msgid "" +"This node internally calls [code]emit_subparticle[/code] shader method. It " +"will emit a particle from the configured sub-emitter and also allows to " +"customize how its emitted. Requires a sub-emitter assigned to the particles " +"node with this shader." +msgstr "" +"该节点在内部调用 [code]emit_subparticle[/code] 着色器方法。它将从配置的子发射" +"器发射一个粒子,还允许自定义其发射方式。需要使用该着色器将子发射器分配给粒子" +"节点。" + +msgid "" +"Flags used to override the properties defined in the sub-emitter's process " +"material." +msgstr "用于覆盖子发射器处理材质中定义的属性的标志。" + msgid "If enabled, the particle starts with the position defined by this node." msgstr "如果启用,则粒子从该节点所定义的位置开始。" @@ -108335,20 +121368,141 @@ msgstr "如果启用,则粒子从该节点所定义的 [code]CUSTOM[/code] 自 msgid "A base class for particle emitters." msgstr "粒子发射器的基类。" +msgid "" +"Particle emitter nodes can be used in \"start\" step of particle shaders and " +"they define the starting position of the particles. Connect them to the " +"Position output port." +msgstr "" +"粒子发射器节点可被用于粒子着色器的“开始”步骤,它们定义粒子的起始位置。将它们" +"连接到位置输出端口。" + +msgid "" +"If [code]true[/code], the result of this emitter is projected to 2D space. " +"By default it is [code]false[/code] and meant for use in 3D space." +msgstr "" +"如果为 [code]true[/code],则此发射器的结果将被投影到 2D 空间。默认情况下为 " +"[code]false[/code],适用于 3D 空间。" + +msgid "" +"A visual shader node that makes particles emitted in a shape defined by a " +"[Mesh]." +msgstr "让粒子从由 [Mesh] 定义的形状中发射的可视化着色器节点。" + +msgid "" +"[VisualShaderNodeParticleEmitter] that makes the particles emitted in a " +"shape of the assigned [member mesh]. It will emit from the mesh's surfaces, " +"either all or only the specified one." +msgstr "" +"让粒子由分配的 [member mesh] 的形状中发射的 " +"[VisualShaderNodeParticleEmitter]。它将从网格的表面发射,可以是全部表面,也可" +"以是某个指定的表面。" + msgid "The [Mesh] that defines emission shape." msgstr "定义发射形状的 [Mesh]。" msgid "" +"Index of the surface that emits particles. [member use_all_surfaces] must be " +"[code]false[/code] for this to take effect." +msgstr "" +"发射粒子的表面的索引。[member use_all_surfaces] 必须为 [code]false[/code] 才" +"能生效。" + +msgid "" +"If [code]true[/code], the particles will emit from all surfaces of the mesh." +msgstr "如果为 [code]true[/code],则粒子会从该网格的所有表面上发射。" + +msgid "" +"A visual shader helper node for multiplying position and rotation of " +"particles." +msgstr "用于将粒子的位置与旋转相乘的可视化着色器辅助节点。" + +msgid "" +"This node helps to multiply a position input vector by rotation using " +"specific axis. Intended to work with emitters." +msgstr "这个节点会帮助将位置输入向量与指定轴的旋转相乘。针对发射器使用而设计。" + +msgid "" "If [code]true[/code], the angle will be interpreted in degrees instead of " "radians." msgstr "如果为 [code]true[/code],夹角会被解释为度数,而不是弧度数。" +msgid "Visual shader node that defines output values for particle emitting." +msgstr "定义粒子发射输出值的可视化着色器节点。" + +msgid "" +"This node defines how particles are emitted. It allows to customize e.g. " +"position and velocity. Available ports are different depending on which " +"function this node is inside (start, process, collision) and whether custom " +"data is enabled." +msgstr "" +"这个节点定义了粒子的发射方式。它允许自定义位置和速度等属性。根据所在节点的不" +"同(start、process、collision)和是否启用自定义数据,可用的端口也不同。" + msgid "Visual shader node for randomizing particle values." msgstr "用于随机化粒子值的可视化着色器节点。" +msgid "" +"Randomness node will output pseudo-random values of the given type based on " +"the specified minimum and maximum values." +msgstr "输出给定类型的伪随机值的随机节点,会根据指定的最大最小值生成。" + +msgid "A visual shader node that makes particles emitted in a ring shape." +msgstr "让粒子以环状发射的可视化着色器节点。" + +msgid "" +"[VisualShaderNodeParticleEmitter] that makes the particles emitted in ring " +"shape with the specified inner and outer radii and height." +msgstr "" +"[VisualShaderNodeParticleEmitter] 使粒子在具有指定的内外半径和高度的环形中发" +"射。" + +msgid "A visual shader node that makes particles emitted in a sphere shape." +msgstr "让粒子以球状发射的可视化着色器节点。" + +msgid "" +"[VisualShaderNodeParticleEmitter] that makes the particles emitted in sphere " +"shape with the specified inner and outer radii." +msgstr "" +"[VisualShaderNodeParticleEmitter] 使粒子在具有指定内外半径的球体形状中发射。" + +msgid "A visual shader node representing proximity fade effect." +msgstr "代表邻近淡出效果的可视化着色器节点。" + +msgid "" +"The proximity fade effect fades out each pixel based on its distance to " +"another object." +msgstr "邻近淡出效果会根据每个像素与另一个对象的距离淡出。" + +msgid "A visual shader node that generates a pseudo-random scalar." +msgstr "生成伪随机标量的可视化着色器节点。" + +msgid "" +"Random range node will output a pseudo-random scalar value in the specified " +"range, based on the seed. The value is always the same for the given seed " +"and range, so you should provide a changing input, e.g. by using time." +msgstr "" +"随机范围节点,会根据种子输出指定范围内的伪随机标量值。如果给定的种子和范围相" +"同,那么得到的值就始终相同,所以你应该提供不同的输入,例如使用时间作为输入。" + msgid "A visual shader node for remap function." msgstr "remap 函数的可视化着色器节点。" +msgid "" +"Remap will transform the input range into output range, e.g. you can change " +"a [code]0..1[/code] value to [code]-2..2[/code] etc. See [method " +"@GlobalScope.remap] for more details." +msgstr "" +"Remap 函数将输入范围变换到输出范围。例如你可以将 [code]0..1[/code] 里的值变" +"到 [code]-2..2[/code] 里。详见 [method @GlobalScope.remap]。" + +msgid "Base class for resizable nodes in a visual shader graph." +msgstr "可视化着色器图中,可调整大小的节点的基类。" + +msgid "" +"Resizable nodes have a handle that allows the user to adjust their size as " +"needed." +msgstr "可调整大小的节点上有一个控制柄,用户能够根据需要调整其大小。" + msgid "The size of the node in the visual shader graph." msgstr "可视化着色器图中,该节点的大小。" @@ -108362,16 +121516,37 @@ msgstr "虚类,请改用其派生类。" msgid "An input source type." msgstr "输入源的类型。" +msgid "Creates internal uniform and provides a way to assign it within node." +msgstr "创建内部 uniform,提供一种在节点内赋值的方式。" + msgid "Use the uniform texture from sampler port." msgstr "使用采样器端口的 uniform 纹理。" msgid "" +"A function to convert screen UV to an SDF (signed-distance field), to be " +"used within the visual shader graph." +msgstr "将屏幕 UV 转换为 SDF(带符号距离场)的函数,在可视化着色器图中使用。" + +msgid "" "Translates to [code]screen_uv_to_sdf(uv)[/code] in the shader language. If " "the UV port isn't connected, [code]SCREEN_UV[/code] is used instead." msgstr "" "翻译为着色器语言中的 [code]screen_uv_to_sdf(uv)[/code]。如果该 UV 端口未被连" "接,则改用 [code]SCREEN_UV[/code]。" +msgid "SDF raymarching algorithm to be used within the visual shader graph." +msgstr "用于可视化着色器图的 SDF 光线步进算法。" + +msgid "" +"Casts a ray against the screen SDF (signed-distance field) and returns the " +"distance travelled." +msgstr "向屏幕 SDF(带符号距离场)投射一条射线,并返回行进的距离。" + +msgid "" +"A function to convert an SDF (signed-distance field) to screen UV, to be " +"used within the visual shader graph." +msgstr "将 SDF(带符号距离场)转换为屏幕 UV 的函数,在可视化着色器图中使用。" + msgid "" "Translates to [code]sdf_to_screen_uv(sdf_pos)[/code] in the shader language." msgstr "翻译为着色器语言中的 [code]sdf_to_screen_uv(sdf_pos)[/code]。" @@ -108380,6 +121555,19 @@ msgid "Calculates a SmoothStep function within the visual shader graph." msgstr "在可视化着色器图中计算 SmoothStep 函数。" msgid "" +"Translates to [code]smoothstep(edge0, edge1, x)[/code] in the shader " +"language.\n" +"Returns [code]0.0[/code] if [code]x[/code] is smaller than [code]edge0[/" +"code] and [code]1.0[/code] if [code]x[/code] is larger than [code]edge1[/" +"code]. Otherwise, the return value is interpolated between [code]0.0[/code] " +"and [code]1.0[/code] using Hermite polynomials." +msgstr "" +"翻译为着色器语言中的 [code]smoothstep(edge0, edge1, x)[/code]。\n" +"如果 [code]x[/code] 小于 [code]edge0[/code] 则返回 [code]0.0[/code];如果 " +"[code]x[/code] 大于 [code]edge1[/code] 则返回 [code]1.0[/code]。否则,返回值" +"使用 Hermite 多项式在 [code]0.0[/code] 和 [code]1.0[/code] 之间进行插值。" + +msgid "" "The [code]x[/code] port uses a 2D vector type. The first two ports use a " "floating-point scalar type." msgstr "[code]x[/code] 端口使用 2D 向量类型。前两个端口使用浮点数标量类型。" @@ -108418,6 +121606,13 @@ msgstr "" msgid "A selector function for use within the visual shader graph." msgstr "可视化着色器中使用的选择器函数。" +msgid "" +"Returns an associated value of the [code]op_type[/code] type if the provided " +"boolean value is [code]true[/code] or [code]false[/code]." +msgstr "" +"如果提供的布尔值为 [code]true[/code] 或 [code]false[/code],则返回 " +"[code]op_type[/code] 类型的一个关联值。" + msgid "A transform type." msgstr "变换类型。" @@ -108448,12 +121643,41 @@ msgstr "使用给定的纹理作为此函数的参数。" msgid "Use the current viewport's texture as the source." msgstr "使用当前视口的纹理作为源。" +msgid "" +"Use the texture from this shader's texture built-in (e.g. a texture of a " +"[Sprite2D])." +msgstr "使用该着色器内置纹理中的纹理(例如 [Sprite2D] 的纹理)。" + msgid "Use the texture from this shader's normal map built-in." msgstr "使用该着色器内置的法线贴图的纹理。" +msgid "" +"Use the depth texture captured during the depth prepass. Only available when " +"the depth prepass is used (i.e. in spatial shaders and in the forward_plus " +"or gl_compatibility renderers)." +msgstr "" +"使用在深度预处理过程中捕获的深度纹理。只有在使用深度预处理时才可用(即在空间" +"着色器和 forward_plus 或 gl_compatibility 渲染器中)。" + msgid "Use the texture provided in the input port for this function." msgstr "将输入端口中提供的纹理用于此函数。" +msgid "" +"Use the normal buffer captured during the depth prepass. Only available when " +"the normal-roughness buffer is available (i.e. in spatial shaders and in the " +"forward_plus renderer)." +msgstr "" +"使用在深度预处理过程中捕获的法线缓冲区。只有在法线粗糙度缓冲区可用时才可用" +"(即在空间着色器和 forward_plus 渲染器中)。" + +msgid "" +"Use the roughness buffer captured during the depth prepass. Only available " +"when the normal-roughness buffer is available (i.e. in spatial shaders and " +"in the forward_plus renderer)." +msgstr "" +"使用在深度预处理过程中捕获的粗糙度缓冲区。仅当法线粗糙度缓冲区可用时才可用" +"(即在空间着色器和 forward_plus 渲染器中)。" + msgid "A 2D texture uniform array to be used within the visual shader graph." msgstr "可视化着色器图中使用的 2D 纹理 uniform 数组。" @@ -108462,9 +121686,24 @@ msgid "" msgstr "翻译为着色器语言中的 [code]uniform sampler2DArray[/code]。" msgid "" +"A source texture array. Used if [member VisualShaderNodeSample3D.source] is " +"set to [constant VisualShaderNodeSample3D.SOURCE_TEXTURE]." +msgstr "" +"源纹理数组。[member VisualShaderNodeSample3D.source] 为 [constant " +"VisualShaderNodeSample3D.SOURCE_TEXTURE] 时使用。" + +msgid "" "A visual shader node for shader parameter (uniform) of type [Texture2DArray]." msgstr "[Texture2DArray] 类型着色器参数(uniform)的可视化着色器节点。" +msgid "" +"This parameter allows to provide a collection of textures for the shader. " +"You can use [VisualShaderNodeTexture2DArray] to extract the textures from " +"array." +msgstr "" +"这个参数允许为着色器提供一个纹理集合。可以使用 " +"[VisualShaderNodeTexture2DArray] 从数组中提取纹理。" + msgid "Provides a 2D texture parameter within the visual shader graph." msgstr "在可视化着色器图中提供 2D 纹理参数。" @@ -108535,6 +121774,50 @@ msgstr "默认为完全透明的黑色。" msgid "Represents the size of the [enum ColorDefault] enum." msgstr "代表 [enum ColorDefault] 枚举的大小。" +msgid "" +"Sample the texture using the filter determined by the node this shader is " +"attached to." +msgstr "使用由该着色器所附加到的节点决定的过滤器对纹理进行采样。" + +msgid "" +"The texture filter reads from the nearest pixel, but selects a mipmap based " +"on the angle between the surface and the camera view. This reduces artifacts " +"on surfaces that are almost in line with the camera. The anisotropic " +"filtering level can be changed by adjusting [member ProjectSettings." +"rendering/textures/default_filters/anisotropic_filtering_level].\n" +"[b]Note:[/b] This texture filter is rarely useful in 2D projects. [constant " +"FILTER_LINEAR_MIPMAP] is usually more appropriate." +msgstr "" +"纹理过滤从最近的像素读取,但根据表面和相机视图之间的角度选择一个 mipmap。这减" +"少了几乎与相机对齐的表面上的伪影。可以通过调整 [member ProjectSettings." +"rendering/textures/default_filters/anisotropic_filtering_level],来更改各向异" +"性过滤级别。\n" +"[b]注意:[/b]这种纹理过滤在 2D 项目中很少有用。[constant " +"FILTER_LINEAR_MIPMAP] 通常更合适。" + +msgid "" +"The texture filter blends between the nearest 4 pixels and selects a mipmap " +"based on the angle between the surface and the camera view. This reduces " +"artifacts on surfaces that are almost in line with the camera. This is the " +"slowest of the filtering options, but results in the highest quality " +"texturing. The anisotropic filtering level can be changed by adjusting " +"[member ProjectSettings.rendering/textures/default_filters/" +"anisotropic_filtering_level].\n" +"[b]Note:[/b] This texture filter is rarely useful in 2D projects. [constant " +"FILTER_LINEAR_MIPMAP] is usually more appropriate." +msgstr "" +"纹理过滤在最近的 4 个像素之间进行混合,并根据表面和相机视图之间的角度选择一" +"个 mipmap。这减少了几乎与相机对齐的表面上的伪影。这是最慢的过滤选项,但会产生" +"最高质量的纹理。可以通过调整 [member ProjectSettings.rendering/textures/" +"default_filters/anisotropic_filtering_level],来更改各向异性过滤级别。\n" +"[b]注意:[/b]这种纹理过滤在 2D 项目中很少有用。[constant " +"FILTER_LINEAR_MIPMAP] 通常更合适。" + +msgid "" +"Sample the texture using the repeat mode determined by the node this shader " +"is attached to." +msgstr "使用由该着色器所附加到的节点决定的重复模式对该纹理进行采样。" + msgid "The texture source is not specified in the shader." msgstr "着色器中未指定纹理源。" @@ -108756,9 +122039,54 @@ msgstr "" "定义。" msgid "" +"Contains functions to modify texture coordinates ([code]uv[/code]) to be " +"used within the visual shader graph." +msgstr "" +"包含一些用于修改纹理坐标([code]uv[/code])的函数,在可视化着色器图中使用。" + +msgid "" +"UV functions are similar to [Vector2] functions, but the input port of this " +"node uses the shader's UV value by default." +msgstr "" +"UV 函数与 [Vector2] 函数类似,但这个节点的输入端口默认使用着色器的 UV 值。" + +msgid "" +"A function to be applied to the texture coordinates. See [enum Function] for " +"options." +msgstr "要对纹理坐标应用的函数。选项见 [enum Function]。" + +msgid "" +"Translates [code]uv[/code] by using [code]scale[/code] and [code]offset[/" +"code] values using the following formula: [code]uv = uv + offset * scale[/" +"code]. [code]uv[/code] port is connected to [code]UV[/code] built-in by " +"default." +msgstr "" +"使用 [code]scale[/code] 和 [code]offset[/code] 值对 [code]uv[/code] 进行平" +"移,使用的公式如下:[code]uv = uv + offset * scale[/code]。[code]uv[/code] 端" +"口默认连接至内置的 [code]UV[/code]。" + +msgid "" +"Scales [code]uv[/code] by using [code]scale[/code] and [code]pivot[/code] " +"values using the following formula: [code]uv = (uv - pivot) * scale + pivot[/" +"code]. [code]uv[/code] port is connected to [code]UV[/code] built-in by " +"default." +msgstr "" +"使用 [code]scale[/code] 和 [code]pivot[/code] 值对 [code]uv[/code] 进行缩放," +"使用的公式如下:[code]uv = (uv - pivot) * scale + pivot[/code]。[code]uv[/" +"code] 端口默认连接至内置的 [code]UV[/code]。" + +msgid "" "A visual shader node that modifies the texture UV using polar coordinates." msgstr "使用极坐标修改纹理 UV 的可视化着色器节点。" +msgid "" +"UV polar coord node will transform UV values into polar coordinates, with " +"specified scale, zoom strength and repeat parameters. It can be used to " +"create various swirl distortions." +msgstr "" +"UV 极坐标节点会使用指定的缩放、缩放强度和重复参数将 UV 值转化为极坐标。可以用" +"来创建各种漩涡变形。" + msgid "A visual shader node that represents a \"varying\" shader value." msgstr "代表“verying”着色器值的可视化着色器节点。" @@ -109082,6 +122410,11 @@ msgstr "" "否则返回 [code]1.0[/code]。" msgid "" +"Returns the vector that points in the direction of refraction. For use " +"within the visual shader graph." +msgstr "返回指向折射方向的向量。在可视化着色器图中使用。" + +msgid "" "Translated to [code]refract(I, N, eta)[/code] in the shader language, where " "[code]I[/code] is the incident vector, [code]N[/code] is the normal vector " "and [code]eta[/code] is the ratio of the indices of the refraction." @@ -109146,13 +122479,75 @@ msgstr "" msgid "VoxelGI" msgstr "VoxelGI" +msgid "" +"Bakes the effect from all [GeometryInstance3D]s marked with [constant " +"GeometryInstance3D.GI_MODE_STATIC] and [Light3D]s marked with either " +"[constant Light3D.BAKE_STATIC] or [constant Light3D.BAKE_DYNAMIC]. If " +"[code]create_visual_debug[/code] is [code]true[/code], after baking the " +"light, this will generate a [MultiMesh] that has a cube representing each " +"solid cell with each cube colored to the cell's albedo color. This can be " +"used to visualize the [VoxelGI]'s data and debug any issues that may be " +"occurring.\n" +"[b]Note:[/b] [method bake] works from the editor and in exported projects. " +"This makes it suitable for procedurally generated or user-built levels. " +"Baking a [VoxelGI] node generally takes from 5 to 20 seconds in most scenes. " +"Reducing [member subdiv] can speed up baking.\n" +"[b]Note:[/b] [GeometryInstance3D]s and [Light3D]s must be fully ready before " +"[method bake] is called. If you are procedurally creating those and some " +"meshes or lights are missing from your baked [VoxelGI], use " +"[code]call_deferred(\"bake\")[/code] instead of calling [method bake] " +"directly." +msgstr "" +"烘焙来自所有标记为 [constant GeometryInstance3D.GI_MODE_STATIC] 的 " +"[GeometryInstance3D] 以及标记为 [constant Light3D.BAKE_STATIC] 或 [constant " +"Light3D.BAKE_DYNAMIC] 的 [Light3D] 的效果。如果 [code]create_visual_debug[/" +"code] 为 [code]true[/code],则烘焙光照后会生成一个 [MultiMesh],用立方体代表" +"各个实体单元格,每个立方体都使用对应单元格的反照率颜色着色。这样就对 " +"[VoxelGI] 的数据进行了可视化,可以用来调试可能发生的问题。\n" +"[b]注意:[/b]编辑器和导出后的项目中都可以使用 [method bake]。因此可用于程序式" +"生成或用户构建的关卡。对于大多数场景,烘焙 [VoxelGI] 节点一般需要 5 到 20 " +"秒。降低 [member subdiv] 可以加速烘焙。\n" +"[b]注意:[/b][GeometryInstance3D] 和 [Light3D] 节点必须在调用 [method bake] " +"前完全就绪。如果这些节点是程序式生成的,而烘焙后的 [VoxelGI] 中缺失部分网格和" +"灯光,请使用 [code]call_deferred(\"bake\")[/code],不要直接调用 [method " +"bake]。" + msgid "Calls [method bake] with [code]create_visual_debug[/code] enabled." msgstr "在启用 [code]create_visual_debug[/code] 的情况下调用 [method bake] 。" +msgid "" +"The [CameraAttributes] resource that specifies exposure levels to bake at. " +"Auto-exposure and non exposure properties will be ignored. Exposure settings " +"should be used to reduce the dynamic range present when baking. If exposure " +"is too high, the [VoxelGI] will have banding artifacts or may have over-" +"exposure artifacts." +msgstr "" +"指定烘焙所使用的曝光级别的 [CameraAttributes] 资源。自动曝光和非曝光属性会被" +"忽略。曝光设置应当用于降低烘焙时的动态范围。如果曝光过高,[VoxelGI] 会产生色" +"带问题,也可能出现过曝问题。" + msgid "The [VoxelGIData] resource that holds the data for this [VoxelGI]." msgstr "为该 [VoxelGI] 存放数据的 [VoxelGIData] 资源。" msgid "" +"The size of the area covered by the [VoxelGI]. If you make the size larger " +"without increasing the subdivisions with [member subdiv], the size of each " +"cell will increase and result in lower detailed lighting.\n" +"[b]Note:[/b] Size is clamped to 1.0 unit or more on each axis." +msgstr "" +"[VoxelGI] 所覆盖区域的大小。如果你扩大了范围,但没有使用 [member subdiv] 增加" +"细分,则每个单元格的大小都将增加,导致照明细节下降。\n" +"[b]注意:[/b]大小在每个轴上被限制为 1.0 或更多。" + +msgid "" +"Number of times to subdivide the grid that the [VoxelGI] operates on. A " +"higher number results in finer detail and thus higher visual quality, while " +"lower numbers result in better performance." +msgstr "" +"对 [VoxelGI] 操作的栅格进行细分的次数。数字越大,细节越精细,因此视觉质量越" +"高,而数字越小则性能越好。" + +msgid "" "Use 64 subdivisions. This is the lowest quality setting, but the fastest. " "Use it if you can, but especially use it on lower-end hardware." msgstr "" @@ -109179,6 +122574,123 @@ msgid "" "Contains baked voxel global illumination data for use in a [VoxelGI] node." msgstr "包含用于 [VoxelGI] 节点的烘焙体素全局光照数据。" +msgid "" +"[VoxelGIData] contains baked voxel global illumination for use in a " +"[VoxelGI] node. [VoxelGIData] also offers several properties to adjust the " +"final appearance of the global illumination. These properties can be " +"adjusted at run-time without having to bake the [VoxelGI] node again.\n" +"[b]Note:[/b] To prevent text-based scene files ([code].tscn[/code]) from " +"growing too much and becoming slow to load and save, always save " +"[VoxelGIData] to an external binary resource file ([code].res[/code]) " +"instead of embedding it within the scene. This can be done by clicking the " +"dropdown arrow next to the [VoxelGIData] resource, choosing [b]Edit[/b], " +"clicking the floppy disk icon at the top of the Inspector then choosing " +"[b]Save As...[/b]." +msgstr "" +"[VoxelGIData] 包含烘焙的体素全局照明,用于 [VoxelGI] 节点。[VoxelGIData] 还提" +"供了若干用来调整全局照明最终外观的属性。这些属性可以在运行时调整,无须再次烘" +"焙 [VoxelGI] 节点。\n" +"[b]注意:[/b]为了防止基于文本的场景文件([code].tscn[/code])过度增长,导致加" +"载和保存速度变慢,请始终将 [VoxelGIData] 保存为外部二进制资源文件([code]." +"res[/code]),不要将其嵌入到场景中。做法是点击 [VoxelGIData] 资源旁边的下拉箭" +"头,选择[b]编辑[/b],点击检查器顶部的软盘图标,然后选择[b]另存为...[/b]。" + +msgid "" +"Returns the bounds of the baked voxel data as an [AABB], which should match " +"[member VoxelGI.size] after being baked (which only contains the size as a " +"[Vector3]).\n" +"[b]Note:[/b] If the size was modified without baking the VoxelGI data, then " +"the value of [method get_bounds] and [member VoxelGI.size] will not match." +msgstr "" +"返回一个 [AABB],表示已烘焙体素数据的边界,烘焙后应该与 [member VoxelGI." +"size] 相匹配(仅包含表示大小的 [Vector3])。\n" +"[b]注意:[/b]如果修改了大小但没有对 VoxelGI 数据进行烘焙,则 [method " +"get_bounds] 和 [member VoxelGI.size] 的值将不匹配。" + +msgid "" +"The normal bias to use for indirect lighting and reflections. Higher values " +"reduce self-reflections visible in non-rough materials, at the cost of more " +"visible light leaking and flatter-looking indirect lighting. To prioritize " +"hiding self-reflections over lighting quality, set [member bias] to " +"[code]0.0[/code] and [member normal_bias] to a value between [code]1.0[/" +"code] and [code]2.0[/code]." +msgstr "" +"间接光照和反射所使用的法线偏移。较高的值可以减少非粗糙材质中可见的自反射,但" +"会增加光线泄漏并让间接光照看上去更扁平。如果要优先隐藏自反射而不是追求光照质" +"量,请将 [member bias] 设为 [code]0.0[/code],并将 [member normal_bias] 设为 " +"[code]1.0[/code] 和 [code]2.0[/code] 之间的值。" + +msgid "" +"The dynamic range to use ([code]1.0[/code] represents a low dynamic range " +"scene brightness). Higher values can be used to provide brighter indirect " +"lighting, at the cost of more visible color banding in dark areas (both in " +"indirect lighting and reflections). To avoid color banding, it's recommended " +"to use the lowest value that does not result in visible light clipping." +msgstr "" +"要使用的动态范围([code]1.0[/code] 代表低动态范围场景亮度)。较高的值可用于提" +"供更明亮的间接光照,但会在较暗的区域产生更多可见的色带效果(包括间接光照和反" +"射)。为了避免色带效果,建议将其设置得尽可能低,避免出现明显的亮度截断。" + +msgid "" +"The energy of the indirect lighting and reflections produced by the " +"[VoxelGI] node. Higher values result in brighter indirect lighting. If " +"indirect lighting looks too flat, try decreasing [member propagation] while " +"increasing [member energy] at the same time. See also [member " +"use_two_bounces] which influences the indirect lighting's effective " +"brightness." +msgstr "" +"[VoxelGI] 节点产生的间接照明和反射的能量。值越高,间接照明越亮。如果间接照明" +"看起来过于平坦,请尝试减少 [member propagation],同时增加 [member energy]。另" +"请参阅影响间接照明有效亮度的 [member use_two_bounces]。" + +msgid "" +"If [code]true[/code], [Environment] lighting is ignored by the [VoxelGI] " +"node. If [code]false[/code], [Environment] lighting is taken into account by " +"the [VoxelGI] node. [Environment] lighting updates in real-time, which means " +"it can be changed without having to bake the [VoxelGI] node again." +msgstr "" +"如果为 [code]true[/code],则 [VoxelGI] 节点会忽略 [Environment] 光照。如果为 " +"[code]false[/code],则 [VoxelGI] 节点会考虑 [Environment] 光照。" +"[Environment] 光照会实时更新,这意味着无需再次烘焙 [VoxelGI] 节点即可对其进行" +"更改。" + +msgid "" +"The normal bias to use for indirect lighting and reflections. Higher values " +"reduce self-reflections visible in non-rough materials, at the cost of more " +"visible light leaking and flatter-looking indirect lighting. See also " +"[member bias]. To prioritize hiding self-reflections over lighting quality, " +"set [member bias] to [code]0.0[/code] and [member normal_bias] to a value " +"between [code]1.0[/code] and [code]2.0[/code]." +msgstr "" +"用于间接照明和反射的法线偏置。较高的值能够减少在非粗糙材质中可见的自反射,但" +"会导致更多可见的漏光问题,间接照明看起来也会更平坦。另见 [member bias]。要优" +"先隐藏自反射,而不是提高照明质量,请将 [member bias] 设置为 [code]0.0[/" +"code],并将 [member normal_bias] 设置为介于 [code]1.0[/code] 和 [code]2.0[/" +"code] 之间的值。" + +msgid "" +"The multiplier to use when light bounces off a surface. Higher values result " +"in brighter indirect lighting. If indirect lighting looks too flat, try " +"decreasing [member propagation] while increasing [member energy] at the same " +"time. See also [member use_two_bounces] which influences the indirect " +"lighting's effective brightness." +msgstr "" +"当光线从表面反弹时使用的乘数。较高的值会导致更亮的间接照明。如果间接照明看起" +"来过于平坦,请尝试减少 [member propagation] 同时增加 [member energy]。另请参" +"阅影响间接照明的有效亮度的 [member use_two_bounces]。" + +msgid "" +"If [code]true[/code], performs two bounces of indirect lighting instead of " +"one. This makes indirect lighting look more natural and brighter at a small " +"performance cost. The second bounce is also visible in reflections. If the " +"scene appears too bright after enabling [member use_two_bounces], adjust " +"[member propagation] and [member energy]." +msgstr "" +"如果为 [code]true[/code],则执行两次间接照明反弹而不是一次。这使得以一个较低" +"的性能成本,使间接照明看起来更自然、更明亮。第二次反弹在反射中也是可见的。如" +"果启用 [member use_two_bounces] 后场景显得太亮,请调整 [member propagation] " +"和 [member energy]。" + msgid "Vertical scroll bar." msgstr "垂直滚动条。" @@ -109292,6 +122804,17 @@ msgid "" "Returns the number of bytes currently queued to be sent over this channel." msgstr "返回当前排队在此通道上发送的字节数。" +msgid "" +"Returns the ID assigned to this channel during creation (or auto-assigned " +"during negotiation).\n" +"If the channel is not negotiated out-of-band the ID will only be available " +"after the connection is established (will return [code]65535[/code] until " +"then)." +msgstr "" +"返回创建时分配给该通道的 ID(或是在协商时自动分配的)。\n" +"如果该通道没有进行带外协商,那么该 ID 将只在连接建立后可用(在此之前将返回 " +"[code]65535[/code])。" + msgid "Returns the label assigned to this channel during creation." msgstr "返回创建时分配给该通道的标签。" @@ -109426,6 +122949,62 @@ msgstr "" "code]选项(见 [method WebRTCPeerConnection.create_data_channel])。" msgid "" +"Initialize the multiplayer peer as a client with the given [code]peer_id[/" +"code] (must be between 2 and 2147483647). In this mode, you should only call " +"[method add_peer] once and with [code]peer_id[/code] of [code]1[/code]. This " +"mode enables [method MultiplayerPeer.is_server_relay_supported], allowing " +"the upper [MultiplayerAPI] layer to perform peer exchange and packet " +"relaying.\n" +"You can optionally specify a [code]channels_config[/code] array of [enum " +"MultiplayerPeer.TransferMode] which will be used to create extra channels " +"(WebRTC only supports one transfer mode per channel)." +msgstr "" +"将多人游戏对等体初始化为客户端,对等体 ID 为 [code]peer_id[/code](必须在 2 " +"和 2147483647 之间)。在这种模式下,你应当只调用 [method add_peer] 一次,使" +"用 [code]1[/code] 作为 [code]peer_id[/code]。这种模式会启用 [method " +"MultiplayerPeer.is_server_relay_supported],允许上层 [MultiplayerAPI] 执行对" +"等体交换和数据包接力。\n" +"你也可以指定 [code]channels_config[/code] 数组,数组中的元素为 [enum " +"MultiplayerPeer.TransferMode],会用于创建额外的通道(WebRTC 的每个通道仅支持" +"一种传输模式)。" + +msgid "" +"Initialize the multiplayer peer as a mesh (i.e. all peers connect to each " +"other) with the given [code]peer_id[/code] (must be between 1 and " +"2147483647)." +msgstr "" +"将多人游戏对等体初始化为网状(即所有对等体都互相连接),对等体 ID 为 " +"[code]peer_id[/code](必须在 1 和 2147483647 之间)。" + +msgid "" +"Initialize the multiplayer peer as a server (with unique ID of [code]1[/" +"code]). This mode enables [method MultiplayerPeer." +"is_server_relay_supported], allowing the upper [MultiplayerAPI] layer to " +"perform peer exchange and packet relaying.\n" +"You can optionally specify a [code]channels_config[/code] array of [enum " +"MultiplayerPeer.TransferMode] which will be used to create extra channels " +"(WebRTC only supports one transfer mode per channel)." +msgstr "" +"将多人游戏对等体作为服务器进行初始化(唯一 ID 为 [code]1[/code])。这种模式会" +"启用 [method MultiplayerPeer.is_server_relay_supported],允许上层 " +"[MultiplayerAPI] 执行对等体交换和数据包接力。\n" +"你也可以指定 [code]channels_config[/code] 数组,数组中的元素为 [enum " +"MultiplayerPeer.TransferMode],会用于创建额外的通道(WebRTC 的每个通道仅支持" +"一种传输模式)。" + +msgid "" +"Returns a dictionary representation of the peer with given [code]peer_id[/" +"code] with three keys. [code]connection[/code] containing the " +"[WebRTCPeerConnection] to this peer, [code]channels[/code] an array of three " +"[WebRTCDataChannel], and [code]connected[/code] a boolean representing if " +"the peer connection is currently connected (all three channels are open)." +msgstr "" +"返回 ID 为 [code]peer_id[/code] 的对等体的字典表示,其中包含三个字段。" +"[code]connection[/code] 包含与这个对等体的 [WebRTCPeerConnection]," +"[code]channels[/code] 是三个 [WebRTCDataChannel] 的数组,而 [code]connected[/" +"code] 则是代表对等体目前是否已连接的布尔值(三个通道均已开放)。" + +msgid "" "Returns a dictionary which keys are the peer ids and values the peer " "representation as in [method get_peer]." msgstr "" @@ -109438,6 +123017,15 @@ msgstr "" "如果给定的 [code]peer_id[/code] 在对等体映射中,则返回 [code]true[/code],尽" "管它可能没有连接。" +msgid "" +"Remove the peer with given [code]peer_id[/code] from the mesh. If the peer " +"was connected, and [signal MultiplayerPeer.peer_connected] was emitted for " +"it, then [signal MultiplayerPeer.peer_disconnected] will be emitted." +msgstr "" +"从 mesh 结构中移除具有给定 [code]peer_id[/code] 的对等体。如果该对等体已连" +"接,并且为它发出过 [signal MultiplayerPeer.peer_connected],那么 [signal " +"MultiplayerPeer.peer_disconnected] 也将被发出。" + msgid "Interface to a WebRTC peer connection." msgstr "与 WebRTC 对等体连接的接口。" @@ -109565,6 +123153,19 @@ msgid "Returns the connection state. See [enum ConnectionState]." msgstr "返回连接状态。见 [enum ConnectionState]。" msgid "" +"Returns the ICE [enum GatheringState] of the connection. This lets you " +"detect, for example, when collection of ICE candidates has finished." +msgstr "" +"返回连接的 ICE [enum GatheringState]。你可以据此来检测,例如,ICE 候选项的收" +"集是否完成。" + +msgid "" +"Returns the [enum SignalingState] on the local end of the connection while " +"connecting or reconnecting to another peer." +msgstr "" +"返回在连接或重新连接至其他对等体时,连接本地端的 [enum SignalingState]。" + +msgid "" "Re-initialize this peer connection, closing any previously active " "connection, and going back to state [constant STATE_NEW]. A dictionary of " "[code]options[/code] can be passed to configure the peer connection.\n" @@ -109616,6 +123217,14 @@ msgstr "" "Node._physics_process] 中。" msgid "" +"Sets the [code]extension_class[/code] as the default " +"[WebRTCPeerConnectionExtension] returned when creating a new " +"[WebRTCPeerConnection]." +msgstr "" +"将 [code]extension_class[/code] 设置为创建新 [WebRTCPeerConnection] 时返回的" +"默认 [WebRTCPeerConnectionExtension]。" + +msgid "" "Sets the SDP description of the local peer. This should be called in " "response to [signal session_description_created].\n" "After calling this function the peer will start emitting [signal " @@ -109711,6 +123320,51 @@ msgstr "" "ICE 代理已完成候选连接的收集。如果发生了需要收集新候选的情况,例如新添加了接" "口、新添加了 ICE 服务器,则会返回收集状态,进行候选项的收集。" +msgid "" +"There is no ongoing exchange of offer and answer underway. This may mean " +"that the [WebRTCPeerConnection] is new ([constant STATE_NEW]) or that " +"negotiation is complete and a connection has been established ([constant " +"STATE_CONNECTED])." +msgstr "" +"没有正在进行的要约和答复的交换。这可能意味着 [WebRTCPeerConnection] 是新的" +"([constant STATE_NEW]),或者协商已完成并且连接已经建立([constant " +"STATE_CONNECTED])。" + +msgid "" +"The local peer has called [method set_local_description], passing in SDP " +"representing an offer (usually created by calling [method create_offer]), " +"and the offer has been applied successfully." +msgstr "" +"本地对等体已调用 [method set_local_description],正在传入代表邀约的 SDP(通常" +"由调用 [method create_offer] 创建),邀约已成功应用。" + +msgid "" +"The remote peer has created an offer and used the signaling server to " +"deliver it to the local peer, which has set the offer as the remote " +"description by calling [method set_remote_description]." +msgstr "" +"远程对等体已创建邀约,并将其使用信号服务器传递给了本地对等体,本地对等体已调" +"用 [method set_remote_description] 将邀约设置为远程描述。" + +msgid "" +"The offer sent by the remote peer has been applied and an answer has been " +"created and applied by calling [method set_local_description]. This " +"provisional answer describes the supported media formats and so forth, but " +"may not have a complete set of ICE candidates included. Further candidates " +"will be delivered separately later." +msgstr "" +"已应用远程对等体发送的邀约,已创建恢复并调用了 [method " +"set_local_description] 进行应用。这个临时应答描述了支持的媒体格式等信息,但可" +"能不包含完整的 ICE 候选项。后续会单独发送更多候选项。" + +msgid "" +"A provisional answer has been received and successfully applied in response " +"to an offer previously sent and established by calling [method " +"set_local_description]." +msgstr "" +"已经接收到初步回应,并已成功地应用到之前通过调用 [method " +"set_local_description] 发送并建立的邀请中。" + msgid "The [WebRTCPeerConnection] has been closed." msgstr "该 [WebRTCPeerConnection] 已关闭连接。" @@ -109750,6 +123404,15 @@ msgstr "" "code] 或 [code]wss://[/code] 开头。" msgid "" +"Starts a new multiplayer server listening on the given [param port]. You can " +"optionally specify a [param bind_address], and provide valid [param " +"tls_server_options] to use TLS. See [method TLSOptions.server]." +msgstr "" +"启动新的多人服务器,监听给定的 [param port]。可以指定 [param bind_address]," +"也可以提供有效的 [param tls_server_options] 来使用 TLS。见 [method " +"TLSOptions.server]。" + +msgid "" "Returns the [WebSocketPeer] associated to the given [code]peer_id[/code]." msgstr "返回与给定 [code]peer_id[/code] 关联的 [WebSocketPeer]。" @@ -110296,6 +123959,54 @@ msgid "How to make a VR game for WebXR with Godot 4" msgstr "如何使用 Godot 4 制作 WebXR 的 VR 游戏" msgid "" +"Returns the target ray mode for the given [code]input_source_id[/code].\n" +"This can help interpret the input coming from that input source. See " +"[url=https://developer.mozilla.org/en-US/docs/Web/API/XRInputSource/" +"targetRayMode]XRInputSource.targetRayMode[/url] for more information." +msgstr "" +"返回给定的 [code]input_source_id[/code] 的目标射线模式。\n" +"可用于帮助解析来自该输入源的输入。详情见 [url=https://developer.mozilla.org/" +"en-US/docs/Web/API/XRInputSource/targetRayMode]XRInputSource.targetRayMode[/" +"url]。" + +msgid "" +"Gets an [XRPositionalTracker] for the given [code]input_source_id[/code].\n" +"In the context of WebXR, an input source can be an advanced VR controller " +"like the Oculus Touch or Index controllers, or even a tap on the screen, a " +"spoken voice command or a button press on the device itself. When a non-" +"traditional input source is used, interpret the position and orientation of " +"the [XRPositionalTracker] as a ray pointing at the object the user wishes to " +"interact with.\n" +"Use this method to get information about the input source that triggered one " +"of these signals:\n" +"- [signal selectstart]\n" +"- [signal select]\n" +"- [signal selectend]\n" +"- [signal squeezestart]\n" +"- [signal squeeze]\n" +"- [signal squeezestart]" +msgstr "" +"获取给定 [code]input_source_id[/code] 的 [XRPositionalTracker]。\n" +"在 WebXR 上下文中,输入源可以是类似 Oculus Touch 和 Index 控制器的高级 VR 控" +"制器,甚至也可以是屏幕上的点击、语音命令或按下设备本身的按钮。当使用非传统输" +"入源时,会将 [XRPositionalTracker] 的位置和方向解释为指向用户希望与之交互的对" +"象的射线。\n" +"可以使用此方法获取有关触发以下信号之一的输入源的信息:\n" +"- [signal selectstart]\n" +"- [signal select]\n" +"- [signal selectend]\n" +"- [signal squeezestart]\n" +"- [signal squeeze]\n" +"- [signal squeezestart]" + +msgid "" +"Returns [code]true[/code] if there is an active input source with the given " +"[code]input_source_id[/code]." +msgstr "" +"如果存在具有给定 [code]input_source_id[/code] 的活动输入源,则返回 " +"[code]true[/code]。" + +msgid "" "Checks if the given [code]session_mode[/code] is supported by the user's " "browser.\n" "Possible values come from [url=https://developer.mozilla.org/en-US/docs/Web/" @@ -110311,6 +124022,103 @@ msgstr "" "此方法不返回任何东西,而是将结果发送给 [signal session_supported] 信号。" msgid "" +"A comma-seperated list of optional features used by [method XRInterface." +"initialize] when setting up the WebXR session.\n" +"If a user's browser or device doesn't support one of the given features, " +"initialization will continue, but you won't be able to use the requested " +"feature.\n" +"This doesn't have any effect on the interface when already initialized.\n" +"Possible values come from [url=https://developer.mozilla.org/en-US/docs/Web/" +"API/XRReferenceSpaceType]WebXR's XRReferenceSpaceType[/url]. If you want to " +"use a particular reference space type, it must be listed in either [member " +"required_features] or [member optional_features]." +msgstr "" +"[method XRInterface.initialize] 在设置 WebXR 会话时使用的以逗号分隔的可选功能" +"列表。\n" +"如果用户的浏览器或设备,不支持给定的任一功能,初始化将继续,但将无法使用所请" +"求的功能。\n" +"这对已经初始化的接口没有任何影响。\n" +"可能的值来自 [url=https://developer.mozilla.org/en-US/docs/Web/API/" +"XRReferenceSpaceType]WebXR 的 XRReferenceSpaceType[/url]。如果想要使用特定的" +"参考空间类型,则它必须列在 [member required_features] 或 [member " +"optional_features] 中。" + +msgid "" +"The reference space type (from the list of requested types set in the " +"[member requested_reference_space_types] property), that was ultimately used " +"by [method XRInterface.initialize] when setting up the WebXR session.\n" +"Possible values come from [url=https://developer.mozilla.org/en-US/docs/Web/" +"API/XRReferenceSpaceType]WebXR's XRReferenceSpaceType[/url]. If you want to " +"use a particular reference space type, it must be listed in either [member " +"required_features] or [member optional_features]." +msgstr "" +"参考空间类型(来自 [member requested_reference_space_types] 属性中设置的请求" +"类型列表),在设置 WebXR 会话时最终由 [method XRInterface.initialize] 使" +"用。\n" +"可能的值来自 [url=https://developer.mozilla.org/en-US/docs/Web/API/" +"XRReferenceSpaceType]WebXR 的 XRReferenceSpaceType[/url]。 如果想要使用特定的" +"参考空间类型,则它必须列在 [member required_features] 或 [member " +"optional_features] 中。" + +msgid "" +"A comma-seperated list of reference space types used by [method XRInterface." +"initialize] when setting up the WebXR session.\n" +"The reference space types are requested in order, and the first one " +"supported by the users device or browser will be used. The [member " +"reference_space_type] property contains the reference space type that was " +"ultimately selected.\n" +"This doesn't have any effect on the interface when already initialized.\n" +"Possible values come from [url=https://developer.mozilla.org/en-US/docs/Web/" +"API/XRReferenceSpaceType]WebXR's XRReferenceSpaceType[/url]. If you want to " +"use a particular reference space type, it must be listed in either [member " +"required_features] or [member optional_features]." +msgstr "" +"[method XRInterface.initialize] 在设置 WebXR 会话时使用的以逗号分隔的参考空间" +"类型列表。\n" +"按顺序请求参考空间类型,将使用用户设备或浏览器支持的第一个。[member " +"reference_space_type] 属性包含最终选择的参考空间类型。\n" +"这对已经初始化的接口没有任何影响。\n" +"可能的值来自 [url=https://developer.mozilla.org/en-US/docs/Web/API/" +"XRReferenceSpaceType]WebXR 的 XRReferenceSpaceType[/url]。如果想要使用特定的" +"参考空间类型,则它必须列在 [member required_features] 或 [member " +"optional_features] 中。" + +msgid "" +"A comma-seperated list of required features used by [method XRInterface." +"initialize] when setting up the WebXR session.\n" +"If a user's browser or device doesn't support one of the given features, " +"initialization will fail and [signal session_failed] will be emitted.\n" +"This doesn't have any effect on the interface when already initialized.\n" +"Possible values come from [url=https://developer.mozilla.org/en-US/docs/Web/" +"API/XRReferenceSpaceType]WebXR's XRReferenceSpaceType[/url]. If you want to " +"use a particular reference space type, it must be listed in either [member " +"required_features] or [member optional_features]." +msgstr "" +"[method XRInterface.initialize] 在设置 WebXR 会话时使用的以逗号分隔的所需功能" +"列表。\n" +"如果用户的浏览器或设备不支持给定的任一功能,则初始化将失败并发出 [signal " +"session_failed] 。\n" +"这对已经初始化的接口没有任何影响。\n" +"可能的值来自 [url=https://developer.mozilla.org/en-US/docs/Web/API/" +"XRReferenceSpaceType]WebXR 的 XRReferenceSpaceType[/url]。如果想要使用特定的" +"参考空间类型,则它必须列在 [member required_features] 或 [member " +"optional_features] 中。" + +msgid "" +"The session mode used by [method XRInterface.initialize] when setting up the " +"WebXR session.\n" +"This doesn't have any effect on the interface when already initialized.\n" +"Possible values come from [url=https://developer.mozilla.org/en-US/docs/Web/" +"API/XRSessionMode]WebXR's XRSessionMode[/url], including: [code]\"immersive-" +"vr\"[/code], [code]\"immersive-ar\"[/code], and [code]\"inline\"[/code]." +msgstr "" +"建立 WebXR 会话时,[method XRInterface.initialize] 使用的会话模式。\n" +"这对已经初始化的接口没有任何影响。\n" +"可能的值来自 [url=https://developer.mozilla.org/en-US/docs/Web/API/" +"XRSessionMode]WebXR 的 XRSessionMode[/url],包括:[code]\"immersive-vr\"[/" +"code] 、[code]\"immersive-ar\"[/code] 和 [code]\"inline\"[/code]。" + +msgid "" "Indicates if the WebXR session's imagery is visible to the user.\n" "Possible values come from [url=https://developer.mozilla.org/en-US/docs/Web/" "API/XRVisibilityState]WebXR's XRVisibilityState[/url], including " @@ -110323,12 +124131,121 @@ msgstr "" "code]、[code]\"visible\"[/code] 和 [code]\"visible-blurred\"[/code]。" msgid "" +"Emitted to indicate that the reference space has been reset or " +"reconfigured.\n" +"When (or whether) this is emitted depends on the user's browser or device, " +"but may include when the user has changed the dimensions of their play space " +"(which you may be able to access via [method XRInterface.get_play_area]) or " +"pressed/held a button to recenter their position.\n" +"See [url=https://developer.mozilla.org/en-US/docs/Web/API/XRReferenceSpace/" +"reset_event]WebXR's XRReferenceSpace reset event[/url] for more information." +msgstr "" +"发射以表明参考空间已被重置或重新配置。\n" +"何时(或是否)发射取决于用户的浏览器或设备,但可能包括用户改变了他们的游戏空" +"间的大小(可以通过 [method XRInterface.get_play_area] 访问),或按下/按住一个" +"按钮来重新定位他们的位置。\n" +"有关详细信息,请参阅 [url=https://developer.mozilla.org/en-US/docs/Web/API/" +"XRReferenceSpace/reset_event]WebXR 的 XRReferenceSpace 重置事件[/url]。" + +msgid "" +"Emitted after one of the input sources has finished its \"primary action\".\n" +"Use [method get_input_source_tracker] and [method " +"get_input_source_target_ray_mode] to get more information about the input " +"source." +msgstr "" +"某个输入源完成其“主要动作”后发出。\n" +"请使用 [method get_input_source_tracker] 和 [method " +"get_input_source_target_ray_mode] 获取关于该输入源的更多信息。" + +msgid "" +"Emitted when one of the input sources has finished its \"primary action\".\n" +"Use [method get_input_source_tracker] and [method " +"get_input_source_target_ray_mode] to get more information about the input " +"source." +msgstr "" +"某个输入源完成其“主要动作”时发出。\n" +"请使用 [method get_input_source_tracker] 和 [method " +"get_input_source_target_ray_mode] 获取关于该输入源的更多信息。" + +msgid "" +"Emitted when one of the input source has started its \"primary action\".\n" +"Use [method get_input_source_tracker] and [method " +"get_input_source_target_ray_mode] to get more information about the input " +"source." +msgstr "" +"某个输入源开始其“主要动作”时发出。\n" +"请使用 [method get_input_source_tracker] 和 [method " +"get_input_source_target_ray_mode] 获取关于该输入源的更多信息。" + +msgid "" +"Emitted when the user ends the WebXR session (which can be done using UI " +"from the browser or device).\n" +"At this point, you should do [code]get_viewport().use_xr = false[/code] to " +"instruct Godot to resume rendering to the screen." +msgstr "" +"用户结束 WebXR 会话时发出(可以使用浏览器或设备的 UI 结束会话)。\n" +"此时,你应该执行 [code]get_viewport().use_xr = false[/code],让 Godot 继续渲" +"染至屏幕。" + +msgid "" +"Emitted by [method XRInterface.initialize] if the session fails to start.\n" +"[code]message[/code] may optionally contain an error message from WebXR, or " +"an empty string if no message is available." +msgstr "" +"由 [method XRInterface.initialize] 在该会话启动失败时发出。\n" +"[code]message[/code] 可能会包含 WebXR 的错误信息,如果没有可用信息则为空字符" +"串。" + +msgid "" +"Emitted by [method XRInterface.initialize] if the session is successfully " +"started.\n" +"At this point, it's safe to do [code]get_viewport().use_xr = true[/code] to " +"instruct Godot to start rendering to the XR device." +msgstr "" +"由 [method XRInterface.initialize] 在该会话启动成功时发出。\n" +"此时,可以安全地执行 [code]get_viewport().use_xr = true[/code],让 Godot 开始" +"渲染至 XR 设备。" + +msgid "" "Emitted by [method is_session_supported] to indicate if the given " "[code]session_mode[/code] is supported or not." msgstr "" "由 [method is_session_supported] 触发,表示是否支持指定的 " "[code]session_mode[/code]。" +msgid "" +"Emitted after one of the input sources has finished its \"primary squeeze " +"action\".\n" +"Use [method get_input_source_tracker] and [method " +"get_input_source_target_ray_mode] to get more information about the input " +"source." +msgstr "" +"某个输入源完成其“主要紧握动作”后发出。\n" +"请使用 [method get_input_source_tracker] 和 [method " +"get_input_source_target_ray_mode] 获取关于该输入源的更多信息。" + +msgid "" +"Emitted when one of the input sources has finished its \"primary squeeze " +"action\".\n" +"Use [method get_input_source_tracker] and [method " +"get_input_source_target_ray_mode] to get more information about the input " +"source." +msgstr "" +"某个输入源完成其“主要紧握动作”时发出。\n" +"请使用 [method get_input_source_tracker] 和 [method " +"get_input_source_target_ray_mode] 获取关于该输入源的更多信息。" + +msgid "" +"Emitted when one of the input sources has started its \"primary squeeze " +"action\".\n" +"Use [method get_input_source_tracker] and [method " +"get_input_source_target_ray_mode] to get more information about the input " +"source." +msgstr "" +"某个输入源开始其“主要紧握动作”时发出。\n" +"请使用 [method get_input_source_tracker] 和 [method " +"get_input_source_target_ray_mode] 获取关于该输入源的更多信息。" + msgid "Emitted when [member visibility_state] has changed." msgstr "当 [member visibility_state] 已更改时触发。" @@ -110621,6 +124538,38 @@ msgstr "" "[code]fallback_ratio[/code] 确定 [Window] 相对于其父级的最大尺寸。\n" "[b]注意:[/b]用 [param minsize] 的默认值调用它等同于用 [member size] 调用它。" +msgid "" +"Popups the [Window] centered inside its parent [Window] and sets its size as " +"a [param ratio] of parent's size." +msgstr "" +"在父 [Window] 中居中弹出该 [Window],并按照父节点大小的 [param ratio] 比例设" +"置其大小。" + +msgid "" +"Popups the [Window] with a position shifted by parent [Window]'s position.\n" +"If the [Window] is embedded, has the same effect as [method popup]." +msgstr "" +"弹出该 [Window],位置会根据父级 [Window] 的位置进行偏移。\n" +"如果该 [Window] 是内嵌的,则与 [method popup] 等效。" + +msgid "" +"Tells the OS that the [Window] needs an attention. This makes the window " +"stand out in some way depending on the system, e.g. it might blink on the " +"task bar." +msgstr "" +"告诉操作系统 [Window] 需要注意。这样会让该窗口以某种方式脱颖而出,具体形式取" +"决于系统,例如可能会在任务栏上闪烁。" + +msgid "" +"Resets the size to the minimum size, which is the max of [member min_size] " +"and (if [member wrap_controls] is enabled) [method " +"get_contents_minimum_size]. This is equivalent to calling " +"[code]set_size(Vector2i())[/code] (or any size below the minimum)." +msgstr "" +"将大小重置为最小大小,即 [member min_size] 和([member wrap_controls] 启用" +"时)[method get_contents_minimum_size] 之间的较大值。相当于调用 " +"[code]set_size(Vector2i())[/code](或低于最小值的任何大小)。" + msgid "Sets a specified window flag." msgstr "设置指定的窗口标志。" @@ -110647,6 +124596,21 @@ msgid "" msgstr "启用字体过采样。会使得字体在放大后更好看。" msgid "" +"Makes the [Window] appear. This enables interactions with the [Window] and " +"doesn't change any of its property other than visibility (unlike e.g. " +"[method popup])." +msgstr "" +"让该 [Window] 出现。这样会启用与 [Window] 的交互,除了可见性之外不会更改其他" +"任何属性(与 [method popup] 不同)。" + +msgid "" +"If [code]true[/code], the window will be on top of all other windows. Does " +"not work if [member transient] is enabled." +msgstr "" +"如果为 [code]true[/code],则该窗口将位于所有其他窗口的顶部。如果启用了 " +"[member transient] 则不起作用。" + +msgid "" "Toggles if any text should automatically change to its translated version " "depending on the current locale." msgstr "切换是否所有文本都应该根据当前区域设置自动变为翻译后的版本。" @@ -110661,13 +124625,45 @@ msgstr "" "指定当 [Window] 的大小改变时,内容纵横比的行为。基础纵横比由 [member " "content_scale_size] 决定。" +msgid "" +"Specifies the base scale of [Window]'s content when its [member size] is " +"equal to [member content_scale_size]." +msgstr "" +"指定当 [member size] 等于 [member content_scale_size] 时 [Window] 内容的基础" +"比例。" + msgid "Specifies how the content is scaled when the [Window] is resized." msgstr "指定当 [Window] 的大小改变时,如何对内容进行缩放。" +msgid "" +"Base size of the content (i.e. nodes that are drawn inside the window). If " +"non-zero, [Window]'s content will be scaled when the window is resized to a " +"different size." +msgstr "" +"内容的基础大小(内容指在窗口内绘制的节点)。如果非零,当窗口大小发生变化时," +"[Window] 的内容将被缩放。" + msgid "The screen the window is currently on." msgstr "该窗口当前所在的屏幕。" msgid "" +"If [code]true[/code], the [Window] will be in exclusive mode. Exclusive " +"windows are always on top of their parent and will block all input going to " +"the parent [Window].\n" +"Needs [member transient] enabled to work." +msgstr "" +"如果为 [code]true[/code],则 [Window] 将处于独占模式。独占窗口总是在其父窗口" +"的顶部,会阻止所有输入到达父级 [Window]。\n" +"需要启用 [member transient] 才能正常工作。" + +msgid "" +"If [code]true[/code], the [Window] contents is expanded to the full size of " +"the window, window title bar is transparent." +msgstr "" +"如果为 [code]true[/code],则 [Window] 的内容将会扩展到窗口的完整大小,窗口标" +"题栏是透明的。" + +msgid "" "If non-zero, the [Window] can't be resized to be bigger than this size.\n" "[b]Note:[/b] This property will be ignored if the value is lower than " "[member min_size]." @@ -110694,6 +124690,16 @@ msgstr "" "[b]注意:[/b]全屏模式在 Windows 和 Linux 上不是独占全屏。" msgid "" +"If [code]true[/code], all mouse events will be passed to the underlying " +"window of the same application. See also [member " +"mouse_passthrough_polygon].\n" +"[b]Note:[/b] This property is implemented on Linux (X11), macOS and Windows." +msgstr "" +"如果为 [code]true[/code],则所有鼠标事件都会传递给同一应用的底层窗口。另见 " +"[member mouse_passthrough_polygon]。\n" +"[b]注意:[/b]这个属性在 Linux(X11)、macOS 和 Windows 上实现。" + +msgid "" "Sets a polygonal region of the window which accepts mouse events. Mouse " "events outside the region will be passed through.\n" "Passing an empty array will disable passthrough support (all mouse events " @@ -110760,6 +124766,16 @@ msgstr "" "和 macOS 上则会被绘制。\n" "[b]注意:[/b]该属性在 Linux (X11)、macOS 和 Windows 上实现。" +msgid "" +"If [code]true[/code], the [Window] will be considered a popup. Popups are " +"sub-windows that don't show as separate windows in system's window manager's " +"window list and will send close request when anything is clicked outside of " +"them (unless [member exclusive] is enabled)." +msgstr "" +"如果为 [code]true[/code],则该 [Window] 将被视为弹出窗口。弹出窗口是子窗口," +"不会在系统窗口管理器的窗口列表中显示为单独的窗口,并且会在单击它们之外的任何" +"位置时发送关闭请求(除非启用了 [member exclusive])。" + msgid "The window's position in pixels." msgstr "该窗口的位置,单位为像素。" @@ -110767,6 +124783,13 @@ msgid "The window's size in pixels." msgstr "该窗口的大小,单位为像素。" msgid "" +"The name of a theme type variation used by this [Window] to look up its own " +"theme items. See [member Control.theme_type_variation] for more details." +msgstr "" +"此 [Window] 用于查找其自己的主题项目的主题类型变体的名称。详情见 [member " +"Control.theme_type_variation]。" + +msgid "" "The window's title. If the [Window] is non-embedded, title styles set in " "[Theme] will have no effect." msgstr "" @@ -110786,6 +124809,23 @@ msgstr "" "请注意,不同平台可能由不同的行为。" msgid "" +"If [code]true[/code], the [Window]'s background can be transparent. This is " +"best used with embedded windows.\n" +"[b]Note:[/b] For native windows, this flag has no effect if [member " +"ProjectSettings.display/window/per_pixel_transparency/allowed] is set to " +"[code]false[/code].\n" +"[b]Note:[/b] Transparency support is implemented on Linux, macOS and " +"Windows, but availability might vary depending on GPU driver, display " +"manager, and compositor capabilities." +msgstr "" +"如果为 [code]true[/code],则 [Window] 的背景可以是透明的。最好用在嵌入式窗口" +"中。\n" +"[b]注意:[/b]对于原生窗口,如果 [member ProjectSettings.display/window/" +"per_pixel_transparency/allowed] 为 [code]false[/code],则这个标志不会生效。\n" +"[b]注意:[/b]透明度支持已在 Linux、macOS 和 Windows 上实现,但可用性可能因 " +"GPU 驱动程序、显示管理器和合成器的能力而异。" + +msgid "" "If [code]true[/code], the [Window] can't be focused nor interacted with. It " "can still be visible." msgstr "" @@ -110801,6 +124841,23 @@ msgid "If [code]true[/code], the window is visible." msgstr "如果为 [code]true[/code],则该窗口可见。" msgid "" +"If [code]true[/code], the window's size will automatically update when a " +"child node is added or removed, ignoring [member min_size] if the new size " +"is bigger.\n" +"If [code]false[/code], you need to call [method child_controls_changed] " +"manually." +msgstr "" +"如果为 [code]true[/code],则添加或删除子节点时,窗口的大小会自动更新,新的大" +"小更大时会忽略 [member min_size]。\n" +"如果为 [code]false[/code],则需要手动调用 [method child_controls_changed]。" + +msgid "" +"Emitted right after [method popup] call, before the [Window] appears or does " +"anything." +msgstr "" +"在调用 [method popup] 之后但在 [Window] 出现或执行任何操作之前发送的信号。" + +msgid "" "Emitted when the [Window]'s close button is pressed or when [member " "popup_window] is enabled and user clicks outside the window.\n" "This signal can be used to handle window closing, e.g. by connecting it to " @@ -110895,6 +124952,25 @@ msgstr "" "该 [Window] 的可见性发生改变时,在 [signal visibility_changed] 之前发出。" msgid "" +"Sent when the node needs to refresh its theme items. This happens in one of " +"the following cases:\n" +"- The [member theme] property is changed on this node or any of its " +"ancestors.\n" +"- The [member theme_type_variation] property is changed on this node.\n" +"- The node enters the scene tree.\n" +"[b]Note:[/b] As an optimization, this notification won't be sent from " +"changes that occur while this node is outside of the scene tree. Instead, " +"all of the theme item updates can be applied at once when the node enters " +"the scene tree." +msgstr "" +"当节点需要刷新其主题项时发送。以下任意情况都会触发:\n" +"- 此节点或其任何祖先节点更改了 [member theme] 属性。\n" +"- 此节点更改了 [member theme_type_variation] 属性。\n" +"- 节点进入场景树。\n" +"[b]注意:[/b]为了优化性能,此节点在场景树之外发生更改时不会发送此通知。取而代" +"之的是,当节点进入场景树时会统一应用所有主题项的更新。" + +msgid "" "Full screen window mode. Note that this is not [i]exclusive[/i] full screen. " "On Windows and Linux, a borderless window is used to emulate full screen. On " "macOS, a new desktop is used to display the running project.\n" @@ -110911,6 +124987,25 @@ msgstr "" "multiple_resolutions.html]多种分辨率[/url]。" msgid "" +"Exclusive full screen window mode. This mode is implemented on Windows only. " +"On other platforms, it is equivalent to [constant MODE_FULLSCREEN].\n" +"Only one window in exclusive full screen mode can be visible on a given " +"screen at a time. If multiple windows are in exclusive full screen mode for " +"the same screen, the last one being set to this mode takes precedence.\n" +"Regardless of the platform, enabling full screen will change the window size " +"to match the monitor's size. Therefore, make sure your project supports " +"[url=$DOCS_URL/tutorials/rendering/multiple_resolutions.html]multiple " +"resolutions[/url] when enabling full screen mode." +msgstr "" +"独占式全屏窗口模式。该模式仅在 Windows 平台上实现。在其他平台上等同于 " +"[constant MODE_FULLSCREEN]。\n" +"同一屏幕上一次只能有一个窗口处于独占式全屏模式。如果同一屏幕上有多个窗口都启" +"用了独占式全屏模式,则最后一个设置为该模式的窗口会优先显示。\n" +"无论在哪个平台上,启用全屏模式将会将窗口大小调整为与显示器相匹配的大小。因" +"此,在启用全屏模式之前,请确保你的项目支持[url=$DOCS_URL/tutorials/rendering/" +"multiple_resolutions.html]多分辨率[/url]。" + +msgid "" "The window can't be resizing by dragging its resize grip. It's still " "possible to resize the window using [member size]. This flag is ignored for " "full screen windows. Set with [member unresizable]." @@ -111058,6 +125153,11 @@ msgstr "关闭按钮的水平位置偏移。" msgid "Vertical position offset of the close button." msgstr "关闭按钮的垂直位置偏移。" +msgid "" +"Defines the outside margin at which the window border can be grabbed with " +"mouse and resized." +msgstr "定义了窗口边框外侧可以使用鼠标抓取和调整大小的边距。" + msgid "Height of the title bar." msgstr "标题栏的高度。" @@ -111076,10 +125176,31 @@ msgstr "关闭按钮的图标。" msgid "The icon for the close button when it's being pressed." msgstr "关闭按钮被按下时的图标。" +msgid "" +"The background style used when the [Window] is embedded. Note that this is " +"drawn only under the window's content, excluding the title. For proper " +"borders and title bar style, you can use [code]expand_margin_*[/code] " +"properties of [StyleBoxFlat].\n" +"[b]Note:[/b] The content background will not be visible unless [member " +"transparent] is enabled." +msgstr "" +"[Window] 为嵌入模式时使用的背景样式。请注意,背景仅绘制在窗口内容的下方,不包" +"括标题。要得到合适的边框和标题栏样式,可以使用 [StyleBoxFlat] 的 " +"[code]expand_margin_*[/code] 属性。\n" +"[b]注意:[/b]只有在启用 [member transparent] 时,内容背景才会可见。" + msgid "Class that has everything pertaining to a 2D world." msgstr "拥有与 2D 世界有关的所有内容的类。" msgid "" +"Class that has everything pertaining to a 2D world. A physics space, a " +"visual scenario and a sound space. 2D nodes register their resources into " +"the current 2D world." +msgstr "" +"这个类包含所有与 2D 世界相关的内容,包括物理空间、可视场景和音频空间。2D 节点" +"会将它们的资源注册到当前的 2D 世界中。" + +msgid "" "The [RID] of this world's canvas resource. Used by the [RenderingServer] for " "2D drawing." msgstr "这个世界的画布资源的 [RID]。由 [RenderingServer] 用于 2D 绘制。" @@ -111375,6 +125496,30 @@ msgid "An anchor point in AR space." msgstr "AR 空间中的锚点。" msgid "" +"The [XRAnchor3D] point is a spatial node that maps a real world location " +"identified by the AR platform to a position within the game world. For " +"example, as long as plane detection in ARKit is on, ARKit will identify and " +"update the position of planes (tables, floors, etc) and create anchors for " +"them.\n" +"This node is mapped to one of the anchors through its unique ID. When you " +"receive a signal that a new anchor is available, you should add this node to " +"your scene for that anchor. You can predefine nodes and set the ID; the " +"nodes will simply remain on 0,0,0 until a plane is recognized.\n" +"Keep in mind that, as long as plane detection is enabled, the size, placing " +"and orientation of an anchor will be updated as the detection logic learns " +"more about the real world out there especially if only part of the surface " +"is in view." +msgstr "" +"[XRAnchor3D] 点是一个空间节点,它将由 AR 平台识别的真实世界位置映射到游戏世界" +"中的某个位置。例如,只要 ARKit 中的平面检测处于开启状态,ARKit 就会识别和更新" +"平面(桌子、地板等)的位置,并为它们创建锚点。\n" +"该节点通过其唯一 ID 映射到其中一个锚点。当收到新锚点可用的信号时,应该将该节" +"点添加到该锚点的场景中。可以预定义节点并设置ID;节点将简单地保持在 0,0,0 上," +"直到识别出一个平面。\n" +"请记住,只要启用了平面检测,锚点的大小、位置和方向都会随着检测逻辑了解更多关" +"于真实世界的信息而更新,尤其是在只有部分表面在视野内时。" + +msgid "" "Returns a plane aligned with our anchor; handy for intersection testing." msgstr "返回一个与我们的锚点对齐的平面;方便进行交集测试。" @@ -111391,6 +125536,25 @@ msgid "" "tracking." msgstr "应用了一些 AR/VR 规则的相机节点,例如位置跟踪。" +msgid "" +"This is a helper spatial node for our camera; note that, if stereoscopic " +"rendering is applicable (VR-HMD), most of the camera properties are ignored, " +"as the HMD information overrides them. The only properties that can be " +"trusted are the near and far planes.\n" +"The position and orientation of this node is automatically updated by the XR " +"Server to represent the location of the HMD if such tracking is available " +"and can thus be used by game logic. Note that, in contrast to the XR " +"Controller, the render thread has access to the most up-to-date tracking " +"data of the HMD and the location of the XRCamera3D can lag a few " +"milliseconds behind what is used for rendering as a result." +msgstr "" +"这是用于我们相机的一种辅助空间节点;请注意,如果立体渲染适用(VR-HMD),则大" +"多数相机属性都会被忽略,因为 HMD 信息会覆盖它们。可以信任的属性只有近平面和远" +"平面。\n" +"如果此类跟踪可用,则该节点的位置和方向由 XR 服务器自动更新,以表示 HMD 的位" +"置,因此可以被游戏逻辑使用。请注意,与 XR 控制器相比,渲染线程可以访问 HMD 的" +"最新跟踪数据,因此 XRCamera3D 的位置可能比用于渲染的位置滞后几毫秒。" + msgid "XR documentation index" msgstr "XR 文档索引" @@ -111398,6 +125562,44 @@ msgid "A spatial node representing a spatially-tracked controller." msgstr "表示空间跟踪控制器的空间节点。" msgid "" +"This is a helper spatial node that is linked to the tracking of controllers. " +"It also offers several handy passthroughs to the state of buttons and such " +"on the controllers.\n" +"Controllers are linked by their ID. You can create controller nodes before " +"the controllers are available. If your game always uses two controllers (one " +"for each hand), you can predefine the controllers with ID 1 and 2; they will " +"become active as soon as the controllers are identified. If you expect " +"additional controllers to be used, you should react to the signals and add " +"XRController3D nodes to your scene.\n" +"The position of the controller node is automatically updated by the " +"[XRServer]. This makes this node ideal to add child nodes to visualize the " +"controller.\n" +"As many XR runtimes now use a configurable action map all inputs are named." +msgstr "" +"这是一个辅助空间节点,链接到控制器的跟踪。它还为控制器上的按钮等状态,提供了" +"几个方便的直通方式。\n" +"控制器通过其 ID 链接。可以在控制器可用之前创建控制器节点。如果游戏总是使用两" +"个控制器(每只手一个),可以预定义 ID 为 1 和 2 的控制器;一旦控制器被识别," +"它们将被立即激活。如果希望使用额外的控制器,应该对这些信号做出反应并将 " +"XRController3D 节点添加到场景中。\n" +"控制器节点的位置由 [XRServer] 自动更新。这使得该节点非常适合添加子节点以可视" +"化控制器。\n" +"由于许多 XR 运行时现在使用可配置的动作映射,因此所有输入都被命名。" + +msgid "" +"Returns a numeric value for the input with the given [param name]. This is " +"used for triggers and grip sensors." +msgstr "返回具有给定 [param name] 的输入的数值。用于触发器和抓握传感器。" + +msgid "" +"Returns a [Variant] for the input with the given [param name]. This works " +"for any input type, the variant will be typed according to the actions " +"configuration." +msgstr "" +"返回具有给定名称 [param name] 的输入对应的变体 [Variant]。任何输入类型均可" +"用,该变体会根据配置的动作设置类型。" + +msgid "" "Returns the hand holding this controller, if known. See [enum " "XRPositionalTracker.TrackerHand]." msgstr "" @@ -111420,10 +125622,32 @@ msgstr "当该控制器上的一个按钮被按下时触发。" msgid "Emitted when a button on this controller is released." msgstr "当该控制器上的一个按钮被释放时触发。" +msgid "" +"Emitted when a trigger or similar input on this controller changes value." +msgstr "当该控制器上的触发器或类似输入更改值时发出。" + +msgid "Emitted when a thumbstick or thumbpad on this controller is moved." +msgstr "当该控制器上的拇指杆或拇指板被移动时发出。" + msgid "Base class for an XR interface implementation." msgstr "XR 接口实现的基类。" msgid "" +"This class needs to be implemented to make an AR or VR platform available to " +"Godot and these should be implemented as C++ modules or GDExtension modules. " +"Part of the interface is exposed to GDScript so you can detect, enable and " +"configure an AR or VR platform.\n" +"Interfaces should be written in such a way that simply enabling them will " +"give us a working setup. You can query the available interfaces through " +"[XRServer]." +msgstr "" +"需要实现该类以使 Godot 可以使用 AR 或 VR 平台,并且这些应作为 C++ 模块或 " +"GDExtension 模块实现。部分接口公开给 GDScript,因此可以检测、启用和配置 AR " +"或 VR 平台。\n" +"接口应该以这样一种方式编写,只要简单地启用它们就会提供一个工作设置。可以通过 " +"[XRServer] 查询可用的接口。" + +msgid "" "If this is an AR interface that requires displaying a camera feed as the " "background, this method returns the feed ID in the [CameraServer] for this " "interface." @@ -111440,6 +125664,17 @@ msgid "" "Returns the name of this interface (OpenXR, OpenVR, OpenHMD, ARKit, etc)." msgstr "返回该接口的名称(OpenXR、OpenVR、OpenHMD、ARKit 等)。" +msgid "" +"Returns an array of vectors that denotes the physical play area mapped to " +"the virtual space around the [XROrigin3D] point. The points form a convex " +"polygon that can be used to react to or visualize the play area. This " +"returns an empty array if this feature is not supported or if the " +"information is not yet available." +msgstr "" +"返回一个向量数组,表示映射到 [XROrigin3D] 点周围的虚拟空间的物理游玩区域。这" +"些点形成一个凸多边形,可被用于对游玩区域做出反应或可视化。如果该功能不受支持" +"或信息尚不可用,则返回一个空数组。" + msgid "Returns the projection matrix for a view/eye." msgstr "返回视图/眼睛的投影矩阵。" @@ -111462,9 +125697,107 @@ msgstr "" "如果支持,返回我们的跟踪状态。这将使你能够向用户反馈,是否存在位置跟踪的问" "题。" +msgid "" +"Returns the transform for a view/eye.\n" +"[param view] is the view/eye index.\n" +"[param cam_transform] is the transform that maps device coordinates to scene " +"coordinates, typically the global_transform of the current XROrigin3D." +msgstr "" +"返回视图/眼睛的变换。\n" +"[param view] 是视图/眼睛的索引。\n" +"[param cam_transform] 是将设备坐标映射至场景坐标的变换,通常是当前 " +"XROrigin3D 的 global_transform。" + +msgid "" +"Returns the number of views that need to be rendered for this device. 1 for " +"Monoscopic, 2 for Stereoscopic." +msgstr "返回该设备渲染所需的视图数量。1 代表单目平面视图,2 代表双目立体视图。" + +msgid "" +"Call this to initialize this interface. The first interface that is " +"initialized is identified as the primary interface and it will be used for " +"rendering output.\n" +"After initializing the interface you want to use you then need to enable the " +"AR/VR mode of a viewport and rendering should commence.\n" +"[b]Note:[/b] You must enable the XR mode on the main viewport for any device " +"that uses the main output of Godot, such as for mobile VR.\n" +"If you do this for a platform that handles its own output (such as OpenVR) " +"Godot will show just one eye without distortion on screen. Alternatively, " +"you can add a separate viewport node to your scene and enable AR/VR on that " +"viewport. It will be used to output to the HMD, leaving you free to do " +"anything you like in the main window, such as using a separate camera as a " +"spectator camera or rendering something completely different.\n" +"While currently not used, you can activate additional interfaces. You may " +"wish to do this if you want to track controllers from other platforms. " +"However, at this point in time only one interface can render to an HMD." +msgstr "" +"调用它来初始化这个接口。被初始化的第一个接口被识别为主接口,它将用于渲染输" +"出。\n" +"初始化想要使用的接口后,需要启用视口的 AR/VR 模式,并且渲染应该开始。\n" +"[b]注意:[/b]对于任何使用 Godot 主输出的设备,例如移动 VR,必须在主视口上启" +"用 XR 模式。\n" +"如果为处理自己输出的平台(例如 OpenVR)执行该操作,则 Godot 将只显示一只眼睛" +"而不会在屏幕上失真。或者,可以将单独的视口节点添加到场景并在该视口上启用 AR/" +"VR。它将被用于输出到 HMD,让您可以在主窗口中自由地做任何您喜欢的事情,例如使" +"用单独的相机作为旁观者相机或渲染完全不同的东西。\n" +"虽然当前未使用,但可以激活其他接口。如果想跟踪来自其他平台的控制器,可能会希" +"望这样做。但是,此时只有一个接口可以渲染到 HMD。" + msgid "Is [code]true[/code] if this interface has been initialized." msgstr "如果该接口已初始化,则为 [code]true[/code]。" +msgid "Is [code]true[/code] if passthrough is enabled." +msgstr "如果已启用穿透,则为 [code]true[/code]。" + +msgid "Is [code]true[/code] if this interface supports passthrough." +msgstr "如果该接口支持穿透,则为 [code]true[/code]。" + +msgid "" +"Sets the active environment blend mode.\n" +"[param mode] is the [enum XRInterface.EnvironmentBlendMode] starting with " +"the next frame.\n" +"[b]Note:[/b] Not all runtimes support all environment blend modes, so it is " +"important to check this at startup. For example:\n" +"[codeblock]\n" +" func _ready():\n" +" var xr_interface: XRInterface = XRServer." +"find_interface(\"OpenXR\")\n" +" if xr_interface and xr_interface.is_initialized():\n" +" var vp: Viewport = get_viewport()\n" +" vp.use_xr = true\n" +" var acceptable_modes = [ XRInterface." +"XR_ENV_BLEND_MODE_OPAQUE, XRInterface.XR_ENV_BLEND_MODE_ADDITIVE ]\n" +" var modes = xr_interface." +"get_supported_environment_blend_modes()\n" +" for mode in acceptable_modes:\n" +" if mode in modes:\n" +" xr_interface." +"set_environment_blend_mode(mode)\n" +" break\n" +"[/codeblock]" +msgstr "" +"设置活动的环境混合模式。\n" +"[param mode] 是从下一帧开始的 [enum XRInterface.EnvironmentBlendMode]。\n" +"[b]注意:[/b] 并非所有运行时都支持全部的环境混合模式,因此在启动时检查这一点" +"很重要。例如:\n" +"[codeblock]\n" +" func _ready():\n" +" var xr_interface: XRInterface = XRServer." +"find_interface(\"OpenXR\")\n" +" if xr_interface and xr_interface.is_initialized():\n" +" var vp: Viewport = get_viewport()\n" +" vp.use_xr = true\n" +" var acceptable_modes = [ XRInterface." +"XR_ENV_BLEND_MODE_OPAQUE, XRInterface.XR_ENV_BLEND_MODE_ADDITIVE ]\n" +" var modes = xr_interface." +"get_supported_environment_blend_modes()\n" +" for mode in acceptable_modes:\n" +" if mode in modes:\n" +" xr_interface." +"set_environment_blend_mode(mode)\n" +" break\n" +"[/codeblock]" + msgid "" "Sets the active play area mode, will return [code]false[/code] if the mode " "can't be used with this interface." @@ -111472,9 +125805,34 @@ msgstr "" "设置活动的游玩区域模式,如果该模式无法在这个接口中使用则返回 [code]false[/" "code]。" +msgid "" +"Starts passthrough, will return [code]false[/code] if passthrough couldn't " +"be started.\n" +"[b]Note:[/b] The viewport used for XR must have a transparent background, " +"otherwise passthrough may not properly render." +msgstr "" +"启动穿透,如果无法启动则会返回 [code]false[/code]。\n" +"[b]注意:[/b]XR 所使用的视口必须有透明背景,否则穿透可能无法正确渲染。" + msgid "Stops passthrough." msgstr "停止穿透。" +msgid "" +"Call this to find out if a given play area mode is supported by this " +"interface." +msgstr "请调用这个方法来查询此接口是否支持给定的游玩区域模式。" + +msgid "" +"Triggers a haptic pulse on a device associated with this interface.\n" +"[param action_name] is the name of the action for this pulse.\n" +"[param tracker_name] is optional and can be used to direct the pulse to a " +"specific device provided that device is bound to this haptic." +msgstr "" +"在与该界面相关联的设备上触发一次触觉脉冲。\n" +"[param action_name] 是该脉冲的动作名称。\n" +"[param tracker_name] 是可选的,可用于将脉冲引导至特定设备,前提是该设备被绑定" +"到此触觉。" + msgid "Turns the interface off." msgstr "关闭接口。" @@ -111487,6 +125845,15 @@ msgstr "[code]true[/code] 如果这是个主接口。" msgid "The play area mode for this interface." msgstr "该接口的游玩区域模式。" +msgid "" +"Emitted when the play area is changed. This can be a result of the player " +"resetting the boundary or entering a new play area, the player changing the " +"play area mode, the world scale changing or the player resetting their " +"headset orientation." +msgstr "" +"当游玩区域改变时发出。这可能是玩家重置边界、进入新的游玩区域、更改游玩区域模" +"式、重置其头戴式设备方向,或者世界比例改变的结果。" + msgid "No XR capabilities." msgstr "没有 XR 功能。" @@ -111506,6 +125873,17 @@ msgstr "该接口支持 VR。" msgid "This interface supports AR (video background and real world tracking)." msgstr "该接口支持 AR(视频背景和真实世界跟踪)。" +msgid "" +"This interface outputs to an external device. If the main viewport is used, " +"the on screen output is an unmodified buffer of either the left or right eye " +"(stretched if the viewport size is not changed to the same aspect ratio of " +"[method get_render_target_size]). Using a separate viewport node frees up " +"the main viewport for other purposes." +msgstr "" +"该接口输出至外部设备。如果使用的是主视口,则屏幕上的输出是未经修改的左眼或右" +"眼缓冲区(如果视口大小未更改至与 [method get_render_target_size] 相同的纵横" +"比,则会进行拉伸)。使用单独的视口节点能够将主视口让出来做别的事情。" + msgid "Tracking is behaving as expected." msgstr "追踪行为符合预期。" @@ -111545,6 +125923,13 @@ msgstr "玩家处于坐姿,提供有限的位置跟踪,玩家周围有固定 msgid "Player is free to move around, full positional tracking." msgstr "玩家可以自由移动,提供完整的位置跟踪。" +msgid "" +"Same as roomscale but origin point is fixed to the center of the physical " +"space, XRServer.center_on_hmd disabled." +msgstr "" +"与 roomscale 相同,但是原点固定在物理空间的中心,禁用 XRServer." +"center_on_hmd。" + msgid "Opaque blend mode. This is typically used for VR devices." msgstr "不透明混合模式。通常用于 VR 设备。" @@ -111570,10 +125955,21 @@ msgstr "XR 接口扩展(插件)的基类。" msgid "External XR interface plugins should inherit from this class." msgstr "外部 XR 接口插件应继承自这个类。" +msgid "Called if interface is active and queues have been submitted." +msgstr "如果该接口处于活动状态,并且已提交队列,则调用此方法。" + msgid "" "Return [code]true[/code] if anchor detection is enabled for this interface." msgstr "如果此接口启用了锚点检测,则返回 [code]true[/code]。" +msgid "" +"Returns the camera feed ID for the [CameraFeed] registered with the " +"[CameraServer] that should be presented as the background on an AR capable " +"device (if applicable)." +msgstr "" +"返回在 [CameraServer] 上注册的 [CameraFeed] 的相机源 ID,该 ID 应在支持 AR 的" +"设备(如果适用)上显示为背景。" + msgid "Returns the [Transform3D] that positions the [XRCamera3D] in the world." msgstr "返回将 [XRCamera3D] 放置在世界中的 [Transform3D]。" @@ -111601,9 +125997,42 @@ msgid "" "Returns the projection matrix for the given view as a [PackedFloat64Array]." msgstr "返回给定试图的投影矩阵,形式为 [PackedFloat64Array]。" +msgid "" +"Returns the size of our render target for this interface, this overrides the " +"size of the [Viewport] marked as the xr viewport." +msgstr "" +"返回我们在这个接口上的渲染目标大小,覆盖标记为 XR 视口的 [Viewport] 的大小。" + +msgid "" +"Returns a [PackedStringArray] with pose names configured by this interface. " +"Note that user configuration can override this list." +msgstr "" +"返回一个 [PackedStringArray],其中包含由此接口配置的姿势名称。请注意,用户的" +"配置可以覆盖此列表。" + +msgid "" +"Returns a [PackedStringArray] with tracker names configured by this " +"interface. Note that user configuration can override this list." +msgstr "" +"返回一个 [PackedStringArray],其中包含由此接口配置的追踪器名称。请注意,用户" +"的配置可以覆盖此列表。" + +msgid "" +"Returns a [enum XRInterface.TrackingStatus] specifying the current status of " +"our tracking." +msgstr "返回指定当前追踪状态的 [enum XRInterface.TrackingStatus]。" + msgid "Returns a [Transform3D] for a given view." msgstr "返回给定视图的 [Transform3D]。" +msgid "Return velocity texture into which to render (if applicable)." +msgstr "返回作为渲染目标的速度纹理(如果适用)。" + +msgid "" +"Returns the number of views this interface requires, 1 for mono, 2 for " +"stereoscopic." +msgstr "返回此接口所需的视图数量,1 代表单目平面视图,2 代表双目立体视图。" + msgid "Initializes the interface, returns [code]true[/code] on success." msgstr "初始化该接口,成功时返回 [code]true[/code]。" @@ -111613,6 +126042,36 @@ msgstr "如果这个接口已初始化,则返回 [code]true[/code]。" msgid "Called after the XR [Viewport] draw logic has completed." msgstr "在 XR [Viewport] 绘制逻辑完成后调用。" +msgid "" +"Called if this is our primary [XRInterfaceExtension] before we start " +"processing a [Viewport] for every active XR [Viewport], returns [code]true[/" +"code] if that viewport should be rendered. An XR interface may return " +"[code]false[/code] if the user has taken off their headset and we can pause " +"rendering." +msgstr "" +"如果这是我们的主要 [XRInterfaceExtension],则在我们开始为每个活动的 XR " +"[Viewport] 处理 [Viewport] 之前调用,如果该视口应该被渲染,则返回 " +"[code]true[/code]。如果用户摘下头戴式设备,XR 接口可能会返回 [code]false[/" +"code],我们可以暂停渲染。" + +msgid "" +"Called if this [XRInterfaceExtension] is active before rendering starts, " +"most XR interfaces will sync tracking at this point in time." +msgstr "" +"如果这个 [XRInterfaceExtension] 在渲染开始前处于激活状态,则会调用这个函数," +"大多数 XR 接口都会在此时进行追踪同步。" + +msgid "" +"Called if this [XRInterfaceExtension] is active before our physics and game " +"process is called. most XR interfaces will update its [XRPositionalTracker]s " +"at this point in time." +msgstr "" +"如果这个 [XRInterfaceExtension] 在调用我们的物理和游戏处理前处于激活状态,则" +"会调用这个函数。大多数 XR 接口都会在此时更新其 [XRPositionalTracker]。" + +msgid "Enables anchor detection on this interface if supported." +msgstr "如果支持,则在此接口上启用锚点检测。" + msgid "Set the play area mode for this interface." msgstr "设置该接口的游玩区域模式。" @@ -111620,10 +126079,26 @@ msgid "" "Returns [code]true[/code] if this interface supports this play area mode." msgstr "如果该接口支持该游玩区域模式,则返回 [code]true[/code]。" +msgid "Triggers a haptic pulse to be emitted on the specified tracker." +msgstr "在指定的追踪器上触发一次触觉脉冲。" + msgid "Uninitialize the interface." msgstr "将该接口取消初始化。" msgid "" +"Blits our render results to screen optionally applying lens distortion. This " +"can only be called while processing [code]_commit_views[/code]." +msgstr "" +"将我们的渲染结果传输到屏幕上,还可以在此过程中应用镜头失真。只能在处理 " +"[code]_commit_views[/code] 时调用。" + +msgid "" +"Returns a valid [RID] for a texture to which we should render the current " +"frame if supported by the interface." +msgstr "" +"如果接口支持,则返回一个纹理的有效 [RID],我们应更将当前帧渲染至该纹理。" + +msgid "" "A spatial node that has its position automatically updated by the [XRServer]." msgstr "空间节点,位置由 [XRServer] 自动更新。" @@ -111636,16 +126111,105 @@ msgstr "" "这个节点可以绑定到 [XRPositionalTracker] 的某个姿势,[XRServer] 会自动更新其 " "[member Node3D.transform]。这类节点必须添加为 [XROrigin3D] 节点的子节点。" +msgid "" +"Returns [code]true[/code] if the [member tracker] has current tracking data " +"for the [member pose] being tracked." +msgstr "" +"如果 [member tracker] 中有被跟踪 [member pose] 的当前跟踪数据,则返回 " +"[code]true[/code]。" + +msgid "" +"Returns [code]true[/code] if the [member tracker] has been registered and " +"the [member pose] is being tracked." +msgstr "" +"如果 [member tracker] 已注册,并且 [member pose] 正在被追踪,则返回 " +"[code]true[/code]。" + +msgid "" +"Returns the [XRPose] containing the current state of the pose being tracked. " +"This gives access to additional properties of this pose." +msgstr "返回包含被跟踪姿势的当前状态的 [XRPose]。这可以访问此姿势的其他属性。" + +msgid "" +"Triggers a haptic pulse on a device associated with this interface.\n" +"[param action_name] is the name of the action for this pulse." +msgstr "" +"在与此接口关联的设备上触发触觉脉冲。\n" +"[param action_name] 是该脉冲的动作名称。" + +msgid "" +"The name of the pose we're bound to. Which poses a tracker supports is not " +"known during design time.\n" +"Godot defines number of standard pose names such as [code]aim[/code] and " +"[code]grip[/code] but other may be configured within a given [XRInterface]." +msgstr "" +"我们绑定到的姿势的名称。设计时并不知道跟踪器支持哪些姿势。\n" +"Godot 定义了许多标准姿势名称,例如 [code]aim[/code] 和 [code]grip[/code],但" +"也可以在给定的 [XRInterface] 中配置其他名称。" + +msgid "" +"The name of the tracker we're bound to. Which trackers are available is not " +"known during design time.\n" +"Godot defines a number of standard trackers such as [code]left_hand[/code] " +"and [code]right_hand[/code] but others may be configured within a given " +"[XRInterface]." +msgstr "" +"我们绑定到的追踪器的名称。设计时并不知道有哪些跟踪器可用。\n" +"Godot 定义了许多标准跟踪器,例如 [code]left_hand[/code] 和 [code]right_hand[/" +"code],但也可以在给定的 [XRInterface] 中配置其他跟踪器。" + msgid "The origin point in AR/VR." msgstr "AR/VR 的原点。" +msgid "" +"This is a special node within the AR/VR system that maps the physical " +"location of the center of our tracking space to the virtual location within " +"our game world.\n" +"There should be only one of these nodes in your scene and you must have one. " +"All the XRCamera3D, XRController3D and XRAnchor3D nodes should be direct " +"children of this node for spatial tracking to work correctly.\n" +"It is the position of this node that you update when your character needs to " +"move through your game world while we're not moving in the real world. " +"Movement in the real world is always in relation to this origin point.\n" +"For example, if your character is driving a car, the XROrigin3D node should " +"be a child node of this car. Or, if you're implementing a teleport system to " +"move your character, you should change the position of this node." +msgstr "" +"这是 AR/VR 系统中的一个特殊节点,会将我们跟踪空间中心的物理位置映射到游戏世界" +"中的虚拟位置。\n" +"你的场景中应该有且必须只有一个这样的节点。所有 XRCamera3D、XRController3D 和 " +"XRAnchor3D 节点都应该是该节点的直接子节点,以便空间跟踪正常运行。\n" +"当你的角色需要在游戏世界中移动而不在现实世界中移动时,就要更新此节点的位置。" +"现实世界中的运动始终是相对于这个原点的。\n" +"例如,如果你的角色正在驾驶汽车,则 XROrigin3D 节点应该是这辆车的子节点。或" +"者,如果要实现通过传送系统来移动角色,则应该更改此节点的位置。" + msgid "Is this XROrigin3D node the current origin used by the [XRServer]?" msgstr "这个 XROrigin3D 节点是否为 [XRServer] 所使用的当前原点?" +msgid "" +"Allows you to adjust the scale to your game's units. Most AR/VR platforms " +"assume a scale of 1 game world unit = 1 real world meter.\n" +"[b]Note:[/b] This method is a passthrough to the [XRServer] itself." +msgstr "" +"允许你根据你的游戏的单位来调整比例。大多数 AR/VR 平台假定的比例是 1 个游戏世" +"界的单位 = 1 个现实世界的米。\n" +"[b]注意:[/b]这种方法是对 [XRServer] 本身的直接调用。" + msgid "This object contains all data related to a pose on a tracked object." msgstr "这个对象包含了跟踪对象姿势相关的所有数据。" msgid "" +"XR runtimes often identify multiple locations on devices such as controllers " +"that are spatially tracked.\n" +"Orientation, location, linear velocity and angular velocity are all provided " +"for each pose by the XR runtime. This object contains this state of a pose." +msgstr "" +"XR 运行时通常可以识别设备上的多个位置,例如空间跟踪的控制器。\n" +"XR 运行时会为每个姿势都提供朝向、位置、线速度和角速度。这个对象包含某个姿势的" +"状态。" + +msgid "" "Returns the [member transform] with world scale and our reference frame " "applied. This is the transform used to position [XRNode3D] objects." msgstr "" @@ -111667,6 +126231,29 @@ msgid "The linear velocity of this pose." msgstr "该姿势的线速度。" msgid "" +"The name of this pose. Pose names are often driven by an action map setup by " +"the user. Godot does suggest a number of pose names that it expects " +"[XRInterface]s to implement:\n" +"- [code]root[/code] defines a root location, often used for tracked objects " +"that do not have further nodes.\n" +"- [code]aim[/code] defines the tip of a controller with the orientation " +"pointing outwards, for example: add your raycasts to this.\n" +"- [code]grip[/code] defines the location where the user grips the " +"controller\n" +"- [code]skeleton[/code] defines the root location a hand mesh should be " +"placed when using hand tracking and the animated skeleton supplied by the XR " +"runtime." +msgstr "" +"这个姿势的名称。姿势名称通常由用户设置的动作映射来驱动。Godot 确实给出了一些" +"姿势名称的建议,希望 [XRInterface] 能够实现:\n" +"-[code]root[/code] 定义根的位置,通常用于没有其他节点的被追踪物体。\n" +"-[code]aim[/code] 定义控制器的顶端,方向朝外,例如:可以将你要投射的射线加到" +"这里。\n" +"-[code]grip[/code] 定义用户持握控制器的位置。\n" +"-[code]skeleton[/code] 定义在使用手部跟踪和 XR 运行时提供的动画骨架时,手部网" +"格应该放置的根部位置。" + +msgid "" "The tracking confidence for this pose, provides insight on how accurate the " "spatial positioning of this record is." msgstr "此姿势的追踪置信度,提供了有关此记录的空间定位准确度的洞察力。" @@ -111679,6 +126266,14 @@ msgstr "该变换包含由 XR 运行时报告的原点和变换。" msgid "No tracking information is available for this pose." msgstr "此姿势没有可用的追踪信息。" +msgid "" +"Tracking information may be inaccurate or estimated. For example, with " +"inside out tracking this would indicate a controller may be (partially) " +"obscured." +msgstr "" +"追踪信息可能不准确或是估计而来的。例如,对于内向外型追踪,这表示的是控制器可" +"能被(部分)遮挡。" + msgid "Tracking information is deemed accurate and up to date." msgstr "追踪信息被认为是准确且最新的。" @@ -111907,6 +126502,17 @@ msgid "The primary [XRInterface] currently bound to the [XRServer]." msgstr "当前绑定到 [XRServer] 的主 [XRInterface]。" msgid "" +"The current origin of our tracking space in the virtual world. This is used " +"by the renderer to properly position the camera with new tracking data.\n" +"[b]Note:[/b] This property is managed by the current [XROrigin3D] node. It " +"is exposed for access from GDExtensions." +msgstr "" +"我们的跟踪空间在虚拟世界中的原点。渲染器会用到这个信息,根据新的跟踪数据来正" +"确放置相机。\n" +"[b]注意:[/b]这个属性由当前的 [XROrigin3D] 节点管理。暴露的目的是方便在 " +"GDExtension 使用。" + +msgid "" "Allows you to adjust the scale to your game's units. Most AR/VR platforms " "assume a scale of 1 game world unit = 1 real world meter." msgstr "" @@ -111931,7 +126537,7 @@ msgid "" "previous one)." msgstr "" "当一个追踪器被移除时发出。如此,您应该移除任何 [XRController3D] 或 " -"[XRanchor3D] 点。这不是强制性的,这些节点只是变得不活动,并且当一个新的追踪器" +"[XRAnchor3D] 点。这不是强制性的,这些节点只是变得不活动,并且当一个新的追踪器" "可用时,将再次激活(即打开一个新的控制器,来代替前一个控制器)。" msgid "" |