diff options
Diffstat (limited to 'doc/translations/zh_CN.po')
-rw-r--r-- | doc/translations/zh_CN.po | 27209 |
1 files changed, 26043 insertions, 1166 deletions
diff --git a/doc/translations/zh_CN.po b/doc/translations/zh_CN.po index d2d3354d48..1054650db3 100644 --- a/doc/translations/zh_CN.po +++ b/doc/translations/zh_CN.po @@ -1,6 +1,6 @@ # Chinese (Simplified) translation of the Godot Engine class reference. -# Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. -# Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). +# Copyright (c) 2014-present Godot Engine contributors. +# Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. # This file is distributed under the same license as the Godot source code. # # Haoyu Qiu <timothyqiu32@gmail.com>, 2020, 2021, 2022, 2023. @@ -52,8 +52,8 @@ # 有趣极了 <2944595791@qq.com>, 2021. # 刘亚西 <wayrboy123@gmail.com>, 2021. # 诗鸷Temsys <shenshichao920@hotmail.com>, 2021. -# Sam Sun <oppositenormal@outlook.com>, 2021. -# sudo-behappy <3216539984@qq.com>, 2021. +# Sam Sun <oppositenormal@outlook.com>, 2021, 2023. +# sudo-behappy <3216539984@qq.com>, 2021, 2023. # Cc <2590090025@qq.com>, 2021. # 苏轼 <youwanyuyu@gmail.com>, 2021. # ErrorDreemurr <diandaokui@qq.com>, 2021. @@ -63,11 +63,14 @@ # 风青山 <idleman@yeah.net>, 2023. # zehuai wu <wuzehuai@gmail.com>, 2023. # matrixant <yuan545@hotmail.com>, 2023. +# Pencil Core <pencilzyl@gmail.com>, 2023. +# skyatgit <1218980814@qq.com>, 2023. +# Hamster <hamster5295@163.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-02-10 06:54+0000\n" +"PO-Revision-Date: 2023-02-20 10:58+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" @@ -173,79 +176,10 @@ msgstr "本方法描述的是使用本类型作为左操作数的有效操作符 msgid "Built-in GDScript functions." msgstr "内置 GDScript 函数。" -msgid "" -"A list of GDScript-specific utility functions accessed in any script.\n" -"For the list of the global functions and constants see [@GlobalScope]." -msgstr "" -"可在任何脚本中访问的,GDScript专用的实用函数的列表。\n" -"有关全局函数和常量的列表,请参阅 [@GlobalScope]。" - 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.\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]" -msgstr "" -"返回一个由红([param r8])、绿([param g8])、蓝([param b8])和可选的阿尔法" -"([param a8])整数通道构造的 [Color],每个通道除以 [code]255.0[/code],作为其" -"最终值。\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]" - -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. " -"This can be used as a stronger form of [method @GlobalScope.push_error] for " -"reporting errors to project developers or add-on users.\n" -"An optional [param message] can be shown in addition to the generic " -"\"Assertion failed\" message. You can use this to provide additional details " -"about why the assertion failed.\n" -"[b]Warning:[/b] For performance reasons, the code inside [method assert] is " -"only executed in debug builds or when running the project from the editor. " -"Don't include code that has side effects in an [method assert] call. " -"Otherwise, the project will behave differently when exported in release " -"mode.\n" -"[codeblock]\n" -"# Imagine we always want speed to be between 0 and 20.\n" -"var speed = -10\n" -"assert(speed < 20) # True, the program will continue\n" -"assert(speed >= 0) # False, the program will stop\n" -"assert(speed >= 0 and speed < 20) # You can also combine the two conditional " -"statements in one check\n" -"assert(speed < 20, \"the speed limit is 20\") # Show a message\n" -"[/codeblock]" -msgstr "" -"断言条件 [param condition] 为 [code]true[/code]。如果条件 [param condition] " -"为 [code]false[/code] ,则会生成一个错误。如果是从编辑器运行的,正在运行的项" -"目还会被暂停,直到手动恢复。该函数可以作为 [method @GlobalScope.push_error] " -"的加强版,用于向项目开发者或插件用户报错。\n" -"如果给出了可选的 [param message] 参数,在通用的“Assertion failed”消息之外,还" -"会显示该信息。你可以使用它来提供关于断言失败原因的其他详细信息。\n" -"[b]注意:[/b]出于对性能的考虑,[method assert] 中的代码只会在调试版本或者从编" -"辑器运行项目时执行。所以不要在 [method assert] 调用中加入具有副作用的代码。否" -"则,项目在以发行模式导出后将有不一致的行为。\n" -"[codeblock]\n" -"# 比如说我们希望 speed 始终在 0 和 20 之间。\n" -"speed = -10\n" -"assert(speed < 20) # True,程序会继续执行\n" -"assert(speed >= 0) # False,程序会停止\n" -"assert(speed >= 0 && speed < 20) # 你还可以在单次断言中合并两个条件语句\n" -"assert(speed < 20, \"speed = %f, but the speed limit is 20\" % speed) # 在消" -"息中显示详情\n" -"[/codeblock]" - -msgid "" "Returns a single character (as a [String]) of the given Unicode code point " "(which is compatible with ASCII code).\n" "[codeblock]\n" @@ -396,73 +330,6 @@ msgstr "" "[/codeblock]" msgid "" -"Returns a [Resource] from the filesystem located at the absolute [param " -"path]. Unless it's already referenced elsewhere (such as in another script " -"or in the scene), the resource is loaded from disk on function call, which " -"might cause a slight delay, especially when loading large scenes. To avoid " -"unnecessary delays when loading something multiple times, either store the " -"resource in a variable or use [method preload].\n" -"[b]Note:[/b] Resource paths can be obtained by right-clicking on a resource " -"in the FileSystem dock and choosing \"Copy Path\" or by dragging the file " -"from the FileSystem dock into the script.\n" -"[codeblock]\n" -"# Load a scene called \"main\" located in the root of the project directory " -"and cache it in a variable.\n" -"var main = load(\"res://main.tscn\") # main will contain a PackedScene " -"resource.\n" -"[/codeblock]\n" -"[b]Important:[/b] The path must be absolute. A relative path will always " -"return [code]null[/code].\n" -"This function is a simplified version of [method ResourceLoader.load], which " -"can be used for more advanced scenarios.\n" -"[b]Note:[/b] Files have to be imported into the engine first to load them " -"using this function. If you want to load [Image]s at run-time, you may use " -"[method Image.load]. If you want to import audio files, you can use the " -"snippet described in [member AudioStreamMP3.data]." -msgstr "" -"从位于绝对 [param path] 的文件系统中返回一个 [Resource]。除非该资源已在其他地" -"方引用(例如在另一个脚本或场景中),否则资源是在函数调用时从磁盘加载的,这可" -"能会导致轻微的延迟,尤其是在加载大型场景时。为避免在多次加载某些内容时出现不" -"必要的延迟,可以将资源存储在变量中或使用预加载 [method preload]。\n" -"[b]注意:[/b]资源路径可以通过右键单击文件系统停靠面板中的资源并选择“复制路" -"径”,或将文件从文件系统停靠面板拖到脚本中获得。\n" -"[codeblock]\n" -"# 加载位于项目目录根部的一个名为“main”的场景,并将其缓存在一个变量中。\n" -"var main = load(\"res://main.tscn\") # main 将包含一个 PackedScene 资源。\n" -"[/codeblock]\n" -"[b]重要提示:[/b]路径必须是绝对路径。相对路径将始终返回 [code]null[/code]。\n" -"这个方法是 [method ResourceLoader.load] 的简化版,原版方法可以用于更高级的场" -"景。\n" -"[b]注意:[/b]必须先将文件导入引擎才能使用此函数加载它们。如果你想在运行时加" -"载 [Image],你可以使用 [method Image.load]。如果要导入音频文件,可以使用 " -"[member AudioStreamMP3.data]中描述的代码片段。" - -msgid "" -"Returns a [Resource] from the filesystem located at [param path]. During run-" -"time, the resource is loaded when the script is being parsed. This function " -"effectively acts as a reference to that resource. Note that this function " -"requires [param path] to be a constant [String]. If you want to load a " -"resource from a dynamic/variable path, use [method load].\n" -"[b]Note:[/b] Resource paths can be obtained by right clicking on a resource " -"in the Assets Panel and choosing \"Copy Path\" or by dragging the file from " -"the FileSystem dock into the script.\n" -"[codeblock]\n" -"# Create instance of a scene.\n" -"var diamond = preload(\"res://diamond.tscn\").instantiate()\n" -"[/codeblock]" -msgstr "" -"从位于 [param path] 的文件系统中返回一个 [Resource]。在运行时期间,该资源将在" -"解析脚本时加载。实际可以将这个函数视作对该资源的引用。请注意,此函数要求 " -"[param path] 为常量 [String]。如果要从动态/可变路径加载资源,请使用 [method " -"load]。\n" -"[b]注意:[/b]资源路径可以通过右键单击资产面板中的资源并选择“复制路径”,或通过" -"将文件从文件系统停靠面板拖到脚本中来获得。\n" -"[codeblock]\n" -"# 创建场景的实例。\n" -"var diamond = preload(\"res://diamond.tscn\").instantiate()\n" -"[/codeblock]" - -msgid "" "Like [method @GlobalScope.print], but includes the current stack frame when " "running with the debugger turned on.\n" "The output in the console may look like the following:\n" @@ -555,20 +422,20 @@ msgid "" "0.1\n" "[/codeblock]" msgstr "" -"返回给定范围的数组。[method range] 的调用方法有三种:\n" +"返回具有给定范围的数组。[method range] 可以通过三种方式调用:\n" "[code]range(n: int)[/code]:从 0 开始,每次加 1,在到达 [code]n[/code] [i]之" "前[/i]停止。[b]不包含[/b]参数 [code]n[/code]。\n" "[code]range(b: int, n: int)[/code]:从 [code]b[/code] 开始,每次加 1,在到达 " "[code]n[/code] [i]之前[/i]停止。[b]包含[/b]参数 [code]b[/code],[b]不包含[/b]" "参数 [code]n[/code]。\n" -"[code]range(b: int, n: int, s: int)[/code]:从 [code]b[/code] 开始,每次加 " -"[code]s[/code],在到达 [code]n[/code] [i]之前[/i]停止。[b]包含[/b]参数 " -"[code]b[/code],[b]不包含[/b]参数 [code]n[/code]。参数 [code]s[/code] [b]可" -"以[/b]为负数,但不能为 [code]0[/code]。如果 [code]s[/code] 为 [code]0[/" -"code],会输出一条错误。\n" +"[code]range(b: int, n: int, s: int)[/code]:从[code]b[/code]开始,以[code]s[/" +"code]为步长递增/递减,在到达 [code]n[/code] [i]之前[/i]停止。[b]包含[/b]参数 " +"[code]b[/code],[b]不包含[/b]参数 [code]n[/code]。参数 [code]s[/code] [b]可以" +"[/b] 为负数,但不能为 [code]0[/code]。如果 [code]s[/code] 是 [code]0[/code]," +"则会输出一条错误消息。\n" "[method range] 会先将所有参数转换为 [int] 再进行处理。\n" -"[b]注意:[/b]如果不存在满足条件的值,则返回空数组(例如 [code]range(2, 5, -1)" -"[/code] 和 [code]range(5, 5, 1)[/code])。\n" +"[b]注意:[/b]如果没有满足条件的值,则返回空数组(例如 [code]range(2, 5, -1)[/" +"code] 和 [code]range(5, 5, 1)[/code])。\n" "示例:\n" "[codeblock]\n" "print(range(4)) # 输出 [0, 1, 2, 3]\n" @@ -576,7 +443,7 @@ msgstr "" "print(range(0, 6, 2)) # 输出 [0, 2, 4]\n" "print(range(4, 1, -1)) # 输出 [4, 3, 2]\n" "[/codeblock]\n" -"反向遍历 [Array] 请使用:\n" +"要反向遍历 [Array],请使用:\n" "[codeblock]\n" "var array = [3, 6, 9]\n" "for i in range(array.size(), 0, -1):\n" @@ -669,72 +536,48 @@ msgstr "" "行时错误。" 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 int_number = 5\n" -"@export var float_number: float = 5\n" -"[/codeblock]" -msgstr "" -"将以下属性标记为已导出(可在 Inspector Dock 中编辑并保存到磁盘)。要控制导出" -"属性的类型,请使用类型提示表示法。\n" -"[codeblock]\n" -"@export var int_number = 5\n" -"@export var float_number: float = 5\n" -"[/codeblock]" - -msgid "" -"Define a new category for the following exported properties. This helps to " -"organize properties in the Inspector dock.\n" -"See also [constant PROPERTY_USAGE_CATEGORY].\n" +"Export an [int] or [String] property as an enumerated list of options. If " +"the property is an [int], then the index of the value is stored, in the same " +"order the values are provided. You can add explicit values using a colon. If " +"the property is a [String], then the value is stored.\n" +"See also [constant PROPERTY_HINT_ENUM].\n" "[codeblock]\n" -"@export_category(\"My Properties\")\n" -"@export var number = 3\n" -"@export var string = \"\"\n" +"@export_enum(\"Warrior\", \"Magician\", \"Thief\") var character_class: int\n" +"@export_enum(\"Slow:30\", \"Average:60\", \"Very Fast:200\") var " +"character_speed: int\n" +"@export_enum(\"Rebecca\", \"Mary\", \"Leah\") var character_name: String\n" "[/codeblock]\n" -"[b]Note:[/b] Categories in the property list are supposed to indicate " -"different base types, so the use of this annotation is not encouraged. See " -"[annotation @export_group] and [annotation @export_subgroup] instead." -msgstr "" -"为以下导出的属性定义一个新类别。这有助于在检查器停靠栏中组织属性。\n" -"另请参见 [constant PROPERTY_USAGE_CATEGORY]。\n" +"If you want to set an initial value, you must specify it explicitly:\n" "[codeblock]\n" -"@export_category(\"My Properties\")\n" -"@export var number = 3\n" -"@export var string = \"\"\n" +"@export_enum(\"Rebecca\", \"Mary\", \"Leah\") var character_name: String = " +"\"Rebecca\"\n" "[/codeblock]\n" -"[b]注意:[/b]属性列表中的类别应该指示不同的基本类型,因此不鼓励使用此注解。请" -"参阅 [annotation @export_group] 和 [annotation @export_subgroup]。" - -msgid "" -"Export a [Color] property without transparency (its alpha fixed as " -"[code]1.0[/code]).\n" -"See also [constant PROPERTY_HINT_COLOR_NO_ALPHA].\n" +"If you want to use named GDScript enums, then use [annotation @export] " +"instead:\n" "[codeblock]\n" -"@export_color_no_alpha var modulate_color: Color\n" +"enum CharacterName {REBECCA, MARY, LEAH}\n" +"@export var character_name: CharacterName\n" "[/codeblock]" msgstr "" -"导出一个没有透明度的 [Color] 属性(它的 alpha 固定为 [code]1.0[/code])。\n" -"另见 [constant PROPERTY_HINT_COLOR_NO_ALPHA]。\n" +"将 [int] 或 [String] 导出为枚举选项列表。如果属性为 [int],则保存的是值的索" +"引,与值的顺序一致。你可以通过冒号添加显式值。如果属性为 [String],则保存的是" +"值。\n" +"另见 [constant PROPERTY_HINT_ENUM]。\n" "[codeblock]\n" -"@export_color_no_alpha var modulate_color: Color\n" -"[/codeblock]" - -msgid "" -"Export a [String] property as a path to a directory. The path will be " -"limited to the project folder and its subfolders. See [annotation " -"@export_global_dir] to allow picking from the entire filesystem.\n" -"See also [constant PROPERTY_HINT_DIR].\n" +"@export_enum(\"Warrior\", \"Magician\", \"Thief\") var character_class: int\n" +"@export_enum(\"Slow:30\", \"Average:60\", \"Very Fast:200\") var " +"character_speed: int\n" +"@export_enum(\"Rebecca\", \"Mary\", \"Leah\") var character_name: String\n" +"[/codeblock]\n" +"如果想要设置初始值,你必须进行显式指定:\n" "[codeblock]\n" -"@export_dir var sprite_folder: String\n" -"[/codeblock]" -msgstr "" -"将 [String] 属性作为目录路径导出。该路径将被限制在项目文件夹及其子文件夹中。" -"请参阅 [annotation @export_global_dir],以允许从整个文件系统中进行选择。\n" -"另请参见 [constant PROPERTY_HINT_DIR]。\n" +"@export_enum(\"Rebecca\", \"Mary\", \"Leah\") var character_name: String = " +"\"Rebecca\"\n" +"[/codeblock]\n" +"如果想要使用 GDScript 枚举,请改用 [annotation @export]:\n" "[codeblock]\n" -"@export_dir var sprite_folder: String\n" +"enum CharacterName {REBECCA, MARY, LEAH}\n" +"@export var character_name: CharacterName\n" "[/codeblock]" msgid "" @@ -761,24 +604,55 @@ msgstr "" "[/codeblock]" msgid "" -"Export a [String] property as a path to a file. The path will be limited to " -"the project folder and its subfolders. See [annotation @export_global_file] " -"to allow picking from the entire filesystem.\n" -"If [param filter] is provided, only matching files will be available for " -"picking.\n" -"See also [constant PROPERTY_HINT_FILE].\n" +"Export an integer property as a bit flag field. This allows to store several " +"\"checked\" or [code]true[/code] values with one property, and comfortably " +"select them from the Inspector dock.\n" +"See also [constant PROPERTY_HINT_FLAGS].\n" "[codeblock]\n" -"@export_file var sound_effect_file: String\n" -"@export_file(\"*.txt\") var notes_file: String\n" +"@export_flags(\"Fire\", \"Water\", \"Earth\", \"Wind\") var spell_elements = " +"0\n" +"[/codeblock]\n" +"You can add explicit values using a colon:\n" +"[codeblock]\n" +"@export_flags(\"Self:4\", \"Allies:8\", \"Foes:16\") var spell_targets = 0\n" +"[/codeblock]\n" +"You can also combine several flags:\n" +"[codeblock]\n" +"@export_flags(\"Self:4\", \"Allies:8\", \"Self and Allies:12\", " +"\"Foes:16\")\n" +"var spell_targets = 0\n" +"[/codeblock]\n" +"[b]Note:[/b] A flag value must be at least [code]1[/code] and at most " +"[code]2 ** 32 - 1[/code].\n" +"[b]Note:[/b] Unlike [annotation @export_enum], the previous explicit value " +"is not taken into account. In the following example, A is 16, B is 2, C is " +"4.\n" +"[codeblock]\n" +"@export_flags(\"A:16\", \"B\", \"C\") var x\n" "[/codeblock]" msgstr "" -"将 [String] 属性导出为文件的路径。该路径将限于项目文件夹及其子文件夹。请参阅 " -"[annotation @export_global_file],以允许从整个文件系统中进行选择。\n" -"如果提供了 [param filter],则只有匹配的文件可供选择。\n" -"另请参见 [constant PROPERTY_HINT_FILE]。\n" +"将整数属性导出为位标志字段。能够在单个属性中保存若干“勾选”或者说 [code]true[/" +"code] 值,可以很方便地在检查器面板中进行选择。\n" +"另见 [constant PROPERTY_HINT_FLAGS]。\n" +"[codeblock]\n" +"@export_flags(\"Fire\", \"Water\", \"Earth\", \"Wind\") var spell_elements = " +"0\n" +"[/codeblock]\n" +"你可以通过冒号来添加显式值:\n" +"[codeblock]\n" +"@export_flags(\"Self:4\", \"Allies:8\", \"Foes:16\") var spell_targets = 0\n" +"[/codeblock]\n" +"你还可以对标志进行组合:\n" +"[codeblock]\n" +"@export_flags(\"Self:4\", \"Allies:8\", \"Self and Allies:12\", " +"\"Foes:16\")\n" +"var spell_targets = 0\n" +"[/codeblock]\n" +"[b]注意:[/b]标志值最多为 [code]1[/code],最多为 [code]2 ** 32 - 1[/code]。\n" +"[b]注意:[/b]与 [annotation @export_enum] 不同,不会考虑前一个显式值。下面的" +"例子中,A 为 16、B 为 2、C 为 4。\n" "[codeblock]\n" -"@export_file var sound_effect_file: String\n" -"@export_file(\"*.txt\") var notes_file: String\n" +"@export_flags(\"A:16\", \"B\", \"C\") var x\n" "[/codeblock]" msgid "" @@ -806,7 +680,7 @@ msgid "" "@export_flags_2d_physics var physics_layers: int\n" "[/codeblock]" msgstr "" -"将整数属性导出为 2D 物理层的位标志字段。检查器停靠栏中的小部件,将使用在 " +"将整数属性导出为 2D 物理层的位标志字段。检查器停靠面板中的小工具,将使用在 " "[member ProjectSettings.layer_names/2d_physics/layer_1] 中定义的层名称。\n" "另请参见 [constant PROPERTY_HINT_LAYERS_2D_PHYSICS]。\n" "[codeblock]\n" @@ -878,155 +752,239 @@ msgstr "" "[/codeblock]" msgid "" -"Export a [String] property as a path to a directory. The path can be picked " -"from the entire filesystem. See [annotation @export_dir] to limit it to the " -"project folder and its subfolders.\n" -"See also [constant PROPERTY_HINT_GLOBAL_DIR].\n" +"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" +"See also [constant PROPERTY_HINT_MULTILINE_TEXT].\n" +"[codeblock]\n" +"@export_multiline var character_biography\n" +"[/codeblock]" +msgstr "" +"用一个大的 [TextEdit] 部件而不是 [LineEdit] 导出一个 [String] 属性。这增加了" +"对多行内容的支持,使其更容易编辑存储在属性中的大量文本。\n" +"参见 [constant PROPERTY_HINT_MULTILINE_TEXT]。\n" +"[codeblock]\n" +"@export_multiline var character_biography\n" +"[/codeblock]" + +msgid "" +"Export a [NodePath] property with a filter for allowed node types.\n" +"See also [constant PROPERTY_HINT_NODE_PATH_VALID_TYPES].\n" "[codeblock]\n" -"@export_global_dir var sprite_folder: String\n" +"@export_node_path(\"Button\", \"TouchScreenButton\") var some_button\n" "[/codeblock]" msgstr "" -"将 [String] 属性导出为目录路径。可以从整个文件系统中选择路径。请参阅 " -"[annotation @export_dir] 以将其限制为项目文件夹及其子文件夹。\n" -"另请参见 [constant PROPERTY_HINT_GLOBAL_DIR]。\n" +"导出一个 [NodePath] 属性,对允许的节点类型进行过滤。\n" +"参见 [constant PROPERTY_HINT_NODE_PATH_VALID_TYPES]。\n" "[codeblock]\n" -"@export_global_dir var sprite_folder: String\n" +"@export_node_path(Button, TouchScreenButton) var some_button\n" "[/codeblock]" msgid "" -"Export a [String] property as a path to a file. The path can be picked from " -"the entire filesystem. See [annotation @export_file] to limit it to the " -"project folder and its subfolders.\n" -"If [param filter] is provided, only matching files will be available for " -"picking.\n" -"See also [constant PROPERTY_HINT_GLOBAL_FILE].\n" +"Export a [String] property with a placeholder text displayed in the editor " +"widget when no value is present.\n" +"See also [constant PROPERTY_HINT_PLACEHOLDER_TEXT].\n" "[codeblock]\n" -"@export_global_file var sound_effect_file: String\n" -"@export_global_file(\"*.txt\") var notes_file: String\n" +"@export_placeholder(\"Name in lowercase\") var character_id: String\n" "[/codeblock]" msgstr "" -"将 [String] 属性作为文件路径导出。可以从整个文件系统中选择路径。请参阅 " -"[annotation @export_file],以将其限制为项目文件夹及其子文件夹。\n" -"如果提供了 [param filter],则只有匹配的文件可供选择。\n" -"另请参见 [constant PROPERTY_HINT_GLOBAL_FILE]。\n" +"导出一个带有一个占位符文本的 [String] 属性,当没有值时,编辑器小部件中会显示" +"该占位符文本。\n" +"另请参见 [constant PROPERTY_HINT_PLACEHOLDER_TEXT]。\n" "[codeblock]\n" -"@export_global_file var sound_effect_file: String\n" -"@export_global_file(\"*.txt\") var notes_file: String\n" +"@export_placeholder(\"Name in lowercase\") var character_id: String\n" "[/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, the every following property is 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" +"Export an [int] or [float] property as a range value. The range must be " +"defined by [param min] and [param max], as well as an optional [param step] " +"and a variety of extra hints. The [param step] defaults to [code]1[/code] " +"for integer properties. For floating-point numbers this value depends on " +"your [code]EditorSettings.interface/inspector/default_float_step[/code] " +"setting.\n" +"If hints [code]\"or_greater\"[/code] and [code]\"or_less\"[/code] are " +"provided, the editor widget will not cap the value at range boundaries. The " +"[code]\"exp\"[/code] hint will make the edited values on range to change " +"exponentially. The [code]\"hide_slider\"[/code] hint will hide the slider " +"element of the editor widget.\n" +"Hints also allow to indicate the units for the edited value. Using " +"[code]\"radians\"[/code] you can specify that the actual value is in " +"radians, but should be displayed in degrees in the Inspector dock. " +"[code]\"degrees\"[/code] allows to add a degree sign as a unit suffix. " +"Finally, a custom suffix can be provided using [code]\"suffix:unit\"[/code], " +"where \"unit\" can be any string.\n" +"See also [constant PROPERTY_HINT_RANGE].\n" "[codeblock]\n" -"@export_group(\"My Properties\")\n" -"@export var number = 3\n" -"@export var string = \"\"\n" +"@export_range(0, 20) var number\n" +"@export_range(-10, 20) var number\n" +"@export_range(-10, 20, 0.2) var number: float\n" "\n" -"@export_group(\"Prefixed Properties\", \"prefix_\")\n" -"@export var prefix_number = 3\n" -"@export var prefix_string = \"\"\n" +"@export_range(0, 100, 1, \"or_greater\") var power_percent\n" +"@export_range(0, 100, 1, \"or_greater\", \"or_less\") var health_delta\n" "\n" -"@export_group(\"\", \"\")\n" -"@export var ungrouped_number = 3\n" +"@export_range(-3.14, 3.14, 0.001, \"radians\") var angle_radians\n" +"@export_range(0, 360, 1, \"degrees\") var angle_degrees\n" +"@export_range(-8, 8, 2, \"suffix:px\") var target_offset\n" "[/codeblock]" msgstr "" -"为以下导出的属性定义一个新组。这有助于在检查器停靠面板中组织属性。可以使用可" -"选的 [param prefix] 添加组,这将使组仅考虑具有此前缀的属性。分组将在第一个没" -"有前缀的属性上中断。前缀也将从检查器停靠面板中的属性名称中移除。\n" -"如果未提供 [param prefix],则将以下每个属性添加到组中。当定义下一个组或类别" -"时,该组结束。您还可以通过将此注解与空字符串的参数一起使用来强制结束组," -"[code]@export_group(\"\", \"\")[/code]。\n" -"组不能被嵌套,使用 [annotation @export_subgroup] 在组内添加子组。\n" -"另见 [constant PROPERTY_USAGE_GROUP]。\n" +"将一个[int]或[float]属性导出为一个范围值。范围必须由 [param min] 和 [param " +"max] 定义,以及一个可选的 [param step] 和各种额外的提示。对于整数属性," +"[param step] 的默认值是 [code]1[/code] 。对于浮点数,这个值取决于你的 " +"[code]EditorSettings.interface/inspector/default_float_step[/code] 设置。\n" +"如果提供了提示 [code]\"or_greater\"[/code] 和 [code]\"or_less\"[/code] ,那么" +"编辑器部件将不会在范围边界处对数值进行限制。[code]\"exp\"[/code] 提示将使范围" +"内的编辑值以指数形式变化。[code]\"hide_slider\"[/code] 提示将隐藏编辑器部件中" +"的滑块。\n" +"提示还允许指示编辑的值的单位。使用 [code]\"radians\"[/code] ,你可以指定实际" +"值以弧度为单位,但在检查器中会以角度为单位显示。[code]\"degrees\"[/code] 允许" +"添加一个角度符号作为单位后缀。最后,可以使用 [code]\"suffix:单位\"[/code] 提" +"供一个自定义后缀,其中“单位”可以是任何字符串。\n" +"另见 [constant PROPERTY_HINT_RANGE]。\n" "[codeblock]\n" -"@export_group(\"My Properties\")\n" -"@export var number = 3\n" -"@export var string = \"\"\n" +"@export_range(0, 20) var number\n" +"@export_range(-10, 20) var number\n" +"@export_range(-10, 20, 0.2) var number: float\n" "\n" -"@export_group(\"Prefixed Properties\", \"prefix_\")\n" -"@export var prefix_number = 3\n" -"@export var prefix_string = \"\"\n" +"@export_range(0, 100, 1, \"or_greater\") var power_percent\n" +"@export_range(0, 100, 1, \"or_greater\", \"or_less\") var health_delta\n" "\n" -"@export_group(\"\", \"\")\n" -"@export var ungrouped_number = 3\n" +"@export_range(-3.14, 3.14, 0.001, \"radians\") var angle_radians\n" +"@export_range(0, 360, 1, \"degrees\") var angle_degrees\n" +"@export_range(-8, 8, 2, \"suffix:像素\") var target_offset\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" -"See also [constant PROPERTY_HINT_MULTILINE_TEXT].\n" +"Add a custom icon to the current script. The script must be registered as a " +"global class using the [code]class_name[/code] keyword for this to have a " +"visible effect. The icon specified at [param icon_path] is displayed in the " +"Scene dock for every node of that class, as well as in various editor " +"dialogs.\n" "[codeblock]\n" -"@export_multiline var character_biography\n" +"@icon(\"res://path/to/class/icon.svg\")\n" +"[/codeblock]\n" +"[b]Note:[/b] Only the script can have a custom icon. Inner classes are not " +"supported.\n" +"[b]Note:[/b] As annotations describe their subject, the [code]@icon[/code] " +"annotation must be placed before the class definition and inheritance.\n" +"[b]Note:[/b] Unlike other annotations, the argument of the [code]@icon[/" +"code] annotation must be a string literal (constant expressions are not " +"supported)." +msgstr "" +"在当前脚本中添加一个自定义图标。脚本必须使用 [code]class_name[/code] 关键字注" +"册为一个全局类,这样才有可见的效果。在 [param icon_path] 处指定的图标会在场景" +"停靠面板中该类的节点上显示,也会显示在各种编辑器对话框中。\n" +"[codeblock]\n" +"@icon(\"res://path/to/class/icon.svg\")\n" +"[/codeblock]\n" +"[b]注意:[/b] 只有脚本可以有一个自定义的图标。不支持内部类。\n" +"[b]注意:[/b] 由于注解描述了它们的主题,[code]@icon[/code] 注解必须放在类定义" +"和继承之前。\n" +"[b]注意:[/b] 不同于其他注解,[code]@icon[/code] 注解的参数必须是一个字符串 " +"(不支持常量表达式)。" + +msgid "" +"Mark the following method for remote procedure calls. See [url=$DOCS_URL/" +"tutorials/networking/high_level_multiplayer.html]High-level multiplayer[/" +"url].\n" +"The order of [code]mode[/code], [code]sync[/code] and [code]transfer_mode[/" +"code] does not matter and all arguments can be omitted, but " +"[code]transfer_channel[/code] always has to be the last argument. The " +"accepted values for [code]mode[/code] are [code]\"any_peer\"[/code] or " +"[code]\"authority\"[/code], for [code]sync[/code] are [code]\"call_remote\"[/" +"code] or [code]\"call_local\"[/code] and for [code]transfer_mode[/code] are " +"[code]\"unreliable\"[/code], [code]\"unreliable_ordered\"[/code] or " +"[code]\"reliable\"[/code].\n" +"[codeblock]\n" +"@rpc\n" +"func fn(): pass\n" +"\n" +"@rpc(\"any_peer\", \"unreliable_ordered\")\n" +"func fn_update_pos(): pass\n" +"\n" +"@rpc(\"authority\", \"call_remote\", \"unreliable\", 0) # Equivalent to " +"@rpc\n" +"func fn_default(): pass\n" "[/codeblock]" msgstr "" -"用一个大的 [TextEdit] 部件而不是 [LineEdit] 导出一个 [String] 属性。这增加了" -"对多行内容的支持,使其更容易编辑存储在属性中的大量文本。\n" -"参见 [constant PROPERTY_HINT_MULTILINE_TEXT]。\n" +"将以下方法标记为远程过程调用。请参见 [url=$DOCS_URL/tutorials/networking/" +"high_level_multiplayer.html]高级多人游戏[/url]。\n" +"[code]mode[/code]、[code]sync[/code] 和 [code]transfer_mode[/code] 的顺序无关" +"紧要,所有参数都可以省略,但 [code]transfer_channel[/code] 必须始终是最后一个" +"参数。对于接受的值,[code]mode[/code] 可以是 [code]\"any_peer\"[/code] 或 " +"[code]\"authority\"[/code],[code]sync[/code] 可以是 [code]\"call_remote\"[/" +"code]或 [code]\"call_local\"[/code],[code]transfer_mode[/code] 可以是 " +"[code]\"unreliable\"[/code]、[code]\"unreliable_ordered\"[/code] 或 " +"[code]\"reliable\"[/code]。\n" "[codeblock]\n" -"@export_multiline var character_biography\n" +"@rpc\n" +"func fn(): pass\n" +"\n" +"@rpc(\"any_peer\", \"unreliable_ordered\")\n" +"func fn_update_pos(): pass\n" +"\n" +"@rpc(\"authority\", \"call_remote\", \"unreliable\", 0) # 等价于 @rpc\n" +"func fn_default(): pass\n" "[/codeblock]" msgid "" -"Export a [String] property with a placeholder text displayed in the editor " -"widget when no value is present.\n" -"See also [constant PROPERTY_HINT_PLACEHOLDER_TEXT].\n" +"Mark the current script as a tool script, allowing it to be loaded and " +"executed by the editor. See [url=$DOCS_URL/tutorials/plugins/" +"running_code_in_the_editor.html]Running code in the editor[/url].\n" "[codeblock]\n" -"@export_placeholder(\"Name in lowercase\") var character_id: String\n" +"@tool\n" +"extends Node\n" +"[/codeblock]\n" +"[b]Note:[/b] As annotations describe their subject, the [code]@tool[/code] " +"annotation must be placed before the class definition and inheritance." +msgstr "" +"将当前脚本标记为工具脚本,允许它被编辑器加载和执行。见[url=$DOCS_URL/" +"tutorials/plugins/running_code_in_the_editor.html]《在编辑器中运行代码》[/" +"url]。\n" +"[codeblock]\n" +"@tool\n" +"extends Node\n" +"[/codeblock]\n" +"[b]注意:[/b]因为注解描述对象的关系,必须把 [code]@tool[/code] 注解放在类定义" +"和继承之前。" + +msgid "" +"Mark the following statement to ignore the specified [param warning]. See " +"[url=$DOCS_URL/tutorials/scripting/gdscript/warning_system.html]GDScript " +"warning system[/url].\n" +"[codeblock]\n" +"func test():\n" +" print(\"hello\")\n" +" return\n" +" @warning_ignore(\"unreachable_code\")\n" +" print(\"unreachable\")\n" "[/codeblock]" msgstr "" -"导出一个带有一个占位符文本的 [String] 属性,当没有值时,编辑器小部件中会显示" -"该占位符文本。\n" -"另请参见 [constant PROPERTY_HINT_PLACEHOLDER_TEXT]。\n" +"将后续语句标记为忽略指定的 [param warning] 警告。见[url=$DOCS_URL/tutorials/" +"scripting/gdscript/warning_system.html]《GDScript 警告系统》[/url]。\n" "[codeblock]\n" -"@export_placeholder(\"Name in lowercase\") var character_id: String\n" +"func test():\n" +" print(\"你好\")\n" +" return\n" +" @warning_ignore(\"unreachable_code\")\n" +" print(\"无法到达\")\n" "[/codeblock]" +msgid "Global scope constants and functions." +msgstr "全局范围常量和函数。" + msgid "" -"Define a new subgroup for the following exported properties. This helps to " -"organize properties in the Inspector dock. Subgroups work exactly like " -"groups, except they need a parent group to exist. See [annotation " -"@export_group].\n" -"See also [constant PROPERTY_USAGE_SUBGROUP].\n" -"[codeblock]\n" -"@export_group(\"My Properties\")\n" -"@export var number = 3\n" -"@export var string = \"\"\n" -"\n" -"@export_subgroup(\"My Prefixed Properties\", \"prefix_\")\n" -"@export var prefix_number = 3\n" -"@export var prefix_string = \"\"\n" -"[/codeblock]\n" -"[b]Note:[/b] Subgroups cannot be nested, they only provide one extra level " -"of depth. Just like the next group ends the previous group, so do the " -"subsequent subgroups." -msgstr "" -"为接下来的导出属性定义一个新的子组。这有助于组织检查器停靠面板中的属性。子组" -"的工作方式与组完全一样,只是它们需要一个父组才能存在。请参阅 [annotation " -"@export_group]。\n" -"另请参见 [constant PROPERTY_USAGE_SUBGROUP]。\n" -"[codeblock]\n" -"@export_group(\"My Properties\")\n" -"@export var number = 3\n" -"@export var string = \"\"\n" -"\n" -"@export_subgroup(\"My Prefixed Properties\", \"prefix_\")\n" -"@export var prefix_number = 3\n" -"@export var prefix_string = \"\"\n" -"[/codeblock]\n" -"[b]注意:[/b]子组不能嵌套,它们只提供一层额外的深度。就像新组使前一个组结束一" -"样,后续的子组也会打断之前的子组。" +"A list of global scope enumerated constants and built-in functions. This is " +"all that resides in the globals, constants regarding error codes, keycodes, " +"property hints, etc.\n" +"Singletons are also documented here, since they can be accessed from " +"anywhere.\n" +"For the entries related to GDScript which can be accessed in any script see " +"[@GDScript]." +msgstr "" +"全局范围的枚举常量和内置函数的列表。这是所有驻留在全局的,关于错误代码、键" +"码、属性提示等的常量。\n" +"单例也被记录在这里,因为它们可以从任何地方被访问。\n" +"对于可以在任何脚本中访问的与 GDScript 相关的条目,请参阅 [@GDScript]。" msgid "Random number generation" msgstr "随机数生成" @@ -1177,17 +1135,356 @@ msgid "" "var a = atan2(0, -1) # a is 3.141593\n" "[/codeblock]" msgstr "" -"返回 [code]y/x[/code] 的反正切值,单位为弧度。用来获得切线的角度 [code]y/x[/" -"code] 。为了计算该值,该方法考虑了两个参数的符号,以确定象限。\n" -"重要提示:按照惯例,Y坐标在前。\n" +"返回 [code]y/x[/code] 的反正切值,单位为弧度。用来获得正切值为 [code]y/x[/" +"code] 的角度。为了计算该值,该方法考虑了两个参数的符号,以确定象限。\n" +"重要提示:按照惯例,Y 坐标在前。\n" "[codeblock]\n" -"var a = atan2(0, -1) # a=3.141593\n" +"var a = atan2(0, -1) # a = 3.141593\n" "[/codeblock]" +msgid "" +"Returns the derivative at the given [param t] on a one-dimensional " +"[url=https://en.wikipedia.org/wiki/B%C3%A9zier_curve]Bézier curve[/url] " +"defined by the given [param control_1], [param control_2], and [param end] " +"points." +msgstr "" +"返回由给定的 [param control_1]、[param control_2] 和 [param end] 点定义的一维" +"[url=https://en.wikipedia.org/wiki/B%C3%A9zier_curve]贝塞尔曲线[/url]上 " +"[param t] 处的导数。" + +msgid "" +"Returns the point at the given [param t] on a one-dimensional [url=https://" +"en.wikipedia.org/wiki/B%C3%A9zier_curve]Bézier curve[/url] defined by the " +"given [param control_1], [param control_2], and [param end] points." +msgstr "" +"返回由给定的 [param control_1]、[param control_2] 和 [param end] 点定义的一维" +"[url=https://en.wikipedia.org/wiki/B%C3%A9zier_curve]贝塞尔曲线[/url]上位于给" +"定 [param t] 的点。" + +msgid "" +"Decodes a byte array back to a [Variant] value, without decoding objects.\n" +"[b]Note:[/b] If you need object deserialization, see [method " +"bytes_to_var_with_objects]." +msgstr "" +"将字节数组解码回 [Variant] 值,无法解码对象。\n" +"[b]注意:[/b]如果需要对象反序列化,请参见 [method " +"bytes_to_var_with_objects]。" + +msgid "" +"Decodes a byte array back to a [Variant] value. Decoding objects is " +"allowed.\n" +"[b]Warning:[/b] Deserialized object can contain code which gets executed. Do " +"not use this option if the serialized object comes from untrusted sources to " +"avoid potential security threats (remote code execution)." +msgstr "" +"将字节数组解码回 [Variant] 值。允许解码对象。\n" +"[b]警告:[/b]反序列化的对象可能包含执行的代码。如果序列化对象的来源不受信任," +"则不要使用此选项,以避免潜在的安全威胁(远程执行代码)。" + +msgid "" +"Rounds [param x] upward (towards positive infinity), returning the smallest " +"whole number that is not less than [param x]. Supported types: [int], " +"[float], [Vector2], [Vector3], [Vector4].\n" +"[codeblock]\n" +"var i = ceil(1.45) # i is 2.0\n" +"i = ceil(1.001) # i is 2.0\n" +"[/codeblock]\n" +"See also [method floor], [method round], and [method snapped].\n" +"[b]Note:[/b] For better type safety, use [method ceilf], [method ceili], " +"[method Vector2.ceil], [method Vector3.ceil], or [method Vector4.ceil]." +msgstr "" +"向上舍入 [param x](朝正无穷大),返回不小于 [param x] 的最小整数。支持的类" +"型:[int]、[float]、[Vector2]、[Vector3]、[Vector4]。\n" +"[codeblock]\n" +"var i = ceil(1.45) # i 是 2.0\n" +"i = ceil(1.001) # i 是 2.0\n" +"[/codeblock]\n" +"另请参见 [method floor]、[method round]、以及 [method snapped]。\n" +"[b]注意:[/b]为了更好的类型安全,使用 [method ceilf]、[method ceili]、" +"[method Vector2.ceil]、[method Vector3.ceil] 或 [method Vector4.ceil]。" + +msgid "" +"Rounds [param x] upward (towards positive infinity), returning the smallest " +"whole number that is not less than [param x].\n" +"A type-safe version of [method ceil], returning a [float]." +msgstr "" +"向上舍入 [param x](朝正无穷大),返回不小于 [param x] 的最小整数。\n" +"[method ceil] 的类型安全版本,返回一个 [float]。" + +msgid "" +"Rounds [param x] upward (towards positive infinity), returning the smallest " +"whole number that is not less than [param x].\n" +"A type-safe version of [method ceil], returning an [int]." +msgstr "" +"向上舍入 [param x](朝正无穷大),返回不小于 [param x] 的最小整数。\n" +"[method ceil] 的类型安全版本,返回一个 [int]。" + +msgid "" +"Clamps the [param value], returning a [Variant] not less than [param min] " +"and not more than [param max]. Supported types: [int], [float], [Vector2], " +"[Vector2i], [Vector3], [Vector3i], [Vector4], [Vector4i].\n" +"[codeblock]\n" +"var a = clamp(-10, -1, 5)\n" +"# a is -1\n" +"\n" +"var b = clamp(8.1, 0.9, 5.5)\n" +"# b is 5.5\n" +"\n" +"var c = clamp(Vector2(-3.5, -4), Vector2(-3.2, -2), Vector2(2, 6.5))\n" +"# c is (-3.2, -2)\n" +"\n" +"var d = clamp(Vector2i(7, 8), Vector2i(-3, -2), Vector2i(2, 6))\n" +"# d is (2, 6)\n" +"\n" +"var e = clamp(Vector3(-7, 8.5, -3.8), Vector3(-3, -2, 5.4), Vector3(-2, 6, " +"-4.1))\n" +"# e is (-3, -2, 5.4)\n" +"\n" +"var f = clamp(Vector3i(-7, -8, -9), Vector3i(-1, 2, 3), Vector3i(-4, -5, " +"-6))\n" +"# f is (-4, -5, -6)\n" +"[/codeblock]\n" +"[b]Note:[/b] For better type safety, use [method clampf], [method clampi], " +"[method Vector2.clamp], [method Vector2i.clamp], [method Vector3.clamp], " +"[method Vector3i.clamp], [method Vector4.clamp], or [method Vector4i.clamp]." +msgstr "" +"钳制 [param value],返回不小于 [param min] 且不大于 [param max] 的 " +"[Variant]。支持的类型:[int]、[float]、[Vector2]、[Vector2i]、[Vector3]、" +"[Vector3i]、[Vector4]、[Vector4i]。\n" +"[codeblock]\n" +"var a = clamp(-10, -1, 5)\n" +"# a 是 -1\n" +"\n" +"var b = clamp(8.1, 0.9, 5.5)\n" +"# b 是 5.5\n" +"\n" +"var c = clamp(Vector2(-3.5, -4), Vector2(-3.2, -2), Vector2(2, 6.5))\n" +"# c 是 (-3.2, -2)\n" +"\n" +"var d = clamp(Vector2i(7, 8), Vector2i(-3, -2), Vector2i(2, 6))\n" +"# d 是 (2, 6)\n" +"\n" +"var e = clamp(Vector3(-7, 8.5, -3.8), Vector3(-3, -2, 5.4), Vector3(-2, 6, " +"-4.1))\n" +"# e 是 (-3, -2, 5.4)\n" +"\n" +"var f = clamp(Vector3i(-7, -8, -9), Vector3i(-1, 2, 3), Vector3i(-4, -5, " +"-6))\n" +"# f 是 (-4, -5, -6)\n" +"[/codeblock]\n" +"[b]注意:[/b]为了更好的类型安全,使用 [method clampf]、[method clampi]、" +"[method Vector2.clamp]、[method Vector2i.clamp]、[method Vector3.clamp]、" +"[method Vector3i.clamp ]、[method Vector4.clamp] 或 [method Vector4i.clamp]。" + +msgid "" +"Clamps the [param value], returning a [float] not less than [param min] and " +"not more than [param max].\n" +"[codeblock]\n" +"var speed = 42.1\n" +"var a = clampf(speed, 1.0, 20.5) # a is 20.5\n" +"\n" +"speed = -10.0\n" +"var b = clampf(speed, -1.0, 1.0) # b is -1.0\n" +"[/codeblock]" +msgstr "" +"钳制 [param value],返回不小于 [param min] 且不大于 [param max] 的 " +"[float]。\n" +"[codeblock]\n" +"var speed = 42.1\n" +"var a = clampf(speed, 1.0, 20.5) # a 是 20.5\n" +"\n" +"speed = -10.0\n" +"var b = clampf(speed, -1.0, 1.0) # b 是 -1.0\n" +"[/codeblock]" + +msgid "" +"Clamps the [param value], returning an [int] not less than [param min] and " +"not more than [param max].\n" +"[codeblock]\n" +"var speed = 42\n" +"var a = clampi(speed, 1, 20) # a is 20\n" +"\n" +"speed = -10\n" +"var b = clampi(speed, -1, 1) # b is -1\n" +"[/codeblock]" +msgstr "" +"钳制 [param value],返回不小于 [param min] 且不大于 [param max] 的 [int]。\n" +"[codeblock]\n" +"var speed = 42\n" +"var a = clampi(speed, 1, 20) # a 是 20\n" +"\n" +"speed = -10\n" +"var b = clampi(speed, -1, 1) # b 是 -1\n" +"[/codeblock]" + +msgid "" +"Returns the cosine of angle [param angle_rad] in radians.\n" +"[codeblock]\n" +"cos(PI * 2) # Returns 1.0\n" +"cos(PI) # Returns -1.0\n" +"cos(deg_to_rad(90)) # Returns 0.0\n" +"[/codeblock]" +msgstr "" +"返回弧度角为 [param angle_rad] 的余弦值。\n" +"[codeblock]\n" +"cos(PI * 2) # 返回 1.0\n" +"cos(PI) # 返回 -1.0\n" +"cos(deg_to_rad(90)) # 返回 0.0\n" +"[/codeblock]" + +msgid "" +"Returns the hyperbolic cosine of [param x] in radians.\n" +"[codeblock]\n" +"print(cosh(1)) # Prints 1.543081\n" +"[/codeblock]" +msgstr "" +"返回弧度角 [param x] 的双曲余弦值。\n" +"[codeblock]\n" +"print(cosh(1)) # 打印 1.543081\n" +"[/codeblock]" + +msgid "" +"Cubic interpolates between two values by the factor defined in [param " +"weight] with [param pre] and [param post] values." +msgstr "" +"根据 [param weight] 中定义的因子以及 [param pre] 和 [param post] 值,在两个值" +"之间进行三次插值。" + +msgid "" +"Cubic interpolates between two rotation values with shortest path by the " +"factor defined in [param weight] with [param pre] and [param post] values. " +"See also [method lerp_angle]." +msgstr "" +"根据 [param weight] 中定义的因子以及 [param pre] 和 [param post] 值,在具有最" +"短路径的两个旋转值之间三次插值 。另见 [method lerp_angle]。" + +msgid "" +"Cubic interpolates between two rotation values with shortest path by the " +"factor defined in [param weight] with [param pre] and [param post] values. " +"See also [method lerp_angle].\n" +"It can perform smoother interpolation than [code]cubic_interpolate()[/code] " +"by the time values." +msgstr "" +"根据 [param weight] 中定义的因子以及 [param pre] 和 [param post] 值,在具有最" +"短路径的两个旋转值之间进行三次插值。另见 [method lerp_angle]。\n" +"它可以根据时间值执行比 [code]cubic_interpolate()[/code] 更平滑的插值。" + +msgid "" +"Cubic interpolates between two values by the factor defined in [param " +"weight] with [param pre] and [param post] values.\n" +"It can perform smoother interpolation than [method cubic_interpolate] by the " +"time values." +msgstr "" +"根据 [param weight] 中定义的因子以及 [param pre] 和 [param post] 值,在两个值" +"之间进行三次插值。\n" +"它可以根据时间值执行比 [method cubic_interpolate] 更平滑的插值。" + msgid "Converts from decibels to linear energy (audio)." msgstr "从分贝转换为线性能量(音频)。" msgid "" +"Converts an angle expressed in degrees to radians.\n" +"[codeblock]\n" +"var r = deg_to_rad(180) # r is 3.141593\n" +"[/codeblock]" +msgstr "" +"将角度值转换为弧度值。\n" +"[codeblock]\n" +"var r = deg_to_rad(180) # r 是 3.141593\n" +"[/codeblock]" + +msgid "" +"Returns an \"eased\" value of [param x] based on an easing function defined " +"with [param curve]. This easing function is based on an exponent. The [param " +"curve] can be any floating-point number, with specific values leading to the " +"following behaviors:\n" +"[codeblock]\n" +"- Lower than -1.0 (exclusive): Ease in-out\n" +"- 1.0: Linear\n" +"- Between -1.0 and 0.0 (exclusive): Ease out-in\n" +"- 0.0: Constant\n" +"- Between 0.0 to 1.0 (exclusive): Ease out\n" +"- 1.0: Linear\n" +"- Greater than 1.0 (exclusive): Ease in\n" +"[/codeblock]\n" +"[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/" +"ease_cheatsheet.png]ease() curve values cheatsheet[/url]\n" +"See also [method smoothstep]. If you need to perform more advanced " +"transitions, use [method Tween.interpolate_value]." +msgstr "" +"基于用 [param curve] 定义的缓动函数返回 [param x] 的“缓动后”的值。该缓动函数" +"是基于指数的。[param curve] 可以是任意浮点数,具体数值会导致以下行为:\n" +"[codeblock]\n" +"- 低于 -1.0(开区间):缓入缓出\n" +"- -1.0:线性\n" +"- 在 -1.0 和 0.0 之间(开区间):缓出缓入\n" +"- 0.0:恒定\n" +"- 在 0.0 到 1.0 之间(开区间):缓出\n" +"- 1.0:线性\n" +"- 大于 1.0(开区间):缓入\n" +"[/codeblock]\n" +"[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/" +"ease_cheatsheet.png]ease() 曲线值速查表[/url]\n" +"另请参阅 [method smoothstep]。如果你需要执行更高级的过渡,请使用 [method " +"Tween.interpolate_value]。" + +msgid "" +"Returns a human-readable name for the given [enum Error] code.\n" +"[codeblock]\n" +"print(OK) # Prints 0\n" +"print(error_string(OK)) # Prints OK\n" +"print(error_string(ERR_BUSY)) # Prints Busy\n" +"print(error_string(ERR_OUT_OF_MEMORY)) # Prints Out of memory\n" +"[/codeblock]" +msgstr "" +"为给定的 [enum Error] 代码返回一个人类可读的名称。\n" +"[codeblock]\n" +"print(OK) # 输出 0\n" +"print(error_string(OK)) # 输出 OK\n" +"print(error_string(ERR_BUSY)) # 输出 Busy\n" +"print(error_string(ERR_OUT_OF_MEMORY)) # 输出 Out of memory\n" +"[/codeblock]" + +msgid "" +"The natural exponential function. It raises the mathematical constant [b]e[/" +"b] to the power of [param x] and returns it.\n" +"[b]e[/b] has an approximate value of 2.71828, and can be obtained with " +"[code]exp(1)[/code].\n" +"For exponents to other bases use the method [method pow].\n" +"[codeblock]\n" +"var a = exp(2) # Approximately 7.39\n" +"[/codeblock]" +msgstr "" +"自然指数函数。计算数学常数 [b]e[/b] 的 [param x] 次方并返回它。\n" +"[b]e[/b] 的近似值为 2.71828,可以使用 [code]exp(1)[/code] 获得。\n" +"求其他底数的指数应使用 [method pow] 方法。\n" +"[codeblock]\n" +"var a = exp(2) # 大约是 7.39\n" +"[/codeblock]" + +msgid "" +"Rounds [param x] downward (towards negative infinity), returning the largest " +"whole number that is not more than [param x]. Supported types: [int], " +"[float], [Vector2], [Vector3], [Vector4].\n" +"[codeblock]\n" +"var a = floor(2.99) # a is 2.0\n" +"a = floor(-2.99) # a is -3.0\n" +"[/codeblock]\n" +"See also [method ceil], [method round], and [method snapped].\n" +"[b]Note:[/b] For better type safety, use [method floorf], [method floori], " +"[method Vector2.floor], [method Vector3.floor], or [method Vector4.floor]." +msgstr "" +"向下舍入 [param x](朝负无穷大),返回不大于 [param x] 的最大整数。支持的类" +"型:[int]、[float]、[Vector2]、[Vector3]、[Vector4]。\n" +"[codeblock]\n" +"var a = floor(2.99) # a 是 2.0\n" +"a = floor(-2.99) # a 是 -3.0\n" +"[/codeblock]\n" +"另请参阅 [method ceil]、[method round]、以及 [method snapped]。\n" +"[b]注意:[/b]为了更好的类型安全,请使用 [method floorf]、[method floori]、" +"[method Vector2.floor]、[method Vector3.floor] 或 [method Vector4.floor]。" + +msgid "" "Rounds [param x] downward (towards negative infinity), returning the largest " "whole number that is not more than [param x].\n" "A type-safe version of [method floor], returning a [float]." @@ -1196,6 +1493,201 @@ msgstr "" "一个类型安全的 [method floor] 版本,返回一个 [float]。" msgid "" +"Rounds [param x] downward (towards negative infinity), returning the largest " +"whole number that is not more than [param x].\n" +"A type-safe version of [method floor], returning an [int].\n" +"[b]Note:[/b] This function is [i]not[/i] the same as [code]int(x)[/code], " +"which rounds towards 0." +msgstr "" +"将 [param x] 向下舍入(向负无穷大),返回不超过 [param x] 的最大整数。\n" +"是 [method floor] 的类型安全版本,返回一个 [int]。\n" +"[b] 注意:[/b]这个函数与 [code]int(x)[/code] [i]不[/i] 一样,后者是向 0 取" +"整。" + +msgid "" +"Returns the floating-point remainder of [param x] divided by [param y], " +"keeping the sign of [param x].\n" +"[codeblock]\n" +"var remainder = fmod(7, 5.5) # remainder is 1.5\n" +"[/codeblock]\n" +"For the integer remainder operation, use the [code]%[/code] operator." +msgstr "" +"返回 [param x] 除以 [param y] 的浮点型余数,符号与 [param x]一致。\n" +"[codeblock]\n" +"var remainder = fmod(7, 5.5) # remainder 是 1.5\n" +"[/codeblock]\n" +"对于整数取余运算,请使用 [code]%[/code] 运算符。" + +msgid "" +"Returns the floating-point modulus of [param x] divided by [param y], " +"wrapping equally in positive and negative.\n" +"[codeblock]\n" +"print(\" (x) (fmod(x, 1.5)) (fposmod(x, 1.5))\")\n" +"for i in 7:\n" +" var x = i * 0.5 - 1.5\n" +" print(\"%4.1f %4.1f | %4.1f\" % [x, fmod(x, 1.5), fposmod(x, " +"1.5)])\n" +"[/codeblock]\n" +"Produces:\n" +"[codeblock]\n" +" (x) (fmod(x, 1.5)) (fposmod(x, 1.5))\n" +"-1.5 -0.0 | 0.0\n" +"-1.0 -1.0 | 0.5\n" +"-0.5 -0.5 | 1.0\n" +" 0.0 0.0 | 0.0\n" +" 0.5 0.5 | 0.5\n" +" 1.0 1.0 | 1.0\n" +" 1.5 0.0 | 0.0\n" +"[/codeblock]" +msgstr "" +"返回 [param x] 除以 [param y] 的浮点模数,正负轴均等包裹。\n" +"[codeblock]\n" +"print(\" (x) (fmod(x, 1.5)) (fposmod(x, 1.5))\")\n" +"for i in 7:\n" +" var x = i * 0.5 - 1.5\n" +" print(\"%4.1f %4.1f | %4.1f\" % [x, fmod(x, 1.5), fposmod(x, " +"1.5)])\n" +"[/codeblock]\n" +"输出:\n" +"[codeblock]\n" +" (x) (fmod(x, 1.5)) (fposmod(x, 1.5))\n" +"-1.5 -0.0 | 0.0\n" +"-1.0 -1.0 | 0.5\n" +"-0.5 -0.5 | 1.0\n" +" 0.0 0.0 | 0.0\n" +" 0.5 0.5 | 0.5\n" +" 1.0 1.0 | 1.0\n" +" 1.5 0.0 | 0.0\n" +"[/codeblock]" + +msgid "" +"Returns the integer hash of the passed [param variable].\n" +"[codeblocks]\n" +"[gdscript]\n" +"print(hash(\"a\")) # Prints 177670\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.Print(GD.Hash(\"a\")); // Prints 177670\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回传入的 [param variable] 的整数哈希值。\n" +"[codeblocks]\n" +"[gdscript]\n" +"print(hash(\"a\")) # 输出 177670\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.Print(GD.Hash(\"a\")); // 输出 177670\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Returns the [Object] that corresponds to [param instance_id]. All Objects " +"have a unique instance ID. See also [method Object.get_instance_id].\n" +"[codeblocks]\n" +"[gdscript]\n" +"var foo = \"bar\"\n" +"\n" +"func _ready():\n" +" var id = get_instance_id()\n" +" var inst = instance_from_id(id)\n" +" print(inst.foo) # Prints bar\n" +"[/gdscript]\n" +"[csharp]\n" +"public partial class MyNode : Node\n" +"{\n" +" public string Foo { get; set; } = \"bar\";\n" +"\n" +" public override void _Ready()\n" +" {\n" +" ulong id = GetInstanceId();\n" +" var inst = (MyNode)InstanceFromId(Id);\n" +" GD.Print(inst.Foo); // Prints bar\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回 [param instance_id] 所对应的 [Object]。所有对象都有唯一的实例 ID。参见 " +"[method Object.get_instance_id]。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var foo = \"bar\"\n" +"\n" +"func _ready():\n" +" var id = get_instance_id()\n" +" var inst = instance_from_id(id)\n" +" print(inst.foo) # 输出 bar\n" +"[/gdscript]\n" +"[csharp]\n" +"public partial class MyNode : Node\n" +"{\n" +" public string Foo { get; set; } = \"bar\";\n" +"\n" +" public override void _Ready()\n" +" {\n" +" ulong id = GetInstanceId();\n" +" var inst = (MyNode)InstanceFromId(Id);\n" +" GD.Print(inst.Foo); // 输出 bar\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Returns an interpolation or extrapolation factor considering the range " +"specified in [param from] and [param to], and the interpolated value " +"specified in [param weight]. The returned value will be between [code]0.0[/" +"code] and [code]1.0[/code] if [param weight] is between [param from] and " +"[param to] (inclusive). If [param weight] is located outside this range, " +"then an extrapolation factor will be returned (return value lower than " +"[code]0.0[/code] or greater than [code]1.0[/code]). Use [method clamp] on " +"the result of [method inverse_lerp] if this is not desired.\n" +"[codeblock]\n" +"# The interpolation ratio in the `lerp()` call below is 0.75.\n" +"var middle = lerp(20, 30, 0.75)\n" +"# middle is now 27.5.\n" +"\n" +"# Now, we pretend to have forgotten the original ratio and want to get it " +"back.\n" +"var ratio = inverse_lerp(20, 30, 27.5)\n" +"# ratio is now 0.75.\n" +"[/codeblock]\n" +"See also [method lerp], which performs the reverse of this operation, and " +"[method remap] to map a continuous series of values to another." +msgstr "" +"返回插值或外推的因子。范围用 [param from] 和 [param to]指定,插值后的值由 " +"[param weight] 指定。如果 [param weight] 在 [param from] 和 [param to] 之间" +"(包含),那么返回的值在 [code]0.0[/code] 和 [code]1.0[/code] 之间。如果 " +"[param weight] 在该范围之外,则返回的是外推因子(返回值小于 [code]0.0[/code] " +"或大于 [code]1.0[/code])。如果不希望这样,请对 [method inverse_lerp] 的结果" +"使用 [method clamp]。\n" +"[codeblock]\n" +"# 下面的 `lerp()` 调用时的插值比例是 0.75。\n" +"var middle = lerp(20, 30, 0.75)\n" +"# middle 现在是 27.5。\n" +"\n" +"# 现在,我们假装忘记了原来的比例,想要找到是多少。\n" +"var ratio = inverse_lerp(20, 30, 27.5)\n" +"# ratio 现在是 0.75。\n" +"[/codeblock]\n" +"另见 [method lerp],它执行本操作的逆操作;以及 [method remap],将一系列连续的" +"值映射到另一个值。" + +msgid "" +"Returns [code]true[/code] if [param a] and [param b] are approximately equal " +"to each other.\n" +"Here, \"approximately equal\" means that [param a] and [param b] are within " +"a small internal epsilon of each other, which scales with the magnitude of " +"the numbers.\n" +"Infinity values of the same sign are considered equal." +msgstr "" +"如果 [param a] 和 [param b] 彼此近似相等,则返回 [code]true[/code]。\n" +"这里,“近似相等”意味着 [param a] 和 [param b] 在彼此的一个小的内部 epsilon " +"内,该 epsilon 与数字的大小成比例。\n" +"相同符号的无穷大值被认为是相等的。" + +msgid "" "Returns whether [param x] is a finite value, i.e. it is not [constant " "@GDScript.NAN], positive infinity, or negative infinity." msgstr "" @@ -1227,6 +1719,1413 @@ msgid "" "invalid) value." msgstr "如果 [param x] 是 NaN(“非数字”或无效)值,则返回 [code]true[/code] 。" +msgid "" +"Returns [code]true[/code], for value types, if [param a] and [param b] share " +"the same value. Returns [code]true[/code], for reference types, if the " +"references of [param a] and [param b] are the same.\n" +"[codeblock]\n" +"# Vector2 is a value type\n" +"var vec2_a = Vector2(0, 0)\n" +"var vec2_b = Vector2(0, 0)\n" +"var vec2_c = Vector2(1, 1)\n" +"is_same(vec2_a, vec2_a) # true\n" +"is_same(vec2_a, vec2_b) # true\n" +"is_same(vec2_a, vec2_c) # false\n" +"\n" +"# Array is a reference type\n" +"var arr_a = []\n" +"var arr_b = []\n" +"is_same(arr_a, arr_a) # true\n" +"is_same(arr_a, arr_b) # false\n" +"[/codeblock]\n" +"These are [Variant] value types: [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] and [Signal].\n" +"These are [Variant] reference types: [Object], [Dictionary], [Array], " +"[PackedByteArray], [PackedInt32Array], [PackedInt64Array], " +"[PackedFloat32Array], [PackedFloat64Array], [PackedStringArray], " +"[PackedVector2Array], [PackedVector3Array] and [PackedColorArray]." +msgstr "" +"当 [param a] 和 [param b] 为值类型时,如果他们相同,那么返回 [code]true[/" +"code]。当 [param a] 和 [param b] 为引用类型时,如果它们的引用对象相同,那么返" +"回 [code]true[/code]。\n" +"[codeblock]\n" +"# Vector2 is a value type\n" +"var vec2_a = Vector2(0, 0)\n" +"var vec2_b = Vector2(0, 0)\n" +"var vec2_c = Vector2(1, 1)\n" +"is_same(vec2_a, vec2_a) # true\n" +"is_same(vec2_a, vec2_b) # true\n" +"is_same(vec2_a, vec2_c) # false\n" +"\n" +"# Array is a reference type\n" +"var arr_a = []\n" +"var arr_b = []\n" +"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]," +"[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]," +"[PackedInt32Array],[PackedInt64Array],[PackedFloat32Array]," +"[PackedFloat64Array],[PackedStringArray],[PackedVector2Array]," +"[PackedVector3Array] 和 [PackedColorArray]。" + +msgid "" +"Returns [code]true[/code] if [param x] is zero or almost zero. The " +"comparison is done using a tolerance calculation with a small internal " +"epsilon.\n" +"This function is faster than using [method is_equal_approx] with one value " +"as zero." +msgstr "" +"如果 [param x] 为零或几乎为零,则返回 [code]true[/code]。比较是使用具有小内" +"部 epsilon 的公差计算的。\n" +"该函数比使用一个值为零的 [method is_equal_approx] 更快。" + +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 clamp] on the result of this function.\n" +"Both [param from] and [param to] must be the same type. Supported types: " +"[int], [float], [Vector2], [Vector3], [Vector4], [Color], [Quaternion], " +"[Basis].\n" +"[codeblock]\n" +"lerp(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]. See also [method remap] to map a continuous " +"series of values to another.\n" +"[b]Note:[/b] For better type safety, use [method lerpf], [method Vector2." +"lerp], [method Vector3.lerp], [method Vector4.lerp], [method Color.lerp], " +"[method Quaternion.slerp] or [method Basis.slerp]." +msgstr "" +"通过 [param weight] 中定义的因子在两个值之间进行线性插值。要执行插值,[param " +"weight] 应介于 [code]0.0[/code] 和 [code]1.0[/code] 之间(包含)。但是,超出" +"此范围的值也是允许的,并可用于执行[i]外推 [/i]。如果不需要,请在该函数的结果" +"上使用 [method clamp]。\n" +"[param from] 和 [param to] 必须是同一类型。支持的类型:[int]、[float]、" +"[Vector2]、[Vector3]、[Vector4]、[Color]、[Quaternion]、[Basis]。\n" +"[codeblock]\n" +"lerp(0, 4, 0.75) # 返回 3.0\n" +"[/codeblock]\n" +"另请参阅执行本操作的逆操作的 [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]。" + +msgid "" +"Linearly interpolates between two angles (in radians) by a [param weight] " +"value between 0.0 and 1.0.\n" +"Similar to [method lerp], but interpolates correctly when the angles wrap " +"around [constant @GDScript.TAU]. To perform eased interpolation with [method " +"lerp_angle], combine it with [method ease] or [method smoothstep].\n" +"[codeblock]\n" +"extends Sprite\n" +"var elapsed = 0.0\n" +"func _process(delta):\n" +" var min_angle = deg_to_rad(0.0)\n" +" var max_angle = deg_to_rad(90.0)\n" +" rotation = lerp_angle(min_angle, max_angle, elapsed)\n" +" elapsed += delta\n" +"[/codeblock]\n" +"[b]Note:[/b] This function lerps through the shortest path between [param " +"from] and [param to]. However, when these two angles are approximately " +"[code]PI + k * TAU[/code] apart for any integer [code]k[/code], it's not " +"obvious which way they lerp due to floating-point precision errors. For " +"example, [code]lerp_angle(0, PI, weight)[/code] lerps counter-clockwise, " +"while [code]lerp_angle(0, PI + 5 * TAU, weight)[/code] lerps clockwise." +msgstr "" +"通过 0.0 和 1.0 之间的 [param weight] 值,在两个角度(以弧度为单位)之间进行" +"线性插值。\n" +"类似于 [method lerp],但当角度环绕 [constant @GDScript.TAU] 时会正确插值。要" +"使用 [method lerp_angle] 执行缓动插值,请将其与 [method ease] 或 [method " +"smoothstep] 结合使用。\n" +"[codeblock]\n" +"extends Sprite\n" +"var elapsed = 0.0\n" +"func _process(delta):\n" +" var min_angle = deg_to_rad(0.0)\n" +" var max_angle = deg_to_rad(90.0)\n" +" rotation = lerp_angle(min_angle, max_angle, elapsed)\n" +" elapsed += delta\n" +"[/codeblock]\n" +"[b]注意:[/b]该函数通过 [param from] 和 [param to] 之间的最短路径进行插值。然" +"而,当这两个角度相距大致 [code]PI + k * TAU[/code] 其中 [code]k[/code] 为任意" +"整数时,由于浮点数精度误差的缘故,要对插值的方向进行判断是很难的。例如," +"[code]lerp_angle(0, PI, weight)[/code] 会逆时针插值,而 [code]lerp_angle(0, " +"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" +"lerp(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" +"lerp(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" +"[b]Example:[/b]\n" +"[codeblock]\n" +"# \"Slider\" refers to a node that inherits Range such as HSlider or " +"VSlider.\n" +"# Its range must be configured to go from 0 to 1.\n" +"# Change the bus name if you'd like to change the volume of a specific bus " +"only.\n" +"AudioServer.set_bus_volume_db(AudioServer.get_bus_index(\"Master\"), " +"linear_to_db($Slider.value))\n" +"[/codeblock]" +msgstr "" +"从线性能量转换为分贝(音频)。这可用于实现按预期运行的音量滑块(因为音量不是" +"线性的)。\n" +"[b]示例:[/b]\n" +"[codeblock]\n" +"# “Slider”引用的是 HSlider、VSlider 等继承自 Range 的节点。\n" +"# 必须将其范围配置为 0 到 1。\n" +"# 如果只想修改特定总线的音量,请修改总线名称。\n" +"AudioServer.set_bus_volume_db(AudioServer.get_bus_index(\"Master\"), " +"linear_to_db($Slider.value))\n" +"[/codeblock]" + +msgid "" +"Returns the natural logarithm of [param x]. 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.\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] 的自然对数。这是持续增长到一定程度所需的时间。\n" +"[b]注意:[/b]这个函数与大多数计算器上的对数“log”函数不同,他们适用的底数是 " +"10。\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 values. This function can take any number " +"of arguments.\n" +"[codeblock]\n" +"max(1, 7, 3, -6, 5) # Returns 7\n" +"[/codeblock]" +msgstr "" +"返回给定值的最大值。这个函数可以接受任意数量的参数。\n" +"[codeblock]\n" +"max(1, 7, 3, -6, 5) # 返回 7\n" +"[/codeblock]" + +msgid "" +"Returns the maximum of two [float] values.\n" +"[codeblock]\n" +"maxf(3.6, 24) # Returns 24.0\n" +"maxf(-3.99, -4) # Returns -3.99\n" +"[/codeblock]" +msgstr "" +"返回两个 [float] 值中的最大值。\n" +"[codeblock]\n" +"maxf(3.6, 24) # 返回 24.0\n" +"maxf(-3.99, -4) # 返回 -3.99\n" +"[/codeblock]" + +msgid "" +"Returns the maximum of two [int] values.\n" +"[codeblock]\n" +"maxi(1, 2) # Returns 2\n" +"maxi(-3, -4) # Returns -3\n" +"[/codeblock]" +msgstr "" +"返回两个 [int] 值中的最大值。\n" +"[codeblock]\n" +"maxi(1, 2) # 返回 2\n" +"maxi(-3, -4) # 返回 -3\n" +"[/codeblock]" + +msgid "" +"Returns the minimum of the given values. This function can take any number " +"of arguments.\n" +"[codeblock]\n" +"min(1, 7, 3, -6, 5) # Returns -6\n" +"[/codeblock]" +msgstr "" +"返回给定值的最小值。这个函数可以接受任意数量的参数。\n" +"[codeblock]\n" +"min(1, 7, 3, -6, 5) # 返回 -6\n" +"[/codeblock]" + +msgid "" +"Returns the minimum of two [float] values.\n" +"[codeblock]\n" +"minf(3.6, 24) # Returns 3.6\n" +"minf(-3.99, -4) # Returns -4.0\n" +"[/codeblock]" +msgstr "" +"返回两个 [float] 值中的最小值。\n" +"[codeblock]\n" +"minf(3.6, 24) # 返回 3.6\n" +"minf(-3.99, -4) # 返回 -4.0\n" +"[/codeblock]" + +msgid "" +"Returns the minimum of two [int] values.\n" +"[codeblock]\n" +"mini(1, 2) # Returns 1\n" +"mini(-3, -4) # Returns -4\n" +"[/codeblock]" +msgstr "" +"返回两个 [int] 值中的最小值。\n" +"[codeblock]\n" +"mini(1, 2) # 返回 1\n" +"mini(-3, -4) # 返回 -4\n" +"[/codeblock]" + +msgid "" +"Moves [param from] toward [param to] by the [param delta] value.\n" +"Use a negative [param delta] value to move away.\n" +"[codeblock]\n" +"move_toward(5, 10, 4) # Returns 9\n" +"move_toward(10, 5, 4) # Returns 6\n" +"move_toward(10, 5, -1.5) # Returns 11.5\n" +"[/codeblock]" +msgstr "" +"将 [param from] 向 [param to] 移动,移动的长度是 [param delta]。\n" +"使用负的 [param delta] 值则向远离的方向移动。\n" +"[codeblock]\n" +"move_toward(5, 10, 4) # 返回 9\n" +"move_toward(10, 5, 4) # 返回 6\n" +"move_toward(10, 5, -1.5) # 返回 11.5\n" +"[/codeblock]" + +msgid "" +"Returns the nearest equal or larger power of 2 for the integer [param " +"value].\n" +"In other words, returns the smallest value [code]a[/code] where [code]a = " +"pow(2, n)[/code] such that [code]value <= a[/code] for some non-negative " +"integer [code]n[/code].\n" +"[codeblock]\n" +"nearest_po2(3) # Returns 4\n" +"nearest_po2(4) # Returns 4\n" +"nearest_po2(5) # Returns 8\n" +"\n" +"nearest_po2(0) # Returns 0 (this may not be expected)\n" +"nearest_po2(-1) # Returns 0 (this may not be expected)\n" +"[/codeblock]\n" +"[b]Warning:[/b] Due to the way it is implemented, this function returns " +"[code]0[/code] rather than [code]1[/code] for negative values of [param " +"value] (in reality, 1 is the smallest integer power of 2)." +msgstr "" +"返回最接近且不小于整数 [param value] 的 2 的幂。\n" +"换句话说,返回最小值 [code]a[/code],其中 [code]a = pow(2, n)[/code],某些非" +"负整数 [code]n[/code] 使得值 [code]value <= a[/code]。\n" +"[codeblock]\n" +"nearest_po2(3) # 返回 4\n" +"nearest_po2(4) # 返回 4\n" +"nearest_po2(5) # 返回 8\n" +"\n" +"nearest_po2(0) # 返回 0(可能出乎意料)\n" +"nearest_po2(-1) # 返回 0(可能出乎意料)\n" +"[/codeblock]\n" +"[b]警告:[/b]由于其实现方式,此函数会对非正数的 [param value] 返回 [code]0[/" +"code] 而不是 [code]1[/code] (实际上 1 是 2 的最小整数幂)。" + +msgid "" +"Wraps [param value] between [code]0[/code] and the [param length]. If the " +"limit is reached, the next value the function returns is decreased to the " +"[code]0[/code] side or increased to the [param length] side (like a triangle " +"wave). If [param length] is less than zero, it becomes positive.\n" +"[codeblock]\n" +"pingpong(-3.0, 3.0) # Returns 3.0\n" +"pingpong(-2.0, 3.0) # Returns 2.0\n" +"pingpong(-1.0, 3.0) # Returns 1.0\n" +"pingpong(0.0, 3.0) # Returns 0.0\n" +"pingpong(1.0, 3.0) # Returns 1.0\n" +"pingpong(2.0, 3.0) # Returns 2.0\n" +"pingpong(3.0, 3.0) # Returns 3.0\n" +"pingpong(4.0, 3.0) # Returns 2.0\n" +"pingpong(5.0, 3.0) # Returns 1.0\n" +"pingpong(6.0, 3.0) # Returns 0.0\n" +"[/codeblock]" +msgstr "" +"将 [param value] 包裹在 [code]0[/code] 和 [param length] 之间。如果达到限制," +"函数返回的下一个值将减少到 [code]0[/code] 侧或增加到 [param length] 侧(像三" +"角波)。如果 [param length] 小于零,则变为正数。\n" +"[codeblock]\n" +"pingpong(-3.0, 3.0) # 返回 3.0\n" +"pingpong(-2.0, 3.0) # 返回 2.0\n" +"pingpong(-1.0, 3.0) # 返回 1.0\n" +"pingpong(0.0, 3.0) # 返回 0.0\n" +"pingpong(1.0, 3.0) # 返回 1.0\n" +"pingpong(2.0, 3.0) # 返回 2.0\n" +"pingpong(3.0, 3.0) # 返回 3.0\n" +"pingpong(4.0, 3.0) # 返回 2.0\n" +"pingpong(5.0, 3.0) # 返回 1.0\n" +"pingpong(6.0, 3.0) # 返回 0.0\n" +"[/codeblock]" + +msgid "" +"Returns the integer modulus of [param x] divided by [param y] that wraps " +"equally in positive and negative.\n" +"[codeblock]\n" +"print(\"#(i) (i % 3) (posmod(i, 3))\")\n" +"for i in range(-3, 4):\n" +" print(\"%2d %2d | %2d\" % [i, i % 3, posmod(i, 3)])\n" +"[/codeblock]\n" +"Produces:\n" +"[codeblock]\n" +"(i) (i % 3) (posmod(i, 3))\n" +"-3 0 | 0\n" +"-2 -2 | 1\n" +"-1 -1 | 2\n" +" 0 0 | 0\n" +" 1 1 | 1\n" +" 2 2 | 2\n" +" 3 0 | 0\n" +"[/codeblock]" +msgstr "" +"返回 [param x] 除以 [param y] 的整数模数,对正负数进行一致的循环。\n" +"[codeblock]\n" +"print(\"#(i) (i % 3) (posmod(i, 3))\")\n" +"for i in range(-3, 4):\n" +" print(\"%2d %2d | %2d\" % [i, i % 3, posmod(i, 3)])\n" +"[/codeblock]\n" +"结果:\n" +"[codeblock]\n" +"(i) (i % 3) (posmod(i, 3))\n" +"-3 0 | 0\n" +"-2 -2 | 1\n" +"-1 -1 | 2\n" +" 0 0 | 0\n" +" 1 1 | 1\n" +" 2 2 | 2\n" +" 3 0 | 0\n" +"[/codeblock]" + +msgid "" +"Converts one or more arguments of any type to string in the best way " +"possible and prints them to the console.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var a = [1, 2, 3]\n" +"print(\"a\", \"b\", a) # Prints ab[1, 2, 3]\n" +"[/gdscript]\n" +"[csharp]\n" +"var a = new Godot.Collections.Array { 1, 2, 3 };\n" +"GD.Print(\"a\", \"b\", a); // Prints ab[1, 2, 3]\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Note:[/b] Consider using [method push_error] and [method push_warning] to " +"print error and warning messages instead of [method print] or [method " +"print_rich]. This distinguishes them from print messages used for debugging " +"purposes, while also displaying a stack trace when an error or warning is " +"printed." +msgstr "" +"以尽可能最佳的方式将一个或多个任意类型的参数转换为字符串,并将其打印到控制" +"台。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var a = [1, 2, 3]\n" +"print(\"a\", \"b\", a) # 输出 ab[1, 2, 3]\n" +"[/gdscript]\n" +"[csharp]\n" +"var a = new Godot.Collections.Array { 1, 2, 3 };\n" +"GD.Print(\"a\", \"b\", a); // 输出 ab[1, 2, 3]\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]注意:[/b]请考虑使用 [method push_error] 和 [method push_warning] 来打印错" +"误和警告消息,而不是 [method print] 或 [method print_rich]。这将它们与用于调" +"试目的的打印消息区分开来,同时还会在打印错误或警告时显示堆栈跟踪。" + +msgid "" +"Converts one or more arguments of any type to string in the best way " +"possible and prints them to the console. The following BBCode tags are " +"supported: b, i, u, s, indent, code, url, center, right, color, bgcolor, " +"fgcolor. Color tags only support named colors such as [code]red[/code], " +"[i]not[/i] hexadecimal color codes. Unsupported tags will be left as-is in " +"standard output.\n" +"When printing to standard output, the supported subset of BBCode is " +"converted to ANSI escape codes for the terminal emulator to display. " +"Displaying ANSI escape codes is currently only supported on Linux and macOS. " +"Support for ANSI escape codes may vary across terminal emulators, especially " +"for italic and strikethrough.\n" +"[codeblocks]\n" +"[gdscript]\n" +"print_rich(\"[code][b]Hello world![/b][/code]\") # Prints out: [b]Hello " +"world![/b]\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.PrintRich(\"[code][b]Hello world![/b][/code]\"); // Prints out: [b]Hello " +"world![/b]\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Note:[/b] Consider using [method push_error] and [method push_warning] to " +"print error and warning messages instead of [method print] or [method " +"print_rich]. This distinguishes them from print messages used for debugging " +"purposes, while also displaying a stack trace when an error or warning is " +"printed." +msgstr "" +"以尽可能最佳的方式将一个或多个任意类型的参数转换为字符串,并将其打印到控制" +"台。支持以下 BBCode 标签:b、i、u、s、indent、code、url、center、right、" +"color、bgcolor、fgcolor。颜色标签仅支持命名颜色,例如 [code]red[/code]、[i]不" +"支持[/i] 十六进制颜色代码。不支持的标签将在标准输出中保持原样。\n" +"当打印到标准输出时,支持的 BBCode 子集被转换为 ANSI 转义码以供终端仿真器显" +"示。目前仅 Linux 和 macOS 支持显示 ANSI 转义码。对 ANSI 转义码的支持可能因终" +"端仿真器而异,尤其是斜体和删除线。\n" +"[codeblocks]\n" +"[gdscript]\n" +"print_rich(\"[code][b]Hello world![/b][/code]\") # 输出:[b]Hello world![/" +"b]\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.PrintRich(\"[code][b]Hello world![/b][/code]\"); // 输出:[b]Hello world!" +"[/b]\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]注意:[/b]请考虑使用 [method push_error] 和 [method push_warning] 来打印错" +"误和警告消息,而不是 [method print] 或 [method print_rich]。这将它们与用于调" +"试目的的打印消息区分开来,同时还会在打印错误或警告时显示堆栈跟踪。" + +msgid "" +"If verbose mode is enabled ([method OS.is_stdout_verbose] returning " +"[code]true[/code]), converts one or more arguments of any type to string in " +"the best way possible and prints them to the console." +msgstr "" +"如果启用了详细模式([method OS.is_stdout_verbose] 返回 [code]true[/code])," +"则尽可能以最佳方式将一个或多个任意类型的参数转换为字符串,并将它们打印到控制" +"台。" + +msgid "" +"Prints one or more arguments to strings in the best way possible to standard " +"error line.\n" +"[codeblocks]\n" +"[gdscript]\n" +"printerr(\"prints to stderr\")\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.PrintErr(\"prints to stderr\");\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"以尽可能最佳的方式将一个或多个参数作为字符串输出到标准错误行。\n" +"[codeblocks]\n" +"[gdscript]\n" +"printerr(\"prints to stderr\")\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.PrintErr(\"prints to stderr\");\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Prints one or more arguments to strings in the best way possible to the OS " +"terminal. Unlike [method print], no newline is automatically added at the " +"end.\n" +"[codeblocks]\n" +"[gdscript]\n" +"printraw(\"A\")\n" +"printraw(\"B\")\n" +"printraw(\"C\")\n" +"# Prints ABC to terminal\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.PrintRaw(\"A\");\n" +"GD.PrintRaw(\"B\");\n" +"GD.PrintRaw(\"C\");\n" +"// Prints ABC to terminal\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"以尽可能最佳的方式将一个或多个参数作为字符串输出到 OS 终端。与 [method " +"print] 不同的是,最后不会自动添加换行符。\n" +"[codeblocks]\n" +"[gdscript]\n" +"printraw(\"A\")\n" +"printraw(\"B\")\n" +"printraw(\"C\")\n" +"# 输出 ABC 到终端\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.PrintRaw(\"A\");\n" +"GD.PrintRaw(\"B\");\n" +"GD.PrintRaw(\"C\");\n" +"// 输出 ABC 到终端\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Prints one or more arguments to the console with a space between each " +"argument.\n" +"[codeblocks]\n" +"[gdscript]\n" +"prints(\"A\", \"B\", \"C\") # Prints A B C\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.PrintS(\"A\", \"B\", \"C\"); // Prints A B C\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"将一个或多个参数打印到控制台,每个参数之间有一个空格。\n" +"[codeblocks]\n" +"[gdscript]\n" +"prints(\"A\", \"B\", \"C\") # 输出 A B C\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.PrintS(\"A\", \"B\", \"C\"); // 输出 A B C\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Prints one or more arguments to the console with a tab between each " +"argument.\n" +"[codeblocks]\n" +"[gdscript]\n" +"printt(\"A\", \"B\", \"C\") # Prints A B C\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.PrintT(\"A\", \"B\", \"C\"); // Prints A B C\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"将一个或多个参数打印到控制台,每个参数之间有一个制表符。\n" +"[codeblocks]\n" +"[gdscript]\n" +"printt(\"A\", \"B\", \"C\") # 输出 A B C\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.PrintT(\"A\", \"B\", \"C\"); // 输出 A B C\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Pushes an error message to Godot's built-in debugger and to the OS " +"terminal.\n" +"[codeblocks]\n" +"[gdscript]\n" +"push_error(\"test error\") # Prints \"test error\" to debugger and terminal " +"as error call\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.PushError(\"test error\"); // Prints \"test error\" to debugger and " +"terminal as error call\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Note:[/b] This function does not pause project execution. To print an " +"error message and pause project execution in debug builds, use " +"[code]assert(false, \"test error\")[/code] instead." +msgstr "" +"将错误消息推送到 Godot 的内置调试器和 OS 终端。\n" +"[codeblocks]\n" +"[gdscript]\n" +"push_error(\"test error\") # 向调试器和终端打印 “test error” 作为错误调用\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.PushError(\"test error\"); // 向调试器和终端打印 “test error” 作为错误调" +"用\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]注意:[/b]该函数不会暂停项目执行。要在调试版本中打印错误消息并暂停项目执" +"行,请改用 [code]assert(false, \"test error\")[/code]。" + +msgid "" +"Pushes a warning message to Godot's built-in debugger and to the OS " +"terminal.\n" +"[codeblocks]\n" +"[gdscript]\n" +"push_warning(\"test warning\") # Prints \"test warning\" to debugger and " +"terminal as warning call\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.PushWarning(\"test warning\"); // Prints \"test warning\" to debugger and " +"terminal as warning call\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"将警告消息推送到 Godot 的内置调试器和 OS 终端。\n" +"[codeblocks]\n" +"[gdscript]\n" +"push_warning(\"test warning\") # 以警告的形式向调试器和终端输出 “test " +"warning”\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.PushWarning(\"test warning\"); // 以警告的形式向调试器和终端输出 “test " +"warning”\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Converts an angle expressed in radians to degrees.\n" +"[codeblock]\n" +"rad_to_deg(0.523599) # Returns 30\n" +"rad_to_deg(PI) # Returns 180\n" +"rad_to_deg(PI * 2) # Returns 360\n" +"[/codeblock]" +msgstr "" +"将以弧度表示的角度转换为度。\n" +"[codeblock]\n" +"rad_to_deg(0.523599) # 返回 30\n" +"rad_to_deg(PI) # 返回 180\n" +"rad_to_deg(PI * 2) # 返回 360\n" +"[/codeblock]" + +msgid "" +"Given a [param seed], returns a [PackedInt64Array] of size [code]2[/code], " +"where its first element is the randomized [int] value, and the second " +"element is the same as [param seed]. Passing the same [param seed] " +"consistently returns the same array.\n" +"[b]Note:[/b] \"Seed\" here refers to the internal state of the pseudo random " +"number generator, currently implemented as a 64 bit integer.\n" +"[codeblock]\n" +"var a = rand_from_seed(4)\n" +"\n" +"print(a[0])\t# Prints 2879024997\n" +"print(a[1])\t# Prints 4\n" +"[/codeblock]" +msgstr "" +"给定一个 [param seed],返回一个大小为 [code]2[/code] 的 [PackedInt64Array]," +"其中第一个元素是随机化的 [int] 值,第二个元素与 [param seed] 相同。传入相同" +"的 [param seed] 会一致地返回相同的数组。\n" +"[b]注意:[/b]这里的“种子”是指伪随机数发生器的内部状态,目前实现为一个 64 位整" +"数。\n" +"[codeblock]\n" +"var a = rand_from_seed(4)\n" +"\n" +"print(a[0])\t# 输出 2879024997\n" +"print(a[1])\t# 输出 4\n" +"[/codeblock]" + +msgid "" +"Returns a random floating point value between [code]0.0[/code] and " +"[code]1.0[/code] (inclusive).\n" +"[codeblocks]\n" +"[gdscript]\n" +"randf() # Returns e.g. 0.375671\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.Randf(); // Returns e.g. 0.375671\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回 [code]0.0[/code] 和 [code]1.0[/code](包含)之间的随机浮点值。\n" +"[codeblocks]\n" +"[gdscript]\n" +"randf() # 返回示例 0.375671\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.Randf(); // 返回示例 0.375671\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Returns a random floating point value between [param from] and [param to] " +"(inclusive).\n" +"[codeblocks]\n" +"[gdscript]\n" +"randf_range(0, 20.5) # Returns e.g. 7.45315\n" +"randf_range(-10, 10) # Returns e.g. -3.844535\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.RandRange(0.0, 20.5); // Returns e.g. 7.45315\n" +"GD.RandRange(-10.0, 10.0); // Returns e.g. -3.844535\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回 [param from] 和 [param to](包含)之间的随机浮点值。\n" +"[codeblocks]\n" +"[gdscript]\n" +"randf_range(0, 20.5) # 返回示例 7.45315\n" +"randf_range(-10, 10) # 返回示例 -3.844535\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.RandRange(0.0, 20.5); // 返回示例 7.45315\n" +"GD.RandRange(-10.0, 10.0); // 返回示例 -3.844535\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Returns a normally-distributed pseudo-random floating point value 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 变换。这也被称为高斯分布。" + +msgid "" +"Returns a random unsigned 32-bit integer. Use remainder to obtain a random " +"value in the interval [code][0, N - 1][/code] (where N is smaller than " +"2^32).\n" +"[codeblocks]\n" +"[gdscript]\n" +"randi() # Returns random integer between 0 and 2^32 - 1\n" +"randi() % 20 # Returns random integer between 0 and 19\n" +"randi() % 100 # Returns random integer between 0 and 99\n" +"randi() % 100 + 1 # Returns random integer between 1 and 100\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.Randi(); // Returns random integer between 0 and 2^32 - 1\n" +"GD.Randi() % 20; // Returns random integer between 0 and 19\n" +"GD.Randi() % 100; // Returns random integer between 0 and 99\n" +"GD.Randi() % 100 + 1; // Returns random integer between 1 and 100\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回一个随机的无符号 32 位整数。使用余数获得区间 [code][0, N - 1][/code] (其" +"中 N 小于 2^32)的随机值。\n" +"[codeblocks]\n" +"[gdscript]\n" +"randi() # 返回介于 0 到 2^32 - 1 之间的随机整数\n" +"randi() % 20 # 返回介于 0 到 19之间的随机整数\n" +"randi() % 100 # 返回介于 0 到 99 之间的随机整数\n" +"randi() % 100 + 1 # 返回介于 1 到 100 之间的随机整数\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.Randi(); // 返回介于 0 到 2^32 - 1 之间的随机整数\n" +"GD.Randi() % 20; // 返回介于 0 到 19之间的随机整数\n" +"GD.Randi() % 100; // 返回介于 0 到 99 之间的随机整数\n" +"GD.Randi() % 100 + 1; // 返回介于 1 到 100 之间的随机整数\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Returns a random signed 32-bit integer between [param from] and [param to] " +"(inclusive). If [param to] is lesser than [param from], they are swapped.\n" +"[codeblocks]\n" +"[gdscript]\n" +"randi_range(0, 1) # Returns either 0 or 1\n" +"randi_range(-10, 1000) # Returns random integer between -10 and 1000\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.RandRange(0, 1); // Returns either 0 or 1\n" +"GD.RandRange(-10, 1000); // Returns random integer between -10 and 1000\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回介于 [param from] 和 [param to](包含)之间的一个随机有符号 32 位整数。如" +"果 [param to] 小于 [param from],则它们将被交换。\n" +"[codeblocks]\n" +"[gdscript]\n" +"randi_range(0, 1) # 返回 0 或 1\n" +"randi_range(-10, 1000) # 返回介于 -10 和 1000 之间的随机整数\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.RandRange(0, 1); // 返回 0 或 1\n" +"GD.RandRange(-10, 1000); // 返回介于 -10 和 1000 之间的随机整数\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Randomizes the seed (or the internal state) of the random number generator. " +"The current implementation uses a number based on the device's time.\n" +"[b]Note:[/b] This function is called automatically when the project is run. " +"If you need to fix the seed to have consistent, reproducible results, use " +"[method seed] to initialize the random number generator." +msgstr "" +"随机化随机数发生器的种子(或内部状态)。目前的实现使用一个基于设备时间的数" +"字。\n" +"[b]注意:[/b]该函数在项目运行时自动被调用。如果需要修复种子以获得一致、可重现" +"的结果,请使用 [method seed] 来初始化随机数生成器。" + +msgid "" +"Maps a [param value] from range [code][istart, istop][/code] to [code]" +"[ostart, ostop][/code]. See also [method lerp] and [method inverse_lerp]. If " +"[param value] is outside [code][istart, istop][/code], then the resulting " +"value will also be outside [code][ostart, ostop][/code]. If this is not " +"desired, use [method clamp] on the result of this function.\n" +"[codeblock]\n" +"remap(75, 0, 100, -1, 1) # Returns 0.5\n" +"[/codeblock]\n" +"For complex use cases where multiple ranges are needed, consider using " +"[Curve] or [Gradient] instead." +msgstr "" +"将 [param value] 从范围 [code][istart, istop][/code] 映射到 [code][ostart, " +"ostop][/code]。另见 [method lerp] 和 [method inverse_lerp]。如果 [param " +"value] 在 [code][istart, istop][/code] 之外,那么结果值也将在 [code][ostart, " +"ostop][/code] 之外。如果不希望这样,请对该函数的结果使用 [method clamp]。\n" +"[codeblock]\n" +"remap(75, 0, 100, -1, 1) # 返回 0.5\n" +"[/codeblock]\n" +"对于需要多个范围的复杂用例,请考虑改用 [Curve] 或 [Gradient]。" + +msgid "" +"Allocates a unique ID which can be used by the implementation to construct a " +"RID. This is used mainly from native extensions to implement servers." +msgstr "" +"分配一个唯一的 ID,可被实现用来构造一个 RID。这主要被本地扩展使用以实现服务" +"器。" + +msgid "" +"Creates a RID from a [param base]. This is used mainly from native " +"extensions to build servers." +msgstr "从 [param base] 创建一个 RID。这主要被本地扩展使用以构建服务器。" + +msgid "" +"Rounds [param x] to the nearest whole number, with halfway cases rounded " +"away from 0. Supported types: [int], [float], [Vector2], [Vector3], " +"[Vector4].\n" +"[codeblock]\n" +"round(2.4) # Returns 2\n" +"round(2.5) # Returns 3\n" +"round(2.6) # Returns 3\n" +"[/codeblock]\n" +"See also [method floor], [method ceil], and [method snapped].\n" +"[b]Note:[/b] For better type safety, use [method roundf], [method roundi], " +"[method Vector2.round], [method Vector3.round], or [method Vector4.round]." +msgstr "" +"将 [param x] 舍入到最接近的整数,中间情况远离 0 舍入。支持的类型:[int]、" +"[float]、[Vector2]、[Vector3]、[Vector4]。\n" +"[codeblock]\n" +"round(2.4) # 返回 2\n" +"round(2.5) # 返回 3\n" +"round(2.6) # 返回 3\n" +"[/codeblock]\n" +"另请参见 [method floor]、[method ceil] 和 [method snapped]。\n" +"[b]注意:[/b]为了更好的类型安全,使用 [method roundf]、[method roundi]、" +"[method Vector2.round]、[method Vector3.round] 或 [method Vector4.round]。" + +msgid "" +"Rounds [param x] to the nearest whole number, with halfway cases rounded " +"away from 0.\n" +"A type-safe version of [method round], returning a [float]." +msgstr "" +"将 [param x] 舍入到最接近的整数,中间情况远离 0 舍入。\n" +"[method round] 的类型安全版本,返回一个 [float]。" + +msgid "" +"Rounds [param x] to the nearest whole number, with halfway cases rounded " +"away from 0.\n" +"A type-safe version of [method round], returning an [int]." +msgstr "" +"将 [param x] 舍入到最接近的整数,中间情况远离 0 舍入。\n" +"[method round] 的类型安全版本,返回一个 [int]。" + +msgid "" +"Sets the seed for the random number generator to [param base]. Setting the " +"seed manually can ensure consistent, repeatable results for most random " +"functions.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var my_seed = \"Godot Rocks\".hash()\n" +"seed(my_seed)\n" +"var a = randf() + randi()\n" +"seed(my_seed)\n" +"var b = randf() + randi()\n" +"# a and b are now identical\n" +"[/gdscript]\n" +"[csharp]\n" +"ulong mySeed = (ulong)GD.Hash(\"Godot Rocks\");\n" +"GD.Seed(mySeed);\n" +"var a = GD.Randf() + GD.Randi();\n" +"GD.Seed(mySeed);\n" +"var b = GD.Randf() + GD.Randi();\n" +"// a and b are now identical\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"将随机数生成器的种子设置为 [param base]。手动设置种子可以确保大多数随机函数的" +"结果一致、可重复。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var my_seed = \"Godot Rocks\".hash()\n" +"seed(my_seed)\n" +"var a = randf() + randi()\n" +"seed(my_seed)\n" +"var b = randf() + randi()\n" +"# a 和 b 现在是一样的\n" +"[/gdscript]\n" +"[csharp]\n" +"ulong mySeed = (ulong)GD.Hash(\"Godot Rocks\");\n" +"GD.Seed(mySeed);\n" +"var a = GD.Randf() + GD.Randi();\n" +"GD.Seed(mySeed);\n" +"var b = GD.Randf() + GD.Randi();\n" +"// a 和 b 现在是一样的\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Returns the same type of [Variant] as [param x], with [code]-1[/code] for " +"negative values, [code]1[/code] for positive values, and [code]0[/code] for " +"zeros. Supported types: [int], [float], [Vector2], [Vector2i], [Vector3], " +"[Vector3i], [Vector4], [Vector4i].\n" +"[codeblock]\n" +"sign(-6.0) # Returns -1\n" +"sign(0.0) # Returns 0\n" +"sign(6.0) # Returns 1\n" +"\n" +"sign(Vector3(-6.0, 0.0, 6.0)) # Returns (-1, 0, 1)\n" +"[/codeblock]\n" +"[b]Note:[/b] For better type safety, use [method signf], [method signi], " +"[method Vector2.sign], [method Vector2i.sign], [method Vector3.sign], " +"[method Vector3i.sign], [method Vector4.sign], or [method Vector4i.sign]." +msgstr "" +"返回与 [param x] 相同类型的 [Variant],[code]-1[/code] 为负值,[code]1[/" +"code] 为正值,[code]0[/code] 为零值。支持的类型:[int]、[float]、[Vector2]、" +"[Vector2i]、[Vector3]、[Vector3i]、[Vector4]、[Vector4i]。\n" +"[codeblock]\n" +"sign(-6.0) # 返回 -1\n" +"sign(0.0) # 返回 0\n" +"sign(6.0) # 返回 1\n" +"\n" +"sign(Vector3(-6.0, 0.0, 6.0)) # 返回 (-1, 0, 1)\n" +"[/codeblock]\n" +"[b]注意:[/b]为了更好的类型安全,请使用 [method signf]、[method signi]、" +"[method Vector2.sign]、[method Vector2i.sign]、[method Vector3.sign]、" +"[method Vector3i.sign]、[method Vector4.sign]、或 [method Vector4i.sign]。" + +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" +"sign(-6) # Returns -1\n" +"sign(0) # Returns 0\n" +"sign(6) # Returns 1\n" +"[/codeblock]" +msgstr "" +"如果 [param x] 为负,则返回 [code]-1[/code];如果 [param x] 为正,则返回 " +"[code]1[/code];如果 [param x] 为零,则返回 [code]0[/code]。\n" +"[codeblock]\n" +"sign(-6) # 返回 -1\n" +"sign(0) # 返回 0\n" +"sign(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" +"sin(deg_to_rad(90)) # Returns 1.0\n" +"[/codeblock]" +msgstr "" +"返回弧度角 [param angle_rad] 的正弦值。\n" +"[codeblock]\n" +"sin(0.523599) # 返回 0.5\n" +"sin(deg_to_rad(90)) # 返回 1.0\n" +"[/codeblock]" + +msgid "" +"Returns the hyperbolic sine of [param x].\n" +"[codeblock]\n" +"var a = log(2.0) # Returns 0.693147\n" +"sinh(a) # Returns 0.75\n" +"[/codeblock]" +msgstr "" +"返回 [param x] 的双曲正弦值。\n" +"[codeblock]\n" +"var a = log(2.0) # 返回 0.693147\n" +"sinh(a) # 返回 0.75\n" +"[/codeblock]" + +msgid "" +"Returns the result of smoothly interpolating the value of [param x] between " +"[code]0[/code] and [code]1[/code], based on the where [param x] lies with " +"respect to the edges [param from] and [param to].\n" +"The return value is [code]0[/code] if [code]x <= from[/code], and [code]1[/" +"code] if [code]x >= to[/code]. If [param x] lies between [param from] and " +"[param to], the returned value follows an S-shaped curve that maps [param x] " +"between [code]0[/code] and [code]1[/code].\n" +"This S-shaped curve is the cubic Hermite interpolator, given by [code]f(y) = " +"3*y^2 - 2*y^3[/code] where [code]y = (x-from) / (to-from)[/code].\n" +"[codeblock]\n" +"smoothstep(0, 2, -5.0) # Returns 0.0\n" +"smoothstep(0, 2, 0.5) # Returns 0.15625\n" +"smoothstep(0, 2, 1.0) # Returns 0.5\n" +"smoothstep(0, 2, 2.0) # Returns 1.0\n" +"[/codeblock]\n" +"Compared to [method ease] with a curve value of [code]-1.6521[/code], " +"[method smoothstep] returns the smoothest possible curve with no sudden " +"changes in the derivative. If you need to perform more advanced transitions, " +"use [Tween] or [AnimationPlayer].\n" +"[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/" +"smoothstep_ease_comparison.png]Comparison between smoothstep() and ease(x, " +"-1.6521) return values[/url]" +msgstr "" +"返回 [param x] 在 [code]0[/code] 和 [code]1[/code] 之间平滑插值的结果,基于 " +"[param x] 相对于边 [param from] 和 [param to] 的位置。\n" +"如果 [code]x <= from[/code],则返回值为 [code]0[/code];如果 [code]x >= to[/" +"code],则返回值为 [code]1[/code]。如果 [param x] 位于 [param from] 和 [param " +"to] 之间,则返回值遵循一条将 [param x] 映射到 [code]0[/code] 和 [code]1[/" +"code] 之间的 S 形曲线。\n" +"这条 S 形曲线是三次 Hermite 插值器,由 [code]f(y) = 3*y^2 - 2*y^3[/code] 给" +"出,其中 [code]y = (x-from) / (to-from)[/code]。\n" +"[codeblock]\n" +"smoothstep(0, 2, -5.0) # 返回 0.0\n" +"smoothstep(0, 2, 0.5) # 返回 0.15625\n" +"smoothstep(0, 2, 1.0) # 返回 0.5\n" +"smoothstep(0, 2, 2.0) # 返回 1.0\n" +"[/codeblock]\n" +"与曲线值为 [code]-1.6521[/code] 的 [method ease] 相比,[method smoothstep] 返" +"回最平滑的曲线,导数没有突然变化。如果您需要执行更高级的过渡,请使用 [Tween] " +"或 [AnimationPlayer]。\n" +"[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/" +"smoothstep_ease_comparison.png]smoothstep() 与 ease(x, -1.6521) 返回值的比较" +"[/url]" + +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" +"The returned value is the same type of [Variant] as [param step]. Supported " +"types: [int], [float], [Vector2], [Vector2i], [Vector3], [Vector3i], " +"[Vector4], [Vector4i].\n" +"[codeblock]\n" +"snapped(100, 32) # Returns 96\n" +"snapped(3.14159, 0.01) # Returns 3.14\n" +"\n" +"snapped(Vector2(34, 70), Vector2(8, 8)) # Returns (32, 72)\n" +"[/codeblock]\n" +"See also [method ceil], [method floor], and [method round].\n" +"[b]Note:[/b] For better type safety, use [method snappedf], [method " +"snappedi], [method Vector2.snapped], [method Vector2i.snapped], [method " +"Vector3.snapped], [method Vector3i.snapped], [method Vector4.snapped], or " +"[method Vector4i.snapped]." +msgstr "" +"返回最接近 [param x] 的 [param step] 的倍数。这也可用于将一个浮点数四舍五入为" +"任意小数位数。\n" +"返回值是与 [param step] 相同类型的 [Variant]。支持的类型:[int]、[float]、" +"[Vector2]、[Vector2i]、[Vector3]、[Vector3i]、[Vector4]、[Vector4i]。\n" +"[codeblock]\n" +"snapped(100, 32) # 返回 96\n" +"snapped(3.14159, 0.01) # 返回 3.14\n" +"\n" +"snapped(Vector2(34, 70), Vector2(8, 8)) # 返回 (32, 72)\n" +"[/codeblock]\n" +"另见 [method ceil]、[method floor] 和 [method round]。\n" +"[b]注意:[/b]为了更好的类型安全,请使用 [method snappedf]、[method " +"snappedi]、[method Vector2.snapped]、[method Vector2i.snapped]、[method " +"Vector3.snapped]、[method Vector3i.snapped]、[method Vector4.snapped]、或 " +"[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" +"snapped(32.0, 2.5) # Returns 32.5\n" +"snapped(3.14159, 0.01) # Returns 3.14\n" +"[/codeblock]" +msgstr "" +"返回最接近 [param x] 的 [param step] 的倍数。也可用于将浮点数四舍五入为任意的" +"小数位数。\n" +"[method snapped] 的类型安全版本,返回一个 [float]。\n" +"[codeblock]\n" +"snapped(32.0, 2.5) # 返回 32.5\n" +"snapped(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" +"snapped(53, 16) # Returns 48\n" +"snapped(4096, 100) # Returns 4100\n" +"[/codeblock]" +msgstr "" +"返回最接近 [param x] 的 [param step] 的倍数。\n" +"[method snapped] 的类型安全版本,返回一个 [int]。\n" +"[codeblock]\n" +"snapped(53, 16) # 返回 48\n" +"snapped(4096, 100) # 返回 4100\n" +"[/codeblock]" + +msgid "" +"Returns the square root of [param x], where [param x] is a non-negative " +"number.\n" +"[codeblock]\n" +"sqrt(9) # Returns 3\n" +"sqrt(10.24) # Returns 3.2\n" +"sqrt(-1) # Returns NaN\n" +"[/codeblock]\n" +"[b]Note:[/b] Negative values of [param x] return NaN (\"Not a Number\"). in " +"C#, if you need negative inputs, use [code]System.Numerics.Complex[/code]." +msgstr "" +"返回 [param x] 的平方根,其中 [param x] 是一个非负数。\n" +"[codeblock]\n" +"sqrt(9) # 返回 3\n" +"sqrt(10.24) # 返回 3.2\n" +"sqrt(-1) # 返回 NaN\n" +"[/codeblock]\n" +"[b]注意:[/b]负数的 [param x] 会返回 NaN(“不是数字”)。在 C# 中,如果需要负" +"输入,请使用 [code]System.Numerics.Complex[/code]。" + +msgid "" +"Returns the position of the first non-zero digit, after the decimal point. " +"Note that the maximum return value is 10, which is a design decision in the " +"implementation.\n" +"[codeblock]\n" +"var n = step_decimals(5) # n is 0\n" +"n = step_decimals(1.0005) # n is 4\n" +"n = step_decimals(0.000000005) # n is 9\n" +"[/codeblock]" +msgstr "" +"返回小数点后第一个非零数字的位置。注意最大返回值是 10,这是实现中的设计决" +"定。\n" +"[codeblock]\n" +"var n = step_decimals(5) # n 为 0\n" +"n = step_decimals(1.0005) # n 为 4\n" +"n = step_decimals(0.000000005) # n 为 9\n" +"[/codeblock]" + +msgid "" +"Converts one or more arguments of any [Variant] type to a [String] in the " +"best way possible.\n" +"[codeblock]\n" +"var a = [10, 20, 30]\n" +"var b = str(a)\n" +"print(len(a)) # Prints 3 (the number of elements in the array).\n" +"print(len(b)) # Prints 12 (the length of the string \"[10, 20, 30]\").\n" +"[/codeblock]" +msgstr "" +"尽可能以最佳方式将一个或多个任何 [Variant] 类型的参数转换为一个 [String]。\n" +"[codeblock]\n" +"var a = [10, 20, 30]\n" +"var b = str(a)\n" +"print(len(a)) # 输出 3(数组中元素的数量)。\n" +"print(len(b)) # 输出 12(字符串“[10, 20, 30]”的长度)。\n" +"[/codeblock]" + +msgid "" +"Returns the tangent of angle [param angle_rad] in radians.\n" +"[codeblock]\n" +"tan(deg_to_rad(45)) # Returns 1\n" +"[/codeblock]" +msgstr "" +"返回弧度角 [param angle_rad] 的正切值。\n" +"[codeblock]\n" +"tan(deg_to_rad(45)) # 返回 1\n" +"[/codeblock]" + +msgid "" +"Returns the hyperbolic tangent of [param x].\n" +"[codeblock]\n" +"var a = log(2.0) # Returns 0.693147\n" +"tanh(a) # Returns 0.6\n" +"[/codeblock]" +msgstr "" +"返回 [param x] 的双曲正切值。\n" +"[codeblock]\n" +"var a = log(2.0) # 返回 0.693147\n" +"tanh(a) # 返回 0.6\n" +"[/codeblock]" + +msgid "" +"Returns the internal type of the given [param variable], using the [enum " +"Variant.Type] values.\n" +"[codeblock]\n" +"var json = JSON.new()\n" +"json.parse('[\"a\", \"b\", \"c\"]')\n" +"var result = json.get_data()\n" +"if typeof(result) == TYPE_ARRAY:\n" +" print(result[0]) # Prints a\n" +"else:\n" +" print(\"Unexpected result\")\n" +"[/codeblock]" +msgstr "" +"使用 [enum Variant.Type] 值返回给定 [param variable] 的内部类型。\n" +"[codeblock]\n" +"var json = JSON.new()\n" +"json.parse('[\"a\", \"b\", \"c\"]')\n" +"var result = json.get_data()\n" +"if typeof(result) == TYPE_ARRAY:\n" +" print(result[0]) # 输出 a\n" +"else:\n" +" print(\"出乎意料的结果\")\n" +"[/codeblock]" + +msgid "" +"Encodes a [Variant] value to a byte array, without encoding objects. " +"Deserialization can be done with [method bytes_to_var].\n" +"[b]Note:[/b] If you need object serialization, see [method " +"var_to_bytes_with_objects]." +msgstr "" +"将 [Variant] 值编码为字节数组,不编码对象。反序列化可以使用 [method " +"bytes_to_var] 来完成。\n" +"[b]注意:[/b]如果需要对象序列化,参见 [method var_to_bytes_with_objects]。" + +msgid "" +"Encodes a [Variant] value to a byte array. Encoding objects is allowed (and " +"can potentially include executable code). Deserialization can be done with " +"[method bytes_to_var_with_objects]." +msgstr "" +"将 [Variant] 值编码为字节数组。允许对对象进行编码(并且可能包括可执行代码)。" +"反序列化可以使用 [method bytes_to_var_with_objects] 来完成。" + +msgid "" +"Converts a [Variant] [param variable] to a formatted [String] that can then " +"be parsed using [method str_to_var].\n" +"[codeblocks]\n" +"[gdscript]\n" +"var a = { \"a\": 1, \"b\": 2 }\n" +"print(var_to_str(a))\n" +"[/gdscript]\n" +"[csharp]\n" +"var a = new Godot.Collections.Dictionary { [\"a\"] = 1, [\"b\"] = 2 };\n" +"GD.Print(GD.VarToStr(a));\n" +"[/csharp]\n" +"[/codeblocks]\n" +"Prints:\n" +"[codeblock]\n" +"{\n" +" \"a\": 1,\n" +" \"b\": 2\n" +"}\n" +"[/codeblock]" +msgstr "" +"将 [Variant] [param variable] 转换为格式化的 [String],然后可以使用 [method " +"str_to_var] 对其进行解析。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var a = { \"a\": 1, \"b\": 2 }\n" +"print(var_to_str(a))\n" +"[/gdscript]\n" +"[csharp]\n" +"var a = new Godot.Collections.Dictionary { [\"a\"] = 1, [\"b\"] = 2 };\n" +"GD.Print(GD.VarToStr(a));\n" +"[/csharp]\n" +"[/codeblocks]\n" +"输出:\n" +"[codeblock]\n" +"{\n" +" \"a\": 1,\n" +" \"b\": 2\n" +"}\n" +"[/codeblock]" + +msgid "" +"Returns a weak reference to an object, or [code]null[/code] if [param obj] " +"is invalid.\n" +"A weak reference to an object is not enough to keep the object alive: when " +"the only remaining references to a referent are weak references, garbage " +"collection is free to destroy the referent and reuse its memory for " +"something else. However, until the object is actually destroyed the weak " +"reference may return the object even if there are no strong references to it." +msgstr "" +"返回对某个对象的弱引用,如果 [param obj] 无效,则返回 [code]null[/code]。\n" +"对对象的弱引用不足以使对象保持存活:当对引用对象的剩余引用都是弱引用时,垃圾" +"回收可以自由销毁该引用对象并将其内存重新用于其他用途。但是,在对象实际被销毁" +"之前,弱引用可能会返回该对象,即使不存在对它的强引用也是如此。" + +msgid "" +"Wraps the [Variant] [param value] between [param min] and [param max]. Can " +"be used for creating loop-alike behavior or infinite surfaces.\n" +"Variant types [int] and [float] are supported. If any of the arguments is " +"[float] this function returns a [float], otherwise it returns an [int].\n" +"[codeblock]\n" +"var a = wrap(4, 5, 10)\n" +"# a is 9 (int)\n" +"\n" +"var a = wrap(7, 5, 10)\n" +"# a is 7 (int)\n" +"\n" +"var a = wrap(10.5, 5, 10)\n" +"# a is 5.5 (float)\n" +"[/codeblock]" +msgstr "" +"在 [param min] 和 [param max] 之间包裹 [Variant] [param value]。可用于创建类" +"似循环的行为或无限曲面。\n" +"支持变体类型 [int] 和 [float]。如果任一参数是 [float],则该函数返回 [float]," +"否则返回 [int]。\n" +"[codeblock]\n" +"var a = wrap(4, 5, 10)\n" +"# a 为 9 (整数类型)\n" +"\n" +"var a = wrap(7, 5, 10)\n" +"# a 为 7 (整数类型)\n" +"\n" +"var a = wrap(10.5, 5, 10)\n" +"# a 为 5.5 (浮点类型)\n" +"[/codeblock]" + +msgid "" +"Wraps the float [param value] between [param min] and [param max]. Can be " +"used for creating loop-alike behavior or infinite surfaces.\n" +"[codeblock]\n" +"# Infinite loop between 5.0 and 9.9\n" +"value = wrapf(value + 0.1, 5.0, 10.0)\n" +"[/codeblock]\n" +"[codeblock]\n" +"# Infinite rotation (in radians)\n" +"angle = wrapf(angle + 0.1, 0.0, TAU)\n" +"[/codeblock]\n" +"[codeblock]\n" +"# Infinite rotation (in radians)\n" +"angle = wrapf(angle + 0.1, -PI, PI)\n" +"[/codeblock]\n" +"[b]Note:[/b] If [param min] is [code]0[/code], this is equivalent to [method " +"fposmod], so prefer using that instead.\n" +"[code]wrapf[/code] is more flexible than using the [method fposmod] approach " +"by giving the user control over the minimum value." +msgstr "" +"在 [param min] 和 [param max] 之间将浮点数 [param value] 循环。可用于创建类似" +"循环的行为或无限曲面。\n" +"[codeblock]\n" +"# 在 5.0 和 9.9 之间无限循环\n" +"value = wrapf(value + 0.1, 5.0, 10.0)\n" +"[/codeblock]\n" +"[codeblock]\n" +"# 无限旋转(弧度)\n" +"angle = wrapf(angle + 0.1, 0.0, TAU)\n" +"[/codeblock]\n" +"[codeblock]\n" +"# 无限旋转(弧度)\n" +"angle = wrapf(angle + 0.1, -PI, PI)\n" +"[/codeblock]\n" +"[b]注意:[/b]如果 [param min] 为 [code]0[/code],则相当于 [method fposmod]," +"因此请改用它。\n" +"通过让用户控制最小值,[code]wrapf[/code] 比使用 [method fposmod] 方法更灵活。" + +msgid "" +"Wraps the integer [param value] between [param min] and [param max]. Can be " +"used for creating loop-alike behavior or infinite surfaces.\n" +"[codeblock]\n" +"# Infinite loop between 5 and 9\n" +"frame = wrapi(frame + 1, 5, 10)\n" +"[/codeblock]\n" +"[codeblock]\n" +"# result is -2\n" +"var result = wrapi(-6, -5, -1)\n" +"[/codeblock]" +msgstr "" +"在 [param min] 和 [param max] 之间环绕整数 [param value]。 可用于创建类似循环" +"的行为或无限曲面。\n" +"[codeblock]\n" +"# 在 5 和 9 之间无限循环\n" +"frame = wrapi(frame + 1, 5, 10)\n" +"[/codeblock]\n" +"[codeblock]\n" +"# result 是 -2\n" +"var result = wrapi(-6, -5, -1)\n" +"[/codeblock]" + msgid "The [AudioServer] singleton." msgstr "[AudioServer] 单例。" @@ -1236,9 +3135,27 @@ msgstr "[CameraServer] 单例。" msgid "The [ClassDB] singleton." msgstr "[ClassDB] 单例。" +msgid "The [DisplayServer] singleton." +msgstr "[DisplayServer] 单例。" + msgid "The [Engine] singleton." msgstr "[Engine] 单例。" +msgid "The [EngineDebugger] singleton." +msgstr "[EngineDebugger] 单例。" + +msgid "The [GDExtensionManager] singleton." +msgstr "[GDExtensionManager] 单例。" + +msgid "The [Geometry2D] singleton." +msgstr "[Geometry2D] 单例。" + +msgid "The [Geometry3D] singleton." +msgstr "[Geometry3D] 单例。" + +msgid "The [GodotSharp] singleton." +msgstr "[GodotSharp] 单例。" + msgid "The [IP] singleton." msgstr "[IP] 单例。" @@ -1255,33 +3172,85 @@ msgstr "" "[JavaClassWrapper] 单例。\n" "[b]注意:[/b]仅在 Android 上实现。" +msgid "" +"The [JavaScriptBridge] singleton.\n" +"[b]Note:[/b] Only implemented on the Web platform." +msgstr "" +"[JavaScriptBridge] 单例。\n" +"[b]注意:[/b]仅在 Web 平台上实现。" + msgid "The [Marshalls] singleton." msgstr "[Marshalls] 单例。" msgid "The [NavigationMeshGenerator] singleton." msgstr "[NavigationMeshGenerator] 单例。" +msgid "The [NavigationServer2D] singleton." +msgstr "[NavigationServer2D] 单例。" + msgid "The [OS] singleton." msgstr "[OS] 单例。" msgid "The [Performance] singleton." msgstr "[Performance] 单例。" +msgid "The [PhysicsServer2D] singleton." +msgstr "[PhysicsServer2D] 单例。" + +msgid "The [PhysicsServer2DManager] singleton." +msgstr "[PhysicsServer2DManager] 单例。" + +msgid "The [PhysicsServer3D] singleton." +msgstr "[PhysicsServer3D] 单例。" + +msgid "The [PhysicsServer3DManager] singleton." +msgstr "[PhysicsServer3DManager] 单例。" + msgid "The [ProjectSettings] singleton." msgstr "[ProjectSettings] 单例。" +msgid "The [RenderingServer] singleton." +msgstr "[RenderingServer] 单例。" + msgid "The [ResourceLoader] singleton." msgstr "[ResourceLoader] 单例。" msgid "The [ResourceSaver] singleton." msgstr "[ResourceSaver] 单例。" +msgid "The [ResourceUID] singleton." +msgstr "[ResourceUID] 单例。" + +msgid "The [TextServerManager] singleton." +msgstr "[TextServerManager] 单例。" + +msgid "The [ThemeDB] singleton." +msgstr "[ThemeDB] 单例。" + msgid "The [Time] singleton." msgstr "[Time] 单例。" msgid "The [TranslationServer] singleton." msgstr "[TranslationServer] 单例。" +msgid "The [WorkerThreadPool] singleton." +msgstr "[WorkerThreadPool] 单例。" + +msgid "The [XRServer] singleton." +msgstr "[XRServer] 单例。" + +msgid "Left side, usually used for [Control] or [StyleBox]-derived classes." +msgstr "左边,常用于 [Control] 或 [StyleBox] 的派生类。" + +msgid "Top side, usually used for [Control] or [StyleBox]-derived classes." +msgstr "顶边,常用于 [Control] 或 [StyleBox] 的派生类。" + +msgid "Right side, usually used for [Control] or [StyleBox]-derived classes." +msgstr "右边,常用于 [Control] 或 [StyleBox] 的派生类。" + +msgid "Bottom side, usually used for [Control] or [StyleBox]-derived classes." +msgstr "底边,常用于 [Control] 或 [StyleBox] 的派生类。" + msgid "Top-left corner." msgstr "左上角。" @@ -1304,6 +3273,15 @@ msgid "" "[Slider], etc." msgstr "通用水平对齐,常用于 [Separator]、[ScrollBar]、[Slider] 等。" +msgid "" +"Clockwise rotation. Used by some methods (e.g. [method Image.rotate_90])." +msgstr "顺时针旋转。被一些方法使用(例如 [method Image.rotate_90])。" + +msgid "" +"Counter-clockwise rotation. Used by some methods (e.g. [method Image." +"rotate_90])." +msgstr "逆时针旋转。被一些方法使用(例如 [method Image.rotate_90])。" + msgid "Horizontal left alignment, usually for text-derived classes." msgstr "水平左对齐,常用于文本派生类。" @@ -1313,6 +3291,9 @@ msgstr "水平居中对齐,常用于文本派生类。" msgid "Horizontal right alignment, usually for text-derived classes." msgstr "水平右对齐,常用于文本派生类。" +msgid "Expand row to fit width, usually for text-derived classes." +msgstr "扩展行以适应宽度,常用于文本派生类。" + msgid "Vertical top alignment, usually for text-derived classes." msgstr "垂直上对齐,常用于文本派生类。" @@ -1322,6 +3303,147 @@ msgstr "垂直居中对齐,常用于文本派生类。" msgid "Vertical bottom alignment, usually for text-derived classes." msgstr "垂直下对齐,常用于文本派生类。" +msgid "Expand rows to fit height, usually for text-derived classes." +msgstr "扩展行以适应高度,通常用于文本派生类。" + +msgid "" +"Aligns the top of the inline object (e.g. image, table) to the position of " +"the text specified by [code]INLINE_ALIGNMENT_TO_*[/code] constant." +msgstr "" +"将内联对象(例如图像、表格)的顶部与 [code]INLINE_ALIGNMENT_TO_*[/code] 常量" +"指定的文本位置对齐。" + +msgid "" +"Aligns the center of the inline object (e.g. image, table) to the position " +"of the text specified by [code]INLINE_ALIGNMENT_TO_*[/code] constant." +msgstr "" +"将内联对象(例如图像、表格)的中心与 [code]INLINE_ALIGNMENT_TO_*[/code] 常量" +"指定的文本位置对齐。" + +msgid "" +"Aligns the baseline (user defined) of the inline object (e.g. image, table) " +"to the position of the text specified by [code]INLINE_ALIGNMENT_TO_*[/code] " +"constant." +msgstr "" +"将内联对象(如图像、表格)的基线(用户定义)与[code]INLINE_ALIGNMENT_TO_*[/" +"code] 常数指定的文本位置对齐。" + +msgid "" +"Aligns the bottom of the inline object (e.g. image, table) to the position " +"of the text specified by [code]INLINE_ALIGNMENT_TO_*[/code] constant." +msgstr "" +"将内联对象(例如图像、表格)的底部与 [code]INLINE_ALIGNMENT_TO_*[/code] 常量" +"指定的文本位置对齐。" + +msgid "" +"Aligns the position of the inline object (e.g. image, table) specified by " +"[code]INLINE_ALIGNMENT_*_TO[/code] constant to the top of the text." +msgstr "" +"将由 [code]INLINE_ALIGNMENT_*_TO[/code] 常量指定的内联对象(例如图像、表格)" +"的位置与文本顶部对齐。" + +msgid "" +"Aligns the position of the inline object (e.g. image, table) specified by " +"[code]INLINE_ALIGNMENT_*_TO[/code] constant to the center of the text." +msgstr "" +"将由 [code]INLINE_ALIGNMENT_*_TO[/code] 常量指定的内联对象(例如图像、表格)" +"的位置与文本中心对齐。" + +msgid "" +"Aligns the position of the inline object (e.g. image, table) specified by " +"[code]INLINE_ALIGNMENT_*_TO[/code] constant to the baseline of the text." +msgstr "" +"将由 [code]INLINE_ALIGNMENT_*_TO[/code] 常量指定的内联对象(例如图像、表格)" +"的位置与文本基线对齐。" + +msgid "Aligns inline object (e.g. image, table) to the bottom of the text." +msgstr "将内联对象(例如图像、表格)与文本底部对齐。" + +msgid "" +"Aligns top of the inline object (e.g. image, table) to the top of the text. " +"Equivalent to [code]INLINE_ALIGNMENT_TOP_TO | INLINE_ALIGNMENT_TO_TOP[/code]." +msgstr "" +"将内联对象(例如图像、表格)的顶部与文本的顶部对齐。等效于 " +"[code]INLINE_ALIGNMENT_TOP_TO | INLINE_ALIGNMENT_TO_TOP[/code]。" + +msgid "" +"Aligns center of the inline object (e.g. image, table) to the center of the " +"text. Equivalent to [code]INLINE_ALIGNMENT_CENTER_TO | " +"INLINE_ALIGNMENT_TO_CENTER[/code]." +msgstr "" +"将内联对象(例如图像、表格)的中心与文本的中心对齐。相当于 " +"[code]INLINE_ALIGNMENT_CENTER_TO | INLINE_ALIGNMENT_TO_CENTER[/code]。" + +msgid "" +"Aligns bottom of the inline object (e.g. image, table) to the bottom of the " +"text. Equivalent to [code]INLINE_ALIGNMENT_BOTTOM_TO | " +"INLINE_ALIGNMENT_TO_BOTTOM[/code]." +msgstr "" +"将内联对象(例如图像、表格)的底部与文本底部对齐。等效于 " +"[code]INLINE_ALIGNMENT_BOTTOM_TO | INLINE_ALIGNMENT_TO_BOTTOM[/code]。" + +msgid "A bit mask for [code]INLINE_ALIGNMENT_*_TO[/code] alignment constants." +msgstr "用于 [code]INLINE_ALIGNMENT_*_TO[/code] 对齐常量的位掩码。" + +msgid "A bit mask for [code]INLINE_ALIGNMENT_TO_*[/code] alignment constants." +msgstr "用于 [code]INLINE_ALIGNMENT_TO_*[/code] 对齐常量的位掩码。" + +msgid "" +"Specifies that Euler angles should be in XYZ order. When composing, the " +"order is X, Y, Z. When decomposing, the order is reversed, first Z, then Y, " +"and X last." +msgstr "" +"指定欧拉角应按 XYZ 顺序排列。组合时,顺序为 X、Y、Z。分解时,顺序相反,先 Z," +"再 Y,最后 X。" + +msgid "" +"Specifies that Euler angles should be in XZY order. When composing, the " +"order is X, Z, Y. When decomposing, the order is reversed, first Y, then Z, " +"and X last." +msgstr "" +"指定欧拉角应按 XZY 顺序排列。组合时,顺序为 X、Z、Y。分解时,顺序相反,先 Y," +"再 Z,最后 X。" + +msgid "" +"Specifies that Euler angles should be in YXZ order. When composing, the " +"order is Y, X, Z. When decomposing, the order is reversed, first Z, then X, " +"and Y last." +msgstr "" +"指定欧拉角应按 YXZ 顺序排列。组合时,顺序为 Y、X、Z。分解时,顺序相反,先 Z," +"再 X,最后 Y。" + +msgid "" +"Specifies that Euler angles should be in YZX order. When composing, the " +"order is Y, Z, X. When decomposing, the order is reversed, first X, then Z, " +"and Y last." +msgstr "" +"指定欧拉角应按 YZX 顺序排列。组合时,顺序为 Y、Z、X。分解时,顺序相反,先 X," +"再 Z,最后 Y。" + +msgid "" +"Specifies that Euler angles should be in ZXY order. When composing, the " +"order is Z, X, Y. When decomposing, the order is reversed, first Y, then X, " +"and Z last." +msgstr "" +"指定欧拉角应按 ZXY 顺序排列。组合时,顺序为 Z、X、Y。分解时,顺序相反,先 Y," +"再 X,最后 Z。" + +msgid "" +"Specifies that Euler angles should be in ZYX order. When composing, the " +"order is Z, Y, X. When decomposing, the order is reversed, first X, then Y, " +"and Z last." +msgstr "" +"指定欧拉角应按 ZYX 顺序排列。组合时,顺序为 Z、Y、X。分解时,顺序相反,先 X," +"再 Y,最后 Z。" + +msgid "" +"Enum value which doesn't correspond to any key. This is used to initialize " +"[enum Key] properties with a generic state." +msgstr "与任何键都不对应的枚举值。这用于初始化具有通用状态的 [enum Key] 属性。" + +msgid "Keycodes with this bit applied are non-printable." +msgstr "应用此位的键码不可打印。" + msgid "Escape key." msgstr "ESC 键。" @@ -1451,6 +3573,63 @@ msgstr "F15 键。" msgid "F16 key." msgstr "F16 键。" +msgid "F17 key." +msgstr "F17 键。" + +msgid "F18 key." +msgstr "F18 键。" + +msgid "F19 key." +msgstr "F19 键。" + +msgid "F20 key." +msgstr "F20 键。" + +msgid "F21 key." +msgstr "F21 键。" + +msgid "F22 key." +msgstr "F22 键。" + +msgid "F23 key." +msgstr "F23 键。" + +msgid "F24 key." +msgstr "F24 键。" + +msgid "F25 key. Only supported on macOS and Linux due to a Windows limitation." +msgstr "F25 键。由于 Windows 限制,仅支持 macOS 和 Linux。" + +msgid "F26 key. Only supported on macOS and Linux due to a Windows limitation." +msgstr "F26 键。由于 Windows 限制,仅支持 macOS 和 Linux。" + +msgid "F27 key. Only supported on macOS and Linux due to a Windows limitation." +msgstr "F27 键。由于 Windows 限制,仅支持 macOS 和 Linux。" + +msgid "F28 key. Only supported on macOS and Linux due to a Windows limitation." +msgstr "F28 键。由于 Windows 限制,仅支持 macOS 和 Linux。" + +msgid "F29 key. Only supported on macOS and Linux due to a Windows limitation." +msgstr "F29 键。由于 Windows 限制,仅支持 macOS 和 Linux。" + +msgid "F30 key. Only supported on macOS and Linux due to a Windows limitation." +msgstr "F30 键。由于 Windows 限制,仅支持 macOS 和 Linux。" + +msgid "F31 key. Only supported on macOS and Linux due to a Windows limitation." +msgstr "F31 键。由于 Windows 限制,仅支持 macOS 和 Linux。" + +msgid "F32 key. Only supported on macOS and Linux due to a Windows limitation." +msgstr "F32 键。由于 Windows 限制,仅支持 macOS 和 Linux。" + +msgid "F33 key. Only supported on macOS and Linux due to a Windows limitation." +msgstr "F33 键。由于 Windows 限制,仅支持 macOS 和 Linux。" + +msgid "F34 key. Only supported on macOS and Linux due to a Windows limitation." +msgstr "F34 键。由于 Windows 限制,仅支持 macOS 和 Linux。" + +msgid "F35 key. Only supported on macOS and Linux due to a Windows limitation." +msgstr "F35 键。由于 Windows 限制,仅支持 macOS 和 Linux。" + msgid "Multiply (*) key on the numeric keypad." msgstr "小键盘的星键/乘以键(*)。" @@ -1461,7 +3640,7 @@ msgid "Subtract (-) key on the numeric keypad." msgstr "小键盘的减号键(-)。" msgid "Period (.) key on the numeric keypad." -msgstr "小件盘的点键(.)。" +msgstr "小键盘的点键(.)。" msgid "Add (+) key on the numeric keypad." msgstr "小键盘的加号键(+)。" @@ -1497,7 +3676,10 @@ msgid "Number 9 on the numeric keypad." msgstr "小键盘的数字 9。" msgid "Context menu key." -msgstr "菜单键。" +msgstr "上下文菜单键。" + +msgid "Hyper key. (On Linux/X11 only)." +msgstr "超级键。(仅在 Linux/X11 上)。" msgid "Help key." msgstr "Help 键。" @@ -1656,6 +3838,36 @@ msgstr ". 键。" msgid "/ key." msgstr "/ 键。" +msgid "Number 0 key." +msgstr "数字 0 键。" + +msgid "Number 1 key." +msgstr "数字 1 键。" + +msgid "Number 2 key." +msgstr "数字 2 键。" + +msgid "Number 3 key." +msgstr "数字 3 键。" + +msgid "Number 4 key." +msgstr "数字 4 键。" + +msgid "Number 5 key." +msgstr "数字 5 键。" + +msgid "Number 6 key." +msgstr "数字 6 键。" + +msgid "Number 7 key." +msgstr "数字 7 键。" + +msgid "Number 8 key." +msgstr "数字 8 键。" + +msgid "Number 9 key." +msgstr "数字 9 键。" + msgid ": key." msgstr ": 键。" @@ -1791,17 +4003,40 @@ msgstr "¥ 键。" msgid "§ key." msgstr "§ 键。" +msgid "\"Globe\" key on Mac / iPad keyboard." +msgstr "Mac / iPad 键盘上的“地球”键。" + +msgid "\"On-screen keyboard\" key iPad keyboard." +msgstr "iPad 键盘上的“屏幕键盘”键。" + +msgid "英数 key on Mac keyboard." +msgstr "Mac 键盘上的“英数”键。" + +msgid "かな key on Mac keyboard." +msgstr "Mac 键盘上的“かな”键。" + msgid "Key Code mask." msgstr "键码掩码。" msgid "Modifier key mask." -msgstr "Modifier 键掩码。" +msgstr "修饰键掩码。" + +msgid "" +"Automatically remapped to [constant KEY_META] on macOS and [constant " +"KEY_CTRL] on other platforms, this mask is never set in the actual events, " +"and should be used for key mapping only." +msgstr "" +"自动重映射为 macOS 上的 [constant KEY_META] 和其他平台上的 [constant " +"KEY_CTRL],此掩码在实际事件中从不设置,应仅用于键映射。" msgid "Shift key mask." msgstr "Shift 键掩码。" -msgid "Ctrl key mask." -msgstr "Ctrl 键掩码。" +msgid "Alt or Option (on macOS) key mask." +msgstr "Alt 或 Option(在 macOS 上)键掩码。" + +msgid "Command (on macOS) or Meta/Windows key mask." +msgstr "命令(在 macOS 上)或 Meta/Windows 键掩码。" msgid "Keypad key mask." msgstr "Keypad 键掩码。" @@ -1809,14 +4044,21 @@ msgstr "Keypad 键掩码。" msgid "Group Switch key mask." msgstr "Group Switch 键掩码。" -msgid "Middle mouse button." -msgstr "鼠标中键。" +msgid "" +"Enum value which doesn't correspond to any mouse button. This is used to " +"initialize [enum MouseButton] properties with a generic state." +msgstr "" +"与任何鼠标按钮都不对应的枚举值。这用于初始化具有通用状态的 [enum " +"MouseButton] 属性。" -msgid "Mouse wheel up." -msgstr "鼠标滚轮向上。" +msgid "Primary mouse button, usually assigned to the left button." +msgstr "鼠标主键,通常分配给左键。" -msgid "Mouse wheel down." -msgstr "鼠标滚轮向下。" +msgid "Secondary mouse button, usually assigned to the right button." +msgstr "鼠标次键,通常分配给右键。" + +msgid "Middle mouse button." +msgstr "鼠标中键。" msgid "Mouse wheel left button (only present on some mice)." msgstr "鼠标滚轮左键(仅在某些鼠标上有实现)。" @@ -1824,6 +4066,22 @@ msgstr "鼠标滚轮左键(仅在某些鼠标上有实现)。" msgid "Mouse wheel right button (only present on some mice)." msgstr "鼠标滚轮右键(仅在某些鼠标上有实现)。" +msgid "" +"Extra mouse button 1. This is sometimes present, usually to the sides of the " +"mouse." +msgstr "鼠标额外键 1。有时会出现,通常位于鼠标的两侧。" + +msgid "" +"Extra mouse button 2. This is sometimes present, usually to the sides of the " +"mouse." +msgstr "鼠标额外键 2。有时会出现,通常位于鼠标的两侧。" + +msgid "Primary mouse button mask, usually for the left button." +msgstr "鼠标主键掩码,通常用于左键。" + +msgid "Secondary mouse button mask, usually for the right button." +msgstr "鼠标次键掩码,通常用于右键。" + msgid "Middle mouse button mask." msgstr "鼠标中键掩码。" @@ -1833,6 +4091,152 @@ msgstr "鼠标额外键 1 掩码。" msgid "Extra mouse button 2 mask." msgstr "鼠标额外键 2 掩码。" +msgid "An invalid game controller button." +msgstr "无效的游戏控制器按钮。" + +msgid "" +"Game controller SDL button A. Corresponds to the bottom action button: Sony " +"Cross, Xbox A, Nintendo B." +msgstr "" +"游戏控制器 SDL 按键 A。对应底部动作按钮:Sony Cross、Xbox A、Nintendo B。" + +msgid "" +"Game controller SDL button B. Corresponds to the right action button: Sony " +"Circle, Xbox B, Nintendo A." +msgstr "" +"游戏控制器 SDL 按钮 B。对应右侧动作按钮:Sony Circle、Xbox B、Nintendo A。" + +msgid "" +"Game controller SDL button X. Corresponds to the left action button: Sony " +"Square, Xbox X, Nintendo Y." +msgstr "" +"游戏控制器 SDL 按钮 X。对应左侧动作按钮:Sony Square、Xbox X、Nintendo Y。" + +msgid "" +"Game controller SDL button Y. Corresponds to the top action button: Sony " +"Triangle, Xbox Y, Nintendo X." +msgstr "" +"游戏控制器 SDL 按钮 Y。对应顶部动作按钮:Sony Triangle、Xbox Y、Nintendo X。" + +msgid "" +"Game controller SDL back button. Corresponds to the Sony Select, Xbox Back, " +"Nintendo - button." +msgstr "" +"游戏控制器 SDL back按钮。对应于 Sony Select、Xbox Back、Nintendo - 按钮。" + +msgid "" +"Game controller SDL guide button. Corresponds to the Sony PS, Xbox Home " +"button." +msgstr "游戏控制器 SDL guide 按钮。对应于索尼 PS、Xbox 的 Home 键。" + +msgid "Game controller SDL start button. Corresponds to the Nintendo + button." +msgstr "游戏控制器 SDL start 按钮。对应 Nintendo + 按钮。" + +msgid "" +"Game controller SDL left stick button. Corresponds to the Sony L3, Xbox L/LS " +"button." +msgstr "游戏控制器 SDL 左摇杆按钮。对应于 Sony L3、Xbox L/LS 按钮。" + +msgid "" +"Game controller SDL right stick button. Corresponds to the Sony R3, Xbox R/" +"RS button." +msgstr "游戏控制器 SDL 右摇杆按钮。对应于 Sony R3、Xbox R/RS 按钮。" + +msgid "" +"Game controller SDL left shoulder button. Corresponds to the Sony L1, Xbox " +"LB button." +msgstr "游戏控制器 SDL 左肩按钮。对应于 Sony L1、Xbox LB 按钮。" + +msgid "" +"Game controller SDL right shoulder button. Corresponds to the Sony R1, Xbox " +"RB button." +msgstr "游戏控制器 SDL 右肩按钮。对应于 Sony R1、Xbox RB 按钮。" + +msgid "Game controller D-pad up button." +msgstr "游戏控制器方向键向上按钮。" + +msgid "Game controller D-pad down button." +msgstr "游戏控制器方向键向下按钮。" + +msgid "Game controller D-pad left button." +msgstr "游戏控制器方向键向左键。" + +msgid "Game controller D-pad right button." +msgstr "游戏控制器方向键向右键。" + +msgid "" +"Game controller SDL miscellaneous button. Corresponds to Xbox share button, " +"PS5 microphone button, Nintendo Switch capture button." +msgstr "" +"游戏控制器 SDL 杂项按钮。对应 Xbox 分享键、PS5 麦克风键、Nintendo Switch 捕捉" +"键。" + +msgid "Game controller SDL paddle 1 button." +msgstr "游戏控制器 SDL 拨片 1 按钮。" + +msgid "Game controller SDL paddle 2 button." +msgstr "游戏控制器 SDL 拨片 2 按钮。" + +msgid "Game controller SDL paddle 3 button." +msgstr "游戏控制器 SDL 拨片 3 按钮。" + +msgid "Game controller SDL paddle 4 button." +msgstr "游戏控制器 SDL 拨片 4 按钮。" + +msgid "Game controller SDL touchpad button." +msgstr "游戏控制器 SDL 触摸板按钮。" + +msgid "The number of SDL game controller buttons." +msgstr "SDL 游戏控制器按钮的数量。" + +msgid "" +"The maximum number of game controller buttons supported by the engine. The " +"actual limit may be lower on specific platforms:\n" +"- [b]Android:[/b] Up to 36 buttons.\n" +"- [b]Linux:[/b] Up to 80 buttons.\n" +"- [b]Windows[/b] and [b]macOS:[/b] Up to 128 buttons." +msgstr "" +"引擎所支持的最大游戏控制器按钮数。特定平台上的实际界限可能更低:\n" +"- [b]Android:[/b]最多 36 个按钮。\n" +"- [b]Linux:[/b]最多 80 个按钮。\n" +"- [b]Windows[/b] 和 [b]macOS:[/b]最多 128 个按钮。" + +msgid "An invalid game controller axis." +msgstr "无效的游戏控制器轴。" + +msgid "Game controller left joystick x-axis." +msgstr "游戏控制器左操纵杆 x 轴。" + +msgid "Game controller left joystick y-axis." +msgstr "游戏控制器左操纵杆 y 轴。" + +msgid "Game controller right joystick x-axis." +msgstr "游戏控制器右操纵杆 x 轴。" + +msgid "Game controller right joystick y-axis." +msgstr "游戏控制器右操纵杆 y 轴。" + +msgid "Game controller left trigger axis." +msgstr "游戏控制器左扳机轴。" + +msgid "Game controller right trigger axis." +msgstr "游戏控制器左扳机轴。" + +msgid "The number of SDL game controller axes." +msgstr "SDL 游戏控制器轴的数量。" + +msgid "" +"The maximum number of game controller axes: OpenVR supports up to 5 " +"Joysticks making a total of 10 axes." +msgstr "最大游戏控制器轴数:OpenVR 最多支持 5 个操纵杆,总共 10 个轴。" + +msgid "" +"Enum value which doesn't correspond to any MIDI message. This is used to " +"initialize [enum MIDIMessage] properties with a generic state." +msgstr "" +"与任何 MIDI 消息都不对应的枚举值。这用于初始化具有通用状态的 [enum " +"MIDIMessage] 属性。" + msgid "" "MIDI note OFF message. See the documentation of [InputEventMIDI] for " "information of how to use MIDI inputs." @@ -1904,7 +4308,7 @@ msgstr "MIDI 歌曲选择消息。指定要播放的序列或歌曲。Godot 未 msgid "" "MIDI tune request message. Upon receiving a tune request, all analog " "synthesizers should tune their oscillators." -msgstr "MIDI 调整请求消息。收到调整请求后,所有模拟合成器都应该调整其晶振。" +msgstr "MIDI 调谐请求消息。收到调谐请求后,所有模拟合成器都应调整其振荡器。" msgid "" "MIDI timing clock message. Sent 24 times per quarter note when " @@ -1933,6 +4337,39 @@ msgid "" msgstr "" "MIDI 系统重置消息。将系统中的所有接收方重置为上电状态。本身不应在上电时发送。" +msgid "" +"Methods that return [enum Error] return [constant OK] when no error " +"occurred.\n" +"Since [constant OK] has value 0, and all other error constants are positive " +"integers, it can also be used in boolean checks.\n" +"[b]Example:[/b]\n" +"[codeblock]\n" +"var error = method_that_returns_error()\n" +"if error != OK:\n" +" printerr(\"Failure!\")\n" +"\n" +"# Or, alternatively:\n" +"if error:\n" +" printerr(\"Still failing!\")\n" +"[/codeblock]\n" +"[b]Note:[/b] Many functions do not return an error code, but will print " +"error messages to standard output." +msgstr "" +"返回 [enum Error] 的方法会在没有错误发生时返回 [constant OK]。\n" +"由于 [constant OK] 的值为 0,并且所有其他错误常数都是正整数,因此返回值也可以" +"用于布尔检查。\n" +"[b]示例:[/b]\n" +"[codeblock]\n" +"var error = method_that_returns_error()\n" +"if error != OK:\n" +" printerr(\"Failure!\")\n" +"\n" +"# 或者,等价于:\n" +"if error:\n" +" printerr(\"Still failing!\")\n" +"[/codeblock]\n" +"[b]注意:[/b]许多函数不返回错误代码,但会将错误信息打印到标准输出。" + msgid "Generic error." msgstr "一般性错误。" @@ -2069,6 +4506,90 @@ msgid "Skip error." msgstr "跳过错误。" msgid "" +"Help error. Used internally when passing [code]--version[/code] or [code]--" +"help[/code] as executable options." +msgstr "" +"帮助错误。内部使用,用于将 [code]--version[/code] 或 [code]--help[/code] 作为" +"选项传递给可执行文件的情况。" + +msgid "" +"Bug error, caused by an implementation issue in the method.\n" +"[b]Note:[/b] If a built-in method returns this code, please open an issue on " +"[url=https://github.com/godotengine/godot/issues]the GitHub Issue Tracker[/" +"url]." +msgstr "" +"Bug 错误,由方法中的实现问题引起。\n" +"[b]注意:[/b]如果内置方法返回此代码,请在 [url=https://github.com/" +"godotengine/godot/issues]GitHub 问题追踪器[/url] 上开一个问题。" + +msgid "" +"Printer on fire error (This is an easter egg, no built-in methods return " +"this error code)." +msgstr "打印机起火错误(这是个彩蛋,引擎中没有内置方法会返回此错误码)。" + +msgid "The property has no hint for the editor." +msgstr "该属性没有编辑器提示。" + +msgid "" +"Hints that an [int] or [float] property should be within a range specified " +"via the hint string [code]\"min,max\"[/code] or [code]\"min,max,step\"[/" +"code]. The hint string can optionally include [code]\"or_greater\"[/code] " +"and/or [code]\"or_less\"[/code] to allow manual input going respectively " +"above the max or below the min values.\n" +"[b]Example:[/b] [code]\"-360,360,1,or_greater,or_less\"[/code].\n" +"Additionally, other keywords can be included: [code]\"exp\"[/code] for " +"exponential range editing, [code]\"radians\"[/code] for editing radian " +"angles in degrees, [code]\"degrees\"[/code] to hint at an angle and " +"[code]\"hide_slider\"[/code] to hide the slider." +msgstr "" +"提示 [int] 或 [float] 属性应在提示字符串 [code]\"min,max\"[/code] 或 " +"[code]\"min,max,step\"[/code] 指定的范围内。提示字符串可以选择包含 " +"[code]\"or_greater\"[/code] 和/或 [code]\"or_less\"[/code] 以允许手动输入高于" +"最大值或低于最小值的值。\n" +"[b]示例:[/b][code]\"-360,360,1,or_greater,or_less\"[/code]。\n" +"此外,还可以包含其他关键字:[code]\"exp\"[/code] 用于指数范围编辑," +"[code]\"radians\"[/code] 用于以度数编辑弧度角,[code]\"degrees\"[/code] 提示" +"一个角度,以及 [code]\"hide_slider\"[/code] 隐藏滑块。" + +msgid "" +"Hints that an [int] or [String] property is an enumerated value to pick in a " +"list specified via a hint string.\n" +"The hint string is a comma separated list of names such as [code]\"Hello," +"Something,Else\"[/code]. Whitespaces are [b]not[/b] removed from either end " +"of a name. For integer properties, the first name in the list has value 0, " +"the next 1, and so on. Explicit values can also be specified by appending " +"[code]:integer[/code] to the name, e.g. [code]\"Zero,One,Three:3,Four," +"Six:6\"[/code]." +msgstr "" +"提示 [int] 或 [String] 属性是枚举值,可通过提示字符串在指定的列表中选取。\n" +"该提示字符串是逗号分隔的名称列表,例如 [code]\"Hello,Something,Else\"[/" +"code]。 [b]不会[/b]从名称的任何一端删除空格。对于整数属性,列表中的第一个名称" +"的值为 0,下一个名称的值为 1,依此类推。也可以通过将 [code]:integer[/code] 附" +"加到名称来显式指定值,例如 [code]\"Zero,One,Three:3,Four,Six:6\"[/code]。" + +msgid "" +"Hints that a [String] property can be an enumerated value to pick in a list " +"specified via a hint string such as [code]\"Hello,Something,Else\"[/code].\n" +"Unlike [constant PROPERTY_HINT_ENUM], a property with this hint still " +"accepts arbitrary values and can be empty. The list of values serves to " +"suggest possible values." +msgstr "" +"提示 [String] 属性为枚举值,可以通过提示字符串在指定的列表中选取,例如 " +"[code]\"Hello,Something,Else\"[/code]。\n" +"与 [constant PROPERTY_HINT_ENUM] 不同,具有该提示的属性仍然接受任意值并且可以" +"为空。值列表用于建议可能的值。" + +msgid "" +"Hints that a [float] property should be edited via an exponential easing " +"function. The hint string can include [code]\"attenuation\"[/code] to flip " +"the curve horizontally and/or [code]\"positive_only\"[/code] to exclude in/" +"out easing and limit values to be greater than or equal to zero." +msgstr "" +"提示应通过指数缓动函数编辑 [float] 属性。提示字符串可以包括 " +"[code]\"attenuation\"[/code] 以水平翻转曲线,和/或 [code]\"positive_only\"[/" +"code] 以排除 in/out 缓动并限制值大于或等于零。" + +msgid "" "Hints that a vector property should allow its components to be linked. For " "example, this allows [member Vector2.x] and [member Vector2.y] to be edited " "together." @@ -2077,6 +4598,30 @@ msgstr "" "Vector2.y] 被一起编辑。" msgid "" +"Hints that an [int] property is a bitmask with named bit flags.\n" +"The hint string is a comma separated list of names such as [code]\"Bit0,Bit1," +"Bit2,Bit3\"[/code]. Whitespaces are [b]not[/b] removed from either end of a " +"name. The first name in the list has value 1, the next 2, then 4, 8, 16 and " +"so on. Explicit values can also be specified by appending [code]:integer[/" +"code] to the name, e.g. [code]\"A:4,B:8,C:16\"[/code]. You can also combine " +"several flags ([code]\"A:4,B:8,AB:12,C:16\"[/code]).\n" +"[b]Note:[/b] A flag value must be at least [code]1[/code] and at most " +"[code]2 ** 32 - 1[/code].\n" +"[b]Note:[/b] Unlike [constant PROPERTY_HINT_ENUM], the previous explicit " +"value is not taken into account. For the hint [code]\"A:16,B,C\"[/code], A " +"is 16, B is 2, C is 4." +msgstr "" +"提示 [int] 属性为位掩码,位标志拥有名称。\n" +"提示字符串为逗号分隔的名称列表,例如 [code]\"Bit0,Bit1,Bit2,Bit3\"[/code]。名" +"称两端的空白字符[b]不会[/b]被移除。列表中的第一个名称的值为 1、然后是 2、接下" +"来就是 4、8、16 等值。也可以通过在名称后加上 [code]:整数[/code] 来指定显式的" +"值,例如 [code]\"A:4,B:8,C:16\"[/code]。你还可以对标志进行组合([code]\"A:4," +"B:8,AB:12,C:16\"[/code])。\n" +"[b]注意:[/b]标志值最多为 [code]1[/code],最多为 [code]2 ** 32 - 1[/code]。\n" +"[b]注意:[/b]与 [constant PROPERTY_HINT_ENUM] 不同,不会考虑前一个显式值。如" +"果提示为 [code]\"A:16,B,C\"[/code],则 A 为 16、B 为 2、C 为 4。" + +msgid "" "Hints that an [int] property is a bitmask using the optionally named 2D " "render layers." msgstr "提示 [int] 属性为位掩码,表示可命名的 2D 渲染层。" @@ -2137,6 +4682,15 @@ msgstr "" "的文件对话框。" msgid "" +"Hints that a property is an instance of a [Resource]-derived type, " +"optionally specified via the hint string (e.g. [code]\"Texture2D\"[/code]). " +"Editing it will show a popup menu of valid resource types to instantiate." +msgstr "" +"提示属性是 [Resource] 派生类型的实例,可通过提示字符串指定(例如 " +"[code]\"Texture2D\"[/code])。 编辑该属性会显示一个有效资源类型的弹出菜单用以" +"实例化。" + +msgid "" "Hints that a [String] property is text with line breaks. Editing it will " "show a text input field where line breaks can be typed." msgstr "" @@ -2152,6 +4706,57 @@ msgstr "" "提示 [String] 属性在为空时应当显示占位文本。提示字符串为所使用的占位文本。" msgid "" +"Hints that a [Color] property should be edited without affecting its " +"transparency ([member Color.a] is not editable)." +msgstr "" +"提示一个 [Color] 属性在编辑时不能影响其透明度([member Color.a] 不可编辑)。" + +msgid "" +"Hint that a property represents a particular type. If a property is " +"[constant TYPE_STRING], allows to set a type from the create dialog. If you " +"need to create an [Array] to contain elements of a specific type, the " +"[code]hint_string[/code] must encode nested types using [code]\":\"[/code] " +"and [code]\"/\"[/code] for specifying [Resource] types. For instance:\n" +"[codeblock]\n" +"hint_string = \"%s:\" % [TYPE_INT] # Array of integers.\n" +"hint_string = \"%s:%s:\" % [TYPE_ARRAY, TYPE_REAL] # Two-dimensional array " +"of floats.\n" +"hint_string = \"%s/%s:Resource\" % [TYPE_OBJECT, TYPE_OBJECT] # Array of " +"resources.\n" +"hint_string = \"%s:%s/%s:Resource\" % [TYPE_ARRAY, TYPE_OBJECT, TYPE_OBJECT] " +"# Two-dimensional array of resources.\n" +"[/codeblock]\n" +"[b]Note:[/b] The final colon is required for properly detecting built-in " +"types." +msgstr "" +"提示一个属性代表特定的类型。如果属性为 [constant TYPE_STRING],则可以通过创建" +"对话框设置其类型。如果你需要创建一个 [Array] 来放置特定类型的元素,则 " +"[code]hint_string[/code] 必须使用 [code]\":\"[/code] 来编码嵌套类型,使用 " +"[code]\"/\"[/code] 来指定 [Resource] 类型。例如:\n" +"[codeblock]\n" +"hint_string = \"%s:\" % [TYPE_INT] # 整数数组。\n" +"hint_string = \"%s:%s:\" % [TYPE_ARRAY, TYPE_REAL] # 浮点数二维数组。\n" +"hint_string = \"%s/%s:Resource\" % [TYPE_OBJECT, TYPE_OBJECT] # 资源数组。\n" +"hint_string = \"%s:%s/%s:Resource\" % [TYPE_ARRAY, TYPE_OBJECT, TYPE_OBJECT] " +"# 资源二维数组。\n" +"[/codeblock]\n" +"[b]注意:[/b]最后的冒号是必须的,否则无法正确检测内置类型。" + +msgid "" +"Hints that a string property is a locale code. Editing it will show a locale " +"dialog for picking language and country." +msgstr "" +"提示一个字符串属性是一个区域设置代码。编辑它将显示一个用于选择语言和地区的区" +"域设置对话框。" + +msgid "" +"Hints that a dictionary property is string translation map. Dictionary keys " +"are locale codes and, values are translated strings." +msgstr "" +"提示一个字典属性是字符串翻译映射。字典的键是区域设置代码,值是翻译后的字符" +"串。" + +msgid "" "Hints that a quaternion property should disable the temporary euler editor." msgstr "提示四元数属性应当禁用临时欧拉值编辑器。" @@ -2160,15 +4765,36 @@ msgid "" "with the secret character." msgstr "提示字符串属性为密码,每一个字符都会被替换为秘密字符。" +msgid "" +"The property is not stored, and does not display in the editor. This is the " +"default for non-exported properties." +msgstr "该属性不被存储,也不会显示在编辑器中。这是非导出属性的默认值。" + msgid "The property is serialized and saved in the scene file (default)." msgstr "将属性序列化并保存到场景文件中(默认)。" +msgid "The property is shown in the [EditorInspector] (default)." +msgstr "该属性将被显示在 [EditorInspector](默认)中。" + +msgid "The property can be checked in the [EditorInspector]." +msgstr "该属性可以在 [EditorInspector] 中被勾选。" + +msgid "The property is checked in the [EditorInspector]." +msgstr "该属性在 [EditorInspector] 中已被勾选。" + msgid "Used to group properties together in the editor. See [EditorInspector]." -msgstr "在编辑器中用于为属性分组。见 [EditorInspector]。" +msgstr "用于在编辑器中将属性编组在一起。请参阅 [EditorInspector]。" msgid "Used to categorize properties together in the editor." msgstr "在编辑器中用于为属性分类。" +msgid "" +"Used to group properties together in the editor in a subgroup (under a " +"group). See [EditorInspector]." +msgstr "" +"用于在子组(一个组下)中将编辑器中的属性编组在一起。请参阅 " +"[EditorInspector]。" + msgid "The property does not save its state in [PackedScene]." msgstr "该属性不在 [PackedScene] 中保存其状态。" @@ -2180,6 +4806,29 @@ msgid "" "the scene file." msgstr "该属性是一个脚本变量,应该被序列化并保存在场景文件中。" +msgid "The property is an array." +msgstr "该属性为数组。" + +msgid "" +"When duplicating a resource with [method Resource.duplicate], and this flag " +"is set on a property of that resource, the property should always be " +"duplicated, regardless of the [code]subresources[/code] bool parameter." +msgstr "" +"当创建一个带有 [method Resource.duplicate] 的 Resource,并且它的标志是在一个 " +"Resource 的属性上设置的副本时候,无论 [code]subresources[/code] 为多少,该属" +"性永远都会被创建为副本。" + +msgid "" +"When duplicating a resource with [method Resource.duplicate], and this flag " +"is set on a property of that resource, the property should never be " +"duplicated, regardless of the [code]subresources[/code] bool parameter." +msgstr "" +"使用 [method Resource.duplicate] 复制资源时,如果该资源的某个属性上设有这个标" +"志,则不会对该属性进行复制,无视 [code]subresources[/code] 布尔型参数。" + +msgid "The property is read-only in the [EditorInspector]." +msgstr "该属性在 [EditorInspector] 中只读。" + msgid "Default usage (storage, editor and network)." msgstr "默认用法(存储、编辑器和网络)。" @@ -2200,6 +4849,22 @@ msgstr "常量方法的标志。" msgid "Flag for a virtual method." msgstr "虚方法的标志。" +msgid "Flag for a method with a variable number of arguments." +msgstr "具有可变数量参数的方法的标志。" + +msgid "Flag for a static method." +msgstr "静态方法的标志。" + +msgid "" +"Used internally. Allows to not dump core virtual methods (such as [method " +"Object._notification]) to the JSON API." +msgstr "" +"内部使用。允许不将核心虚拟方法(例如 [method Object._notification])转储到 " +"JSON API。" + +msgid "Default method flags (normal)." +msgstr "默认方法标志(正常)。" + msgid "Variable is [code]null[/code]." msgstr "变量为 [code]null[/code]。" @@ -2209,56 +4874,119 @@ msgstr "变量类型为 [bool]。" msgid "Variable is of type [int]." msgstr "变量类型为 [int]。" +msgid "Variable is of type [float]." +msgstr "变量的类型为 [float]。" + msgid "Variable is of type [String]." msgstr "变量类型为 [String]。" msgid "Variable is of type [Vector2]." msgstr "变量类型为 [Vector2]。" +msgid "Variable is of type [Vector2i]." +msgstr "变量类型为 [Vector2i]。" + msgid "Variable is of type [Rect2]." msgstr "变量类型为 [Rect2]。" +msgid "Variable is of type [Rect2i]." +msgstr "变量类型为 [Rect2i]。" + msgid "Variable is of type [Vector3]." msgstr "变量类型为 [Vector3]。" +msgid "Variable is of type [Vector3i]." +msgstr "变量类型为 [Vector3i]。" + msgid "Variable is of type [Transform2D]." msgstr "变量类型为 [Transform2D]。" +msgid "Variable is of type [Vector4]." +msgstr "变量类型为 [Vector4]。" + +msgid "Variable is of type [Vector4i]." +msgstr "变量类型为 [Vector4i]。" + msgid "Variable is of type [Plane]." msgstr "变量类型为 [Plane]。" +msgid "Variable is of type [Quaternion]." +msgstr "变量类型为 [Quaternion]。" + msgid "Variable is of type [AABB]." -msgstr "变量的类型为 [AABB]。" +msgstr "变量类型为 [AABB]。" msgid "Variable is of type [Basis]." -msgstr "变量的类型为 [Basis]。" +msgstr "变量类型为 [Basis]。" + +msgid "Variable is of type [Transform3D]." +msgstr "变量类型为 [Transform3D]。" + +msgid "Variable is of type [Projection]." +msgstr "变量类型为 [Projection]。" msgid "Variable is of type [Color]." -msgstr "变量的类型为 [Color]。" +msgstr "变量类型为 [Color]。" + +msgid "Variable is of type [StringName]." +msgstr "变量类型为 [StringName]。" msgid "Variable is of type [NodePath]." -msgstr "变量的类型为 [NodePath]。" +msgstr "变量类型为 [NodePath]。" msgid "Variable is of type [RID]." -msgstr "变量的类型为 [RID]。" +msgstr "变量类型为 [RID]。" msgid "Variable is of type [Object]." -msgstr "变量的类型为 [Object]。" +msgstr "变量类型为 [Object]。" + +msgid "Variable is of type [Callable]." +msgstr "变量类型为 [Callable]。" + +msgid "Variable is of type [Signal]." +msgstr "变量类型为 [Signal]。" msgid "Variable is of type [Dictionary]." -msgstr "变量的类型为 [Dictionary]。" +msgstr "变量类型为 [Dictionary]。" msgid "Variable is of type [Array]." -msgstr "变量的类型为 [Array]。" +msgstr "变量类型为 [Array]。" + +msgid "Variable is of type [PackedByteArray]." +msgstr "变量类型为 [PackedByteArray]。" + +msgid "Variable is of type [PackedInt32Array]." +msgstr "变量类型为 [PackedInt32Array]。" + +msgid "Variable is of type [PackedInt64Array]." +msgstr "变量类型为 [PackedInt64Array]。" + +msgid "Variable is of type [PackedFloat32Array]." +msgstr "变量类型为 [PackedFloat32Array]。" + +msgid "Variable is of type [PackedFloat64Array]." +msgstr "变量类型为 [PackedFloat64Array]。" + +msgid "Variable is of type [PackedStringArray]." +msgstr "变量类型为 [PackedStringArray]。" + +msgid "Variable is of type [PackedVector2Array]." +msgstr "变量类型为 [PackedVector2Array]。" + +msgid "Variable is of type [PackedVector3Array]." +msgstr "变量类型为 [PackedVector3Array]。" + +msgid "Variable is of type [PackedColorArray]." +msgstr "变量类型为 [PackedColorArray]。" msgid "Represents the size of the [enum Variant.Type] enum." -msgstr "表示 [enum Variant.Type] 枚举的大小。" +msgstr "代表 [enum Variant.Type] 枚举的大小。" msgid "Equality operator ([code]==[/code])." -msgstr "等于运算符([code]==[/code])。" +msgstr "相等运算符([code]==[/code])。" msgid "Inequality operator ([code]!=[/code])." -msgstr "不等式运算符([code]!=[/code])。" +msgstr "不等运算符([code]!=[/code])。" msgid "Less than operator ([code]<[/code])." msgstr "小于运算符([code]<[/code])。" @@ -2270,7 +4998,7 @@ msgid "Greater than operator ([code]>[/code])." msgstr "大于运算符([code]>[/code])。" msgid "Greater than or equal operator ([code]>=[/code])." -msgstr "大于等于运算符([code]> =[/code])。" +msgstr "大于等于运算符([code]>=[/code])。" msgid "Addition operator ([code]+[/code])." msgstr "加法运算符([code]+[/code])。" @@ -2293,6 +5021,9 @@ msgstr "一元加号运算符([code]+[/code])。" msgid "Remainder/modulo operator ([code]%[/code])." msgstr "余数/取模运算符([code]%[/code])。" +msgid "Power operator ([code]**[/code])." +msgstr "幂运算符([code]**[/code])。" + msgid "Left shift operator ([code]<<[/code])." msgstr "左移运算符([code]<<[/code])。" @@ -2327,17 +5058,43 @@ msgid "Logical IN operator ([code]in[/code])." msgstr "逻辑 IN 运算符([code]in[/code])。" msgid "Represents the size of the [enum Variant.Operator] enum." -msgstr "表示 [enum Variant.Operator] 枚举的大小。" +msgstr "代表 [enum Variant.Operator] 枚举的大小。" msgid "Axis-Aligned Bounding Box." msgstr "轴对齐包围盒。" +msgid "" +"[AABB] consists of a position, a size, and several utility functions. It is " +"typically used for fast overlap tests.\n" +"It uses floating-point coordinates. The 2D counterpart to [AABB] is " +"[Rect2].\n" +"Negative values for [member size] are not supported and will not work for " +"most methods. Use [method abs] to get an AABB with a positive size.\n" +"[b]Note:[/b] Unlike [Rect2], [AABB] does not have a variant that uses " +"integer coordinates." +msgstr "" +"[AABB] 由一个位置、一个大小和若干实用函数组成。通常用于快速重叠测试。\n" +"它使用浮点坐标。[AABB] 的 2D 对应物为 [Rect2]。\n" +"不支持负的 [member size],并且不适用于大多数方法。使用 [method abs] 获得具有" +"正尺寸的 AABB。\n" +"[b]注意:[/b]与 [Rect2] 不同,[AABB] 没有使用整数坐标的变体。" + +msgid "Math documentation index" +msgstr "数学文档索引" + msgid "Vector math" msgstr "向量数学" msgid "Advanced vector math" msgstr "高等向量数学" +msgid "" +"Constructs a default-initialized [AABB] with default (zero) values of " +"[member position] and [member size]." +msgstr "" +"使用 [member position] 和 [member size] 的默认值(零)构造一个默认初始化的 " +"[AABB]。" + msgid "Constructs an [AABB] as a copy of the given [AABB]." msgstr "构造给定 [AABB] 的副本。" @@ -2354,6 +5111,43 @@ msgid "" msgstr "该 [AABB] 完全包含另一个时,返回 [code]true[/code]。" msgid "" +"Returns a copy of this [AABB] expanded to include a given point.\n" +"[b]Example:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"# position (-3, 2, 0), size (1, 1, 1)\n" +"var box = AABB(Vector3(-3, 2, 0), Vector3(1, 1, 1))\n" +"# position (-3, -1, 0), size (3, 4, 2), so we fit both the original AABB and " +"Vector3(0, -1, 2)\n" +"var box2 = box.expand(Vector3(0, -1, 2))\n" +"[/gdscript]\n" +"[csharp]\n" +"// position (-3, 2, 0), size (1, 1, 1)\n" +"var box = new Aabb(new Vector3(-3, 2, 0), new Vector3(1, 1, 1));\n" +"// position (-3, -1, 0), size (3, 4, 2), so we fit both the original AABB " +"and Vector3(0, -1, 2)\n" +"var box2 = box.Expand(new Vector3(0, -1, 2));\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回该 [AABB] 的副本,该副本扩展至包含给出的点。\n" +"[b]例子:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"# 位置 (-3, 2, 0),大小 (1, 1, 1)\n" +"var box = AABB(Vector3(-3, 2, 0), Vector3(1, 1, 1))\n" +"# 位置 (-3, -1, 0),大小 (3, 4, 2),包含原来的 AABB 和 Vector3(0, -1, 2)\n" +"var box2 = box.expand(Vector3(0, -1, 2))\n" +"[/gdscript]\n" +"[csharp]\n" +"// 位置 (-3, 2, 0),大小 (1, 1, 1)\n" +"var box = new Aabb(new Vector3(-3, 2, 0), new Vector3(1, 1, 1));\n" +"// 位置 (-3, -1, 0),大小 (3, 4, 2),包含原来的 AABB 和 Vector3(0, -1, 2)\n" +"var box2 = box.Expand(new Vector3(0, -1, 2));\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" "Returns the center of the [AABB], which is equal to [member position] + " "([member size] / 2)." msgstr "返回该 [AABB] 的中心点,等于 [member position] + ([member size] / 2)。" @@ -2393,6 +5187,46 @@ msgstr "返回指定方向上的支持点。常用于碰撞检测算法。" msgid "Returns the volume of the [AABB]." msgstr "返回该 [AABB] 的体积。" +msgid "" +"Returns a copy of the [AABB] grown a given number of units towards all the " +"sides." +msgstr "返回 [AABB] 的副本,该副本向所有方向增长了给定数量的单位。" + +msgid "" +"Returns [code]true[/code] if the [AABB] contains a point. Points on the " +"faces of the AABB are considered included, though float-point precision " +"errors may impact the accuracy of such checks.\n" +"[b]Note:[/b] This method is not reliable for [AABB] with a [i]negative size[/" +"i]. Use [method abs] to get a positive sized equivalent [AABB] to check for " +"contained points." +msgstr "" +"如果 [AABB] 包含点,则返回 [code]true[/code]。AABB 表面上的点被视为包括在内," +"但浮点精度误差可能会影响此类检测的准确性。\n" +"[b]注意:[/b]这种方法对于具有[i]负尺寸[/i]的 [AABB] 是不可靠的。使用 [method " +"abs] 获得一个正尺寸的等效 [AABB] 在检查是否包含点。" + +msgid "" +"Returns [code]true[/code] if the [AABB] has a surface or a length, and " +"[code]false[/code] if the [AABB] is empty (all components of [member size] " +"are zero or negative)." +msgstr "" +"如果 [AABB] 具有表面或长度,则返回 [code]true[/code];如果 [AABB] 为空" +"([member size] 的所有分量为零或负),则返回 [code]false[/code]。" + +msgid "" +"Returns [code]true[/code] if the [AABB] has a volume, and [code]false[/code] " +"if the [AABB] is flat, empty, or has a negative [member size]." +msgstr "" +"如果 [AABB] 有体积,则返回 [code]true[/code];如果 [AABB] 是扁平的、空的或具" +"有负的 [member size],则返回 [code]false[/code]。" + +msgid "" +"Returns the intersection between two [AABB]. An empty AABB (size [code](0, " +"0, 0)[/code]) is returned on failure." +msgstr "" +"返回两个 [AABB] 的交叠区域。失败时返回空的 AABB(大小为 [code](0, 0, 0)[/" +"code])。" + msgid "Returns [code]true[/code] if the [AABB] overlaps with another." msgstr "该 [AABB] 与另一个交叠时,返回 [code]true[/code]。" @@ -2400,6 +5234,37 @@ msgid "Returns [code]true[/code] if the [AABB] is on both sides of a plane." msgstr "该 [AABB] 同时位于指定平面的两边时,返回 [code]true[/code]。" msgid "" +"Returns [code]true[/code] if the given ray intersects with this [AABB]. Ray " +"length is infinite." +msgstr "" +"如果给定的射线与此 [AABB] 相交,则返回 [code]true[/code]。射线长度是无限的。" + +msgid "" +"Returns [code]true[/code] if the [AABB] intersects the line segment between " +"[param from] and [param to]." +msgstr "" +"如果该 [AABB] 与 [param from] 和 [param to] 之间的线段相交,则返回 " +"[code]true[/code]。" + +msgid "" +"Returns [code]true[/code] if this [AABB] and [param aabb] are approximately " +"equal, by calling [method @GlobalScope.is_equal_approx] on each component." +msgstr "" +"如果该 [AABB] 和 [param aabb] 近似相等,则返回 [code]true[/code],通过在每个" +"分量上调用 [method @GlobalScope.is_equal_approx]。" + +msgid "" +"Returns [code]true[/code] if this [AABB] is finite, by calling [method " +"@GlobalScope.is_finite] on each component." +msgstr "" +"如果该 [AABB] 是有限的,则返回 [code]true[/code],方法是在每个分量上调用 " +"[method @GlobalScope.is_finite]。" + +msgid "" +"Returns a larger [AABB] that contains both this [AABB] and [param with]." +msgstr "返回同时包含该 [AABB] 和 [param with] 的更大的 [AABB]。" + +msgid "" "Ending corner. This is calculated as [code]position + size[/code]. Setting " "this value will change the size." msgstr "" @@ -2413,9 +5278,30 @@ msgid "" "positive.\n" "If the size is negative, you can use [method abs] to fix it." msgstr "" -"从[member position] 到 [member end] 的大小。通常所有分量都是正数。\n" +"从 [member position] 到 [member end] 的大小。通常所有分量都是正数。\n" "如果大小为负,可以用 [method abs] 修正。" +msgid "" +"Returns [code]true[/code] if the vectors 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 "" +"如果向量不相等,则返回 [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] 进行逆变换(相乘)。" + +msgid "" +"Returns [code]true[/code] if the AABBs are exactly 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 "Base dialog for user notification." msgstr "用户通知的基本对话框。" @@ -2423,10 +5309,35 @@ msgid "" "This dialog is useful for small notifications to the user about an event. It " "can only be accepted or closed, with the same result." msgstr "" -"该对话框对于向用户发送有关事件的小通知很有用。它只能被接受或关闭,并且结果相" +"该对话框对于向用户发送有关事件的小通知很有用。它只能被接受或关闭,并且结果相" "同。" msgid "" +"Adds a button with label [param text] and a custom [param action] to the " +"dialog and returns the created button. [param action] will be passed to the " +"[signal custom_action] signal when pressed.\n" +"If [code]true[/code], [param right] will place the button to the right of " +"any sibling buttons.\n" +"You can use [method remove_button] method to remove a button created with " +"this method from the dialog." +msgstr "" +"将带有标签 [param text] 和自定义 [param action] 的按钮添加到对话框,并返回该" +"创建的按钮。[param action] 将在按钮被按下时传递给 [signal custom_action] 信" +"号。\n" +"如果 [param right] 为 [code]true[/code],按钮会被放置在所有同级按钮的右侧。\n" +"您可以使用 [method remove_button] 方法从对话框中移除使用该方法创建的按钮。" + +msgid "" +"Adds a button with label [param name] and a cancel action to the dialog and " +"returns the created button.\n" +"You can use [method remove_button] method to remove a button created with " +"this method from the dialog." +msgstr "" +"在对话框中添加一个带有标签 [param name] 和取消动作的按钮,并返回创建的按" +"钮。\n" +"你可以使用 [method remove_button] 方法从对话框中删除用此方法创建的按钮。" + +msgid "" "Returns the label used for built-in text.\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 " @@ -2451,10 +5362,29 @@ msgid "" "dialog will be accepted." msgstr "在对话框中注册 [LineEdit]。当按下回车键时,对话框将被接受。" +msgid "" +"Removes the [param button] from the dialog. Does NOT free the [param " +"button]. The [param button] must be a [Button] added with [method " +"add_button] or [method add_cancel_button] method. After removal, pressing " +"the [param button] will no longer emit this dialog's [signal custom_action] " +"or [signal canceled] signals." +msgstr "" +"从对话框中移除 [param button]。但不释放该 [param button] 对象。[param " +"button] 必须是用 [method add_button] 或 [method add_cancel] 方法添加的 " +"[Button]。移除后,按下该 [param button] 将不再发出该对话框的 [signal " +"custom_action] 或 [signal canceled] 信号。" + msgid "Sets autowrapping for the text in the dialog." msgstr "为对话框中的文本设置自动换行。" msgid "" +"If [code]true[/code], the dialog will be hidden when the escape key " +"([constant KEY_ESCAPE]) is pressed." +msgstr "" +"如果为 [code]true[/code],当按下退出键([constant KEY_ESCAPE])时,对话框将被" +"隐藏。" + +msgid "" "If [code]true[/code], the dialog is hidden when the OK button is pressed. " "You can set it to [code]false[/code] if you want to do e.g. input validation " "when receiving the [signal confirmed] signal, and handle hiding the dialog " @@ -2477,15 +5407,184 @@ msgstr "" msgid "The text displayed by the dialog." msgstr "对话框显示的文本。" +msgid "The text displayed by the OK button (see [method get_ok_button])." +msgstr "确定按钮(参见 [method get_ok_button])显示的文本。" + +msgid "" +"Emitted when the dialog is closed or the button created with [method " +"add_cancel_button] is pressed." +msgstr "当对话框关闭或按下 [method add_cancel_button] 创建的按钮时发出。" + msgid "Emitted when the dialog is accepted, i.e. the OK button is pressed." msgstr "接受对话框时,即按下确定按钮时发出。" msgid "Emitted when a custom button is pressed. See [method add_button]." msgstr "按下自定义按钮时发出。见 [method add_button]。" +msgid "" +"The size of the vertical space between the dialog's content and the button " +"row." +msgstr "对话框内容和按钮行之间的垂直空间的大小。" + +msgid "The panel that fills the background of the window." +msgstr "填充窗口背景的面板。" + msgid "Interface to low level AES encryption features." msgstr "底层 AES 加密功能接口。" +msgid "" +"This class provides access to AES encryption/decryption of raw data. Both " +"AES-ECB and AES-CBC mode are supported.\n" +"[codeblocks]\n" +"[gdscript]\n" +"extends Node\n" +"\n" +"var aes = AESContext.new()\n" +"\n" +"func _ready():\n" +" var key = \"My secret key!!!\" # Key must be either 16 or 32 bytes.\n" +" var data = \"My secret text!!\" # Data size must be multiple of 16 " +"bytes, apply padding if needed.\n" +" # Encrypt ECB\n" +" aes.start(AESContext.MODE_ECB_ENCRYPT, key.to_utf8())\n" +" var encrypted = aes.update(data.to_utf8())\n" +" aes.finish()\n" +" # Decrypt ECB\n" +" aes.start(AESContext.MODE_ECB_DECRYPT, key.to_utf8())\n" +" var decrypted = aes.update(encrypted)\n" +" aes.finish()\n" +" # Check ECB\n" +" assert(decrypted == data.to_utf8())\n" +"\n" +" var iv = \"My secret iv!!!!\" # IV must be of exactly 16 bytes.\n" +" # Encrypt CBC\n" +" aes.start(AESContext.MODE_CBC_ENCRYPT, key.to_utf8(), iv.to_utf8())\n" +" encrypted = aes.update(data.to_utf8())\n" +" aes.finish()\n" +" # Decrypt CBC\n" +" aes.start(AESContext.MODE_CBC_DECRYPT, key.to_utf8(), iv.to_utf8())\n" +" decrypted = aes.update(encrypted)\n" +" aes.finish()\n" +" # Check CBC\n" +" assert(decrypted == data.to_utf8())\n" +"[/gdscript]\n" +"[csharp]\n" +"using Godot;\n" +"using System.Diagnostics;\n" +"\n" +"public partial class MyNode : Node\n" +"{\n" +" private AesContext _aes = new AesContext();\n" +"\n" +" public override void _Ready()\n" +" {\n" +" string key = \"My secret key!!!\"; // Key must be either 16 or 32 " +"bytes.\n" +" string data = \"My secret text!!\"; // Data size must be multiple of " +"16 bytes, apply padding if needed.\n" +" // Encrypt ECB\n" +" _aes.Start(AesContext.Mode.EcbEncrypt, key.ToUtf8());\n" +" byte[] encrypted = _aes.Update(data.ToUtf8());\n" +" _aes.Finish();\n" +" // Decrypt ECB\n" +" _aes.Start(AesContext.Mode.EcbDecrypt, key.ToUtf8());\n" +" byte[] decrypted = _aes.Update(encrypted);\n" +" _aes.Finish();\n" +" // Check ECB\n" +" Debug.Assert(decrypted == data.ToUtf8());\n" +"\n" +" string iv = \"My secret iv!!!!\"; // IV must be of exactly 16 " +"bytes.\n" +" // Encrypt CBC\n" +" _aes.Start(AesContext.Mode.EcbEncrypt, key.ToUtf8(), iv.ToUtf8());\n" +" encrypted = _aes.Update(data.ToUtf8());\n" +" _aes.Finish();\n" +" // Decrypt CBC\n" +" _aes.Start(AesContext.Mode.EcbDecrypt, key.ToUtf8(), iv.ToUtf8());\n" +" decrypted = _aes.Update(encrypted);\n" +" _aes.Finish();\n" +" // Check CBC\n" +" Debug.Assert(decrypted == data.ToUtf8());\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"此类提供了对原始数据的 AES 加密/解密的访问。同时支持 AES-ECB 和 AES-CBC 模" +"式。\n" +"[codeblocks]\n" +"[gdscript]\n" +"extends Node\n" +"\n" +"var aes = AESContext.new()\n" +"\n" +"func _ready():\n" +" var key = \"My secret key!!!\" # 密钥必须是 16 或 32 字节。\n" +" var data = \"My secret text!!\" # 数据大小必须是 16 字节的倍数,需要时添" +"加补白。\n" +" # ECB 加密\n" +" aes.start(AESContext.MODE_ECB_ENCRYPT, key.to_utf8())\n" +" var encrypted = aes.update(data.to_utf8())\n" +" aes.finish()\n" +" # ECB 解密\n" +" aes.start(AESContext.MODE_ECB_DECRYPT, key.to_utf8())\n" +" var decrypted = aes.update(encrypted)\n" +" aes.finish()\n" +" # ECB 校验\n" +" assert(decrypted == data.to_utf8())\n" +"\n" +" var iv = \"My secret iv!!!!\" # IV 必须是 16 字节。\n" +" # CBC 加密\n" +" aes.start(AESContext.MODE_CBC_ENCRYPT, key.to_utf8(), iv.to_utf8())\n" +" encrypted = aes.update(data.to_utf8())\n" +" aes.finish()\n" +" # CBC 解密\n" +" aes.start(AESContext.MODE_CBC_DECRYPT, key.to_utf8(), iv.to_utf8())\n" +" decrypted = aes.update(encrypted)\n" +" aes.finish()\n" +" # CBC 校验\n" +" assert(decrypted == data.to_utf8())\n" +"[/gdscript]\n" +"[csharp]\n" +"using Godot;\n" +"using System.Diagnostics;\n" +"\n" +"public partial class MyNode : Node\n" +"{\n" +" private AesContext _aes = new AesContext();\n" +"\n" +" public override void _Ready()\n" +" {\n" +" string key = \"My secret key!!!\"; // 密钥必须是 16 或 32 字节。\n" +" string data = \"My secret text!!\"; // 数据大小必须是 16 字节的倍数," +"需要时添加补白。\n" +" // ECB 加密\n" +" _aes.Start(AesContext.Mode.EcbEncrypt, key.ToUtf8());\n" +" byte[] encrypted = _aes.Update(data.ToUtf8());\n" +" _aes.Finish();\n" +" // ECB 解密\n" +" _aes.Start(AesContext.Mode.EcbDecrypt, key.ToUtf8());\n" +" byte[] decrypted = _aes.Update(encrypted);\n" +" _aes.Finish();\n" +" // ECB 校验\n" +" Debug.Assert(decrypted == data.ToUtf8());\n" +"\n" +" string iv = \"My secret iv!!!!\"; // IV 必须是 16 字节。\n" +" // CBC 加密\n" +" _aes.Start(AesContext.Mode.EcbEncrypt, key.ToUtf8(), iv.ToUtf8());\n" +" encrypted = _aes.Update(data.ToUtf8());\n" +" _aes.Finish();\n" +" // CBC 解密\n" +" _aes.Start(AesContext.Mode.EcbDecrypt, key.ToUtf8(), iv.ToUtf8());\n" +" decrypted = _aes.Update(encrypted);\n" +" _aes.Finish();\n" +" // CBC 校验\n" +" Debug.Assert(decrypted == data.ToUtf8());\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" + msgid "Close this AES context so it can be started again. See [method start]." msgstr "关闭此 AES 上下文,以便可以再次启动它。见 [method start]。" @@ -2500,6 +5599,27 @@ msgstr "" "[b]注意:[/b]仅当上下文以 [constant MODE_CBC_ENCRYPT] 或 [constant " "MODE_CBC_DECRYPT] 开头时,此函数才有意义。" +msgid "" +"Start the AES context in the given [param mode]. A [param key] of either 16 " +"or 32 bytes must always be provided, while an [param iv] (initialization " +"vector) of exactly 16 bytes, is only needed when [param mode] is either " +"[constant MODE_CBC_ENCRYPT] or [constant MODE_CBC_DECRYPT]." +msgstr "" +"在给定的 [param mode] 中启动 AES 上下文。必须始终提供 16 或 32 字节的 [param " +"key],而仅当 [param mode] 为 [constant MODE_CBC_ENCRYPT] 或 [constant " +"MODE_CBC_DECRYPT] 时,才需要正好为 16 字节的 [param iv](初始化向量)。" + +msgid "" +"Run the desired operation for this AES context. Will return a " +"[PackedByteArray] containing the result of encrypting (or decrypting) the " +"given [param src]. See [method start] for mode of operation.\n" +"[b]Note:[/b] The size of [param src] must be a multiple of 16. Apply some " +"padding if needed." +msgstr "" +"运行此 AES 上下文所需的操作。将返回包含加密(或解密)给定 [param src] 结果的 " +"[PackedByteArray] 。有关操作模式,请参阅 [method start]。\n" +"[b]注意:[/b][param src] 的大小必须是 16 倍的倍数。如果需要,应用一些填充。" + msgid "AES electronic codebook encryption mode." msgstr "AES 电子密码簿加密模式。" @@ -2515,6 +5635,73 @@ msgstr "AES 密码封锁器链式解密模式。" msgid "Maximum value for the mode enum." msgstr "模式列举的最大值。" +msgid "" +"Physics body for 2D physics which moves only by script or animation. Useful " +"for moving platforms and doors." +msgstr "用于 2D 物理中仅通过脚本或动画移动的物理实体。适用于移动的平台和门。" + +msgid "" +"Animatable body for 2D physics.\n" +"An animatable body can't be moved by external forces or contacts, but can be " +"moved by script or animation to affect other bodies in its path. It is ideal " +"for implementing moving objects in the environment, such as moving platforms " +"or doors.\n" +"When the body is moved manually, either from code or from an " +"[AnimationPlayer] (with [member AnimationPlayer.playback_process_mode] set " +"to [code]physics[/code]), the physics will automatically compute an estimate " +"of their linear and angular velocity. This makes them very useful for moving " +"platforms or other AnimationPlayer-controlled objects (like a door, a bridge " +"that opens, etc)." +msgstr "" +"用于 2D 物理的可动画化实体。\n" +"可动画化实体无法通过外力或接触移动,但可以通过脚本或动画移动以影响其路径中的" +"其他实体。它非常适合实现移动环境中的对象,例如移动的平台或门。\n" +"当实体通过代码或 [AnimationPlayer](将 [member AnimationPlayer." +"playback_process_mode] 设置为 [code]physics[/code])手动移动时,物理将自动计" +"算其线速度和角速度的估计值。这使得它们对于移动的平台或其他 AnimationPlayer 控" +"制的对象(如门、打开的桥等)非常有用。" + +msgid "" +"If [code]true[/code], the body's movement will be synchronized to the " +"physics frame. This is useful when animating movement via [AnimationPlayer], " +"for example on moving platforms. Do [b]not[/b] use together with [method " +"PhysicsBody2D.move_and_collide]." +msgstr "" +"如果为 [code]true[/code],则物体的运动将与物理帧同步。当通过 " +"[AnimationPlayer] 为运动设置动画时,例如在移动的平台上,这个功能很有用。[b]不" +"要[/b]与[method PhysicsBody2D.move_and_collide]一起使用。" + +msgid "" +"Physics body for 3D physics which moves only by script or animation. Useful " +"for moving platforms and doors." +msgstr "仅通过脚本或动画移动、用于3D 物理的物理体。适用于移动的平台和门。" + +msgid "" +"Animatable body for 3D physics.\n" +"An animatable body can't be moved by external forces or contacts, but can be " +"moved by script or animation to affect other bodies in its path. It is ideal " +"for implementing moving objects in the environment, such as moving platforms " +"or doors.\n" +"When the body is moved manually, either from code or from an " +"[AnimationPlayer] (with [member AnimationPlayer.playback_process_mode] set " +"to [code]physics[/code]), the physics will automatically compute an estimate " +"of their linear and angular velocity. This makes them very useful for moving " +"platforms or other AnimationPlayer-controlled objects (like a door, a bridge " +"that opens, etc).\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 "" +"用于 3D 物理的可动画实体。\n" +"可动画的实体不能被外力或接触移动,但可以被脚本或动画移动以影响其路径中的其他" +"实体。它非常适合在环境中实现移动的实体,例如移动的平台或门。\n" +"当通过代码或 [AnimationPlayer]([member AnimationPlayer." +"playback_process_mode] 被设置为 [code]physics[/code])手动移动实体时,物理将" +"自动计算其线速度和角速度的估计值。这使得它们对于移动的平台或其他 " +"AnimationPlayer 控制的对象(如门、打开的桥等)非常有用。\n" +"[b]警告:[/b]如果缩放比例不均匀,此节点可能无法按预期运行。请确保保持其比例统" +"一(即在所有轴上相同),并改为更改其碰撞形状的大小。" + msgid "3D Physics Tests Demo" msgstr "3D 物理测试演示" @@ -2525,8 +5712,30 @@ msgid "3D Voxel Demo" msgstr "3D 体素演示" msgid "" +"If [code]true[/code], the body's movement will be synchronized to the " +"physics frame. This is useful when animating movement via [AnimationPlayer], " +"for example on moving platforms. Do [b]not[/b] use together with [method " +"PhysicsBody3D.move_and_collide]." +msgstr "" +"如果为 [code]true[/code],则实体的运动将与物理帧同步。当通过 " +"[AnimationPlayer] 为运动设置动画时,例如在移动的平台上,这个功能很有用。请[b]" +"不要[/b]与 [method PhysicsBody3D.move_and_collide] 函数一起使用。" + +msgid "" "Sprite node that contains multiple textures as frames to play for animation." -msgstr "可以使用多个纹理进行动画处理的精灵节点。" +msgstr "包含多个纹理作为动画播放帧的 Sprite 节点。" + +msgid "" +"[AnimatedSprite2D] is similar to the [Sprite2D] node, except it carries " +"multiple textures as animation frames. Animations are created using a " +"[SpriteFrames] resource, which allows you to import image files (or a folder " +"containing said files) to provide the animation frames for the sprite. The " +"[SpriteFrames] resource can be configured in the editor via the SpriteFrames " +"bottom panel." +msgstr "" +"[AnimatedSprite2D] 与 [Sprite2D] 节点类似,但是包含多张纹理,可用作动画帧。动" +"画使用 [SpriteFrames] 资源创建,可以导入图像文件(或包含此类文件的文件夹)为" +"该精灵提供动画帧。可以在编辑器的“动画帧”底部面板中配置 [SpriteFrames] 资源。" msgid "2D Sprite animation" msgstr "2D 精灵动画" @@ -2534,6 +5743,111 @@ msgstr "2D 精灵动画" msgid "2D Dodge The Creeps Demo" msgstr "2D Dodge The Creeps 演示" +msgid "" +"Returns the actual playing speed of current animation or [code]0[/code] if " +"not playing. This speed is the [member speed_scale] property multiplied by " +"[code]custom_speed[/code] argument specified when calling the [method play] " +"method.\n" +"Returns a negative value if the current animation is playing backwards." +msgstr "" +"返回当前动画的实际播放速度,未播放时则为 [code]0[/code]。这个速度是 [member " +"speed_scale] 属性乘以调用 [method play] 时指定的 [code]custom_speed[/code] 参" +"数。\n" +"如果当前动画是倒放的,则返回负值。" + +msgid "" +"Returns [code]true[/code] if an animation is currently playing (even if " +"[member speed_scale] and/or [code]custom_speed[/code] are [code]0[/code])." +msgstr "" +"如果动画目前正在播放,则返回 [code]true[/code](即便 [member speed_scale] 和/" +"或 [code]custom_speed[/code] 为 [code]0[/code])。" + +msgid "" +"Pauses the currently playing animation. The [member frame] and [member " +"frame_progress] will be kept and calling [method play] or [method " +"play_backwards] without arguments will resume the animation from the current " +"playback position.\n" +"See also [method stop]." +msgstr "" +"暂停当前正在播放的动画。会保留 [member frame] 和 [member frame_progress],不" +"带参数调用 [method play] 或 [method play_backwards] 会从当前播放位置恢复播放" +"该动画。\n" +"另见 [method stop]。" + +msgid "" +"Plays the animation with key [param name]. If [param custom_speed] is " +"negative and [param from_end] is [code]true[/code], the animation will play " +"backwards (which is equivalent to calling [method play_backwards]).\n" +"If this method is called with that same animation [param name], or with no " +"[param name] parameter, the assigned animation will resume playing if it was " +"paused." +msgstr "" +"播放名称键为 [param name] 的动画。如果 [param custom_speed] 为负且 [param " +"from_end] 为 [code]true[/code],则该动画会倒放(等价于 [method " +"play_backwards])。\n" +"如果调用这个方法时使用了相同的动画名称 [param name] 或者没有使用 [param " +"name] 参数,则会继续播放已暂停的分配动画。" + +msgid "" +"Plays the animation with key [param name] in reverse.\n" +"This method is a shorthand for [method play] with [code]custom_speed = -1.0[/" +"code] and [code]from_end = true[/code], so see its description for more " +"information." +msgstr "" +"倒放名称键为 [param name] 的动画。\n" +"这个方法是简写,等价于调用 [method play] 时使用 [code]custom_speed = -1.0[/" +"code] 和 [code]from_end = true[/code],所以更多信息请参阅其描述。" + +msgid "" +"The setter of [member frame] resets the [member frame_progress] to " +"[code]0.0[/code] implicitly, but this method avoids that.\n" +"This is useful when you want to carry over the current [member " +"frame_progress] to another [member frame].\n" +"[b]Example:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"# Change the animation with keeping the frame index and progress.\n" +"var current_frame = animated_sprite.get_frame()\n" +"var current_progress = animated_sprite.get_frame_progress()\n" +"animated_sprite.play(\"walk_another_skin\")\n" +"animated_sprite.set_frame_and_progress(current_frame, current_progress)\n" +"[/gdscript]\n" +"[/codeblocks]" +msgstr "" +"设置 [member frame] 时会隐式将 [member frame_progress] 重置为 [code]0.0[/" +"code],但这个方法可以避免。\n" +"如果你想要把当前的 [member frame_progress] 带到其他 [member frame] 中,就会非" +"常有用。\n" +"[b]示例:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"# 更改动画的同时保留帧索引和进度。\n" +"var current_frame = animated_sprite.get_frame()\n" +"var current_progress = animated_sprite.get_frame_progress()\n" +"animated_sprite.play(\"walk_another_skin\")\n" +"animated_sprite.set_frame_and_progress(current_frame, current_progress)\n" +"[/gdscript]\n" +"[/codeblocks]" + +msgid "" +"Stops the currently playing animation. The animation position is reset to " +"[code]0[/code] and the [code]custom_speed[/code] is reset to [code]1.0[/" +"code]. See also [method pause]." +msgstr "" +"停止当前正在播放的动画。会将动画的位置重置为 [code]0[/code],并将 " +"[code]custom_speed[/code] 重置为 [code]1.0[/code]。另见 [method pause]。" + +msgid "" +"The current animation from the [member sprite_frames] resource. If this " +"value is changed, the [member frame] counter and the [member frame_progress] " +"are reset." +msgstr "" +"当前动画,来自 [member sprite_frames]。如果更改了这个值,会重置 [member " +"frame] 计数和 [member frame_progress]。" + +msgid "The key of the animation to play when the scene loads." +msgstr "场景加载时要播放的动画名称。" + msgid "If [code]true[/code], texture will be centered." msgstr "如果为 [code]true[/code],纹理将被居中。" @@ -2543,10 +5857,38 @@ msgstr "如果为 [code]true[/code],纹理将被水平翻转。" msgid "If [code]true[/code], texture is flipped vertically." msgstr "如果为 [code]true[/code],纹理将被垂直翻转。" +msgid "" +"The displayed animation frame's index. Setting this property also resets " +"[member frame_progress]. If this is not desired, use [method " +"set_frame_and_progress]." +msgstr "" +"所显示动画帧的索引。设置这个属性会重置 [member frame_progress]。如果不希望这" +"样,请使用 [method set_frame_and_progress]。" + +msgid "" +"The progress value between [code]0.0[/code] and [code]1.0[/code] until the " +"current frame transitions to the next frame. If the animation is playing " +"backwards, the value transitions from [code]1.0[/code] to [code]0.0[/code]." +msgstr "" +"当前帧过渡到下一帧的进度值,在 [code]0.0[/code] 和 [code]1.0[/code] 之间。如" +"果动画是倒放的,则该值是从 [code]1.0[/code] 到 [code]0.0[/code]。" + msgid "The texture's drawing offset." msgstr "纹理的绘图偏移量。" msgid "" +"The speed scaling ratio. For example, if this value is [code]1[/code], then " +"the animation plays at normal speed. If it's [code]0.5[/code], then it plays " +"at half speed. If it's [code]2[/code], then it plays at double speed.\n" +"If set to a negative value, the animation is played in reverse. If set to " +"[code]0[/code], the animation will not advance." +msgstr "" +"速度缩放比。例如,如果该值为 [code]1[/code],则动画以正常速度播放。如果它是 " +"[code]0.5[/code],那么它会半速播放。如果是 [code]2[/code],则会以双倍速度播" +"放。\n" +"如果设置为负值,则动画反向播放。如果设置为[code]0[/code],则动画不会前进。" + +msgid "" "The [SpriteFrames] resource containing the animation(s). Allows you the " "option to load, edit, clear, make unique and save the states of the " "[SpriteFrames] resource." @@ -2554,18 +5896,74 @@ msgstr "" "包含动画的 [SpriteFrames] 资源。可以对 [SpriteFrames] 资源进行加载、编辑、清" "空、唯一化、保存状态等操作。" +msgid "Emitted when [member animation] changes." +msgstr "当 [member animation] 更改时发出。" + +msgid "" +"Emitted when the animation reaches the end, or the start if it is played in " +"reverse. When the animation finishes, it pauses the playback." +msgstr "" +"当动画到达结尾时,或者如果反向播放则到达起点时发出。当动画结束时,它会暂停播" +"放。" + +msgid "Emitted when the animation loops." +msgstr "当动画循环播放时发出。" + +msgid "Emitted when [member frame] changes." +msgstr "[member frame] 更改时发出。" + +msgid "Emitted when [member sprite_frames] changes." +msgstr "当 [member sprite_frames] 更改时发出。" + msgid "" "2D sprite node in 3D world, that can use multiple 2D textures for animation." msgstr "3D 世界中的 2D 精灵节点,可以使用多个 2D 纹理进行动画处理。" +msgid "" +"[AnimatedSprite3D] is similar to the [Sprite3D] node, except it carries " +"multiple textures as animation [member sprite_frames]. Animations are " +"created using a [SpriteFrames] resource, which allows you to import image " +"files (or a folder containing said files) to provide the animation frames " +"for the sprite. The [SpriteFrames] resource can be configured in the editor " +"via the SpriteFrames bottom panel." +msgstr "" +"[AnimatedSprite3D] 与 [Sprite3D] 节点类似,但是包含多张纹理,可用作动画 " +"[member sprite_frames]。动画使用 [SpriteFrames] 资源创建,可以导入图像文件" +"(或包含此类文件的文件夹)为该精灵提供动画帧。可以在编辑器的“动画帧”底部面板" +"中配置 [SpriteFrames] 资源。" + msgid "2D Sprite animation (also applies to 3D)" msgstr "2D 精灵动画(也适用于 3D)" msgid "Proxy texture for simple frame-based animations." -msgstr "基于简单帧动画的代理纹理。" +msgstr "用于简单帧动画的代理纹理。" -msgid "Sets the currently visible frame of the texture." -msgstr "设置纹理当前可见的帧。" +msgid "Returns the given [param frame]'s duration, in seconds." +msgstr "返回给定的 [param frame] 的持续时间,以秒为单位。" + +msgid "Returns the given frame's [Texture2D]." +msgstr "返回给定帧的 [Texture2D]。" + +msgid "" +"Sets the duration of any given [param frame]. The final duration is affected " +"by the [member speed_scale]. If set to [code]0[/code], the frame is skipped " +"during playback." +msgstr "" +"设置任何给定 [param frame] 的持续时间。最终的持续时间受 [member speed_scale] " +"影响。如果设置为 [code]0[/code],则该帧在播放过程中被跳过。" + +msgid "" +"Assigns a [Texture2D] to the given frame. Frame IDs start at 0, so the first " +"frame has ID 0, and the last frame of the animation has ID [member frames] - " +"1.\n" +"You can define any number of textures up to [constant MAX_FRAMES], but keep " +"in mind that only frames from 0 to [member frames] - 1 will be part of the " +"animation." +msgstr "" +"将 [Texture2D] 分配给给定的帧。帧 ID 从 0 开始,因此第一帧的 ID 为 0,动画的" +"最后一帧的 ID 为 [member frames] - 1。\n" +"您可以定义最多 [constant MAX_FRAMES] 个纹理,但要记住,只有 0 到 [member " +"frames] - 1 的帧会成为动画的一部分。" msgid "" "Number of frames to use in the animation. While you can create the frames " @@ -2593,40 +5991,327 @@ msgstr "" "current_frame])。将此属性更改为 [code]false[/code] 时,动画将从暂停处继续播" "放。" +msgid "" +"The animation speed is multiplied by this value. If set to a negative value, " +"the animation is played in reverse." +msgstr "动画速度将乘以该值。如果设置为负值,则动画反向播放。" + +msgid "" +"The maximum number of frames supported by [AnimatedTexture]. If you need " +"more frames in your animation, use [AnimationPlayer] or [AnimatedSprite2D]." +msgstr "" +"[AnimatedTexture] 支持的最大帧数。如果动画需要更多帧,请使用 " +"[AnimationPlayer] 或 [AnimatedSprite2D]。" + msgid "Contains data used to animate everything in the engine." msgstr "包含用于对引擎中所有内容进行动画处理的数据。" +msgid "" +"An Animation resource contains data used to animate everything in the " +"engine. Animations are divided into tracks, and each track must be linked to " +"a node. The state of that node can be changed through time, by adding timed " +"keys (events) to the track.\n" +"[codeblocks]\n" +"[gdscript]\n" +"# This creates an animation that makes the node \"Enemy\" move to the right " +"by\n" +"# 100 pixels in 0.5 seconds.\n" +"var animation = Animation.new()\n" +"var track_index = animation.add_track(Animation.TYPE_VALUE)\n" +"animation.track_set_path(track_index, \"Enemy:position:x\")\n" +"animation.track_insert_key(track_index, 0.0, 0)\n" +"animation.track_insert_key(track_index, 0.5, 100)\n" +"[/gdscript]\n" +"[csharp]\n" +"// This creates an animation that makes the node \"Enemy\" move to the right " +"by\n" +"// 100 pixels in 0.5 seconds.\n" +"var animation = new Animation();\n" +"int trackIndex = animation.AddTrack(Animation.TrackType.Value);\n" +"animation.TrackSetPath(trackIndex, \"Enemy:position:x\");\n" +"animation.TrackInsertKey(trackIndex, 0.0f, 0);\n" +"animation.TrackInsertKey(trackIndex, 0.5f, 100);\n" +"[/csharp]\n" +"[/codeblocks]\n" +"Animations are just data containers, and must be added to nodes such as an " +"[AnimationPlayer] to be played back. Animation tracks have different types, " +"each with its own set of dedicated methods. Check [enum TrackType] to see " +"available types.\n" +"[b]Note:[/b] For 3D position/rotation/scale, using the dedicated [constant " +"TYPE_POSITION_3D], [constant TYPE_ROTATION_3D] and [constant TYPE_SCALE_3D] " +"track types instead of [constant TYPE_VALUE] is recommended for performance " +"reasons." +msgstr "" +"Animation(动画)资源包含用于对引擎中的一切进行动画处理的数据。动画分为轨道," +"轨道必须与节点相连。向轨道添加定时关键帧(事件)后,节点的状态可以随时间变" +"化。\n" +"[codeblocks]\n" +"[gdscript]\n" +"# 创建动画,让“Enemy”节点在 0.5 秒内\n" +"# 向右移动 100 像素。\n" +"var animation = Animation.new()\n" +"var track_index = animation.add_track(Animation.TYPE_VALUE)\n" +"animation.track_set_path(track_index, \"Enemy:position:x\")\n" +"animation.track_insert_key(track_index, 0.0, 0)\n" +"animation.track_insert_key(track_index, 0.5, 100)\n" +"[/gdscript]\n" +"[csharp]\n" +"# 创建动画,让“Enemy”节点在 0.5 秒内\n" +"# 向右移动 100 像素。\n" +"var animation = new Animation();\n" +"int trackIndex = animation.AddTrack(Animation.TrackType.Value);\n" +"animation.TrackSetPath(trackIndex, \"Enemy:position:x\");\n" +"animation.TrackInsertKey(trackIndex, 0.0f, 0);\n" +"animation.TrackInsertKey(trackIndex, 0.5f, 100);\n" +"[/csharp]\n" +"[/codeblocks]\n" +"动画只是数据的容器,必须添加至 [AnimationPlayer] 等节点才能进行播放。动画轨道" +"分为不同的类型,不同的类型有各自不同的专属方法。可用的类型请查看 [enum " +"TrackType]。\n" +"[b]注意:[/b]对于 3D 的位置、旋转、缩放,推荐使用专门的 [constant " +"TYPE_POSITION_3D]、[constant TYPE_ROTATION_3D]、[constant TYPE_SCALE_3D] 轨道" +"类型,不要使用 [constant TYPE_VALUE],性能更高。" + +msgid "Animation documentation index" +msgstr "动画教程索引" + msgid "Adds a track to the Animation." msgstr "向动画添加轨道。" +msgid "" +"Returns the animation name at the key identified by [param key_idx]. The " +"[param track_idx] must be the index of an Animation Track." +msgstr "" +"返回由 [param key_idx] 标识的键处的动画名称。[param track_idx] 必须是动画轨道" +"的索引。" + +msgid "" +"Inserts a key with value [param animation] at the given [param time] (in " +"seconds). The [param track_idx] must be the index of an Animation Track." +msgstr "" +"在给定的 [param time](以秒为单位)插入一个值为 [param animation] 的键。" +"[param track_idx] 必须是动画轨道的索引。" + +msgid "" +"Sets the key identified by [param key_idx] to value [param animation]. The " +"[param track_idx] must be the index of an Animation Track." +msgstr "" +"将 [param key_idx] 标识的键设置为值 [param animation]。[param track_idx] 必须" +"是动画轨道的索引。" + +msgid "" +"Returns the end offset of the key identified by [param key_idx]. The [param " +"track_idx] must be the index of an Audio Track.\n" +"End offset is the number of seconds cut off at the ending of the audio " +"stream." +msgstr "" +"返回由 [param key_idx] 标识的键的结束偏移量。[param track_idx] 必须是音频轨道" +"的索引。\n" +"结束偏移量是在音频流结束时截断的秒数。" + +msgid "" +"Returns the start offset of the key identified by [param key_idx]. The " +"[param track_idx] must be the index of an Audio Track.\n" +"Start offset is the number of seconds cut off at the beginning of the audio " +"stream." +msgstr "" +"返回由 [param key_idx] 标识的键的起始偏移量。[param track_idx] 必须是音频轨道" +"的索引。\n" +"起始偏移量是在音频流开始时截断的秒数。" + +msgid "" +"Returns the audio stream of the key identified by [param key_idx]. The " +"[param track_idx] must be the index of an Audio Track." +msgstr "" +"返回由 [param key_idx] 标识的键的音频流。[param track_idx] 必须是音频轨道的索" +"引。" + +msgid "" +"Inserts an Audio Track key at the given [param time] in seconds. The [param " +"track_idx] must be the index of an Audio Track.\n" +"[param stream] is the [AudioStream] resource to play. [param start_offset] " +"is the number of seconds cut off at the beginning of the audio stream, while " +"[param end_offset] is at the ending." +msgstr "" +"在 [param time] 秒处插入音频轨道关键帧。[param track_idx] 必须是音频轨道的索" +"引。\n" +"[param stream] 是要播放的 [AudioStream] 资源。[param start_offset] 是音频流开" +"头截断的秒数,而 [param end_offset] 是在结尾处截断的秒数。" + +msgid "" +"Sets the end offset of the key identified by [param key_idx] to value [param " +"offset]. The [param track_idx] must be the index of an Audio Track." +msgstr "" +"将由 [param key_idx] 标识的键的结束偏移量设置为值 [param offset]。[param " +"track_idx] 必须是音频轨道的索引。" + +msgid "" +"Sets the start offset of the key identified by [param key_idx] to value " +"[param offset]. The [param track_idx] must be the index of an Audio Track." +msgstr "" +"将由 [param key_idx] 标识的键的起始偏移量设置为值 [param offset]。[param " +"track_idx] 必须是音频轨道的索引。" + +msgid "" +"Sets the stream of the key identified by [param key_idx] to value [param " +"stream]. The [param track_idx] must be the index of an Audio Track." +msgstr "" +"将由 [param key_idx] 标识的键的流设置为值 [param stream]。[param track_idx] " +"必须是音频轨道的索引。" + +msgid "" +"Sets whether the track will be blended with other animations. If [code]true[/" +"code], the audio playback volume changes depending on the blend value." +msgstr "" +"设置轨道是否将与其他动画混合。如果为 [code]true[/code],音频播放音量会根据混" +"合值而变化。" + +msgid "" +"Returns the in handle of the key identified by [param key_idx]. The [param " +"track_idx] must be the index of a Bezier Track." +msgstr "" +"返回由 [param key_idx] 识别的键的入点手柄,[param track_idx] 必须是贝赛尔曲线" +"轨道的索引。" + +msgid "" +"Returns the out handle of the key identified by [param key_idx]. The [param " +"track_idx] must be the index of a Bezier Track." +msgstr "" +"返回由 [param key_idx] 识别的键的出点手柄,[param track_idx] 必须是贝赛尔曲线" +"轨道的索引。" + +msgid "" +"Returns the value of the key identified by [param key_idx]. The [param " +"track_idx] must be the index of a Bezier Track." +msgstr "" +"返回由 [param key_idx] 识别的键的值,[param track_idx] 必须是贝塞尔轨道的索" +"引。" + +msgid "" +"Inserts a Bezier Track key at the given [param time] in seconds. The [param " +"track_idx] must be the index of a Bezier Track.\n" +"[param in_handle] is the left-side weight of the added Bezier curve point, " +"[param out_handle] is the right-side one, while [param value] is the actual " +"value at this point." +msgstr "" +"在给定的时间 [param time] 秒处插入贝塞尔轨道键。[param track_idx] 必须是贝塞" +"尔轨道的索引。\n" +"[param in_handle] 是添加的贝塞尔曲线点的左侧权重,[param out_handle] 是右侧权" +"重,而 [param value] 是这个点的实际值。" + +msgid "" +"Returns the interpolated value at the given [param time] (in seconds). The " +"[param track_idx] must be the index of a Bezier Track." +msgstr "" +"返回给定 [param time] 处的插值(以秒为单位)。[param track_idx] 必须是贝塞尔" +"轨道的索引。" + +msgid "" +"Sets the in handle of the key identified by [param key_idx] to value [param " +"in_handle]. The [param track_idx] must be the index of a Bezier Track." +msgstr "" +"将 [param key_idx] 所标识的键的入点手柄设置为 [param in_handle] 值。[param " +"track_idx] 必须是贝塞尔轨道的索引。" + +msgid "" +"Sets the out handle of the key identified by [param key_idx] to value [param " +"out_handle]. The [param track_idx] must be the index of a Bezier Track." +msgstr "" +"将由 [param key_idx] 确定的关键帧的出点手柄设置为 [param out_handle]。参数 " +"[param track_idx] 必须是贝塞尔轨道的索引。" + +msgid "" +"Sets the value of the key identified by [param key_idx] to the given value. " +"The [param track_idx] must be the index of a Bezier Track." +msgstr "" +"将 [param key_idx] 所标识的键值设置为给定值。[param track_idx] 必须是贝塞尔轨" +"道的索引。" + +msgid "Inserts a key in a given blend shape track. Returns the key index." +msgstr "在给定的混合形状轨道中插入一个关键帧。返回键索引。" + msgid "Clear the animation (clear all tracks and reset all)." msgstr "清除动画(清除所有轨道并重置所有)。" msgid "" +"Compress the animation and all its tracks in-place. This will make [method " +"track_is_compressed] return [code]true[/code] once called on this " +"[Animation]. Compressed tracks require less memory to be played, and are " +"designed to be used for complex 3D animations (such as cutscenes) imported " +"from external 3D software. Compression is lossy, but the difference is " +"usually not noticeable in real world conditions.\n" +"[b]Note:[/b] Compressed tracks have various limitations (such as not being " +"editable from the editor), so only use compressed animations if you actually " +"need them." +msgstr "" +"就地压缩动画及其所有轨道。这将使 [method track_is_compressed] 一旦在这个 " +"[Animation] 上被调用就会返回 [code]true[/code]。压缩后的轨道在播放时需要更少" +"的内存,并且这被设计用于从外部3D软件导入的复杂的3D动画(比如过场动画)。压缩" +"是有损失的,但现实中通常不会注意到这种差异。\n" +"[b]注意:[/b]压缩轨道有各种限制(比如不能从编辑器中编辑),所以只有在你真正需" +"要时才使用压缩动画。" + +msgid "" +"Adds a new track that is a copy of the given track from [param to_animation]." +msgstr "添加一个新的轨道,这个轨道是给定轨道 [param to_animation] 的副本。" + +msgid "" "Returns the index of the specified track. If the track is not found, return " "-1." msgstr "返回指定轨迹的索引。如果没有找到,返回 -1。" msgid "Returns the amount of tracks in the animation." -msgstr "返回动画中的曲目量。" +msgstr "返回动画中的轨道数。" msgid "Returns the method name of a method track." -msgstr "返回一个方法轨迹的方法名。" +msgstr "返回一个方法轨道的方法名。" msgid "" "Returns the arguments values to be called on a method track for a given key " "in a given track." -msgstr "返回给定轨道中给定键的方法轨道上要调用的参数值。" +msgstr "返回给定方法轨道中给定键的方法要调用的参数值。" + +msgid "Inserts a key in a given 3D position track. Returns the key index." +msgstr "在给定的 3D 位置轨道中插入关键帧。返回该关键帧的索引。" msgid "Removes a track by specifying the track index." msgstr "通过指定轨道索引来移除一个轨道。" +msgid "Inserts a key in a given 3D rotation track. Returns the key index." +msgstr "在给定的 3D 旋转轨道中插入关键帧。返回该关键帧的索引。" + +msgid "Inserts a key in a given 3D scale track. Returns the key index." +msgstr "在给定的 3D 缩放轨道中插入关键帧。返回该关键帧的索引。" + +msgid "" +"Finds the key index by time in a given track. Optionally, only find it if " +"the approx/exact time is given." +msgstr "" +"按时间查找给定轨道中的关键帧索引。也可选择只在给定大约/准确时间的情况下查找。" + +msgid "" +"Returns [code]true[/code] if the track at [param track_idx] wraps the " +"interpolation loop. New tracks wrap the interpolation loop by default." +msgstr "" +"如果 [param track_idx] 处的轨道环绕插值循环,则返回 [code]true[/code]。新建的" +"轨道默认都会环绕插值循环。" + msgid "Returns the interpolation type of a given track." msgstr "返回给定轨道的插值类型。" +msgid "Returns the number of keys in a given track." +msgstr "返回给定轨道中关键帧的数量。" + msgid "Returns the time at which the key is located." msgstr "返回关键帧所在的时间。" +msgid "" +"Returns the transition curve (easing) for a specific key (see the built-in " +"math function [method @GlobalScope.ease])." +msgstr "" +"返回给定关键帧的过渡曲线(缓动)(见内置数学函数 [method @GlobalScope." +"ease])。" + msgid "Returns the value of a given key in a given track." msgstr "返回给定轨道中给定关键帧的值。" @@ -2639,6 +6324,20 @@ msgstr "" msgid "Gets the type of a track." msgstr "获取轨道的类型。" +msgid "Inserts a generic key in a given track. Returns the key index." +msgstr "在给定的轨道中插入一个通用关键帧。返回关键帧索引。" + +msgid "" +"Returns [code]true[/code] if the track is compressed, [code]false[/code] " +"otherwise. See also [method compress]." +msgstr "" +"如果轨道被压缩,则返回 [code]true[/code],否则返回 [code]false[/code]。另见 " +"[method compress]。" + +msgid "" +"Returns [code]true[/code] if the track at index [param track_idx] is enabled." +msgstr "如果启用了索引 [param track_idx] 处的轨道,则返回 [code]true[/code]。" + msgid "" "Returns [code]true[/code] if the given track is imported. Else, return " "[code]false[/code]." @@ -2649,24 +6348,44 @@ msgstr "" msgid "Moves a track down." msgstr "将轨道下移。" +msgid "" +"Changes the index position of track [param track_idx] to the one defined in " +"[param to_idx]." +msgstr "将轨道 [param track_idx] 的索引位置改为 [param to_idx] 中定义的位置。" + msgid "Moves a track up." msgstr "将轨道上移。" msgid "Removes a key by index in a given track." msgstr "在指定的轨道上按索引移除一个键。" +msgid "Removes a key at [param time] in a given track." +msgstr "在给定轨道中的 [param time] 移除一个键。" + msgid "Enables/disables the given track. Tracks are enabled by default." -msgstr "启用/禁用指定的轨道。轨道默认为启用。" +msgstr "启用/禁用给定的轨道。轨道默认为启用。" msgid "Sets the given track as imported or not." msgstr "将指定的轨道设置为导入或不导入。" +msgid "" +"If [code]true[/code], the track at [param track_idx] wraps the interpolation " +"loop." +msgstr "如果为 [code]true[/code],则 [param track_idx] 处的轨道环绕插值循环。" + msgid "Sets the interpolation type of a given track." -msgstr "设置指定轨道的内插类型。" +msgstr "设置指定轨道的插值类型。" msgid "Sets the time of an existing key." msgstr "设置现有关键帧的时间。" +msgid "" +"Sets the transition curve (easing) for a specific key (see the built-in math " +"function [method @GlobalScope.ease])." +msgstr "" +"设置指定关键帧的过渡曲线(缓动)(参阅内置数学函数 [method @GlobalScope." +"ease])。" + msgid "Sets the value of an existing key." msgstr "设置现有关键帧的值。" @@ -2684,9 +6403,22 @@ msgstr "" "例如,[code]\"character/skeleton:ankle\"[/code] 或 [code]\"character/mesh:" "transform/local\"[/code]。" +msgid "" +"Swaps the track [param track_idx]'s index position with the track [param " +"with_idx]." +msgstr "" +"将轨道 [param track_idx] 的索引位置与轨道 [param with_idx] 的索引位置互换。" + msgid "Returns the update mode of a value track." msgstr "返回值轨道的更新模式。" +msgid "" +"Returns the interpolated value at the given time (in seconds). The [param " +"track_idx] must be the index of a value track." +msgstr "" +"返回位于给定时间(以秒为单位)的插值后的值。[param track_idx] 必须是值轨道的" +"索引。" + msgid "Sets the update mode (see [enum UpdateMode]) of a value track." msgstr "设置值轨道的更新模式(请参阅 [enum UpdateMode])。" @@ -2699,9 +6431,41 @@ msgstr "" "[b]注意:[/b]长度不以最后一个关键帧为界,因为这个关键帧可能位于结束前或结束" "后,以确保正确的插值和循环。" +msgid "" +"Determines the behavior of both ends of the animation timeline during " +"animation playback. This is used for correct interpolation of animation " +"cycles, and for hinting the player that it must restart the animation." +msgstr "" +"确定动画播放期间动画时间轴两端的行为。 这用于动画循环的正确插值,以及提示播放" +"器必须重新启动动画。" + msgid "The animation step value." msgstr "动画步长值。" +msgid "" +"Value tracks set values in node properties, but only those which can be " +"interpolated. For 3D position/rotation/scale, using the dedicated [constant " +"TYPE_POSITION_3D], [constant TYPE_ROTATION_3D] and [constant TYPE_SCALE_3D] " +"track types instead of [constant TYPE_VALUE] is recommended for performance " +"reasons." +msgstr "" +"值轨道设置节点属性中的值,但仅限于那些可以被插值的属性。对于 3D 位置/旋转/缩" +"放,出于性能原因,建议使用专用的 [constant TYPE_POSITION_3D]、[constant " +"TYPE_ROTATION_3D] 和 [constant TYPE_SCALE_3D] 轨道类型而不是 [constant " +"TYPE_VALUE]。" + +msgid "3D position track (values are stored in [Vector3]s)." +msgstr "3D 位置轨道(值存储在 [Vector3] 中)。" + +msgid "3D rotation track (values are stored in [Quaternion]s)." +msgstr "3D 旋转轨道(值存储在 [Quaternion] 中)。" + +msgid "3D scale track (values are stored in [Vector3]s)." +msgstr "3D 缩放轨道(值存储在 [Vector3] 中)。" + +msgid "Blend shape track." +msgstr "混合形状轨道。" + msgid "Method tracks call functions with given arguments per key." msgstr "方法轨道会在各个关键帧上使用给定参数的调用函数。" @@ -2730,6 +6494,35 @@ msgstr "无插值(最邻近的值)。" msgid "Linear interpolation." msgstr "线性插值。" +msgid "" +"Cubic interpolation. This looks smoother than linear interpolation, but is " +"more expensive to interpolate. Stick to [constant INTERPOLATION_LINEAR] for " +"complex 3D animations imported from external software, even if it requires " +"using a higher animation framerate in return." +msgstr "" +"三次插值。这看起来比线性插值更平滑,但插值成本更高。对于从外部软件导入的复杂 " +"3D 动画,坚持使用 [constant INTERPOLATION_LINEAR],即使它需要使用更高的动画帧" +"率作为回报。" + +msgid "" +"Linear interpolation with shortest path rotation.\n" +"[b]Note:[/b] The result value is always normalized and may not match the key " +"value." +msgstr "" +"具有最短路径旋转的线性插值。\n" +"[b]注意:[/b]结果值总是归一化的,可能与关键帧的值不匹配。" + +msgid "" +"Cubic interpolation with shortest path rotation.\n" +"[b]Note:[/b] The result value is always normalized and may not match the key " +"value." +msgstr "" +"具有最短路径旋转的三次插值。\n" +"[b]注意:[/b]结果值总是归一化的,可能与关键帧的值不匹配。" + +msgid "Update between keyframes and hold the value." +msgstr "在关键帧之间更新并保持值。" + msgid "Update at the keyframes." msgstr "在关键帧更新。" @@ -2740,9 +6533,104 @@ msgstr "" "与线性插值相同,但如果第一个关键帧不在第 0 秒,则会从当前值进行插值(即在运行" "时动态插值)。" +msgid "At both ends of the animation, the animation will stop playing." +msgstr "在动画的两端,动画将停止播放。" + +msgid "" +"At both ends of the animation, the animation will be repeated without " +"changing the playback direction." +msgstr "在动画的两端,动画会在不改变播放方向的情况下重复播放。" + +msgid "Repeats playback and reverse playback at both ends of the animation." +msgstr "在动画的两端重复进行播放和反向播放。" + +msgid "This flag indicates that the animation proceeds without any looping." +msgstr "该标志指示动画在没有任何循环的情况下继续进行。" + +msgid "" +"This flag indicates that the animation has reached the end of the animation " +"and just after loop processed." +msgstr "该标志表示动画已到达动画的末尾并且刚好在循环处理之后。" + +msgid "" +"This flag indicates that the animation has reached the start of the " +"animation and just after loop processed." +msgstr "该标志表示动画已经到达动画的开始并且刚好在循环处理之后。" + +msgid "Finds the nearest time key." +msgstr "查找最近的时间键。" + +msgid "Finds only the key with approximating the time." +msgstr "仅查找与时间相近的键。" + +msgid "Finds only the key with matching the time." +msgstr "仅查找与时间匹配的键。" + +msgid "Container for [Animation] resources." +msgstr "[Animation] 资源的容器。" + +msgid "" +"An animation library stores a set of animations accessible through " +"[StringName] keys, for use with [AnimationPlayer] nodes." +msgstr "" +"动画库存储一组可通过 [StringName] 键访问的动画,可用于 [AnimationPlayer] 节" +"点。" + msgid "Animation tutorial index" msgstr "动画教程索引" +msgid "" +"Adds the [param animation] to the library, accessible by the key [param " +"name]." +msgstr "将 [param animation] 添加到库中,可通过键 [param name] 访问。" + +msgid "" +"Returns the [Animation] with the key [param name]. If the animation does not " +"exist, [code]null[/code] is returned and an error is logged." +msgstr "" +"返回带有键 [param name] 的 [Animation]。如果动画不存在,则返回 [code]null[/" +"code] 并记录错误。" + +msgid "Returns the keys for the [Animation]s stored in the library." +msgstr "返回库中存储的 [Animation] 的键。" + +msgid "" +"Returns [code]true[/code] if the library stores an [Animation] with [param " +"name] as the key." +msgstr "" +"如果该库存储了以 [param name] 作为键的 [Animation],则返回 [code]true[/" +"code]。" + +msgid "Removes the [Animation] with the key [param name]." +msgstr "使用键 [param name] 移除 [Animation]。" + +msgid "" +"Changes the key of the [Animation] associated with the key [param name] to " +"[param newname]." +msgstr "将与键 [param name] 关联的 [Animation] 的键更改为 [param newname]。" + +msgid "Emitted when an [Animation] is added, under the key [param name]." +msgstr "在键 [param name] 下添加 [Animation] 时发出。" + +msgid "" +"Emitted when there's a change in one of the animations, e.g. tracks are " +"added, moved or have changed paths. [param name] is the key of the animation " +"that was changed.\n" +"See also [signal Resource.changed], which this acts as a relay for." +msgstr "" +"当其中一个动画发生变化时发出,例如轨道被添加、移动,或路径被更改。[param " +"name] 是被改变的动画的键。\n" +"另见 [signal Resource.changed],本信号充当该信号的中继。" + +msgid "" +"Emitted when an [Animation] stored with the key [param name] is removed." +msgstr "当使用键 [param name] 存储的 [Animation] 被移除时发出。" + +msgid "" +"Emitted when the key for an [Animation] is changed, from [param name] to " +"[param to_name]." +msgstr "当 [Animation] 的键从 [param name] 更改为 [param to_name] 时发出。" + msgid "Base resource for [AnimationTree] nodes." msgstr "[AnimationTree] 节点的基础资源。" @@ -2768,6 +6656,13 @@ msgstr "" msgid "" "When inheriting from [AnimationRootNode], implement this virtual method to " +"return a child node by its [param name]." +msgstr "" +"继承 [AnimationRootNode] 时,实现这个虚方法可以根据名称 [param name] 来返回对" +"应的子节点。" + +msgid "" +"When inheriting from [AnimationRootNode], implement this virtual method to " "return all children nodes in order as a [code]name: node[/code] dictionary." msgstr "" "继承 [AnimationRootNode] 时,实现这个虚方法可以用 [code]名称:节点[/code] 字典" @@ -2775,6 +6670,14 @@ msgstr "" msgid "" "When inheriting from [AnimationRootNode], implement this virtual method to " +"return the default value of a [param parameter]. Parameters are custom local " +"memory used for your nodes, given a resource can be reused in multiple trees." +msgstr "" +"继承 [AnimationRootNode] 时,实现这个虚方法可以返回参数“[param parameter]”的" +"默认值。参数是节点的自定义本地存储,资源可以在多个树中重用。" + +msgid "" +"When inheriting from [AnimationRootNode], implement this virtual method to " "return a list of the properties on this node. Parameters are custom local " "memory used for your nodes, given a resource can be reused in multiple " "trees. Format is similar to [method Object.get_property_list]." @@ -2792,12 +6695,78 @@ msgstr "" "节点上显示过滤器编辑。" msgid "" +"When inheriting from [AnimationRootNode], implement this virtual method to " +"return whether the [param parameter] is read-only. Parameters are custom " +"local memory used for your nodes, given a resource can be reused in multiple " +"trees." +msgstr "" +"继承 [AnimationRootNode] 时,实现这个虚方法可以返回参数 [param parameter] 是" +"否只读。参数是节点的自定义本地存储,资源可以在多个树中重用。" + +msgid "" +"When inheriting from [AnimationRootNode], implement this virtual method to " +"run some code when this node is processed. The [param time] parameter is a " +"relative delta, unless [param seek] is [code]true[/code], in which case it " +"is absolute.\n" +"Here, call the [method blend_input], [method blend_node] or [method " +"blend_animation] functions. You can also use [method get_parameter] and " +"[method set_parameter] to modify local memory.\n" +"This function should return the time left for the current animation to " +"finish (if unsure, pass the value from the main blend being called)." +msgstr "" +"继承 [AnimationRootNode] 时,实现这个虚方法可以在这个节点进行处理时执行代码。" +"参数 [param time] 是相对增量,除非 [param seek] 为 [code]true[/code],此时为" +"绝对增量。\n" +"请在此处调用 [method blend_input]、[method blend_node] 或 [method " +"blend_animation] 函数。你也可以使用 [method get_parameter] 和 [method " +"set_parameter] 来修改本地存储。\n" +"这个函数应当返回当前动画还需多少时间完成(不确定的话,请传递调用主混合的" +"值)。" + +msgid "" +"Adds an input to the node. This is only useful for nodes created for use in " +"an [AnimationNodeBlendTree]. If the addition fails, returns [code]false[/" +"code]." +msgstr "" +"为节点添加一个输入。这只对创建用于 [AnimationNodeBlendTree] 的节点有用。如果" +"添加失败,返回 [code]false[/code]。" + +msgid "" +"Blend an animation by [param blend] amount (name must be valid in the linked " +"[AnimationPlayer]). A [param time] and [param delta] may be passed, as well " +"as whether [param seeked] happened.\n" +"A [param looped_flag] is used by internal processing immediately after the " +"loop. See also [enum Animation.LoopedFlag]." +msgstr "" +"按 [param blend] 量混合一个动画(名称必须在链接的 [AnimationPlayer] 中有" +"效)。可以传入时间 [param time] 和增量 [param delta],以及表示是否发生寻道的 " +"[param seeked]。\n" +"[param looped_flag] 在循环后立即由内部处理使用。另见 [enum Animation." +"LoopedFlag]。" + +msgid "" +"Blend an input. This is only useful for nodes created for an " +"[AnimationNodeBlendTree]. The [param time] parameter is a relative delta, " +"unless [param seek] is [code]true[/code], in which case it is absolute. A " +"filter mode may be optionally passed (see [enum FilterAction] for options)." +msgstr "" +"混合一个输入。这只对为 [AnimationNodeBlendTree] 创建的节点有用。时间参数 " +"[param time] 是一个相对的增量,除非 [param seek] 是 [code]true[/code],此时它" +"是绝对的。可以选择传入过滤模式(选项请参阅 [enum FilterAction])。" + +msgid "" "Blend another animation node (in case this node contains children animation " "nodes). This function is only useful if you inherit from [AnimationRootNode] " "instead, else editors will not display your node for addition." msgstr "" "混合另一个动画节点(在这个节点包含子动画节点的情况下)。这个函数只有在你继承 " -"[AnimationRootNode] 时才有用,否则编辑器将不会显示你的节点进行添加。" +"[AnimationRootNode] 时才有用,否则编辑器将不会显示你的节点以供添加。" + +msgid "" +"Returns the input index which corresponds to [param name]. If not found, " +"returns [code]-1[/code]." +msgstr "" +"返回与名称 [param name] 相关的输入索引,如果不存在则返回 [code]-1[/code]。" msgid "" "Amount of inputs in this node, only useful for nodes that go into " @@ -2815,7 +6784,7 @@ msgstr "" "中重复使用。" msgid "Returns whether the given path is filtered." -msgstr "返回是否对给定的路径进行过滤。" +msgstr "返回给定路径是否被过滤。" msgid "Removes an input, call this only when inactive." msgstr "移除输入,仅在处于非活动状态时调用此输入。" @@ -2824,6 +6793,13 @@ msgid "Adds or removes a path for the filter." msgstr "添加或移除筛选器的路径。" msgid "" +"Sets the name of the input at the given [param input] index. If the setting " +"fails, returns [code]false[/code]." +msgstr "" +"在给定的 [param input] 索引处设置输入的名称。如果设置失败,返回 [code]false[/" +"code]。" + +msgid "" "Sets a custom parameter. These are used as local memory, because resources " "can be reused across the tree or scenes." msgstr "" @@ -2833,6 +6809,38 @@ msgstr "" msgid "If [code]true[/code], filtering is enabled." msgstr "如果为 [code]true[/code],则启用筛选功能。" +msgid "" +"Emitted by nodes that inherit from this class and that have an internal tree " +"when one of their nodes removes. The nodes that emit this signal are " +"[AnimationNodeBlendSpace1D], [AnimationNodeBlendSpace2D], " +"[AnimationNodeStateMachine], and [AnimationNodeBlendTree]." +msgstr "" +"由继承自该类的节点发出,并且当其中一个节点移除时具有内部树。发出此信号的节点" +"可以是 [AnimationNodeBlendSpace1D]、[AnimationNodeBlendSpace2D]、" +"[AnimationNodeStateMachine] 和 [AnimationNodeBlendTree]。" + +msgid "" +"Emitted by nodes that inherit from this class and that have an internal tree " +"when one of their node names changes. The nodes that emit this signal are " +"[AnimationNodeBlendSpace1D], [AnimationNodeBlendSpace2D], " +"[AnimationNodeStateMachine], and [AnimationNodeBlendTree]." +msgstr "" +"由继承自该类的节点发出,并且当其中一个节点名称更改时具有内部树。发出此信号的" +"节点可以是 [AnimationNodeBlendSpace1D]、[AnimationNodeBlendSpace2D]、" +"[AnimationNodeStateMachine] 和 [AnimationNodeBlendTree]。" + +msgid "" +"Emitted by nodes that inherit from this class and that have an internal tree " +"when one of their nodes changes. The nodes that emit this signal are " +"[AnimationNodeBlendSpace1D], [AnimationNodeBlendSpace2D], " +"[AnimationNodeStateMachine], [AnimationNodeBlendTree] and " +"[AnimationNodeTransition]." +msgstr "" +"由继承自该类的节点发出,并且当其一个节点发生变化时具有内部树。发出此信号的节" +"点可以是 [AnimationNodeBlendSpace1D]、[AnimationNodeBlendSpace2D]、" +"[AnimationNodeStateMachine]、[AnimationNodeBlendTree] 和 " +"[AnimationNodeTransition]。" + msgid "Do not use filtering." msgstr "不要使用筛选功能。" @@ -2875,19 +6883,19 @@ msgstr "" "内的值,将三个动画中的两个动画加法混合在一起。\n" "这个节点有三个输入。\n" "- 要添加到基础动画中的动画\n" -"- 当混合量在 [code][-1.0,0.0][/code] 范围内时,添加动画进行混合。\n" -"- 当混合量在 [code][0.0,1.0][/code] 范围内时,添加动画进行混合" +"- 当混合量在 [code][-1.0,0.0][/code] 范围内时,-add 进行混合。\n" +"- 当混合量在 [code][0.0,1.0][/code] 范围内时,+add 进行混合" msgid "Input animation to use in an [AnimationNodeBlendTree]." -msgstr "输入要在 [AnimationNodeBlendTree] 中使用的动画。" +msgstr "要在 [AnimationNodeBlendTree] 中使用的输入动画。" msgid "" "A resource to add to an [AnimationNodeBlendTree]. Only features one output " "set using the [member animation] property. Use it as an input for " "[AnimationNode] that blend animations together." msgstr "" -"添加到 [AnimationNodeBlendTree] 的资源。只具有一个使用 [member animation] 属" -"性的输出集。将其作为 [AnimationNode] 的输入,将动画融合在一起。" +"一种添加到 [AnimationNodeBlendTree] 的资源。仅使用 [member animation] 属性设" +"置一个输出集。将其作为 [AnimationNode] 的输入,将动画混合在一起。" msgid "3D Platformer Demo" msgstr "3D 平台跳跃演示" @@ -2898,6 +6906,9 @@ msgid "" msgstr "" "作为输出使用的动画。它是 [member AnimationTree.anim_player] 提供的动画之一。" +msgid "Determines the playback direction of the animation." +msgstr "确定动画的播放方向。" + msgid "Blends two animations linearly inside of an [AnimationNodeBlendTree]." msgstr "在 [AnimationNodeBlendTree] 中将两个动画进行线性混合。" @@ -2924,12 +6935,12 @@ msgid "" "- A +blend animation to blend with when the blend amount is in the [code]" "[0.0, 1.0][/code] range" msgstr "" -"添加到 [AnimationNodeBlendTree] 的资源。根据[code][-1.0,1.0][/code]范围内的" -"值,将三个动画中的两个动画线性地混合在一起。\n" -"这个节点有三个输入。\n" +"一种添加到 [AnimationNodeBlendTree] 的资源。根据范围在 [code][-1.0,1.0][/" +"code] 内的值,将三个动画中的两个动画,线性地混合在一起。\n" +"这个节点有三个输入:\n" "- 基础动画\n" -"- 当混合量在[code][-1.0,0.0][/code]范围内时,使用-混合动画进行混合。\n" -"- 当混合量在[code][0.0,1.0][/code]范围内时,要使用+混合动画进行混合" +"- 当混合量在 [code][-1.0,0.0][/code] 范围内时,使用 -blend 动画进行混合。\n" +"- 当混合量在 [code][0.0,1.0][/code] 范围内时,使用 +blend 动画进行混合" msgid "" "Blends linearly between two of any number of [AnimationNode] of any type " @@ -2950,13 +6961,41 @@ msgstr "" "可添加到 [AnimationNodeBlendTree] 的资源。\n" "这是一个虚拟轴,您可以使用 [method add_blend_point] 在上面添加任何类型的 " "[AnimationNode]。\n" -"输出最接近节点当前值的两个 [AnimationNode] 的线性混合。\n" -"您可以使用 [member min_space] 和 [member max_space] 来设置轴的外延。" +"输出最接近节点当前值的两个 [AnimationNode] 之间的线性混合。\n" +"您可以使用 [member min_space] 和 [member max_space] 来设置轴的范围。" + +msgid "" +"Adds a new point that represents a [param node] on the virtual axis at a " +"given position set by [param pos]. You can insert it at a specific index " +"using the [param at_index] argument. If you use the default value for [param " +"at_index], the point is inserted at the end of the blend points array." +msgstr "" +"在虚拟轴上 [param pos] 设定的给定位置,添加一个新点代表 [param node]。您可以" +"使用 [param at_index] 参数在特定的索引处插入新点。如果您使用 [param " +"at_index] 的默认值,该点会被插入到混合点数组的末尾。" msgid "Returns the number of points on the blend axis." msgstr "返回混合轴上的点的数量。" msgid "" +"Returns the [AnimationNode] referenced by the point at index [param point]." +msgstr "返回索引 [param point] 处的点所引用的 [AnimationNode]。" + +msgid "Returns the position of the point at index [param point]." +msgstr "返回索引 [param point] 处的点的位置。" + +msgid "Removes the point at index [param point] from the blend axis." +msgstr "从混合轴移除索引 [param point] 处的点。" + +msgid "" +"Changes the [AnimationNode] referenced by the point at index [param point]." +msgstr "更改索引 [param point] 处的点所引用的 [AnimationNode]。" + +msgid "" +"Updates the position of the point at index [param point] on the blend axis." +msgstr "更新混合轴上索引 [param point] 处的点的位置。" + +msgid "" "Controls the interpolation between animations. See [enum BlendMode] " "constants." msgstr "控制动画之间的插值。见 [enum BlendMode] 常量。" @@ -2964,21 +7003,30 @@ msgstr "控制动画之间的插值。见 [enum BlendMode] 常量。" msgid "" "The blend space's axis's upper limit for the points' position. See [method " "add_blend_point]." -msgstr "混合空间的轴的点的位置上限。见 [method add_blend_point]。" +msgstr "用于点位置的混合空间轴的上限。见 [method add_blend_point]。" msgid "" "The blend space's axis's lower limit for the points' position. See [method " "add_blend_point]." -msgstr "混合空间的轴的点的位置下限。见 [method add_blend_point]。" +msgstr "用于点位置的混合空间轴的下限。见 [method add_blend_point]。" msgid "Position increment to snap to when moving a point on the axis." msgstr "当在轴上移动一个点时,要捕捉到的位置增量。" +msgid "" +"If [code]false[/code], the blended animations' frame are stopped when the " +"blend value is [code]0[/code].\n" +"If [code]true[/code], forcing the blended animations to advance frame." +msgstr "" +"如果为 [code]false[/code],则当混合值为 [code]0[/code] 时,停止混合动画的" +"帧。\n" +"如果为 [code]true[/code],则强制混合动画以前进帧。" + msgid "Label of the virtual axis of the blend space." msgstr "混合空间虚拟轴的标签。" msgid "The interpolation between animations is linear." -msgstr "动画之间的插点是线性的。" +msgstr "动画之间的插值是线性的。" msgid "" "The blend space plays the animation of the node the blending position is " @@ -2995,7 +7043,7 @@ msgstr "" msgid "" "Blends linearly between three [AnimationNode] of any type placed in a 2D " "space." -msgstr "在 2D 空间中放置的三个任意类型的 [AnimationNode] 之间线性融合。" +msgstr "在 2D 空间中放置的三个任意类型的 [AnimationNode] 之间线性混合。" msgid "" "A resource to add to an [AnimationNodeBlendTree].\n" @@ -3012,13 +7060,50 @@ msgstr "" "auto_triangles] 设置为 [code]true[/code] 来自动进行三角测量。否则,请使用 " "[method add_triangle] 和 [method remove_triangle] 手工创建混合空间。" +msgid "" +"Adds a new point that represents a [param node] at the position set by " +"[param pos]. You can insert it at a specific index using the [param " +"at_index] argument. If you use the default value for [param at_index], the " +"point is inserted at the end of the blend points array." +msgstr "" +"在 [param pos] 设定的位置添加一个代表 [param node] 的新点。您可以使用 [param " +"at_index] 参数将它插入到特定的索引中。如果您使用 [param at_index] 的默认值," +"这个点会被插入到混合点数组的末尾。" + +msgid "" +"Creates a new triangle using three points [param x], [param y], and [param " +"z]. Triangles can overlap. You can insert the triangle at a specific index " +"using the [param at_index] argument. If you use the default value for [param " +"at_index], the point is inserted at the end of the blend points array." +msgstr "" +"使用三个点 [param x]、[param y] 和 [param z] 创建一个新三角形。三角形可以重" +"叠。可以使用 [param at_index] 参数在特定索引处插入三角形。如果使用 [param " +"at_index] 的默认值,该点将插入到混合点数组的末尾。" + msgid "Returns the number of points in the blend space." msgstr "返回混合空间中的点的数量。" +msgid "" +"Returns the [AnimationRootNode] referenced by the point at index [param " +"point]." +msgstr "返回索引 [param point] 处的点所引用的 [AnimationRootNode]。" + msgid "Returns the number of triangles in the blend space." msgstr "返回混合空间中三角形的数量。" msgid "" +"Returns the position of the point at index [param point] in the triangle of " +"index [param triangle]." +msgstr "" +"返回索引 [param point] 处的点在索引 [param triangle] 的三角形中的位置。" + +msgid "Removes the point at index [param point] from the blend space." +msgstr "从混合空间中移除索引 [param point] 处的点。" + +msgid "Removes the triangle at index [param triangle] from the blend space." +msgstr "从混合空间中移除索引 [param triangle] 处的三角形。" + +msgid "" "If [code]true[/code], the blend space is triangulated automatically. The " "mesh updates every time you add or remove points with [method " "add_blend_point] and [method remove_blend_point]." @@ -3030,15 +7115,17 @@ msgstr "" msgid "" "The blend space's X and Y axes' upper limit for the points' position. See " "[method add_blend_point]." -msgstr "混合空间的 X 轴和 Y 轴的点的位置上限。见 [method add_blend_point]。" +msgstr "" +"用于点的位置的混合空间的 X 轴和 Y 轴的上限。请参阅 [method add_blend_point]。" msgid "" "The blend space's X and Y axes' lower limit for the points' position. See " "[method add_blend_point]." -msgstr "混合空间的 X 轴和 Y 轴的点的位置下限。见 [method add_blend_point]。" +msgstr "" +"用于点的位置的混合空间的 X 轴和 Y 轴的下限。请参阅 [method add_blend_point]。" msgid "Position increment to snap to when moving a point." -msgstr "移动点时要对齐的位置增量。" +msgstr "移动点时要吸附到的位置增量。" msgid "Name of the blend space's X axis." msgstr "混合空间 X 轴的名称。" @@ -3066,9 +7153,33 @@ msgstr "" "最常用的根之一。\n" "默认会创建一个名为 [code]output[/code] 的 [AnimationNodeOutput] 节点。" +msgid "" +"Adds an [AnimationNode] at the given [param position]. The [param name] is " +"used to identify the created sub-node later." +msgstr "" +"在给定的 [param position] 添加一个 [AnimationNode]。[param name] 用于稍后识别" +"该创建的子节点。" + +msgid "" +"Connects the output of an [AnimationNode] as input for another " +"[AnimationNode], at the input port specified by [param input_index]." +msgstr "" +"连接一个 [AnimationNode] 的输出作为另一个 [AnimationNode] 的输入,连接在 " +"[param input_index] 指定的输入端口。" + msgid "Disconnects the node connected to the specified input." msgstr "断开连接到指定输入端的节点。" +msgid "Returns the sub-node with the specified [param name]." +msgstr "返回名称为 [param name] 的子节点。" + +msgid "Returns the position of the sub-node with the specified [param name]." +msgstr "返回名称为 [param name] 的子节点的位置。" + +msgid "" +"Returns [code]true[/code] if a sub-node with specified [param name] exists." +msgstr "如果存在名称为 [param name] 的子节点,则返回 [code]true[/code]。" + msgid "Removes a sub-node." msgstr "移除一个子节点。" @@ -3081,6 +7192,9 @@ msgstr "修改子节点的位置。" msgid "The global offset of all sub-nodes." msgstr "所有子节点的全局偏移量。" +msgid "Emitted when the input port information is changed." +msgstr "当输入端口信息发生更改时发出。" + msgid "The connection was successful." msgstr "连接成功。" @@ -3102,19 +7216,6 @@ msgstr "指定的连接已经存在。" msgid "Plays an animation once in [AnimationNodeBlendTree]." msgstr "在 [AnimationNodeBlendTree] 中播放一次动画。" -msgid "" -"A resource to add to an [AnimationNodeBlendTree]. This node will execute a " -"sub-animation and return once it finishes. Blend times for fading in and out " -"can be customized, as well as filters." -msgstr "" -"可添加到 [AnimationNodeBlendTree] 的资源。这个节点将执行一个子动画,并在完成" -"后返回。可以自定义淡入和淡出的混合时间,以及过滤器。" - -msgid "" -"If [code]true[/code], the sub-animation will restart automatically after " -"finishing." -msgstr "如果为 [code]true[/code],则子动画完成后会自动重新开始。" - msgid "The delay after which the automatic restart is triggered, in seconds." msgstr "触发自动重启的延迟时间,以秒为单位。" @@ -3132,11 +7233,51 @@ msgstr "可添加到 [AnimationNodeBlendTree] 的通用输出节点。" msgid "State machine for control of animations." msgstr "用于控制动画的状态机。" +msgid "" +"Contains multiple nodes representing animation states, connected in a graph. " +"Node transitions can be configured to happen automatically or via code, " +"using a shortest-path algorithm. Retrieve the " +"[AnimationNodeStateMachinePlayback] object from the [AnimationTree] node to " +"control it programmatically.\n" +"[b]Example:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"var state_machine = $AnimationTree.get(\"parameters/playback\")\n" +"state_machine.travel(\"some_state\")\n" +"[/gdscript]\n" +"[csharp]\n" +"var stateMachine = GetNode<AnimationTree>(\"AnimationTree\")." +"Get(\"parameters/playback\") as AnimationNodeStateMachinePlayback;\n" +"stateMachine.Travel(\"some_state\");\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"包含表示动画状态的多个节点,以图的形式连接。可以使用最短路径算法,将节点过渡" +"配置为自动发生或通过代码发生。从 [AnimationTree] 节点检索 " +"[AnimationNodeStateMachinePlayback] 对象,以编程方式控制它。\n" +"[b]示例:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"var state_machine = $AnimationTree.get(\"parameters/playback\")\n" +"state_machine.travel(\"some_state\")\n" +"[/gdscript]\n" +"[csharp]\n" +"var stateMachine = GetNode<AnimationTree>(\"AnimationTree\")." +"Get(\"parameters/playback\") as AnimationNodeStateMachinePlayback;\n" +"stateMachine.Travel(\"some_state\");\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Adds a new node to the graph. The [param position] is used for display in " +"the editor." +msgstr "向图中添加一个新节点。[param position] 用于在编辑器中显示。" + msgid "Adds a transition between the given nodes." msgstr "在给定节点之间添加一个过渡。" msgid "Returns the draw offset of the graph. Used for display in the editor." -msgstr "返回图形的绘制偏移。用于编辑器中的显示。" +msgstr "返回图的绘制偏移。用于在编辑器中显示。" msgid "Returns the animation node with the given name." msgstr "返回指定名称的动画节点。" @@ -3145,7 +7286,7 @@ msgid "Returns the given animation node's name." msgstr "返回指定动画节点的名称。" msgid "Returns the given node's coordinates. Used for display in the editor." -msgstr "返回给定的节点的坐标。用于编辑器中的显示。" +msgstr "返回给定节点的坐标。用于在编辑器中显示。" msgid "Returns the given transition." msgstr "返回给定的过渡。" @@ -3157,7 +7298,7 @@ msgid "Returns the given transition's start node." msgstr "返回给定过渡的开始节点。" msgid "Returns the given transition's end node." -msgstr "返回给定过渡的端节点。" +msgstr "返回给定过渡的末端节点。" msgid "Returns [code]true[/code] if the graph contains the given node." msgstr "如果图中包含给定的节点,返回 [code]true[/code]。" @@ -3179,20 +7320,64 @@ msgid "Renames the given node." msgstr "重命名给定的节点。" msgid "Sets the draw offset of the graph. Used for display in the editor." -msgstr "设置图形的绘制偏移。用于编辑器中的显示。" +msgstr "设置图形的绘制偏移。用于在编辑器中显示。" msgid "Sets the node's coordinates. Used for display in the editor." -msgstr "设置节点的坐标。用于编辑器中的显示。" +msgstr "设置节点的坐标。用于在编辑器中显示。" + +msgid "" +"If [code]true[/code], allows teleport to the self state with [method " +"AnimationNodeStateMachinePlayback.travel]. When the reset option is enabled " +"in [method AnimationNodeStateMachinePlayback.travel], the animation is " +"restarted. If [code]false[/code], nothing happens on the teleportation to " +"the self state." +msgstr "" +"如果为 [code]true[/code],允许使用 [method AnimationNodeStateMachinePlayback." +"travel] 传送到当前状态。当在 [method AnimationNodeStateMachinePlayback." +"travel] 中启用重置选项时,动画将重新启动。如果为 [code]false[/code],传送到当" +"前状态时不会发生任何事情。" msgid "Playback control for [AnimationNodeStateMachine]." msgstr "[AnimationNodeStateMachine] 的播放控件。" -msgid "Returns the currently playing animation state." -msgstr "返回当前播放的动画状态。" +msgid "" +"Allows control of [AnimationTree] state machines created with " +"[AnimationNodeStateMachine]. Retrieve with [code]$AnimationTree." +"get(\"parameters/playback\")[/code].\n" +"[b]Example:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"var state_machine = $AnimationTree.get(\"parameters/playback\")\n" +"state_machine.travel(\"some_state\")\n" +"[/gdscript]\n" +"[csharp]\n" +"var stateMachine = GetNode<AnimationTree>(\"AnimationTree\")." +"Get(\"parameters/playback\") as AnimationNodeStateMachinePlayback;\n" +"stateMachine.Travel(\"some_state\");\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"允许控制使用 [AnimationNodeStateMachine] 创建的 [AnimationTree] 状态机。使用 " +"[code]$AnimationTree.get(\"parameters/playback\")[/code] 检索。\n" +"[b]示例:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"var state_machine = $AnimationTree.get(\"parameters/playback\")\n" +"state_machine.travel(\"some_state\")\n" +"[/gdscript]\n" +"[csharp]\n" +"var stateMachine = GetNode<AnimationTree>(\"AnimationTree\")." +"Get(\"parameters/playback\") as AnimationNodeStateMachinePlayback;\n" +"stateMachine.Travel(\"some_state\");\n" +"[/csharp]\n" +"[/codeblocks]" msgid "Returns the playback position within the current animation state." msgstr "返回当前动画状态内的播放位置。" +msgid "Returns the starting state of currently fading animation." +msgstr "返回当前淡入淡出动画的开始状态。" + msgid "" "Returns the current travel path as computed internally by the A* algorithm." msgstr "返回 A* 算法内部计算的当前行进路径。" @@ -3200,11 +7385,109 @@ msgstr "返回 A* 算法内部计算的当前行进路径。" msgid "Returns [code]true[/code] if an animation is playing." msgstr "如果正在播放动画,返回 [code]true[/code]。" +msgid "" +"If there is a next path by travel or auto advance, immediately transitions " +"from the current state to the next state." +msgstr "如果通过行进或自动前进有下一条路径,则立即从当前状态过渡到下一个状态。" + +msgid "" +"Starts playing the given animation.\n" +"If [param reset] is [code]true[/code], the animation is played from the " +"beginning." +msgstr "" +"开始播放给定的动画。\n" +"如果 [param reset] 为 [code]true[/code],则动画从头开始播放。" + msgid "Stops the currently playing animation." msgstr "停止当前播放的动画。" +msgid "" +"Transitions from the current state to another one, following the shortest " +"path.\n" +"If the path does not connect from the current state, the animation will play " +"after the state teleports.\n" +"If [param reset_on_teleport] is [code]true[/code], the animation is played " +"from the beginning when the travel cause a teleportation." +msgstr "" +"按照最短的路径从当前状态过渡到另一个状态。\n" +"如果路径没有连接到当前状态,则动画将在状态传送后播放。\n" +"如果 [param reset_on_teleport] 为 [code]true[/code],当行进导致传送时,该动画" +"将从头开始播放。" + +msgid "" +"Turn on auto advance when this condition is set. The provided name will " +"become a boolean parameter on the [AnimationTree] that can be controlled " +"from code (see [url=$DOCS_URL/tutorials/animation/animation_tree." +"html#controlling-from-code]Using AnimationTree[/url]). For example, if " +"[member AnimationTree.tree_root] is an [AnimationNodeStateMachine] and " +"[member advance_condition] is set to [code]\"idle\"[/code]:\n" +"[codeblocks]\n" +"[gdscript]\n" +"$animation_tree.set(\"parameters/conditions/idle\", is_on_floor and " +"(linear_velocity.x == 0))\n" +"[/gdscript]\n" +"[csharp]\n" +"GetNode<AnimationTree>(\"animation_tree\").Set(\"parameters/conditions/" +"idle\", IsOnFloor && (LinearVelocity.X == 0));\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"该条件被设置时打开自动前进。提供的名称将成为 [AnimationTree] 上的布尔参数,可" +"以通过代码进行控制(请参阅 [url=$DOCS_URL/tutorials/animation/animation_tree." +"html#controlling-from-code]使用 AnimationTree[/url])。例如,如果 [member " +"AnimationTree.tree_root] 是一个 [AnimationNodeStateMachine] 并且 [member " +"advance_condition] 被设置为 [code]\"idle\"[/code]:\n" +"[codeblocks]\n" +"[gdscript]\n" +"$animation_tree.set(\"parameters/conditions/idle\", is_on_floor and " +"(linear_velocity.x == 0))\n" +"[/gdscript]\n" +"[csharp]\n" +"GetNode<AnimationTree>(\"animation_tree\").Set(\"parameters/conditions/" +"idle\", IsOnFloor && (LinearVelocity.X == 0));\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Use an expression as a condition for state machine transitions. It is " +"possible to create complex animation advance conditions for switching " +"between states and gives much greater flexibility for creating complex state " +"machines by directly interfacing with the script code." +msgstr "" +"将表达式用作状态机过渡的条件。可以为状态之间的切换创建复杂的动画推进条件,并" +"通过直接与脚本代码交互为创建复杂的状态机提供更大的灵活性。" + +msgid "" +"Determines whether the transition should disabled, enabled when using " +"[method AnimationNodeStateMachinePlayback.travel], or traversed " +"automatically if the [member advance_condition] and [member " +"advance_expression] checks are true (if assigned)." +msgstr "" +"决定在使用 [method AnimationNodeStateMachinePlayback.travel] 时该过渡是否应该" +"被禁用/启用,或者如果 [member advance_condition] 和 [member " +"advance_expression] 检查为真则自动行进(如果已分配)。" + +msgid "" +"Lower priority transitions are preferred when travelling through the tree " +"via [method AnimationNodeStateMachinePlayback.travel] or [member " +"advance_mode] is set to [constant ADVANCE_MODE_AUTO]." +msgstr "" +"当在树中通过 [method AnimationNodeStateMachinePlayback.travel] 或将 [member " +"advance_mode] 设置为 [constant ADVANCE_MODE_AUTO] 行进时,倾向于优先级较低的" +"过渡。" + +msgid "" +"If [code]true[/code], the destination animation is played back from the " +"beginning when switched." +msgstr "如果为 [code]true[/code],切换时目标动画从头开始播放。" + msgid "The transition type." -msgstr "过渡类型." +msgstr "过渡类型。" + +msgid "" +"Ease curve for better control over cross-fade between this state and the " +"next." +msgstr "缓动曲线可以更好地控制此状态和下一个状态之间的交叉淡入淡出。" msgid "The time to cross-fade between this state and the next." msgstr "这个状态和下一个状态之间的交叉渐变时间。" @@ -3215,18 +7498,33 @@ msgstr "变更 [member advance_condition] 时发出。" msgid "" "Switch to the next state immediately. The current state will end and blend " "into the beginning of the new one." -msgstr "立即切换到下一个状态。当前状态将结束,并融合到新状态的开始。" +msgstr "立即切换到下一个状态。当前状态将结束,并混合到新状态的开始。" msgid "" "Switch to the next state immediately, but will seek the new state to the " "playback position of the old state." -msgstr "立即切换到下一个状态,但会寻找新的状态到旧状态的播放位置。" +msgstr "立即切换到下一个状态,但会将新的状态定位到旧状态的播放位置。" msgid "" "Wait for the current state playback to end, then switch to the beginning of " "the next state animation." msgstr "等待当前状态播放结束,然后切换到下一个状态动画的开头。" +msgid "Don't use this transition." +msgstr "不要使用该过渡。" + +msgid "" +"Only use this transition during [method AnimationNodeStateMachinePlayback." +"travel]." +msgstr "仅在 [method AnimationNodeStateMachinePlayback.travel] 时使用该过渡。" + +msgid "" +"Automatically use this transition if the [member advance_condition] and " +"[member advance_expression] checks are true (if assigned)." +msgstr "" +"如果 [member advance_condition] 和 [member advance_expression] 检查为真,则自" +"动使用该过渡(如果已分配)。" + msgid "A time-scaling animation node to be used with [AnimationTree]." msgstr "与 [AnimationTree] 一起使用的时间缩放动画节点。" @@ -3242,18 +7540,106 @@ msgid "A generic animation transition node for [AnimationTree]." msgstr "[AnimationTree] 的通用动画过渡节点。" msgid "" -"Simple state machine for cases which don't require a more advanced " -"[AnimationNodeStateMachine]. Animations can be connected to the inputs and " -"transition times can be specified." +"Returns whether the animation restarts when the animation transitions from " +"the other animation." +msgstr "返回当动画从另一个动画过渡时,该动画是否重新开始。" + +msgid "" +"Returns [code]true[/code] if auto-advance is enabled for the given [param " +"input] index." +msgstr "" +"如果为给定的 [param input] 索引启用了自动前进,则返回 [code]true[/code]。" + +msgid "" +"Enables or disables auto-advance for the given [param input] index. If " +"enabled, state changes to the next input after playing the animation once. " +"If enabled for the last input state, it loops to the first." msgstr "" -"简单的状态机,适用于不需要更高级的[AnimationNodeStateMachine]的情况。可以将动" -"画连接到输入,并指定过渡时间。" +"为给定的 [param input] 索引启用或禁用自动前进。如果启用,状态会在播放一次动画" +"后更改为下一个输入。如果为最后一个输入状态启用,它会循环到第一个。" + +msgid "" +"If [code]true[/code], the destination animation is restarted when the " +"animation transitions." +msgstr "如果为 [code]true[/code],则目标动画在动画过渡时重新启动。" + +msgid "" +"If [code]true[/code], allows transition to the self state. When the reset " +"option is enabled in input, the animation is restarted. If [code]false[/" +"code], nothing happens on the transition to the self state." +msgstr "" +"如果为 [code]true[/code],允许过渡到当前状态。当在输入中启用重置选项时,动画" +"将重新启动。如果为 [code]false[/code],则在过渡到 当前状态时不会发生任何事" +"情。" + +msgid "The number of enabled input ports for this node." +msgstr "该节点已启用的输入端口数。" + +msgid "" +"Determines how cross-fading between animations is eased. If empty, the " +"transition will be linear." +msgstr "确定如何缓动动画之间的淡入淡出。如果为空,过渡将是线性的。" msgid "" "Cross-fading time (in seconds) between each animation connected to the " "inputs." msgstr "连接到输入的每个动画之间的交叉渐变时间(秒)。" +msgid "Player of [Animation] resources." +msgstr "[Animation] 资源的播放器。" + +msgid "" +"An animation player is used for general-purpose playback of [Animation] " +"resources. It contains a dictionary of [AnimationLibrary] resources and " +"custom blend times between animation transitions.\n" +"Some methods and properties use a single key to reference an animation " +"directly. These keys are formatted as the key for the library, followed by a " +"forward slash, then the key for the animation within the library, for " +"example [code]\"movement/run\"[/code]. If the library's key is an empty " +"string (known as the default library), the forward slash is omitted, being " +"the same key used by the library.\n" +"[AnimationPlayer] is more suited than [Tween] for animations where you know " +"the final values in advance. For example, fading a screen in and out is more " +"easily done with an [AnimationPlayer] node thanks to the animation tools " +"provided by the editor. That particular example can also be implemented with " +"a [Tween], but it requires doing everything by code.\n" +"Updating the target properties of animations occurs at process time." +msgstr "" +"动画播放器用于 [Animation] 资源的通用播放。它包含一个 [AnimationLibrary] 资源" +"的字典和动画过渡之间的自定义混合时间。\n" +"某些方法和属性使用单个键直接引用动画。这些键的格式为库的键,后跟正斜杠,然后" +"是库内动画的键,例如 [code]\"movement/run\"[/code]。如果库的键是空字符串(称" +"为默认库),则省略正斜杠,与库使用的键相同。\n" +"[AnimationPlayer] 比 [Tween] 更适合用于事先知道最终值的动画。例如,由于编辑器" +"提供的动画工具,使用 [AnimationPlayer] 节点可以更轻松地实现屏幕淡入淡出。该特" +"定示例也可以使用 [Tween] 实现,但它需要通过代码来完成一切。\n" +"更新动画的目标属性是在处理时进行的。" + +msgid "A virtual function for processing after key getting during playback." +msgstr "一个用于播放期间键获取之后的处理的虚函数。" + +msgid "" +"Adds [param library] to the animation player, under the key [param name]." +msgstr "将 [param library] 添加到该动画播放器的键 [param name] 下。" + +msgid "" +"Shifts position in the animation timeline and immediately updates the " +"animation. [param delta] is the time in seconds to shift. Events between the " +"current frame and [param delta] are handled." +msgstr "" +"移动动画时间轴上的位置并立即更新动画。[param delta] 是要移动的时间,单位为" +"秒。会处理位于当前帧和 [param delta] 之间的事件。" + +msgid "" +"Returns the key of the animation which is queued to play after the [param " +"anim_from] animation." +msgstr "返回在 [param anim_from] 动画之后排队播放的动画的键。" + +msgid "" +"Triggers the [param anim_to] animation when the [param anim_from] animation " +"completes." +msgstr "当 [param anim_from] 动画完成时,触发 [param anim_to] 动画。" + msgid "" "[AnimationPlayer] caches animated nodes. It may not notice if a node " "disappears; [method clear_caches] forces it to update the cache again." @@ -3265,6 +7651,88 @@ msgid "Clears all queued, unplayed animations." msgstr "清除所有已排队、未播放的动画。" msgid "" +"Returns the key of [param animation] or an empty [StringName] if not found." +msgstr "返回 [param animation] 的键;如果未找到,则返回一个空的 [StringName]。" + +msgid "" +"Returns the key for the [AnimationLibrary] that contains [param animation] " +"or an empty [StringName] if not found." +msgstr "" +"返回包含 [param animation] 的 [AnimationLibrary] 的键;如果找不到,则返回一个" +"空的 [StringName]。" + +msgid "" +"Returns the first [AnimationLibrary] with key [param name] or [code]null[/" +"code] if not found." +msgstr "" +"返回第一个 [AnimationLibrary] 键 [param name];如果没有找到则返回 " +"[code]null[/code]。" + +msgid "Returns the list of stored library keys." +msgstr "返回存储的库的键的列表。" + +msgid "Returns the list of stored animation keys." +msgstr "返回存储的动画键列表。" + +msgid "" +"Returns the blend time (in seconds) between two animations, referenced by " +"their keys." +msgstr "返回两个动画之间的混合时间(以秒为单位),由它们的键引用。" + +msgid "Returns a list of the animation keys that are currently queued to play." +msgstr "返回当前排队播放的动画键列表。" + +msgid "" +"Returns [code]true[/code] if the [AnimationPlayer] stores an [Animation] " +"with key [param name]." +msgstr "" +"如果该 [AnimationPlayer] 使用键 [param name] 存储 [Animation],则返回 " +"[code]true[/code]。" + +msgid "" +"Returns [code]true[/code] if the [AnimationPlayer] stores an " +"[AnimationLibrary] with key [param name]." +msgstr "" +"如果该 [AnimationPlayer] 使用键 [param name] 存储 [AnimationLibrary],则返回 " +"[code]true[/code]。" + +msgid "" +"Pauses the currently playing animation. The [member " +"current_animation_position] will be kept and calling [method play] or " +"[method play_backwards] without arguments or with the same animation name as " +"[member assigned_animation] will resume the animation.\n" +"See also [method stop]." +msgstr "" +"暂停当前播放的动画。[member current_animation_position] 将被保留,调用 " +"[method play] 或 [method play_backwards] 时,不带参数或使用与 [member " +"assigned_animation] 相同的动画名称,将恢复动画。\n" +"另见 [method stop]。" + +msgid "" +"Plays the animation with key [param name]. Custom blend times and speed can " +"be set. If [param custom_speed] is negative and [param from_end] is " +"[code]true[/code], the animation will play backwards (which is equivalent to " +"calling [method play_backwards]).\n" +"The [AnimationPlayer] keeps track of its current or last played animation " +"with [member assigned_animation]. If this method is called with that same " +"animation [param name], or with no [param name] parameter, the assigned " +"animation will resume playing if it was paused.\n" +"[b]Note:[/b] The animation will be updated the next time the " +"[AnimationPlayer] is processed. If other variables are updated at the same " +"time this is called, they may be updated too early. To perform the update " +"immediately, call [code]advance(0)[/code]." +msgstr "" +"播放键名为 [param name] 的动画。可以设置自定义混合时间和速度。如果 [param " +"custom_speed] 为负,且[param from_end] 为 [code]true[/code],则动画将向后播放" +"(相当于调用 [method play_backwards])。\n" +"[AnimationPlayer] 使用 [member assigned_animation] 跟踪其当前或上次播放的动" +"画。如果使用相同的动画 [param name] 或没有 [param name] 参数调用此方法,则分" +"配的动画将在暂停时恢复播放。\n" +"[b]注意:[/b]动画将在下次处理 [AnimationPlayer] 时更新。如果在调用该方法的同" +"时更新了其他变量,则它们可能更新得太早。要立即执行更新,请调用 " +"[code]advance(0)[/code]。" + +msgid "" "Queues an animation for playback once the current one is done.\n" "[b]Note:[/b] If a looped animation is currently playing, the queued " "animation will never play unless the looped animation is stopped somehow." @@ -3273,6 +7741,87 @@ msgstr "" "[b]注意:[/b]如果当前正在播放循环动画,除非以某种方式停止循环动画,否则排队的" "动画将永远不会播放。" +msgid "Removes the [AnimationLibrary] associated with the key [param name]." +msgstr "移除与键 [param name] 关联的 [AnimationLibrary]。" + +msgid "" +"Moves the [AnimationLibrary] associated with the key [param name] to the key " +"[param newname]." +msgstr "" +"将与键 [param name] 关联的 [AnimationLibrary] 移动到键 [param newname]。" + +msgid "" +"Seeks the animation to the [param seconds] point in time (in seconds). If " +"[param update] is [code]true[/code], the animation updates too, otherwise it " +"updates at process time. Events between the current frame and [param " +"seconds] are skipped.\n" +"[b]Note:[/b] Seeking to the end of the animation doesn't emit [signal " +"animation_finished]. If you want to skip animation and emit the signal, use " +"[method advance]." +msgstr "" +"将动画寻道到时间点 [param seconds](单位为秒)。[param update] 为 " +"[code]true[/code] 时会同时更新动画,否则会在处理时更新。当前帧和 [param " +"seconds] 之间的事件会被跳过。\n" +"[b]注意:[/b]寻道至动画的末尾不会触发 [signal animation_finished]。如果想要跳" +"过动画并触发该信号,请使用 [method advance]。" + +msgid "" +"Specifies a blend time (in seconds) between two animations, referenced by " +"their keys." +msgstr "指定两个动画(由它们的键所引用)之间的混合时间(以秒为单位)。" + +msgid "" +"Stops the currently playing animation. The animation position is reset to " +"[code]0[/code] and the [code]custom_speed[/code] is reset to [code]1.0[/" +"code]. See also [method pause].\n" +"If [param keep_state] is [code]true[/code], the animation state is not " +"updated visually.\n" +"[b]Note:[/b] The method / audio / animation playback tracks will not be " +"processed by this method." +msgstr "" +"停止当前播放的动画。动画位置被重置为 [code]0[/code],[code]custom_speed[/" +"code] 被重置为 [code]1.0[/code]。另见 [method pause]。\n" +"如果 [param keep_state] 为 [code]true[/code],则动画状态不会在视觉上更新。\n" +"[b]注意:[/b]方法/音频/动画播放轨道不会被该方法处理。" + +msgid "" +"If playing, the the current animation's key, otherwise, the animation last " +"played. When set, this changes the animation, but will not play it unless " +"already playing. See also [member current_animation]." +msgstr "" +"如果正在播放,则为当前动画的键,否则为上次播放的动画。设置后会改变动画,但除" +"非已经播放,否则不会播放。另见 [member current_animation]。" + +msgid "" +"The number of possible simultaneous sounds for each of the assigned " +"AudioStreamPlayers.\n" +"For example, if this value is [code]32[/code] and the animation has two " +"audio tracks, the two [AudioStreamPlayer]s assigned can play simultaneously " +"up to [code]32[/code] voices each." +msgstr "" +"每个指定的 AudioStreamPlayer 可能同时发出的声音的数量。\n" +"例如,如果该值为 [code]32[/code] 并且动画有两个音轨,则分配的两个 " +"[AudioStreamPlayer] 可以同时播放最多 [code]32[/code] 个声音。" + +msgid "" +"The key of the currently playing animation. If no animation is playing, the " +"property's value is an empty string. Changing this value does not restart " +"the animation. See [method play] for more information on playing " +"animations.\n" +"[b]Note:[/b] While this property appears in the Inspector, it's not meant to " +"be edited, and it's not saved in the scene. This property is mainly used to " +"get the currently playing animation, and internally for animation playback " +"tracks. For more information, see [Animation]." +msgstr "" +"当前播放的动画的名称。如果没有动画正在播放,该属性的值是一个空字符串。改变这" +"个值不会重新启动动画。关于播放动画的更多信息请参阅 [method play]。\n" +"[b]注意:[/b]虽然这个属性会出现在检查器中,但它不是用来编辑的,也不会保存在场" +"景中。该属性主要用于获取当前播放的动画,内部用于动画播放轨道。详情请参阅 " +"[Animation]。" + +msgid "The length (in seconds) of the currently playing animation." +msgstr "当前正在播放的动画的长度(以秒为单位)。" + msgid "The position (in seconds) of the currently playing animation." msgstr "当前播放的动画的位置(以秒为单位)。" @@ -3280,6 +7829,20 @@ msgid "The call mode to use for Call Method tracks." msgstr "方法调用轨道所使用的调用模式。" msgid "" +"If [code]true[/code] and the engine is running in Movie Maker mode (see " +"[MovieWriter]), exits the engine with [method SceneTree.quit] as soon as an " +"animation is done playing in this [AnimationPlayer]. A message is printed " +"when the engine quits for this reason.\n" +"[b]Note:[/b] This obeys the same logic as the [signal animation_finished] " +"signal, so it will not quit the engine if the animation is set to be looping." +msgstr "" +"如果为 [code]true[/code],并且引擎在 Movie Maker 模式下运行(请参阅 " +"[MovieWriter]),则在此 [AnimationPlayer] 中播放完动画后,立即使用 [method " +"SceneTree.quit] 退出引擎。当引擎因此而退出时,会打印一条消息。\n" +"[b]注意:[/b]这与 [signal animation_finished] 信号遵循相同的逻辑,因此如果动" +"画被设置为循环,它不会退出引擎。" + +msgid "" "If [code]true[/code], updates animations in response to process-related " "notifications." msgstr "如果为 [code]true[/code],根据流程相关通知更新动画。" @@ -3292,11 +7855,49 @@ msgstr "混合动画的默认时间。范围从 0 到 4096,精度为 0.01。" msgid "The process notification in which to update animations." msgstr "更新动画的过程通知。" +msgid "" +"This is used by the editor. If set to [code]true[/code], the scene will be " +"saved with the effects of the reset animation (the animation with the key " +"[code]\"RESET\"[/code]) applied as if it had been seeked to time 0, with the " +"editor keeping the values that the scene had before saving.\n" +"This makes it more convenient to preview and edit animations in the editor, " +"as changes to the scene will not be saved as long as they are set in the " +"reset animation." +msgstr "" +"由编辑器使用。如果设置为 [code]true[/code],场景将被保存,并应用重置动画(带" +"有键 [code]\"RESET\"[/code] 的动画)的效果,就好像它已被定位到时间 0 一样,编" +"辑器保留场景在保存之前的值。\n" +"这使得在编辑器中预览和编辑动画更加方便,因为对场景的更改,只要在重置动画中被" +"设置,就不会被保存。" + msgid "The node from which node path references will travel." msgstr "节点路径引用将从其运行的节点。" +msgid "" +"Emitted when a queued animation plays after the previous animation finished. " +"See [method queue].\n" +"[b]Note:[/b] The signal is not emitted when the animation is changed via " +"[method play] or by an [AnimationTree]." +msgstr "" +"在前一个动画完成后,播放队列中的动画时发出。请参阅 [method queue]。\n" +"[b]注意:[/b]通过 [method play] 或 [AnimationTree] 改变动画时,不会发出此信" +"号。" + +msgid "" +"Notifies when an animation finished playing.\n" +"[b]Note:[/b] This signal is not emitted if an animation is looping." +msgstr "" +"动画播放结束时通知。\n" +"[b]注意:[/b]如果动画正在循环播放,则不会发出此信号。" + +msgid "Notifies when the animation libraries have changed." +msgstr "当动画库发生更改时发出通知。" + +msgid "Notifies when an animation list is changed." +msgstr "当动画列表发生更改时发出通知。" + msgid "Notifies when an animation starts playing." -msgstr "当动画开始播放时通知。" +msgstr "当动画开始播放时发出通知。" msgid "" "Notifies when the caches have been cleared, either automatically, or " @@ -3355,16 +7956,301 @@ msgstr "使用 AnimationTree" msgid "Manually advance the animations by the specified time (in seconds)." msgstr "手动将动画前进指定的时间(单位为秒)。" +msgid "" +"Retrieve the motion delta of position with the [member root_motion_track] as " +"a [Vector3] that can be used elsewhere.\n" +"If [member root_motion_track] is not a path to a track of type [constant " +"Animation.TYPE_POSITION_3D], returns [code]Vector3(0, 0, 0)[/code].\n" +"See also [member root_motion_track] and [RootMotionView].\n" +"The most basic example is applying position to [CharacterBody3D]:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var current_rotation: Quaternion\n" +"\n" +"func _process(delta):\n" +" if Input.is_action_just_pressed(\"animate\"):\n" +" current_rotation = get_quaternion()\n" +" state_machine.travel(\"Animate\")\n" +" var velocity: Vector3 = current_rotation * animation_tree." +"get_root_motion_position() / delta\n" +" set_velocity(velocity)\n" +" move_and_slide()\n" +"[/gdscript]\n" +"[/codeblocks]\n" +"By using this in combination with [method " +"get_root_motion_position_accumulator], you can apply the root motion " +"position more correctly to account for the rotation of the node.\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _process(delta):\n" +" if Input.is_action_just_pressed(\"animate\"):\n" +" state_machine.travel(\"Animate\")\n" +" set_quaternion(get_quaternion() * animation_tree." +"get_root_motion_rotation())\n" +" var velocity: Vector3 = (animation_tree." +"get_root_motion_rotation_accumulator().inverse() * get_quaternion()) * " +"animation_tree.get_root_motion_position() / delta\n" +" set_velocity(velocity)\n" +" move_and_slide()\n" +"[/gdscript]\n" +"[/codeblocks]" +msgstr "" +"将具有 [member root_motion_track] 的位置的运动增量,检索为一个可以在其他地方" +"使用的 [Vector3]。\n" +"如果 [member root_motion_track] 不是 [constant Animation.TYPE_POSITION_3D] 类" +"型轨道的路径,则返回 [code]Vector3(0, 0, 0)[/code]。\n" +"另见 [member root_motion_track] 和 [RootMotionView]。\n" +"最基本的示例是将位置应用于 [CharacterBody3D]:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var current_rotation: Quaternion\n" +"\n" +"func _process(delta):\n" +" if Input.is_action_just_pressed(\"animate\"):\n" +" current_rotation = get_quaternion()\n" +" state_machine.travel(\"Animate\")\n" +" var velocity: Vector3 = current_rotation * animation_tree." +"get_root_motion_position() / delta\n" +" set_velocity(velocity)\n" +" move_and_slide()\n" +"[/gdscript]\n" +"[/codeblocks]\n" +"通过将其与 [method get_root_motion_position_accumulator] 结合使用,您可以更正" +"确地应用根运动位置来考虑节点的旋转。\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _process(delta):\n" +" if Input.is_action_just_pressed(\"animate\"):\n" +" state_machine.travel(\"Animate\")\n" +" set_quaternion(get_quaternion() * animation_tree." +"get_root_motion_rotation())\n" +" var velocity: Vector3 = (animation_tree." +"get_root_motion_rotation_accumulator().inverse() * get_quaternion()) * " +"animation_tree.get_root_motion_position() / delta\n" +" set_velocity(velocity)\n" +" move_and_slide()\n" +"[/gdscript]\n" +"[/codeblocks]" + +msgid "" +"Retrieve the motion delta of rotation with the [member root_motion_track] as " +"a [Quaternion] that can be used elsewhere.\n" +"If [member root_motion_track] is not a path to a track of type [constant " +"Animation.TYPE_ROTATION_3D], returns [code]Quaternion(0, 0, 0, 1)[/code].\n" +"See also [member root_motion_track] and [RootMotionView].\n" +"The most basic example is applying rotation to [CharacterBody3D]:\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _process(delta):\n" +" if Input.is_action_just_pressed(\"animate\"):\n" +" state_machine.travel(\"Animate\")\n" +" set_quaternion(get_quaternion() * animation_tree." +"get_root_motion_rotation())\n" +"[/gdscript]\n" +"[/codeblocks]" +msgstr "" +"检索带有 [member root_motion_track] 的旋转运动,作为一个 [Quaternion],可以在" +"其他地方使用。\n" +"如果 [member root_motion_track] 不是 [constant Animation.TYPE_ROTATION_3D] 类" +"型的轨迹的路径,返回 [code]Quaternion(0, 0, 0, 1)[/code] 。\n" +"另见 [member root_motion_track] 和 [RootMotionView]。\n" +"最基本的例子是对 [CharacterBody3D] 应用旋转。\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _process(delta):\n" +" if Input.is_action_just_pressed(\"animate\"):\n" +" state_machine.travel(\"Animate\")\n" +" set_quaternion(get_quaternion() * animation_tree." +"get_root_motion_rotation() )\n" +"[/gdscript]\n" +"[/codeblocks]" + +msgid "" +"Retrieve the blended value of the rotation tracks with the [member " +"root_motion_track] as a [Quaternion] that can be used elsewhere.\n" +"This is necessary to apply the root motion position correctly, taking " +"rotation into account. See also [method get_root_motion_position].\n" +"Also, this is useful in cases where you want to respect the initial key " +"values of the animation.\n" +"For example, if an animation with only one key [code]Quaternion(0, 0, 0, 1)[/" +"code] is played in the previous frame and then an animation with only one " +"key [code]Quaternion(0, 0.707, 0, 0.707)[/code] is played in the next frame, " +"the difference can be calculated as follows:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var prev_root_motion_rotation_accumulator: Quaternion\n" +"\n" +"func _process(delta):\n" +" if Input.is_action_just_pressed(\"animate\"):\n" +" state_machine.travel(\"Animate\")\n" +" var current_root_motion_rotation_accumulator: Quaternion = " +"animation_tree.get_root_motion_Quaternion_accumulator()\n" +" var difference: Quaternion = prev_root_motion_rotation_accumulator." +"inverse() * current_root_motion_rotation_accumulator\n" +" prev_root_motion_rotation_accumulator = " +"current_root_motion_rotation_accumulator\n" +" transform.basis *= difference\n" +"[/gdscript]\n" +"[/codeblocks]\n" +"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] 的旋转轨道的混合值,作为一个 " +"[Quaternion],可以在其他地方使用。\n" +"这里必须正确地结合根运动位置,并且要考虑到旋转。参考 [method " +"get_root_motion_position]。\n" +"并且,当你想重视动画的初始动画帧的值时,这会很有用。\n" +"比如说,如果一个动画在上一帧只播放一个 [code]Quaternion(0, 0, 0, 1)[/code] 动" +"画帧,并且一个动画在下一帧只播放了一个动画帧的 [code]Quaternion(0, 0.707, 0, " +"0.707)[/code] 时,它们相差的值可以这样求出:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var prev_root_motion_rotation_accumulator: Quaternion\n" +"\n" +"func _process(delta):\n" +" if Input.is_action_just_pressed(\"animate\"):\n" +" state_machine.travel(\"Animate\")\n" +" var current_root_motion_rotation_accumulator: Quaternion = " +"animation_tree.get_root_motion_Quaternion_accumulator()\n" +" var difference: Quaternion = prev_root_motion_rotation_accumulator." +"inverse() * current_root_motion_rotation_accumulator\n" +" prev_root_motion_rotation_accumulator = " +"current_root_motion_rotation_accumulator\n" +" transform.basis *= difference\n" +"[/gdscript]\n" +"[/codeblocks]\n" +"然而,当一个动画循环时,可能会得到一个意料之外的变化,所以这个只在一些简单情" +"况下才有用。" + +msgid "" +"Retrieve the motion delta of scale with the [member root_motion_track] as a " +"[Vector3] that can be used elsewhere.\n" +"If [member root_motion_track] is not a path to a track of type [constant " +"Animation.TYPE_SCALE_3D], returns [code]Vector3(0, 0, 0)[/code].\n" +"See also [member root_motion_track] and [RootMotionView].\n" +"The most basic example is applying scale to [CharacterBody3D]:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var current_scale: Vector3 = Vector3(1, 1, 1)\n" +"var scale_accum: Vector3 = Vector3(1, 1, 1)\n" +"\n" +"func _process(delta):\n" +" if Input.is_action_just_pressed(\"animate\"):\n" +" current_scale = get_scale()\n" +" scale_accum = Vector3(1, 1, 1)\n" +" state_machine.travel(\"Animate\")\n" +" scale_accum += animation_tree.get_root_motion_scale()\n" +" set_scale(current_scale * scale_accum)\n" +"[/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" +"[gdscript]\n" +"var current_scale:Vector3 = Vector3(1, 1, 1)\n" +"var scale_accum: Vector3 = Vector3(1, 1, 1)\n" +"\n" +"func _process(delta):\n" +" if Input.is_action_just_pressed(\"animate\"):\n" +" current_scale = get_scale()\n" +" scale_accum = Vector3(1, 1, 1)\n" +" state_machine.travel(\"Animate\")\n" +" scale_accum += animation_tree.get_root_motion_scale()\n" +" set_scale(current_scale * scale_accum)\n" +"[/gdscript]\n" +"[/codeblocks]" + +msgid "" +"Retrieve the blended value of the scale tracks with the [member " +"root_motion_track] as a [Vector3] that can be used elsewhere.\n" +"For example, if an animation with only one key [code]Vector3(1, 1, 1)[/code] " +"is played in the previous frame and then an animation with only one key " +"[code]Vector3(2, 2, 2)[/code] is played in the next frame, the difference " +"can be calculated as follows:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var prev_root_motion_scale_accumulator: Vector3\n" +"\n" +"func _process(delta):\n" +" if Input.is_action_just_pressed(\"animate\"):\n" +" state_machine.travel(\"Animate\")\n" +" var current_root_motion_scale_accumulator: Vector3 = animation_tree." +"get_root_motion_scale_accumulator()\n" +" var difference: Vector3 = current_root_motion_scale_accumulator - " +"prev_root_motion_scale_accumulator\n" +" prev_root_motion_scale_accumulator = " +"current_root_motion_scale_accumulator\n" +" transform.basis = transform.basis.scaled(difference)\n" +"[/gdscript]\n" +"[/codeblocks]\n" +"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" +"例如,如果一个动画在前一帧只播放了一个动画帧 [code]Vector3(1, 1, 1)[/code]," +"并且一个动画在后一帧只播放了一个动画帧 [code]Vector3(2, 2, 2)[/code],他们之" +"间相差的值可以这样求出:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var prev_root_motion_scale_accumulator: Vector3\n" +"\n" +"func _process(delta):\n" +" if Input.is_action_just_pressed(\"animate\"):\n" +" state_machine.travel(\"Animate\")\n" +" var current_root_motion_scale_accumulator: Vector3 = animation_tree." +"get_root_motion_scale_accumulator()\n" +" var difference: Vector3 = current_root_motion_scale_accumulator - " +"prev_root_motion_scale_accumulator\n" +" prev_root_motion_scale_accumulator = " +"current_root_motion_scale_accumulator\n" +" transform.basis = transform.basis.scaled(difference)\n" +"[/gdscript]\n" +"[/codeblocks]\n" +"然而,当一个动画循环时,可能会得到一个意料之外的变化,所以这个只在一些简单情" +"况下才有用。" + msgid "If [code]true[/code], the [AnimationTree] will be processing." msgstr "如果 [code]true[/code] 时,[AnimationTree] 将执行逻辑处理。" msgid "The path to the [AnimationPlayer] used for animating." msgstr "用于动画的 [AnimationPlayer] 的路径。" +msgid "" +"The process mode of this [AnimationTree]. See [enum " +"AnimationProcessCallback] for available modes." +msgstr "" +"该 [AnimationTree] 的处理模式。可用的模式见 [enum AnimationProcessCallback]。" + msgid "The root animation node of this [AnimationTree]. See [AnimationNode]." msgstr "该 [AnimationTree] 的根动画节点。见 [AnimationNode]。" msgid "" +"Notifies when an animation finished playing.\n" +"[b]Note:[/b] This signal is not emitted if an animation is looping or " +"aborted. Also be aware of the possibility of unseen playback by sync and " +"xfade." +msgstr "" +"某个动画完成播放时发出通知。\n" +"[b]注意:[/b]如果动画需要循环或者是被中止的,则不会发出该信号。另外请意识到可" +"能存在同步和过渡所导致的不可见的播放。" + +msgid "" +"Notifies when an animation starts playing.\n" +"[b]Note:[/b] This signal is not emitted if an animation is looping or " +"playbacked from the middle. Also be aware of the possibility of unseen " +"playback by sync and xfade." +msgstr "" +"某个动画完成播放时发出通知。\n" +"[b]注意:[/b]如果动画需要循环或者是被中止的,则不会发出该信号。另外请意识到可" +"能存在同步和过渡所导致的不可见的播放。" + +msgid "" "The animations will progress during the physics frame (i.e. [method Node." "_physics_process])." msgstr "在物理帧期间进行动画(即 [method Node._physics_process])。" @@ -3375,10 +8261,7 @@ msgid "" msgstr "在空闲帧期间进行动画(即 [method Node._process])。" msgid "The animations will only progress manually (see [method advance])." -msgstr "只能手动进行动画(见 [method advance])。" - -msgid "2D area for detection and physics and audio influence." -msgstr "用于检测、物理和音频影响的 2D 区域。" +msgstr "只能手动行进动画(见 [method advance])。" msgid "Using Area2D" msgstr "使用 Area2D" @@ -3401,7 +8284,7 @@ msgstr "" "collision_layer] 必须是这个区域 [member CollisionObject2D.collision_mask] 的" "一部分,这样才能被检测到。\n" "出于性能的考虑(所有碰撞都是一起处理的),这个列表会在物理步骤中进行一次修" -"改,而不是在物体被移动后立即修改。请考虑使用信号来代替。" +"改,而不是在物体被移动后立即修改。可考虑改用信号。" msgid "" "The rate at which objects stop spinning in this area. Represents the angular " @@ -3413,6 +8296,12 @@ msgstr "" "关于阻尼的更多细节见 [member ProjectSettings.physics/2d/" "default_angular_damp]。" +msgid "" +"Override mode for angular damping calculations within this area. See [enum " +"SpaceOverride] for possible values." +msgstr "" +"此区域内的角阻尼计算的覆盖模式。有关可能的值,请参阅 [enum SpaceOverride]。" + msgid "The name of the area's audio bus." msgstr "该区域音频总线的名称。" @@ -3421,6 +8310,35 @@ msgid "" msgstr "如果为 [code]true[/code],该区域的音频总线将覆盖默认的音频总线。" msgid "" +"The area's gravity intensity (in pixels per second squared). This value " +"multiplies the gravity direction. This is useful to alter the force of " +"gravity without altering its direction." +msgstr "" +"该区域的重力强度(以像素每平方秒为单位)。这个值是重力向量的倍数。这对于改变" +"重力大小而不改变其方向很有用。" + +msgid "The area's gravity vector (not normalized)." +msgstr "该区域的重力向量(未归一化)。" + +msgid "" +"If [code]true[/code], gravity is calculated from a point (set via [member " +"gravity_point_center]). See also [member gravity_space_override]." +msgstr "" +"如果为 [code]true[/code],则从一个点(通过 [member gravity_point_center] 设" +"置)计算重力。参阅 [member gravity_space_override]。" + +msgid "" +"If gravity is a point (see [member gravity_point]), this will be the point " +"of attraction." +msgstr "如果重力是一个点(参见 [member gravity_point]),这将是吸引力点。" + +msgid "" +"Override mode for gravity calculations within this area. See [enum " +"SpaceOverride] for possible values." +msgstr "" +"该区域内重力计算的覆盖模式。有关可能的值,请参阅 [enum SpaceOverride]。" + +msgid "" "The rate at which objects stop moving in this area. Represents the linear " "velocity lost per second.\n" "See [member ProjectSettings.physics/2d/default_linear_damp] for more details " @@ -3430,6 +8348,11 @@ msgstr "" "关于阻尼的更多细节见 [member ProjectSettings.physics/2d/" "default_linear_damp]。" +msgid "" +"Override mode for linear damping calculations within this area. See [enum " +"SpaceOverride] for possible values." +msgstr "该区域内线性阻尼计算的覆盖模式。可取的值见 [enum SpaceOverride]。" + msgid "If [code]true[/code], other monitoring areas can detect this area." msgstr "如果为 [code]true[/code],其他监测区域可以检测到这个区域。" @@ -3437,11 +8360,141 @@ msgid "" "If [code]true[/code], the area detects bodies or areas entering and exiting " "it." msgstr "" -"如果为 [code]true[/code],该区域能够检测到进入和退出该区域的实体或区域。" +"为 [code]true[/code] 时,该区域能够检测到进入和退出该区域的实体或区域。" msgid "The area's priority. Higher priority areas are processed first." msgstr "该区域的优先级。将优先处理优先级较高的区域。" +msgid "" +"Emitted when the received [param area] enters this area. Requires [member " +"monitoring] to be set to [code]true[/code]." +msgstr "" +"当接收的 [param area] 进入此区域时发出。需要 [member monitoring] 被设置为 " +"[code]true[/code]。" + +msgid "" +"Emitted when the received [param area] exits this area. Requires [member " +"monitoring] to be set to [code]true[/code]." +msgstr "" +"当接收的 [param area] 退出此区域时发出。需要 [member monitoring] 被设置为 " +"[code]true[/code]。" + +msgid "" +"Emitted when a [Shape2D] of the received [param area] enters a shape of this " +"area. Requires [member monitoring] to be set to [code]true[/code].\n" +"[param local_shape_index] and [param area_shape_index] contain indices of " +"the interacting shapes from this area and the other area, respectively. " +"[param area_rid] contains the [RID] of the other area. These values can be " +"used with the [PhysicsServer2D].\n" +"[b]Example of getting the[/b] [CollisionShape2D] [b]node from the shape " +"index:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"var other_shape_owner = area.shape_find_owner(area_shape_index)\n" +"var other_shape_node = area.shape_owner_get_owner(other_shape_owner)\n" +"\n" +"var local_shape_owner = shape_find_owner(local_shape_index)\n" +"var local_shape_node = shape_owner_get_owner(local_shape_owner)\n" +"[/gdscript]\n" +"[/codeblocks]" +msgstr "" +"当收到的 [param area] 的 [Shape2D] 进入这个区域的形状时发出。要求[成员监控]被" +"设置为 [code]true[/code] 。\n" +"[param local_shape_index] 和 [param area_shape_index] 分别包含来自这个区域和" +"另一个区域的交互形状的索引。[param area_rid] 包含另一个区域的 [RID]。这些值可" +"以与 [PhysicsServer2D] 一起使用。\n" +"[b]从形状索引中获取[/b] [CollisionShape2D][b]节点的例子。[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"var other_shape_owner = area.shape_find_owner( area_shape_index)\n" +"var other_shape_node = area.shape_owner_get_owner(other_shape_owner)\n" +"\n" +"var local_shape_owner = shape_find_owner(local_shape_index)\n" +"var local_shape_node = shape_owner_get_owner(local_shape_owner)\n" +"[/gdscript]\n" +"[/codeblocks]" + +msgid "" +"Emitted when a [Shape2D] of the received [param area] exits a shape of this " +"area. Requires [member monitoring] to be set to [code]true[/code].\n" +"See also [signal area_shape_entered]." +msgstr "" +"当接收的 [param area] 的 [Shape2D] 退出此区域的形状时发出。需要 [member " +"monitoring] 被设置为 [code]true[/code]。\n" +"另见 [signal area_shape_entered]。" + +msgid "" +"Emitted when the received [param body] enters this area. [param body] can be " +"a [PhysicsBody2D] or a [TileMap]. [TileMap]s are detected if their [TileSet] " +"has collision shapes configured. Requires [member monitoring] to be set to " +"[code]true[/code]." +msgstr "" +"当接收到的 [param body] 进入这个区域时发出的。[param body] 可以是一个 " +"[PhysicsBody2D] 或一个 [TileMap]。如果 [TileMap] 的 [TileSet] 配置了碰撞形" +"状,就会被检测到。需要将 [member monitoring] 设置为 [code]true[/code] 。" + +msgid "" +"Emitted when the received [param body] exits this area. [param body] can be " +"a [PhysicsBody2D] or a [TileMap]. [TileMap]s are detected if their [TileSet] " +"has collision shapes configured. Requires [member monitoring] to be set to " +"[code]true[/code]." +msgstr "" +"当接收到的 [param body] 离开这个区域时发出的。[param body] 可以是一个 " +"[PhysicsBody2D] 或一个 [TileMap]。如果 [TileMap] 的 [TileSet] 配置了碰撞形" +"状,就会被检测到。要求 [member monitoring] 被设置为 [code]true[/code] 。" + +msgid "" +"Emitted when a [Shape2D] of the received [param body] enters a shape of this " +"area. [param body] can be a [PhysicsBody2D] or a [TileMap]. [TileMap]s are " +"detected if their [TileSet] has collision shapes configured. Requires " +"[member monitoring] to be set to [code]true[/code].\n" +"[param local_shape_index] and [param body_shape_index] contain indices of " +"the interacting shapes from this area and the interacting body, " +"respectively. [param body_rid] contains the [RID] of the body. These values " +"can be used with the [PhysicsServer2D].\n" +"[b]Example of getting the[/b] [CollisionShape2D] [b]node from the shape " +"index:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"var body_shape_owner = body.shape_find_owner(body_shape_index)\n" +"var body_shape_node = body.shape_owner_get_owner(body_shape_owner)\n" +"\n" +"var local_shape_owner = shape_find_owner(local_shape_index)\n" +"var local_shape_node = shape_owner_get_owner(local_shape_owner)\n" +"[/gdscript]\n" +"[/codeblocks]" +msgstr "" +"当收到的 [param body] 的 [Shape2D] 进入这个区域的形状时发出。[param body] 可" +"以是一个 [PhysicsBody2D] 或一个 [TileMap]。如果 [TileMap] 的 [TileSet] 配置了" +"碰撞形状,则会被检测到。要求 [member monitoring] 被设置为 [code]true[/" +"code] 。\n" +"[param local_shape_index] 和 [param body_shape_index] 分别包含来自这个区域和" +"交互体的交互形状的指数。[param body_rid] 包含体的 [RID]。这些值可以与 " +"[PhysicsServer2D] 一起使用。\n" +"[b]从形状索引中获取[/b] [CollisionShape2D] [b]节点的例子。[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"var body_shape_owner = body.shape_find_owner(body_shape_index)\n" +"var body_shape_node = body.shape_owner_get_owner(body_shape_owner)\n" +"\n" +"var local_shape_owner = shape_find_owner(local_shape_index)\n" +"var local_shape_node = shape_owner_get_owner(local_shape_owner)\n" +"[/gdscript]\n" +"[/codeblocks]" + +msgid "" +"Emitted when a [Shape2D] of the received [param body] exits a shape of this " +"area. [param body] can be a [PhysicsBody2D] or a [TileMap]. [TileMap]s are " +"detected if their [TileSet] has collision shapes configured. Requires " +"[member monitoring] to be set to [code]true[/code].\n" +"See also [signal body_shape_entered]." +msgstr "" +"当收到的 [param body] 的 [Shape2D] 退出这个区域的形状时发出。[param body] 可" +"以是一个 [PhysicsBody2D] 或一个 [TileMap]。如果 [TileMap] 的 [TileSet] 配置了" +"碰撞形状,则会被检测到。要求 [member monitoring] 被设置为 [code]true[/" +"code] 。\n" +"另请参阅 [signal body_shape_entered]。" + msgid "This area does not affect gravity/damping." msgstr "这个区域不影响重力/阻尼。" @@ -3471,13 +8524,59 @@ msgstr "" "这个区域取代了到目前为止计算出的任何重力/阻尼(按 [member priority] 顺序)," "但继续计算其余的区域。" -msgid "3D area for detection and physics and audio influence." -msgstr "用于检测和物理及音频影响的 3D 区域。" +msgid "" +"3D area that detects [CollisionObject3D] nodes overlapping, entering, or " +"exiting. Can also alter or override local physics parameters (gravity, " +"damping) and route audio to custom audio buses.\n" +"To give the area its shape, add a [CollisionShape3D] or a " +"[CollisionPolygon3D] node as a [i]direct[/i] child (or add multiple such " +"nodes as direct children) of the area.\n" +"[b]Warning:[/b] See [ConcavePolygonShape3D] (also called \"trimesh\") for a " +"warning about possibly unexpected behavior when using that shape for an " +"area.\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 "" +"3D 区域可以检测 [CollisionObject3D] 节点重叠、进入或退出 。还可以更改或覆盖局" +"部物理参数(重力、阻尼),以及将音频路由到自定义音频总线。\n" +"要为区域设置形状,请添加一个 [CollisionShape3D] 或 [CollisionPolygon3D] 节点" +"作为该区域的[i]直接[/i]子节点(或添加多个该类节点作为直接子节点)。\n" +"[b]警告:[/b]请参阅 [ConcavePolygonShape3D](也称为“三角形网格”)以获取有关在" +"区域中使用该形状时可能出现意外行为的警告。\n" +"[b]警告:[/b]如果缩放比例不一致,该节点可能无法按预期运行。请确保保持其比例统" +"一(即在所有轴上相同),并改为更改其碰撞形状的大小。" msgid "GUI in 3D Demo" msgstr "3D GUI 演示" msgid "" +"Returns a list of intersecting [Area3D]s. The overlapping area's [member " +"CollisionObject3D.collision_layer] must be part of this area's [member " +"CollisionObject3D.collision_mask] in order to be detected.\n" +"For performance reasons (collisions are all processed at the same time) this " +"list is modified once during the physics step, not immediately after objects " +"are moved. Consider using signals instead." +msgstr "" +"返回相交的 [Area3D] 的列表。重叠区域的 [member CollisionObject3D." +"collision_layer] 必须是该区域的 [member CollisionObject3D.collision_mask] 的" +"一部分才能被检测到。\n" +"出于性能原因(同时处理所有碰撞),此列表在物理步骤期间修改一次,而不是在实体" +"被移动后立即修改。可考虑改用信号。" + +msgid "" +"Returns [code]true[/code] if the given [Area3D] intersects or overlaps this " +"[Area3D], [code]false[/code] otherwise.\n" +"[b]Note:[/b] The result of this test is not immediate after moving objects. " +"For performance, list of overlaps is updated once per frame and before the " +"physics step. Consider using signals instead." +msgstr "" +"如果给定的 [Area3D] 与此 [Area3D] 相交或重叠,则返回 [code]true[/code],否则" +"返回 [code]false[/code]。\n" +"[b]注意:[/b]此测试的结果不是在移动实体后立即产生的。为了提高性能,重叠列表每" +"帧仅更新一次,并且在物理步骤之前更新。可考虑改用信号。" + +msgid "" "The rate at which objects stop spinning in this area. Represents the angular " "velocity lost per second.\n" "See [member ProjectSettings.physics/3d/default_angular_damp] for more " @@ -3488,12 +8587,20 @@ msgstr "" "default_angular_damp]。" msgid "" +"The area's gravity intensity (in meters per second squared). This value " +"multiplies the gravity direction. This is useful to alter the force of " +"gravity without altering its direction." +msgstr "" +"该区域的重力强度(以米每平方秒为单位)。这个值是重力向量的倍数。这对于改变重" +"力大小而不改变其方向很有用。" + +msgid "" "The rate at which objects stop moving in this area. Represents the linear " "velocity lost per second.\n" "See [member ProjectSettings.physics/3d/default_linear_damp] for more details " "about damping." msgstr "" -"物体在此区域减速的速率。代表每秒损失的线速度。\n" +"实体在此区域减速的速率。代表每秒损失的线速度。\n" "关于阻尼的更多细节,见[member ProjectSettings.physics/3d/" "default_linear_damp]。" @@ -3505,7 +8612,10 @@ msgstr "" "度为 [code]0.1[/code]。" msgid "If [code]true[/code], the area applies reverb to its associated audio." -msgstr "如果为 [code]true[/code],该区域会将混响应用于其相关音频。" +msgstr "如果为 [code]true[/code],该区域会将混响应用于其关联音频。" + +msgid "The name of the reverb bus to use for this area's associated audio." +msgstr "用于该区域关联音频的混响总线的名称。" msgid "" "The degree to which this area's reverb is a uniform effect. Ranges from " @@ -3514,12 +8624,341 @@ msgstr "" "该区域的混响效果均匀的程度。范围从 [code]0[/code] 到 [code]1[/code],精度为 " "[code]0.1[/code]。" +msgid "" +"The exponential rate at which wind force decreases with distance from its " +"origin." +msgstr "风力随着距其原点的距离而衰减的指数速率。" + +msgid "The magnitude of area-specific wind force." +msgstr "特定区域风力的大小。" + +msgid "" +"The [Node3D] which is used to specify the the direction and origin of an " +"area-specific wind force. The direction is opposite to the z-axis of the " +"[Node3D]'s local transform, and its origin is the origin of the [Node3D]'s " +"local transform." +msgstr "" +"[Node3D] 用于指定特定区域风力的方向和原点。方向与 [Node3D] 局部变换的 z 轴相" +"反,其原点为 [Node3D] 局部变换的原点。" + +msgid "" +"Emitted when a [Shape3D] of the received [param area] enters a shape of this " +"area. Requires [member monitoring] to be set to [code]true[/code].\n" +"[param local_shape_index] and [param area_shape_index] contain indices of " +"the interacting shapes from this area and the other area, respectively. " +"[param area_rid] contains the [RID] of the other area. These values can be " +"used with the [PhysicsServer3D].\n" +"[b]Example of getting the[/b] [CollisionShape3D] [b]node from the shape " +"index:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"var other_shape_owner = area.shape_find_owner(area_shape_index)\n" +"var other_shape_node = area.shape_owner_get_owner(other_shape_owner)\n" +"\n" +"var local_shape_owner = shape_find_owner(local_shape_index)\n" +"var local_shape_node = shape_owner_get_owner(local_shape_owner)\n" +"[/gdscript]\n" +"[/codeblocks]" +msgstr "" +"当收到的 [param area] 的 [Shape3D] 进入这个区域的形状时发出。要求 [member " +"monitoring] 被设置为 [code]true[/code] 。\n" +"[param local_shape_index] 和 [param area_shape_index] 分别包含来自这个区域和" +"另一个区域的交互形状的索引。[param area_rid] 包含另一个区域的 [RID]。这些值可" +"以与 [PhysicsServer3D] 一起使用。\n" +"[b]从形状索引中获取[/b] [CollisionShape3D] [b]节点的例子。[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"var other_shape_owner = area.shape_find_owner( area_shape_index)\n" +"var other_shape_node = area.shape_owner_get_owner(other_shape_owner)\n" +"\n" +"var local_shape_owner = shape_find_owner(local_shape_index)\n" +"var local_shape_node = shape_owner_get_owner(local_shape_owner)\n" +"[/gdscript]\n" +"[/codeblocks]" + +msgid "" +"Emitted when a [Shape3D] of the received [param area] exits a shape of this " +"area. Requires [member monitoring] to be set to [code]true[/code].\n" +"See also [signal area_shape_entered]." +msgstr "" +"当接收的 [param area] 的 [Shape3D] 退出此区域的形状时发出。需要 [member " +"monitoring] 被设置为 [code]true[/code]。\n" +"另见 [signal area_shape_entered]。" + +msgid "" +"Emitted when the received [param body] enters this area. [param body] can be " +"a [PhysicsBody3D] or a [GridMap]. [GridMap]s are detected if their " +"[MeshLibrary] has collision shapes configured. Requires [member monitoring] " +"to be set to [code]true[/code]." +msgstr "" +"当接收到的 [param body] 进入这个区域时触发。[param body] 可以是一个 " +"[PhysicsBody3D] 或一个 [GridMap]。如果 [GridMap] 的 [MeshLibrary] 配置了碰撞" +"形状,就会被检测到。需要将 [member monitoring] 设置为 [code]true[/code] 。" + +msgid "" +"Emitted when the received [param body] exits this area. [param body] can be " +"a [PhysicsBody3D] or a [GridMap]. [GridMap]s are detected if their " +"[MeshLibrary] has collision shapes configured. Requires [member monitoring] " +"to be set to [code]true[/code]." +msgstr "" +"当接收到的 [param body] 离开这个区域时发出的。[param body] 可以是一个 " +"[PhysicsBody3D] 或一个 [GridMap]。如果 [GridMap] 的 [MeshLibrary] 配置了碰撞" +"形状,就会被检测到。要求 [member monitoring] 被设置为 [code]true[/code] 。" + msgid "A generic array datatype." msgstr "通用数组数据类型。" +msgid "" +"A generic array that can contain several elements of any type, accessible by " +"a numerical index starting at 0. Negative indices can be used to count from " +"the back, like in Python (-1 is the last element, -2 is the second to last, " +"etc.).\n" +"[b]Example:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"var array = [\"One\", 2, 3, \"Four\"]\n" +"print(array[0]) # One.\n" +"print(array[2]) # 3.\n" +"print(array[-1]) # Four.\n" +"array[2] = \"Three\"\n" +"print(array[-2]) # Three.\n" +"[/gdscript]\n" +"[csharp]\n" +"var array = new Godot.Collections.Array{\"One\", 2, 3, \"Four\"};\n" +"GD.Print(array[0]); // One.\n" +"GD.Print(array[2]); // 3.\n" +"GD.Print(array[array.Count - 1]); // Four.\n" +"array[2] = \"Three\";\n" +"GD.Print(array[array.Count - 2]); // Three.\n" +"[/csharp]\n" +"[/codeblocks]\n" +"Arrays can be concatenated using the [code]+[/code] operator:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var array1 = [\"One\", 2]\n" +"var array2 = [3, \"Four\"]\n" +"print(array1 + array2) # [\"One\", 2, 3, \"Four\"]\n" +"[/gdscript]\n" +"[csharp]\n" +"// Array concatenation is not possible with C# arrays, but is with Godot." +"Collections.Array.\n" +"var array1 = new Godot.Collections.Array{\"One\", 2};\n" +"var array2 = new Godot.Collections.Array{3, \"Four\"};\n" +"GD.Print(array1 + array2); // Prints [One, 2, 3, Four]\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Note:[/b] Concatenating with the [code]+=[/code] operator will create a " +"new array, which has a cost. If you want to append another array to an " +"existing array, [method append_array] is more efficient.\n" +"[b]Note:[/b] Arrays are always passed by reference. To get a copy of an " +"array that can be modified independently of the original array, use [method " +"duplicate].\n" +"[b]Note:[/b] Erasing elements while iterating over arrays is [b]not[/b] " +"supported and will result in unpredictable behavior.\n" +"[b]Note:[/b] When declaring an array with [code]const[/code], the array " +"itself can still be mutated by defining the values at individual indices or " +"pushing/removing elements. Using [code]const[/code] will only prevent " +"assigning the constant with another value after it was initialized." +msgstr "" +"通用数组,可以包含任意类型的多个元素,可以通过从 0 开始的数字索引进行访问。负" +"数索引可以用来从后面数起,就像在 Python 中一样(-1 是最后一个元素、-2 是倒数" +"第二,以此类推)。\n" +"[b]示例:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"var array = [\"One\", 2, 3, \"Four\"]\n" +"print(array[0]) # One。\n" +"print(array[2]) # 3。\n" +"print(array[-1]) # Four。\n" +"array[2] = \"Three\"\n" +"print(array[-2]) # Three。\n" +"[/gdscript]\n" +"[csharp]\n" +"var array = new Godot.Collections.Array{\"One\", 2, 3, \"Four\"};\n" +"GD.Print(array[0]); // One。\n" +"GD.Print(array[2]); // 3。\n" +"GD.Print(array[array.Count - 1]); // Four。\n" +"array[2] = \"Three\";\n" +"GD.Print(array[array.Count - 2]); // Three。\n" +"[/csharp]\n" +"[/codeblocks]\n" +"可以使用 [code]+[/code] 运算符连接数组:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var array1 = [\"One\", 2]\n" +"var array2 = [3, \"Four\"]\n" +"print(array1 + array2) # [\"One\", 2, 3, \"Four\"]\n" +"[/gdscript]\n" +"[csharp]\n" +"// C# 数组无法进行数组串联,但 Godot.Collections.Array 可以。\n" +"var array1 = new Godot.Collections.Array{\"One\", 2};\n" +"var array2 = new Godot.Collections.Array{3, \"Four\"};\n" +"GD.Print(array1 + array2); // Prints [One, 2, 3, Four]\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]注意:[/b]用 [code]+=[/code] 操作符串联将创建一个新的数组,这是有代价的。" +"如果要将另一个数组追加到现有的数组中,[method append_array] 会更有效。\n" +"[b]注意:[/b]数组总是通过引用来传递。要获得一个可以独立于原始数组而被修改的数" +"组的副本,请使用 [method duplicate]。\n" +"[b]注意:[/b][b]不[/b]支持在遍历数组时擦除元素,这将导致不可预知的行为。\n" +"[b]注意:[/b]当用 [code]const[/code] 声明数组时,数组本身仍然可以通过定义各个" +"索引上的值或追加/移除元素而被修改。使用 [code]const[/code] 只能防止该常量在初" +"始化后被赋值为另一个值。" + msgid "Constructs an empty [Array]." msgstr "构造空的 [Array]。" +msgid "Creates a typed array from the [param base] array." +msgstr "从 [param base] 数组创建具有类型的数组。" + +msgid "" +"Returns the same array as [param from]. If you need a copy of the array, use " +"[method duplicate]." +msgstr "" +"返回与 [param from] 相同的数组。如果你需要一个数组的副本,请使用 [method " +"duplicate]。" + +msgid "Constructs an array from a [PackedByteArray]." +msgstr "从 [PackedByteArray] 构造一个数组。" + +msgid "Constructs an array from a [PackedColorArray]." +msgstr "从 [PackedColorArray] 构造一个数组。" + +msgid "Constructs an array from a [PackedFloat32Array]." +msgstr "从 [PackedFloat32Array] 构造一个数组。" + +msgid "Constructs an array from a [PackedFloat64Array]." +msgstr "从 [PackedFloat64Array] 构造一个数组。" + +msgid "Constructs an array from a [PackedInt32Array]." +msgstr "从 [PackedInt32Array] 构造一个数组。" + +msgid "Constructs an array from a [PackedInt64Array]." +msgstr "从 [PackedInt64Array] 构造一个数组。" + +msgid "Constructs an array from a [PackedStringArray]." +msgstr "从 [PackedStringArray] 构造一个数组。" + +msgid "Constructs an array from a [PackedVector2Array]." +msgstr "从 [PackedVector2Array] 构造一个数组。" + +msgid "Constructs an array from a [PackedVector3Array]." +msgstr "从 [PackedVector3Array] 构造一个数组。" + +msgid "" +"Calls the provided [Callable] on each element in the array and returns " +"[code]true[/code] if the [Callable] returns [code]true[/code] for [i]all[/i] " +"elements in the array. If the [Callable] returns [code]false[/code] for one " +"array element or more, this method returns [code]false[/code].\n" +"The callable's method should take one [Variant] parameter (the current array " +"element) and return a boolean value.\n" +"[codeblock]\n" +"func _ready():\n" +" print([6, 10, 6].all(greater_than_5)) # Prints True (3/3 elements " +"evaluate to `true`).\n" +" print([4, 10, 4].all(greater_than_5)) # Prints False (1/3 elements " +"evaluate to `true`).\n" +" print([4, 4, 4].all(greater_than_5)) # Prints False (0/3 elements " +"evaluate to `true`).\n" +" print([].all(greater_than_5)) # Prints True (0/0 elements evaluate to " +"`true`).\n" +"\n" +" print([6, 10, 6].all(func(number): return number > 5)) # Prints True. " +"Same as the first line above, but using lambda function.\n" +"\n" +"func greater_than_5(number):\n" +" return number > 5\n" +"[/codeblock]\n" +"See also [method any], [method filter], [method map] and [method reduce].\n" +"[b]Note:[/b] Unlike relying on the size of an array returned by [method " +"filter], this method will return as early as possible to improve performance " +"(especially with large arrays).\n" +"[b]Note:[/b] For an empty array, this method [url=https://en.wikipedia.org/" +"wiki/Vacuous_truth]always[/url] returns [code]true[/code]." +msgstr "" +"对数组中的每个元素调用提供的 [Callable],如果 [Callable] 为数组中的 [i]所有[/" +"i] 元素返回 [code]true[/code],则返回 [code]true[/code]。如果 [Callable] 为一" +"个或多个数组元素返回 [code]false[/code],则此方法返回 [code]false[/code]。\n" +"该可调用的方法应采用一个 [Variant] 参数(当前数组元素)并返回一个布尔值。\n" +"[codeblock]\n" +"func _ready():\n" +" print([6, 10, 6].all(greater_than_5)) # 输出 True(3/3 元素评估为 " +"`true`)。\n" +" print([4, 10, 4].all(greater_than_5)) # 输出 False(1/3 元素评估为 " +"`true`)。\n" +" print([4, 4, 4].all(greater_than_5)) # 输出 False(0/3 元素评估为 " +"`true`)。\n" +" print([].all(greater_than_5)) # 输出 True(0/0 元素评估为 `true`)。\n" +"\n" +" print([6, 10, 6].all(func(number): return number > 5)) # 输出 True。与上" +"面的第一行相同,但使用 lambda 函数。\n" +"\n" +"func greater_than_5(number):\n" +" return number > 5\n" +"[/codeblock]\n" +"另请参见 [method any]、[method filter]、[method map] 和 [method reduce]。\n" +"[b]注意:[/b]与依赖 [method filter] 返回的数组大小不同,此方法会尽可能早地返" +"回以提高性能(尤其是对于大型数组)。\n" +"[b]注意:[/b]对于空数组,此方法 [url=https://en.wikipedia.org/wiki/" +"Vacuous_truth]总是[/url] 返回 [code]true[/code]。" + +msgid "" +"Calls the provided [Callable] on each element in the array and returns " +"[code]true[/code] if the [Callable] returns [code]true[/code] for [i]one or " +"more[/i] elements in the array. If the [Callable] returns [code]false[/code] " +"for all elements in the array, this method returns [code]false[/code].\n" +"The callable's method should take one [Variant] parameter (the current array " +"element) and return a boolean value.\n" +"[codeblock]\n" +"func _ready():\n" +" print([6, 10, 6].any(greater_than_5)) # Prints True (3 elements " +"evaluate to `true`).\n" +" print([4, 10, 4].any(greater_than_5)) # Prints True (1 elements " +"evaluate to `true`).\n" +" print([4, 4, 4].any(greater_than_5)) # Prints False (0 elements " +"evaluate to `true`).\n" +" print([].any(greater_than_5)) # Prints False (0 elements evaluate to " +"`true`).\n" +"\n" +" print([6, 10, 6].any(func(number): return number > 5)) # Prints True. " +"Same as the first line above, but using lambda function.\n" +"\n" +"func greater_than_5(number):\n" +" return number > 5\n" +"[/codeblock]\n" +"See also [method all], [method filter], [method map] and [method reduce].\n" +"[b]Note:[/b] Unlike relying on the size of an array returned by [method " +"filter], this method will return as early as possible to improve performance " +"(especially with large arrays).\n" +"[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] 为数组中的所有元素返回 [code]false[/code],则此方法返回 " +"[code]false[/code]。\n" +"可调用的方法应采用一个 [Variant] 参数(当前数组元素)并返回一个布尔值。\n" +"[codeblock]\n" +"func _ready():\n" +" print([6, 10, 6].any(greater_than_5)) # 输出 True(3 个元素评估为 " +"`true`)。\n" +" print([4, 10, 4].any(greater_than_5)) # 输出 True(1 个元素评估为 " +"`true`)。\n" +" print([4, 4, 4].any(greater_than_5)) # 输出 False(0 个元素评估为 " +"`true`)。\n" +" print([].any(greater_than_5)) # 输出 False(0 个元素评估为 `true`)。\n" +"\n" +" print([6, 10, 6].any(func(number): return number > 5)) # 输出 True。与上" +"面的第一行相同,但使用 lambda 函数。\n" +"\n" +"func greater_than_5(number):\n" +" return number > 5\n" +"[/codeblock]\n" +"另请参阅 [method all]、[method filter]、[method map] 和 [method reduce]。\n" +"[b]注意:[/b]与依赖 [method filter] 返回的数组大小不同,此方法会尽可能早地返" +"回以提高性能(尤其是对于大型数组)。\n" +"[b]注意:[/b]对于一个空数组,这个方法总是返回 [code]false[/code]。" + msgid "" "Appends an element at the end of the array (alias of [method push_back])." msgstr "向数组末尾追加一个元素([method push_back] 的别名)。" @@ -3533,12 +8972,12 @@ msgid "" "print(array1) # Prints [1, 2, 3, 4, 5, 6].\n" "[/codeblock]" msgstr "" -"在此数组的末尾追加另一个数组。\n" +"在该数组的末尾追加其他数组。\n" "[codeblock]\n" "var array1 = [1, 2, 3]\n" "var array2 = [4, 5, 6]\n" "array1.append_array(array2)\n" -"print(array1) # 打印 [1, 2, 3, 4, 5, 6].\n" +"print(array1) # 输出 [1, 2, 3, 4, 5, 6].\n" "[/codeblock]" msgid "" @@ -3562,6 +9001,97 @@ msgid "Returns the number of times an element is in the array." msgstr "返回元素在数组中出现的次数。" msgid "" +"Removes the first occurrence of a value from the array. If the value does " +"not exist in the array, nothing happens. To remove an element by index, use " +"[method remove_at] instead.\n" +"[b]Note:[/b] This method acts in-place and doesn't return a value.\n" +"[b]Note:[/b] On large arrays, this method will be slower if the removed " +"element is close to the beginning of the array (index 0). This is because " +"all elements placed after the removed element have to be reindexed.\n" +"[b]Note:[/b] Do not erase entries while iterating over the array." +msgstr "" +"从数组中移除第一个匹配的值。如果数组中不存在该值,则什么也不会发生。要通过索" +"引移除元素,请改用 [method remove_at]。\n" +"[b]注意:[/b]这个方法是就地操作的,不返回值。\n" +"[b]注意:[/b]在大型数组上,如果移除的元素靠近数组的开头(索引 0),则此方法会" +"较慢。这是因为所有放置在移除元素之后的元素都必须重新索引。\n" +"[b]注意:[/b]在遍历数组时不要移除条目。" + +msgid "" +"Assigns the given value to all elements in the array. This can typically be " +"used together with [method resize] to create an array with a given size and " +"initialized elements:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var array = []\n" +"array.resize(10)\n" +"array.fill(0) # Initialize the 10 elements to 0.\n" +"[/gdscript]\n" +"[csharp]\n" +"var array = new Godot.Collections.Array();\n" +"array.Resize(10);\n" +"array.Fill(0); // Initialize the 10 elements to 0.\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Note:[/b] If [param value] is of a reference type ([Object]-derived, " +"[Array], [Dictionary], etc.) then the array is filled with the references to " +"the same object, i.e. no duplicates are created." +msgstr "" +"将该数组中的所有元素都设置为给定的值。通常与 [method resize] 一起使用,用于创" +"建给定大小的数组并对其元素进行初始化:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var array = []\n" +"array.resize(10)\n" +"array.fill(0) # 将 10 个元素都初始化为 0。\n" +"[/gdscript]\n" +"[csharp]\n" +"var array = new Godot.Collections.Array();\n" +"array.Resize(10);\n" +"array.Fill(0); // 将 10 个元素都初始化为 0。\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]注意:[/b]如果 [param value] 为引用类型(派生自 [Object]、[Array]、" +"[Dictionary] 等),那么会用同一个对象的引用填充该数组,即不会创建副本。" + +msgid "" +"Calls the provided [Callable] on each element in the array and returns a new " +"array with the elements for which the method returned [code]true[/code].\n" +"The callable's method should take one [Variant] parameter (the current array " +"element) and return a boolean value.\n" +"[codeblock]\n" +"func _ready():\n" +" print([1, 2, 3].filter(remove_1)) # Prints [2, 3].\n" +" print([1, 2, 3].filter(func(number): return number != 1)) # Same as " +"above, but using lambda function.\n" +"\n" +"func remove_1(number):\n" +" return number != 1\n" +"[/codeblock]\n" +"See also [method any], [method all], [method map] and [method reduce]." +msgstr "" +"在数组中的每个元素上调用提供的 [Callable],并返回一个新数组,其中包含调用方法" +"后返回值为 [code]true[/code] 的元素。\n" +"可调用的方法应该采用一个 [Variant] 参数(当前数组元素)并返回一个布尔值。\n" +"[codeblock]\n" +"func _ready():\n" +" print([1, 2, 3].filter(remove_1)) # 打印 [2, 3]。\n" +" print([1, 2, 3].filter(func(number): return number != 1)) # 同上,但使用 " +"lambda 函数。\n" +"\n" +"func remove_1(number):\n" +" return number != 1\n" +"[/codeblock]\n" +"另请参见 [method any]、[method all]、[method map] 和 [method reduce]。" + +msgid "" +"Searches the array for a value and returns its index or [code]-1[/code] if " +"not found. Optionally, the initial search index can be passed." +msgstr "" +"在数组中搜索值并返回其索引,如果未找到则返回 [code]-1[/code] 。可选地,可以传" +"递起始搜索索引。" + +msgid "" "Returns the first element of the array. Prints an error and returns " "[code]null[/code] if the array is empty.\n" "[b]Note:[/b] Calling this function is not the same as writing [code]array[0]" @@ -3603,6 +9133,37 @@ msgid "Returns [code]true[/code] if the array is empty." msgstr "该数组为空时,返回 [code]true[/code]。" msgid "" +"Calls the provided [Callable] for each element in the array and returns a " +"new array filled with values returned by the method.\n" +"The callable's method should take one [Variant] parameter (the current array " +"element) and can return any [Variant].\n" +"[codeblock]\n" +"func _ready():\n" +" print([1, 2, 3].map(negate)) # Prints [-1, -2, -3].\n" +" print([1, 2, 3].map(func(number): return -number)) # Same as above, but " +"using lambda function.\n" +"\n" +"func negate(number):\n" +" return -number\n" +"[/codeblock]\n" +"See also [method filter], [method reduce], [method any] and [method all]." +msgstr "" +"为数组中的每个元素调用提供的 [Callable] 并返回一个新数组,其中填充了该调用方" +"法返回的值。\n" +"可调用的方法应该采用一个 [Variant] 参数(当前数组元素)并且可以返回任意 " +"[Variant]。\n" +"[codeblock]\n" +"func _ready():\n" +" print([1, 2, 3].map(negate)) # 打印 [-1, -2, -3].\n" +" print([1, 2, 3].map(func(number): return -number)) # 同上,但使用 lambda " +"函数。\n" +"\n" +"func negate(number):\n" +" return -number\n" +"[/codeblock]\n" +"另请参见 [method filter]、[method reduce]、[method any] 和 [method all]。" + +msgid "" "Returns the maximum value contained in the array if all elements are of " "comparable types. If the elements can't be compared, [code]null[/code] is " "returned." @@ -3619,12 +9180,37 @@ msgstr "" "[code]null[/code]。" msgid "" +"Returns a random value from the target array.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var array: Array[int] = [1, 2, 3, 4]\n" +"print(array.pick_random()) # Prints either of the four numbers.\n" +"[/gdscript]\n" +"[csharp]\n" +"var array = new Godot.Collections.Array { 1, 2, 3, 4 };\n" +"GD.Print(array.PickRandom()); // Prints either of the four numbers.\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"从目标数组中返回一个随机值。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var array: Array[int] = [1, 2, 3, 4]\n" +"print(array.pick_random()) # 输出四个数字中的任何一个。\n" +"[/gdscript]\n" +"[csharp]\n" +"var array = new Godot.Collections.Array { 1, 2, 3, 4 };\n" +"GD.Print(array.PickRandom()); // 输出四个数字中的任何一个。\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" "Removes and returns the last element of the array. Returns [code]null[/code] " "if the array is empty, without printing an error message. See also [method " "pop_front]." msgstr "" -"移除并返回数组中的末尾元素。数组为空时,返回 [code]null[/code]。另请参阅 " -"[method pop_front]。" +"移除并返回数组中的末尾元素。如果数组为空,则返回 [code]null[/code],而不打印" +"错误消息。另见[method pop_front]。" msgid "" "Removes and returns the first element of the array. Returns [code]null[/" @@ -3680,19 +9266,328 @@ msgstr "" msgid "Reverses the order of the elements in the array." msgstr "将数组中的元素逆序排列。" +msgid "" +"Searches the array in reverse order. Optionally, a start search index can be " +"passed. If negative, the start index is considered relative to the end of " +"the array." +msgstr "" +"逆序搜索数组。还可以传递起始搜索位置索引。如果为负,则起始索引被视为相对于数" +"组的结尾。" + +msgid "" +"Shuffles the array such that the items will have a random order. This method " +"uses the global random number generator common to methods such as [method " +"@GlobalScope.randi]. Call [method @GlobalScope.randomize] to ensure that a " +"new seed will be used each time if you want non-reproducible shuffling." +msgstr "" +"将数组打乱,元素随机排列。该方法使用全局随机数生成器,与 [method " +"@GlobalScope.randi] 等方法一致。如果你想每次都使用新的种子,让打乱无法重现," +"则可以调用 [method @GlobalScope.randomize]。" + msgid "Returns the number of elements in the array." msgstr "返回数组中元素的个数。" msgid "" +"Sorts the array.\n" +"[b]Note:[/b] The sorting algorithm used is not [url=https://en.wikipedia.org/" +"wiki/Sorting_algorithm#Stability]stable[/url]. This means that values " +"considered equal may have their order changed when using [method sort].\n" +"[b]Note:[/b] Strings are sorted in alphabetical order (as opposed to natural " +"order). This may lead to unexpected behavior when sorting an array of " +"strings ending with a sequence of numbers. Consider the following example:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var strings = [\"string1\", \"string2\", \"string10\", \"string11\"]\n" +"strings.sort()\n" +"print(strings) # Prints [string1, string10, string11, string2]\n" +"[/gdscript]\n" +"[csharp]\n" +"var strings = new Godot.Collections.Array { \"string1\", \"string2\", " +"\"string10\", \"string11\" };\n" +"strings.Sort();\n" +"GD.Print(strings); // Prints [string1, string10, string11, string2]\n" +"[/csharp]\n" +"[/codeblocks]\n" +"To perform natural order sorting, you can use [method sort_custom] with " +"[method String.naturalnocasecmp_to] as follows:\n" +"[codeblock]\n" +"var strings = [\"string1\", \"string2\", \"string10\", \"string11\"]\n" +"strings.sort_custom(func(a, b): return a.naturalnocasecmp_to(b) < 0)\n" +"print(strings) # Prints [string1, string2, string10, string11]\n" +"[/codeblock]" +msgstr "" +"对数组进行排序。\n" +"[b]注意:[/b]排序所使用的算法并不[url=https://zh.wikipedia.org/wiki/" +"%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95#%E7%A9%A9%E5%AE%9A%E6%80%A7]稳定[/url]。" +"也就是说,使用 [method sort] 时相等的值之间的顺序可能会改变。\n" +"[b]注意:[/b]字符串按字母顺序排序(与自然顺序相反)。当对一个以数字序列结尾的" +"字符串数组进行排序时,这可能会导致意外的行为。请看下面的例子:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var strings = [\"string1\", \"string2\", \"string10\", \"string11\"]\n" +"strings.sort()\n" +"print(strings) # 输出 [string1, string10, string11, string2]\n" +"[/gdscript]\n" +"[csharp]\n" +"var strings = new Godot.Collections.Array { \"string1\", \"string2\", " +"\"string10\", \"string11\" };\n" +"strings.Sort();\n" +"GD.Print(strings); // 输出 [string1, string10, string11, string2]\n" +"[/csharp]\n" +"[/codeblocks]\n" +"要执行自然顺序排序,可以使用 [method sort_custom] 和 [method String." +"naturalnocasecmp_to],如下所示:\n" +"[codeblock]\n" +"var strings = [\"string1\", \"string2\", \"string10\", \"string11\"]\n" +"strings.sort_custom(func(a, b): return a.naturalnocasecmp_to(b) < 0)\n" +"print(strings) # 输出 [string1, string2, string10, string11]\n" +"[/codeblock]" + +msgid "" +"Sorts the array using a custom method. The custom method receives two " +"arguments (a pair of elements from the array) and must return either " +"[code]true[/code] or [code]false[/code]. For two elements [code]a[/code] and " +"[code]b[/code], if the given method returns [code]true[/code], element " +"[code]b[/code] will be after element [code]a[/code] in the array.\n" +"[b]Note:[/b] The sorting algorithm used is not [url=https://en.wikipedia.org/" +"wiki/Sorting_algorithm#Stability]stable[/url]. This means that values " +"considered equal may have their order changed when using [method " +"sort_custom].\n" +"[b]Note:[/b] You cannot randomize the return value as the heapsort algorithm " +"expects a deterministic result. Randomizing the return value will result in " +"unexpected behavior.\n" +"[codeblocks]\n" +"[gdscript]\n" +"func sort_ascending(a, b):\n" +" if a[0] < b[0]:\n" +" return true\n" +" return false\n" +"\n" +"func _ready():\n" +" var my_items = [[5, \"Potato\"], [9, \"Rice\"], [4, \"Tomato\"]]\n" +" my_items.sort_custom(sort_ascending)\n" +" print(my_items) # Prints [[4, Tomato], [5, Potato], [9, Rice]].\n" +"\n" +" # Descending, lambda version.\n" +" my_items.sort_custom(func(a, b): return a[0] > b[0])\n" +" print(my_items) # Prints [[9, Rice], [5, Potato], [4, Tomato]].\n" +"[/gdscript]\n" +"[csharp]\n" +"// There is no custom sort support for Godot.Collections.Array\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"使用自定义的方法对数组进行排序。自定义方法接受两个参数(数组中的一对元素)," +"并且必须返回 [code]true[/code] 或者 [code]false[/code]。对于两个元素 " +"[code]a[/code] 和 [code]b[/code],如果给定的方法返回 [code]true[/code],数组" +"中的元素 [code]b[/code] 将排在元素 [code]a[/code] 之后。\n" +"[b]注意:[/b]排序所使用的算法并不[url=https://zh.wikipedia.org/wiki/" +"%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95#%E7%A9%A9%E5%AE%9A%E6%80%A7]稳定[/url]。" +"也就是说,使用 [method sort_custom] 时相等的值之间的顺序可能会改变。\n" +"[b]注意:[/b]您不能随机化返回值,因为堆排序算法期望确定的结果。随机化返回值将" +"导致意外行为。\n" +"[codeblocks]\n" +"[gdscript]\n" +"func sort_ascending(a, b):\n" +" if a[0] < b[0]:\n" +" return true\n" +" return false\n" +"\n" +"func _ready():\n" +" var my_items = [[5, \"Potato\"], [9, \"Rice\"], [4, \"Tomato\"]]\n" +" my_items.sort_custom(sort_ascending)\n" +" print(my_items) # 输出 [[4, Tomato], [5, Potato], [9, Rice]].\n" +"\n" +" # Descending, lambda version.\n" +" my_items.sort_custom(func(a, b): return a[0] > b[0])\n" +" print(my_items) # 输出 [[9, Rice], [5, Potato], [4, Tomato]].\n" +"[/gdscript]\n" +"[csharp]\n" +"// Godot.Collections.Array 不支持自定义排序\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Compares the left operand [Array] against the [param right] [Array]. Returns " +"[code]true[/code] if the sizes and contents of the arrays are equal, " +"[code]false[/code] otherwise." +msgstr "" +"将左操作数 [Array] 与 [param right] [Array] 进行比较。如果数组的大小和内容相" +"等,则返回 [code]true[/code],否则返回 [code]false[/code]。" + +msgid "" "[Mesh] type that provides utility for constructing a surface from arrays." msgstr "[Mesh] 网格类型,提供了用于从数组构造表面的工具。" msgid "" +"The [ArrayMesh] is used to construct a [Mesh] by specifying the attributes " +"as arrays.\n" +"The most basic example is the creation of a single triangle:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var vertices = PackedVector3Array()\n" +"vertices.push_back(Vector3(0, 1, 0))\n" +"vertices.push_back(Vector3(1, 0, 0))\n" +"vertices.push_back(Vector3(0, 0, 1))\n" +"\n" +"# Initialize the ArrayMesh.\n" +"var arr_mesh = ArrayMesh.new()\n" +"var arrays = []\n" +"arrays.resize(Mesh.ARRAY_MAX)\n" +"arrays[Mesh.ARRAY_VERTEX] = vertices\n" +"\n" +"# Create the Mesh.\n" +"arr_mesh.add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLES, arrays)\n" +"var m = MeshInstance3D.new()\n" +"m.mesh = arr_mesh\n" +"[/gdscript]\n" +"[csharp]\n" +"var vertices = new Vector3[]\n" +"{\n" +" new Vector3(0, 1, 0),\n" +" new Vector3(1, 0, 0),\n" +" new Vector3(0, 0, 1),\n" +"};\n" +"\n" +"// Initialize the ArrayMesh.\n" +"var arrMesh = new ArrayMesh();\n" +"var arrays = new Godot.Collections.Array();\n" +"arrays.Resize((int)Mesh.ArrayType.Max);\n" +"arrays[(int)Mesh.ArrayType.Vertex] = vertices;\n" +"\n" +"// Create the Mesh.\n" +"arrMesh.AddSurfaceFromArrays(Mesh.PrimitiveType.Triangles, arrays);\n" +"var m = new MeshInstance3D();\n" +"m.Mesh = arrMesh;\n" +"[/csharp]\n" +"[/codeblocks]\n" +"The [MeshInstance3D] is ready to be added to the [SceneTree] to be shown.\n" +"See also [ImmediateMesh], [MeshDataTool] and [SurfaceTool] 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 "" +"[ArrayMesh] 是用来构造 [Mesh] 的,其属性指定为数组。\n" +"最基本的例子是创建单个三角形:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var vertices = PackedVector3Array()\n" +"vertices.push_back(Vector3(0, 1, 0))\n" +"vertices.push_back(Vector3(1, 0, 0))\n" +"vertices.push_back(Vector3(0, 0, 1))\n" +"\n" +"# 初始化 ArrayMesh。\n" +"var arr_mesh = ArrayMesh.new()\n" +"var arrays = []\n" +"arrays.resize(Mesh.ARRAY_MAX)\n" +"arrays[Mesh.ARRAY_VERTEX] = vertices\n" +"\n" +"# 创建 Mesh。\n" +"arr_mesh.add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLES, arrays)\n" +"var m = MeshInstance3D.new()\n" +"m.mesh = arr_mesh\n" +"[/gdscript]\n" +"[csharp]\n" +"var vertices = new Vector3[]\n" +"{\n" +" new Vector3(0, 1, 0),\n" +" new Vector3(1, 0, 0),\n" +" new Vector3(0, 0, 1),\n" +"};\n" +"\n" +"// 初始化 ArrayMesh。\n" +"var arrMesh = new ArrayMesh();\n" +"var arrays = new Godot.Collections.Array();\n" +"arrays.Resize((int)Mesh.ArrayType.Max);\n" +"arrays[(int)Mesh.ArrayType.Vertex] = vertices;\n" +"\n" +"// 创建 Mesh。\n" +"arrMesh.AddSurfaceFromArrays(Mesh.PrimitiveType.Triangles, arrays);\n" +"var m = new MeshInstance3D();\n" +"m.Mesh = arrMesh;\n" +"[/csharp]\n" +"[/codeblocks]\n" +"这个 [MeshInstance3D] 就可以添加到要显示的 [SceneTree] 中了。\n" +"程序几何体生成请参阅 [ImmediateMesh]、[MeshDataTool]、[SurfaceTool]。\n" +"[b]注意:[/b]Godot 对三角形图元模式的正面使用顺时针[url=https://learnopengl-" +"cn.github.io/04%20Advanced%20OpenGL/04%20Face%20culling/]环绕顺序[/url]。" + +msgid "Procedural geometry using the ArrayMesh" +msgstr "使用 ArrayMesh 的程序化几何体" + +msgid "" "Adds name for a blend shape that will be added with [method " "add_surface_from_arrays]. Must be called before surface is added." msgstr "" -"为混合形状添加名称,该名称将用[method add_surface_from_arrays]添加。必须在添" -"加曲面之前调用。" +"为混合形状添加名称,该形状将用 [method add_surface_from_arrays] 添加。必须在" +"添加面之前调用。" + +msgid "" +"Creates a new surface. [method Mesh.get_surface_count] will become the " +"[code]surf_idx[/code] for this new surface.\n" +"Surfaces are created to be rendered using a [param primitive], which may be " +"any of the values defined in [enum Mesh.PrimitiveType].\n" +"The [param arrays] argument is an array of arrays. Each of the [constant " +"Mesh.ARRAY_MAX] elements contains an array with some of the mesh data for " +"this surface as described by the corresponding member of [enum Mesh." +"ArrayType] or [code]null[/code] if it is not used by the surface. For " +"example, [code]arrays[0][/code] is the array of vertices. That first vertex " +"sub-array is always required; the others are optional. Adding an index array " +"puts this surface into \"index mode\" where the vertex and other arrays " +"become the sources of data and the index array defines the vertex order. All " +"sub-arrays must have the same length as the vertex array (or be an exact " +"multiple of the vertex array's length, when multiple elements of a sub-array " +"correspond to a single vertex) or be empty, except for [constant Mesh." +"ARRAY_INDEX] if it is used.\n" +"The [param blend_shapes] argument is an array of vertex data for each blend " +"shape. Each element is an array of the same structure as [param arrays], but " +"[constant Mesh.ARRAY_VERTEX], [constant Mesh.ARRAY_NORMAL], and [constant " +"Mesh.ARRAY_TANGENT] are set if and only if they are set in [param arrays] " +"and all other entries are [code]null[/code].\n" +"The [param lods] argument is a dictionary with [float] keys and " +"[PackedInt32Array] values. Each entry in the dictionary represents a LOD " +"level of the surface, where the value is the [constant Mesh.ARRAY_INDEX] " +"array to use for the LOD level and the key is roughly proportional to the " +"distance at which the LOD stats being used. I.e., increasing the key of a " +"LOD also increases the distance that the objects has to be from the camera " +"before the LOD is used.\n" +"The [param flags] argument is the bitwise or of, as required: One value of " +"[enum Mesh.ArrayCustomFormat] left shifted by " +"[code]ARRAY_FORMAT_CUSTOMn_SHIFT[/code] for each custom channel in use, " +"[constant Mesh.ARRAY_FLAG_USE_DYNAMIC_UPDATE], [constant Mesh." +"ARRAY_FLAG_USE_8_BONE_WEIGHTS], or [constant Mesh." +"ARRAY_FLAG_USES_EMPTY_VERTEX_ARRAY].\n" +"[b]Note:[/b] When using indices, it is recommended to only use points, " +"lines, or triangles." +msgstr "" +"创建一个新的表面。[method Mesh.get_surface_count] 将成为这个新表面的 " +"[code]surf_idx[/code]。\n" +"创建表面以使用 [param primitive] 进行渲染,它可以是 [enum Mesh." +"PrimitiveType] 中定义的任何值。\n" +"[param arrays] 参数是数组的数组。每个 [constant Mesh.ARRAY_MAX] 元素都包含一" +"个数组,其中包含此表面的一些网格数据,如 [enum Mesh.ArrayType] 的相应成员所描" +"述的一样;如果它未被使用,则为 [code]null[/code]。例如,[code]arrays[0][/" +"code] 是顶点数组。始终需要第一个顶点子数组;其他的是可选的。添加索引数组会将" +"此表面置于“索引模式”,其中顶点和其他数组成为数据源,索引数组定义顶点顺序。所" +"有子数组的长度必须与顶点数组的长度相同(或者是顶点数组长度的精确倍数,当子数" +"组的多个元素对应于单个顶点时);或者为空,如果使用了 [constant Mesh." +"ARRAY_INDEX ] 则除外。\n" +"[param blend_shapes] 参数是每个混合形状的顶点数据数组。 每个元素都是与 " +"[param arrays] 具有相同结构的数组,但是 [constant Mesh.ARRAY_VERTEX]、" +"[constant Mesh.ARRAY_NORMAL] 和 [constant Mesh.ARRAY_TANGENT] 这些条目,当且" +"仅当在 [param arrays] 被设置且所有其他条目都是 [code]null[/code] 时,会被设" +"置。\n" +"[param lods] 参数是一个带有 [float] 键和 [PackedInt32Array] 值的字典。字典中" +"的每个条目代表了表面的一个 LOD 级别,其中值是用于 LOD 级别的 [constant Mesh." +"ARRAY_INDEX] 数组,键大致与使用 LOD 统计信息的距离成正比。即,增加 LOD 的关键" +"点也会增加在使用 LOD 之前对象必须与相机的距离。\n" +"[param flags] 参数是根据需要按位或的:[enum Mesh.ArrayCustomFormat] 的一个值" +"左移 [code]ARRAY_FORMAT_CUSTOMn_SHIFT[/code],用于每个正在使用的自定义通道," +"[constant Mesh.ARRAY_FLAG_USE_DYNAMIC_UPDATE]、[constant Mesh." +"ARRAY_FLAG_USE_8_BONE_WEIGHTS]、或 [constant Mesh." +"ARRAY_FLAG_USES_EMPTY_VERTEX_ARRAY]。\n" +"[b]注意:[/b]使用索引时,建议只使用点、线或三角形。" msgid "Removes all blend shapes from this [ArrayMesh]." msgstr "移除此 [ArrayMesh] 的所有混合形状。" @@ -3701,12 +9596,22 @@ msgid "Removes all surfaces from this [ArrayMesh]." msgstr "移除此 [ArrayMesh] 的所有表面。" msgid "Returns the number of blend shapes that the [ArrayMesh] holds." -msgstr "返回[ArrayMesh]持有的混合形状的数量。" +msgstr "返回 [ArrayMesh] 持有的混合形状的数量。" msgid "Returns the name of the blend shape at this index." msgstr "返回此索引处的混合形状的名称。" msgid "" +"Performs a UV unwrap on the [ArrayMesh] to prepare the mesh for lightmapping." +msgstr "在 [ArrayMesh] 上执行 UV 展开,为光照贴图准备该网格。" + +msgid "Regenerates tangents for each of the [ArrayMesh]'s surfaces." +msgstr "为每个 [ArrayMesh] 的表面重新生成切线。" + +msgid "Sets the name of the blend shape at this index." +msgstr "在此索引处设置混合形状的名称。" + +msgid "" "Returns the index of the first surface with this name held within this " "[ArrayMesh]. If none are found, -1 is returned." msgstr "" @@ -3716,8 +9621,7 @@ msgid "" "Returns the length in indices of the index array in the requested surface " "(see [method add_surface_from_arrays])." msgstr "" -"返回请求的曲面的索引数组的长度,以指数为单位(见 [method " -"add_surface_from_arrays])。" +"返回所请求的面中索引数组的索引长度(参见 [method add_surface_from_arrays])。" msgid "" "Returns the length in vertices of the vertex array in the requested surface " @@ -3752,6 +9656,30 @@ msgstr "" "用用户定义的用于使用视锥剔除的一种替代 [AABB]。在使用着色器偏移顶点时,避免非" "预期的剔除特别有用。" +msgid "" +"An optional mesh which is used for rendering shadows and can be used for the " +"depth prepass. Can be used to increase performance of shadow rendering by " +"using a mesh that only contains vertex position data (without normals, UVs, " +"colors, etc.)." +msgstr "" +"用于渲染阴影并可用于深度预通道的可选网格。可用于通过使用仅包含顶点位置数据" +"(不含法线、UV、颜色等)的网格来提高阴影渲染的性能。" + +msgid "" +"3D polygon shape for use with occlusion culling in [OccluderInstance3D]." +msgstr "用于与 [OccluderInstance3D] 中的遮挡剔除一起使用的 3D 多边形形状。" + +msgid "" +"[ArrayOccluder3D] stores an arbitrary 3D polygon shape that can be used by " +"the engine's occlusion culling system. This is analogous to [ArrayMesh], but " +"for occluders.\n" +"See [OccluderInstance3D]'s documentation for instructions on setting up " +"occlusion culling." +msgstr "" +"[ArrayOccluder3D] 存储一个任意的 3D 多边形形状,可供引擎的遮挡剔除系统使用。" +"这类似于 [ArrayMesh],但适用于遮挡物。\n" +"有关设置遮挡剔除的说明,请参阅 [OccluderInstance3D] 的文档。" + msgid "Container that preserves its child controls' aspect ratio." msgstr "保留其子控件长宽比的容器。" @@ -3799,6 +9727,19 @@ msgid "" msgstr "子控件的边界矩形会自动调整以适应容器,同时保持长宽比。" msgid "" +"The width and height of child controls is automatically adjusted to make " +"their bounding rectangle cover the entire area of the container while " +"keeping the aspect ratio.\n" +"When the bounding rectangle of child controls exceed the container's size " +"and [member Control.clip_contents] is enabled, this allows to show only the " +"container's area restricted by its own bounding rectangle." +msgstr "" +"子控件的宽度和高度被自动调整,以使其边框覆盖容器的整个区域,同时保持长宽" +"比。\n" +"当子控件的边界矩形超过容器的大小,并且 [member Control.clip_contents] 被启用" +"时,这允许仅显示受其自身边界矩形限制的容器区域。" + +msgid "" "Aligns child controls with the beginning (left or top) of the container." msgstr "将子控件与容器的开头对齐(左侧或顶部)。" @@ -3812,11 +9753,16 @@ msgid "AStar class representation that uses 2D vectors as edges." msgstr "使用 2D 向量作为边缘的 AStar 类表示。" msgid "" +"This is a wrapper for the [AStar3D] class which uses 2D vectors instead of " +"3D vectors." +msgstr "这是 [AStar3D] 类的包装,它使用 2D 向量而不是 3D 向量。" + +msgid "" "Called when computing the cost between two connected points.\n" "Note that this function is hidden in the default [code]AStar2D[/code] class." msgstr "" "计算两个连接点之间的成本时调用。\n" -"注意这个函数隐藏在默认的[code]AStar2D[/code]类中。" +"注意这个函数隐藏在默认的 [code]AStar2D[/code] 类中。" msgid "" "Called when estimating the cost between a point and the path's ending " @@ -3826,35 +9772,814 @@ msgstr "" "当估计一个点和路径终点之间的成本时调用。\n" "请注意,这个函数隐藏在默认的 [code]AStar2D[/code] 类中。" +msgid "" +"Adds a new point at the given position with the given identifier. The [param " +"id] must be 0 or larger, and the [param weight_scale] must be 0.0 or " +"greater.\n" +"The [param weight_scale] is multiplied by the result of [method " +"_compute_cost] when determining the overall cost of traveling across a " +"segment from a neighboring point to this point. Thus, all else being equal, " +"the algorithm prefers points with lower [param weight_scale]s to form a " +"path.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var astar = AStar2D.new()\n" +"astar.add_point(1, Vector2(1, 0), 4) # Adds the point (1, 0) with " +"weight_scale 4 and id 1\n" +"[/gdscript]\n" +"[csharp]\n" +"var astar = new AStar2D();\n" +"astar.AddPoint(1, new Vector2(1, 0), 4); // Adds the point (1, 0) with " +"weight_scale 4 and id 1\n" +"[/csharp]\n" +"[/codeblocks]\n" +"If there already exists a point for the given [param id], its position and " +"weight scale are updated to the given values." +msgstr "" +"在具有给定标识符的给定位置添加一个新点。[param id] 必须为 0 或更大,[param " +"weight_scale] 必须为 0.0 或更大。\n" +"在确定从相邻点到此点的一段路程的总成本时,[param weight_scale] 要乘以 " +"[method _compute_cost] 的结果。因此,在其他条件相同的情况下,算法优先选择 " +"[param weight_scale] 较低的点来形成路径。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var astar = AStar2D.new()\n" +"astar.add_point(1, Vector2(1, 0), 4) # 添加点 (1, 0)、权重为 4、ID 为 1\n" +"[/gdscript]\n" +"[csharp]\n" +"var astar = new AStar2D();\n" +"astar.AddPoint(1, new Vector2(1, 0), 4); // 添加点 (1, 0)、权重为 4、ID 为 " +"1\n" +"[/csharp]\n" +"[/codeblocks]\n" +"如果已经存在一个给定 [param id] 的点,则它的位置和权重缩放将被更新为给定值。" + +msgid "" +"Returns whether there is a connection/segment between the given points. If " +"[param bidirectional] is [code]false[/code], returns whether movement from " +"[param id] to [param to_id] is possible through this segment." +msgstr "" +"返回两个给定点之间是否存在连接/线段。如果 [param bidirectional] 为 " +"[code]false[/code],则返回是否可以通过此段从 [param id] 移动到 [param " +"to_id]。" + msgid "Clears all the points and segments." msgstr "清除所有点和线段。" +msgid "" +"Creates a segment between the given points. If [param bidirectional] is " +"[code]false[/code], only movement from [param id] to [param to_id] is " +"allowed, not the reverse direction.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var astar = AStar2D.new()\n" +"astar.add_point(1, Vector2(1, 1))\n" +"astar.add_point(2, Vector2(0, 5))\n" +"astar.connect_points(1, 2, false)\n" +"[/gdscript]\n" +"[csharp]\n" +"var astar = new AStar2D();\n" +"astar.AddPoint(1, new Vector2(1, 1));\n" +"astar.AddPoint(2, new Vector2(0, 5));\n" +"astar.ConnectPoints(1, 2, false);\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"在给定的点之间创建一个线段。如果 [param bidirectional] 为 [code]false[/" +"code],则只允许从 [param id] 到 [param to_id] 的移动,而不允许反向移动。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var astar = AStar2D.new()\n" +"astar.add_point(1, Vector2(1, 1))\n" +"astar.add_point(2, Vector2(0, 5))\n" +"astar.connect_points(1, 2, false)\n" +"[/gdscript]\n" +"[csharp]\n" +"var astar = new AStar2D();\n" +"astar.AddPoint(1, new Vector2(1, 1));\n" +"astar.AddPoint(2, new Vector2(0, 5));\n" +"astar.ConnectPoints(1, 2, false);\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Deletes the segment between the given points. If [param bidirectional] is " +"[code]false[/code], only movement from [param id] to [param to_id] is " +"prevented, and a unidirectional segment possibly remains." +msgstr "" +"删除给定点之间的线段。如果 [param bidirectional] 为 [code]false[/code],则仅" +"阻止从 [param id] 到 [param to_id] 的移动,并且可能会保留一个单向线段。" + msgid "Returns the next available point ID with no point associated to it." -msgstr "返回没有关联的下一个可用点的ID。" +msgstr "返回下一个没有关联点的可用点 ID。" msgid "" -"Returns the capacity of the structure backing the points, useful in " -"conjunction with [code]reserve_space[/code]." -msgstr "返回支持点的结构的容量,与 [code]reserve_space[/code] 配合使用。" +"Returns the ID of the closest point to [param to_position], optionally " +"taking disabled points into account. Returns [code]-1[/code] if there are no " +"points in the points pool.\n" +"[b]Note:[/b] If several points are the closest to [param to_position], the " +"one with the smallest ID will be returned, ensuring a deterministic result." +msgstr "" +"返回距离 [param to_position] 最近的点的 ID,可以选择将禁用的点考虑在内。如果" +"点池中没有点,则返回 [code]-1[/code]。\n" +"[b]注意:[/b]如果有多个点距离 [param to_position] 最近,则返回 ID 最小的那个" +"点,以保证结果的确定性。" + +msgid "" +"Returns the closest position to [param to_position] that resides inside a " +"segment between two connected points.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var astar = AStar2D.new()\n" +"astar.add_point(1, Vector2(0, 0))\n" +"astar.add_point(2, Vector2(0, 5))\n" +"astar.connect_points(1, 2)\n" +"var res = astar.get_closest_position_in_segment(Vector2(3, 3)) # Returns (0, " +"3)\n" +"[/gdscript]\n" +"[csharp]\n" +"var astar = new AStar2D();\n" +"astar.AddPoint(1, new Vector2(0, 0));\n" +"astar.AddPoint(2, new Vector2(0, 5));\n" +"astar.ConnectPoints(1, 2);\n" +"Vector2 res = astar.GetClosestPositionInSegment(new Vector2(3, 3)); // " +"Returns (0, 3)\n" +"[/csharp]\n" +"[/codeblocks]\n" +"The result is in the segment that goes from [code]y = 0[/code] to [code]y = " +"5[/code]. It's the closest position in the segment to the given point." +msgstr "" +"返回最接近 [param to_position] 的位置,该位置位于两个连接点之间的线段内。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var astar = AStar2D.new()\n" +"astar.add_point(1, Vector2(0, 0))\n" +"astar.add_point(2, Vector2(0, 5))\n" +"astar.connect_points(1, 2)\n" +"var res = astar.get_closest_position_in_segment(Vector2(3, 3)) # 返回 (0, " +"3)\n" +"[/gdscript]\n" +"[csharp]\n" +"var astar = new AStar2D();\n" +"astar.AddPoint(1, new Vector2(0, 0));\n" +"astar.AddPoint(2, new Vector2(0, 5));\n" +"astar.ConnectPoints(1, 2);\n" +"Vector2 res = astar.GetClosestPositionInSegment(new Vector2(3, 3)); // 返回 " +"(0, 3)\n" +"[/csharp]\n" +"[/codeblocks]\n" +"结果位于从 [code]y = 0[/code] 到 [code]y = 5[/code] 的线段中。它是线段中距给" +"定点最近的位置。" + +msgid "" +"Returns an array with the IDs of the points that form the path found by " +"AStar2D between the given points. The array is ordered from the starting " +"point to the ending point of the path.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var astar = AStar2D.new()\n" +"astar.add_point(1, Vector2(0, 0))\n" +"astar.add_point(2, Vector2(0, 1), 1) # Default weight is 1\n" +"astar.add_point(3, Vector2(1, 1))\n" +"astar.add_point(4, Vector2(2, 0))\n" +"\n" +"astar.connect_points(1, 2, false)\n" +"astar.connect_points(2, 3, false)\n" +"astar.connect_points(4, 3, false)\n" +"astar.connect_points(1, 4, false)\n" +"\n" +"var res = astar.get_id_path(1, 3) # Returns [1, 2, 3]\n" +"[/gdscript]\n" +"[csharp]\n" +"var astar = new AStar2D();\n" +"astar.AddPoint(1, new Vector2(0, 0));\n" +"astar.AddPoint(2, new Vector2(0, 1), 1); // Default weight is 1\n" +"astar.AddPoint(3, new Vector2(1, 1));\n" +"astar.AddPoint(4, new Vector2(2, 0));\n" +"\n" +"astar.ConnectPoints(1, 2, false);\n" +"astar.ConnectPoints(2, 3, false);\n" +"astar.ConnectPoints(4, 3, false);\n" +"astar.ConnectPoints(1, 4, false);\n" +"int[] res = astar.GetIdPath(1, 3); // Returns [1, 2, 3]\n" +"[/csharp]\n" +"[/codeblocks]\n" +"If you change the 2nd point's weight to 3, then the result will be [code][1, " +"4, 3][/code] instead, because now even though the distance is longer, it's " +"\"easier\" to get through point 4 than through point 2." +msgstr "" +"返回一个数组,其中包含构成由 AStar2D 在给定点之间找到的路径的点的 ID。数组从" +"路径的起点到终点进行排序。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var astar = AStar2D.new()\n" +"astar.add_point(1, Vector2(0, 0))\n" +"astar.add_point(2, Vector2(0, 1), 1) # 默认权重为 1\n" +"astar.add_point(3, Vector2(1, 1))\n" +"astar.add_point(4, Vector2(2, 0))\n" +"\n" +"astar.connect_points(1, 2, false)\n" +"astar.connect_points(2, 3, false)\n" +"astar.connect_points(4, 3, false)\n" +"astar.connect_points(1, 4, false)\n" +"\n" +"var res = astar.get_id_path(1, 3) # 返回 [1, 2, 3]\n" +"[/gdscript]\n" +"[csharp]\n" +"var astar = new AStar2D();\n" +"astar.AddPoint(1, new Vector2(0, 0));\n" +"astar.AddPoint(2, new Vector2(0, 1), 1); // 默认权重为 1\n" +"astar.AddPoint(3, new Vector2(1, 1));\n" +"astar.AddPoint(4, new Vector2(2, 0));\n" +"\n" +"astar.ConnectPoints(1, 2, false);\n" +"astar.ConnectPoints(2, 3, false);\n" +"astar.ConnectPoints(4, 3, false);\n" +"astar.ConnectPoints(1, 4, false);\n" +"int[] res = astar.GetIdPath(1, 3); // 返回 [1, 2, 3]\n" +"[/csharp]\n" +"[/codeblocks]\n" +"如果将第2个点的权重更改为 3,则结果将改为 [code][1, 4, 3][/code],因为现在即" +"使距离更长,通过第 4 点也比通过第 2 点“更容易”。" + +msgid "" +"Returns an array with the IDs of the points that form the connection with " +"the given point.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var astar = AStar2D.new()\n" +"astar.add_point(1, Vector2(0, 0))\n" +"astar.add_point(2, Vector2(0, 1))\n" +"astar.add_point(3, Vector2(1, 1))\n" +"astar.add_point(4, Vector2(2, 0))\n" +"\n" +"astar.connect_points(1, 2, true)\n" +"astar.connect_points(1, 3, true)\n" +"\n" +"var neighbors = astar.get_point_connections(1) # Returns [2, 3]\n" +"[/gdscript]\n" +"[csharp]\n" +"var astar = new AStar2D();\n" +"astar.AddPoint(1, new Vector2(0, 0));\n" +"astar.AddPoint(2, new Vector2(0, 1));\n" +"astar.AddPoint(3, new Vector2(1, 1));\n" +"astar.AddPoint(4, new Vector2(2, 0));\n" +"\n" +"astar.ConnectPoints(1, 2, true);\n" +"astar.ConnectPoints(1, 3, true);\n" +"\n" +"int[] neighbors = astar.GetPointConnections(1); // Returns [2, 3]\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回一个数组,其中包含与给定点形成连接的点的 ID。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var astar = AStar2D.new()\n" +"astar.add_point(1, Vector2(0, 0))\n" +"astar.add_point(2, Vector2(0, 1))\n" +"astar.add_point(3, Vector2(1, 1))\n" +"astar.add_point(4, Vector2(2, 0))\n" +"\n" +"astar.connect_points(1, 2, true)\n" +"astar.connect_points(1, 3, true)\n" +"\n" +"var neighbors = astar.get_point_connections(1) # 返回 [2, 3]\n" +"[/gdscript]\n" +"[csharp]\n" +"var astar = new AStar2D();\n" +"astar.AddPoint(1, new Vector2(0, 0));\n" +"astar.AddPoint(2, new Vector2(0, 1));\n" +"astar.AddPoint(3, new Vector2(1, 1));\n" +"astar.AddPoint(4, new Vector2(2, 0));\n" +"\n" +"astar.ConnectPoints(1, 2, true);\n" +"astar.ConnectPoints(1, 3, true);\n" +"\n" +"int[] neighbors = astar.GetPointConnections(1); // 返回 [2, 3]\n" +"[/csharp]\n" +"[/codeblocks]" msgid "Returns the number of points currently in the points pool." -msgstr "返回当前积分池中的积分数量。" +msgstr "返回点池中当前的点数。" + +msgid "Returns an array of all point IDs." +msgstr "返回所有点 ID 的数组。" + +msgid "" +"Returns an array with the points that are in the path found by AStar2D " +"between the given points. The array is ordered from the starting point to " +"the ending point of the path.\n" +"[b]Note:[/b] This method is not thread-safe. If called from a [Thread], it " +"will return an empty [PackedVector2Array] and will print an error message." +msgstr "" +"返回一个数组,其中包含 AStar2D 在给定点之间找到的路径中的点。数组从路径的起点" +"到终点进行排序。\n" +"[b]注意:[/b] 该方法不是线程安全的。如果从 [Thread] 调用,它将返回一个空的 " +"[PackedVector2Array] 并打印一条错误消息。" + +msgid "Returns the position of the point associated with the given [param id]." +msgstr "返回与给定 [param id] 相关联的点的位置。" + +msgid "" +"Returns the weight scale of the point associated with the given [param id]." +msgstr "返回与给定 [param id] 关联的点的权重比例。" + +msgid "Returns whether a point associated with the given [param id] exists." +msgstr "返回与给定 [param id] 相关联的点是否存在。" msgid "" "Returns whether a point is disabled or not for pathfinding. By default, all " "points are enabled." -msgstr "返回是否禁用点以进行寻路。默认情况下,所有点均处于启用状态。" +msgstr "返回用于寻路时点是否被禁用。默认情况下,所有点均被启用。" + +msgid "" +"Removes the point associated with the given [param id] from the points pool." +msgstr "从点池中移除与给定 [param id] 关联的点。" + +msgid "" +"Reserves space internally for [param num_nodes] points, useful if you're " +"adding a known large number of points at once, such as points on a grid. New " +"capacity must be greater or equals to old capacity." +msgstr "" +"在内部为 [param num_nodes] 个点保留空间,如果你想要一次性添加大量的点且数量已" +"知,例如网格,那么就会很有用。新容量必须大于或等于旧容量。" msgid "" "Disables or enables the specified point for pathfinding. Useful for making a " "temporary obstacle." -msgstr "禁用或启用指定点的寻路功能。用于制作临时障碍物。" +msgstr "用于寻路时禁用或启用指定的点。适用于制作临时障碍物。" + +msgid "Sets the [param position] for the point with the given [param id]." +msgstr "为具有给定 [param id] 的点设置位置 [param position]。" + +msgid "" +"Sets the [param weight_scale] for the point with the given [param id]. The " +"[param weight_scale] is multiplied by the result of [method _compute_cost] " +"when determining the overall cost of traveling across a segment from a " +"neighboring point to this point." +msgstr "" +"为给定的 [param id] 的点设置 [param weight_scale]。在确定从邻接点到这个点的一" +"段路程的总成本时,[param weight_scale] 要乘以 [method _compute_cost] 的结果。" msgid "" "An implementation of A* to find the shortest paths among connected points in " "space." msgstr "A* 的一种实现,用于寻找空间中连接点之间的最短路径。" +msgid "" +"A* (A star) is a computer algorithm that is widely used in pathfinding and " +"graph traversal, the process of plotting short paths among vertices " +"(points), passing through a given set of edges (segments). It enjoys " +"widespread use due to its performance and accuracy. Godot's A* " +"implementation uses points in three-dimensional space and Euclidean " +"distances by default.\n" +"You must add points manually with [method add_point] and create segments " +"manually with [method connect_points]. Then you can test if there is a path " +"between two points with the [method are_points_connected] function, get a " +"path containing indices by [method get_id_path], or one containing actual " +"coordinates with [method get_point_path].\n" +"It is also possible to use non-Euclidean distances. To do so, create a class " +"that extends [code]AStar3D[/code] and override methods [method " +"_compute_cost] and [method _estimate_cost]. Both take two indices and return " +"a length, as is shown in the following example.\n" +"[codeblocks]\n" +"[gdscript]\n" +"class MyAStar:\n" +" extends AStar3D\n" +"\n" +" func _compute_cost(u, v):\n" +" return abs(u - v)\n" +"\n" +" func _estimate_cost(u, v):\n" +" return min(0, abs(u - v) - 1)\n" +"[/gdscript]\n" +"[csharp]\n" +"public partial class MyAStar : AStar3D\n" +"{\n" +" public override float _ComputeCost(long fromId, long toId)\n" +" {\n" +" return Mathf.Abs((int)(fromId - toId));\n" +" }\n" +"\n" +" public override float _EstimateCost(long fromId, long toId)\n" +" {\n" +" return Mathf.Min(0, Mathf.Abs((int)(fromId - toId)) - 1);\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[method _estimate_cost] should return a lower bound of the distance, i.e. " +"[code]_estimate_cost(u, v) <= _compute_cost(u, v)[/code]. This serves as a " +"hint to the algorithm because the custom [code]_compute_cost[/code] might be " +"computation-heavy. If this is not the case, make [method _estimate_cost] " +"return the same value as [method _compute_cost] to provide the algorithm " +"with the most accurate information.\n" +"If the default [method _estimate_cost] and [method _compute_cost] methods " +"are used, or if the supplied [method _estimate_cost] method returns a lower " +"bound of the cost, then the paths returned by A* will be the lowest-cost " +"paths. Here, the cost of a path equals the sum of the [method _compute_cost] " +"results of all segments in the path multiplied by the [code]weight_scale[/" +"code]s of the endpoints of the respective segments. If the default methods " +"are used and the [code]weight_scale[/code]s of all points are set to " +"[code]1.0[/code], then this equals the sum of Euclidean distances of all " +"segments in the path." +msgstr "" +"A*(A 星)是一种计算机算法,广泛用于寻路和图遍历,是通过一组给定的边(线" +"段),在顶点(点)之间绘制短路径的过程。由于其性能和准确性,它被广泛使用。" +"Godot 的 A* 实现默认使用三维空间中的点和欧几里得距离。\n" +"您需要使用 [method add_point] 手动添加点,并使用 [method connect_points] 手动" +"创建线段。然后,可以使用 [method are_points_connected] 函数,测试两点之间是否" +"存在路径,通过 [method get_id_path] 获取包含索引的路径,或使用 [method " +"get_point_path] 获取包含实际坐标的路径。\n" +"也可以使用非欧几里得距离。为此,创建一个扩展 [code]AStar3D[/code] 的类,并重" +"写方法 [method _compute_cost] 和 [method _estimate_cost]。两者都接受两个索引" +"并返回一个长度,如以下示例所示。\n" +"[codeblocks]\n" +"[gdscript]\n" +"class MyAStar:\n" +" extends AStar3D\n" +"\n" +" func _compute_cost(u, v):\n" +" return abs(u - v)\n" +"\n" +" func _estimate_cost(u, v):\n" +" return min(0, abs(u - v) - 1)\n" +"[/gdscript]\n" +"[csharp]\n" +"public partial class MyAStar : AStar3D\n" +"{\n" +" public override float _ComputeCost(long fromId, long toId)\n" +" {\n" +" return Mathf.Abs((int)(fromId - toId));\n" +" }\n" +"\n" +" public override float _EstimateCost(long fromId, long toId)\n" +" {\n" +" return Mathf.Min(0, Mathf.Abs((int)(fromId - toId)) - 1);\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[method _estimate_cost] 应该返回距离的下限,即 [code]_estimate_cost(u, v) <= " +"_compute_cost(u, v)[/code]。这可以作为算法的提示,因为自定义 " +"[code]_compute_cost[/code] 可能计算量很大。如果不是这种情况,请使 [method " +"_estimate_cost] 返回与 [method _compute_cost] 相同的值,以便为算法提供最准确" +"的信息。\n" +"如果使用默认的 [method _estimate_cost] 和 [method _compute_cost] 方法,或者如" +"果提供的 [method _estimate_cost] 方法返回成本的下限,则 A* 返回的路径将是成本" +"最低的路径。这里,路径的代价等于路径中所有段的 [method _compute_cost] 结果乘" +"以各个段端点的权重 [code]weight_scale[/code] 之和。如果使用默认方法,并且所有" +"点的 [code]weight_scale[/code] 设置为 [code]1.0[/code],则这等于路径中所有段" +"的欧几里得距离之和。" + +msgid "" +"Called when computing the cost between two connected points.\n" +"Note that this function is hidden in the default [code]AStar3D[/code] class." +msgstr "" +"在计算两个连接点之间的成本时调用。\n" +"请注意,此函数隐藏在默认的 [code]AStar3D[/code] 类中。" + +msgid "" +"Called when estimating the cost between a point and the path's ending " +"point.\n" +"Note that this function is hidden in the default [code]AStar3D[/code] class." +msgstr "" +"在估算一个点和路径终点之间的成本时调用。\n" +"请注意,此函数隐藏在默认的 [code]AStar3D[/code] 类中。" + +msgid "" +"Adds a new point at the given position with the given identifier. The [param " +"id] must be 0 or larger, and the [param weight_scale] must be 0.0 or " +"greater.\n" +"The [param weight_scale] is multiplied by the result of [method " +"_compute_cost] when determining the overall cost of traveling across a " +"segment from a neighboring point to this point. Thus, all else being equal, " +"the algorithm prefers points with lower [param weight_scale]s to form a " +"path.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var astar = AStar3D.new()\n" +"astar.add_point(1, Vector3(1, 0, 0), 4) # Adds the point (1, 0, 0) with " +"weight_scale 4 and id 1\n" +"[/gdscript]\n" +"[csharp]\n" +"var astar = new AStar3D();\n" +"astar.AddPoint(1, new Vector3(1, 0, 0), 4); // Adds the point (1, 0, 0) with " +"weight_scale 4 and id 1\n" +"[/csharp]\n" +"[/codeblocks]\n" +"If there already exists a point for the given [param id], its position and " +"weight scale are updated to the given values." +msgstr "" +"在给定的位置添加一个新的点,并使用给定的标识符。[param id] 必须大于等于 0," +"[param weight_scale] 必须大于等于 0.0。\n" +"在确定从邻点到此点的一段路程的总成本时,[param weight_scale] 要乘以 [method " +"_compute_cost] 的结果。因此,在其他条件相同的情况下,算法优先选择 [param " +"weight_scale] 较低的点来形成路径。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var astar = AStar3D.new()\n" +"astar.add_point(1, Vector3(1, 0, 0), 4) # 添加点 (1, 0, 0),其 weight_scale " +"为 4 且 id 为 1\n" +"[/gdscript]\n" +"[csharp]\n" +"var astar = new AStar3D();\n" +"astar.AddPoint(1, new Vector3(1, 0, 0), 4); // 添加点 (1, 0, 0),其 " +"weight_scale 为 4 且 id 为 1\n" +"[/csharp]\n" +"[/codeblocks]\n" +"如果对于给定的 [param id] 已经存在一个点,它的位置和权重将被更新为给定的值。" + +msgid "" +"Creates a segment between the given points. If [param bidirectional] is " +"[code]false[/code], only movement from [param id] to [param to_id] is " +"allowed, not the reverse direction.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var astar = AStar3D.new()\n" +"astar.add_point(1, Vector3(1, 1, 0))\n" +"astar.add_point(2, Vector3(0, 5, 0))\n" +"astar.connect_points(1, 2, false)\n" +"[/gdscript]\n" +"[csharp]\n" +"var astar = new AStar3D();\n" +"astar.AddPoint(1, new Vector3(1, 1, 0));\n" +"astar.AddPoint(2, new Vector3(0, 5, 0));\n" +"astar.ConnectPoints(1, 2, false);\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"在给定的点之间创建一条线段。如果 [param bidirectional] 为 [code]false[/" +"code],则只允许从 [param id] 到 [param to_id] 的移动,而不允许反向移动。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var astar = AStar3D.new()\n" +"astar.add_point(1, Vector3(1, 1, 0))\n" +"astar.add_point(2, Vector3(0, 5, 0))\n" +"astar.connect_points(1, 2, false)\n" +"[/gdscript]\n" +"[csharp]\n" +"var astar = new AStar3D();\n" +"astar.AddPoint(1, new Vector3(1, 1, 0));\n" +"astar.AddPoint(2, new Vector3(0, 5, 0));\n" +"astar.ConnectPoints(1, 2, false);\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Returns the closest position to [param to_position] that resides inside a " +"segment between two connected points.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var astar = AStar3D.new()\n" +"astar.add_point(1, Vector3(0, 0, 0))\n" +"astar.add_point(2, Vector3(0, 5, 0))\n" +"astar.connect_points(1, 2)\n" +"var res = astar.get_closest_position_in_segment(Vector3(3, 3, 0)) # Returns " +"(0, 3, 0)\n" +"[/gdscript]\n" +"[csharp]\n" +"var astar = new AStar3D();\n" +"astar.AddPoint(1, new Vector3(0, 0, 0));\n" +"astar.AddPoint(2, new Vector3(0, 5, 0));\n" +"astar.ConnectPoints(1, 2);\n" +"Vector3 res = astar.GetClosestPositionInSegment(new Vector3(3, 3, 0)); // " +"Returns (0, 3, 0)\n" +"[/csharp]\n" +"[/codeblocks]\n" +"The result is in the segment that goes from [code]y = 0[/code] to [code]y = " +"5[/code]. It's the closest position in the segment to the given point." +msgstr "" +"返回位于两个连接点之间的线段中离 [param to_position] 最近的位置。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var astar = AStar3D.new()\n" +"astar.add_point(1, Vector3(0, 0, 0))\n" +"astar.add_point(2, Vector3(0, 5, 0))\n" +"astar.connect_points(1, 2)\n" +"var res = astar.get_closest_position_in_segment(Vector3(3, 3, 0)) # 返回 (0, " +"3, 0)\n" +"[/gdscript]\n" +"[csharp]\n" +"var astar = new AStar3D();\n" +"astar.AddPoint(1, new Vector3(0, 0, 0));\n" +"astar.AddPoint(2, new Vector3(0, 5, 0));\n" +"astar.ConnectPoints(1, 2);\n" +"Vector3 res = astar.GetClosestPositionInSegment(new Vector3(3, 3, 0)); // 返" +"回 (0, 3, 0)\n" +"[/csharp]\n" +"[/codeblocks]\n" +"结果是在从 [code]y = 0[/code] 到 [code]y = 5[/code] 的线段中。它是线段中距离" +"给定点最近的位置。" + +msgid "" +"Returns an array with the IDs of the points that form the path found by " +"AStar3D between the given points. The array is ordered from the starting " +"point to the ending point of the path.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var astar = AStar3D.new()\n" +"astar.add_point(1, Vector3(0, 0, 0))\n" +"astar.add_point(2, Vector3(0, 1, 0), 1) # Default weight is 1\n" +"astar.add_point(3, Vector3(1, 1, 0))\n" +"astar.add_point(4, Vector3(2, 0, 0))\n" +"\n" +"astar.connect_points(1, 2, false)\n" +"astar.connect_points(2, 3, false)\n" +"astar.connect_points(4, 3, false)\n" +"astar.connect_points(1, 4, false)\n" +"\n" +"var res = astar.get_id_path(1, 3) # Returns [1, 2, 3]\n" +"[/gdscript]\n" +"[csharp]\n" +"var astar = new AStar3D();\n" +"astar.AddPoint(1, new Vector3(0, 0, 0));\n" +"astar.AddPoint(2, new Vector3(0, 1, 0), 1); // Default weight is 1\n" +"astar.AddPoint(3, new Vector3(1, 1, 0));\n" +"astar.AddPoint(4, new Vector3(2, 0, 0));\n" +"astar.ConnectPoints(1, 2, false);\n" +"astar.ConnectPoints(2, 3, false);\n" +"astar.ConnectPoints(4, 3, false);\n" +"astar.ConnectPoints(1, 4, false);\n" +"int[] res = astar.GetIdPath(1, 3); // Returns [1, 2, 3]\n" +"[/csharp]\n" +"[/codeblocks]\n" +"If you change the 2nd point's weight to 3, then the result will be [code][1, " +"4, 3][/code] instead, because now even though the distance is longer, it's " +"\"easier\" to get through point 4 than through point 2." +msgstr "" +"返回一个数组,其中包含构成 AStar3D 在给定点之间找到的路径中的点的 ID。数组从" +"路径的起点到终点排序。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var astar = AStar3D.new()\n" +"astar.add_point(1, Vector3(0, 0, 0))\n" +"astar.add_point(2, Vector3(0, 1, 0), 1) # 默认权重为 1\n" +"astar.add_point(3, Vector3(1, 1, 0))\n" +"astar.add_point(4, Vector3(2, 0, 0))\n" +"\n" +"astar.connect_points(1, 2, false)\n" +"astar.connect_points(2, 3, false)\n" +"astar.connect_points(4, 3, false)\n" +"astar.connect_points(1, 4, false)\n" +"\n" +"var res = astar.get_id_path(1, 3) # 返回 [1, 2, 3]\n" +"[/gdscript]\n" +"[csharp]\n" +"var astar = new AStar3D();\n" +"astar.AddPoint(1, new Vector3(0, 0, 0));\n" +"astar.AddPoint(2, new Vector3(0, 1, 0), 1); // 默认权重为 1\n" +"astar.AddPoint(3, new Vector3(1, 1, 0));\n" +"astar.AddPoint(4, new Vector3(2, 0, 0));\n" +"astar.ConnectPoints(1, 2, false);\n" +"astar.ConnectPoints(2, 3, false);\n" +"astar.ConnectPoints(4, 3, false);\n" +"astar.ConnectPoints(1, 4, false);\n" +"int[] res = astar.GetIdPath(1, 3); // 返回 [1, 2, 3]\n" +"[/csharp]\n" +"[/codeblocks]\n" +"如果将第2个点的权重更改为 3,则结果将改为 [code][1, 4, 3][/code],因为现在即" +"使距离更长,但通过第 4 点也比通过第 2 点“更容易”。" + +msgid "" +"Returns the capacity of the structure backing the points, useful in " +"conjunction with [code]reserve_space[/code]." +msgstr "返回支持点的结构的容量,与 [code]reserve_space[/code] 配合使用。" + +msgid "" +"Returns an array with the IDs of the points that form the connection with " +"the given point.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var astar = AStar3D.new()\n" +"astar.add_point(1, Vector3(0, 0, 0))\n" +"astar.add_point(2, Vector3(0, 1, 0))\n" +"astar.add_point(3, Vector3(1, 1, 0))\n" +"astar.add_point(4, Vector3(2, 0, 0))\n" +"\n" +"astar.connect_points(1, 2, true)\n" +"astar.connect_points(1, 3, true)\n" +"\n" +"var neighbors = astar.get_point_connections(1) # Returns [2, 3]\n" +"[/gdscript]\n" +"[csharp]\n" +"var astar = new AStar3D();\n" +"astar.AddPoint(1, new Vector3(0, 0, 0));\n" +"astar.AddPoint(2, new Vector3(0, 1, 0));\n" +"astar.AddPoint(3, new Vector3(1, 1, 0));\n" +"astar.AddPoint(4, new Vector3(2, 0, 0));\n" +"astar.ConnectPoints(1, 2, true);\n" +"astar.ConnectPoints(1, 3, true);\n" +"\n" +"int[] neighbors = astar.GetPointConnections(1); // Returns [2, 3]\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回一个数组,其中包含与给定点形成连接的点的 ID。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var astar = AStar3D.new()\n" +"astar.add_point(1, Vector3(0, 0, 0))\n" +"astar.add_point(2, Vector3(0, 1, 0))\n" +"astar.add_point(3, Vector3(1, 1, 0))\n" +"astar.add_point(4, Vector3(2, 0, 0))\n" +"\n" +"astar.connect_points(1, 2, true)\n" +"astar.connect_points(1, 3, true)\n" +"\n" +"var neighbors = astar.get_point_connections(1) # 返回 [2, 3]\n" +"[/gdscript]\n" +"[csharp]\n" +"var astar = new AStar3D();\n" +"astar.AddPoint(1, new Vector3(0, 0, 0));\n" +"astar.AddPoint(2, new Vector3(0, 1, 0));\n" +"astar.AddPoint(3, new Vector3(1, 1, 0));\n" +"astar.AddPoint(4, new Vector3(2, 0, 0));\n" +"astar.ConnectPoints(1, 2, true);\n" +"astar.ConnectPoints(1, 3, true);\n" +"\n" +"int[] neighbors = astar.GetPointConnections(1); // 返回 [2, 3]\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Returns an array with the points that are in the path found by AStar3D " +"between the given points. The array is ordered from the starting point to " +"the ending point of the path.\n" +"[b]Note:[/b] This method is not thread-safe. If called from a [Thread], it " +"will return an empty [PackedVector3Array] and will print an error message." +msgstr "" +"返回一个数组,其中包含 AStar3D 在给定点之间找到的路径中的点。数组从路径的起点" +"到终点进行排序。\n" +"[b]注意:[/b]这种方法不是线程安全的。如果从 [Thread] 调用,它将返回一个空的 " +"[PackedVector3Array],并打印一条错误消息。" + +msgid "" +"A* (or \"A-Star\") pathfinding tailored to find the shortest paths on 2D " +"grids." +msgstr "A*(或“A 星”)寻路,为寻找 2D 网格上的最短路径定制。" + +msgid "" +"Returns an array with the IDs of the points that form the path found by " +"AStar2D between the given points. The array is ordered from the starting " +"point to the ending point of the path." +msgstr "" +"返回一个数组,其中包含形成 AStar2D 在给定点之间找到的路径的点的 ID。该数组从" +"路径的起点到终点排序。" + +msgid "" +"Returns [code]true[/code] if the [param x] and [param y] is a valid grid " +"coordinate (id)." +msgstr "" +"如果 [param x] 和 [param y] 是有效的网格坐标(ID),则返回 [code]true[/" +"code]。" + +msgid "" +"Returns [code]true[/code] if the [param id] vector is a valid grid " +"coordinate." +msgstr "如果 [param id] 向量是有效的网格坐标,则返回 [code]true[/code]。" + +msgid "" +"Disables or enables the specified point for pathfinding. Useful for making " +"an obstacle. By default, all points are enabled.\n" +"[b]Note:[/b] Calling [method update] is not needed after the call of this " +"function." +msgstr "" +"禁用或启用指定的寻路点。用于制造障碍物。默认情况下,启用所有点。\n" +"[b]注意:[/b]调用该函数后不需要调用 [method update]。" + +msgid "" +"Sets the [param weight_scale] for the point with the given [param id]. The " +"[param weight_scale] is multiplied by the result of [method _compute_cost] " +"when determining the overall cost of traveling across a segment from a " +"neighboring point to this point.\n" +"[b]Note:[/b] Calling [method update] is not needed after the call of this " +"function." +msgstr "" +"为具有给定 [param id] 的点设置 [param weight_scale]。在确定从相邻点到该点穿越" +"路段的总成本时,[param weight_scale] 要乘以 [method _compute_cost] 的结果。\n" +"[b]注意:[/b]调用该函数后不需要调用 [method update]。" + +msgid "Represents the size of the [enum Heuristic] enum." +msgstr "代表 [enum Heuristic] 枚举的大小。" + +msgid "Represents the size of the [enum DiagonalMode] enum." +msgstr "代表 [enum DiagonalMode] 枚举的大小。" + +msgid "A texture that crops out part of another Texture2D." +msgstr "裁剪其他 Texture2D 的纹理。" + +msgid "" +"The texture that contains the atlas. Can be any type inheriting from " +"[Texture2D], including another [AtlasTexture]." +msgstr "" +"包含该图集的纹理。可以是任何继承自 [Texture2D] 的类型,包括其他 " +"[AtlasTexture]。" + +msgid "The region used to draw the [member atlas]." +msgstr "用于绘制 [member atlas] 的区域。" + msgid "Stores information about the audio buses." msgstr "存储有关音频总线的信息。" @@ -3866,7 +10591,7 @@ msgstr "" "见 [AudioServer] 。" msgid "Audio effect for audio." -msgstr "音频效果的音频。" +msgstr "用于音频的音频效果。" msgid "" "Base resource for audio bus. Applies an audio effect on the bus that the " @@ -3876,6 +10601,9 @@ msgstr "音频总线的基础资源。在该资源所应用的总线上应用音 msgid "Audio Mic Record Demo" msgstr "音频麦克风录音演示" +msgid "Adds an amplifying audio effect to an audio bus." +msgstr "向音频总线添加一个放大的音频效果。" + msgid "Increases or decreases the volume being routed through the audio bus." msgstr "增加或减少通过音频总线传送的音量。" @@ -3954,13 +10682,13 @@ msgid "The voice's signal delay." msgstr "声音的信号延迟。" msgid "The voice filter's depth." -msgstr "声音滤镜的深度。" +msgstr "声音过滤器的深度。" msgid "The voice's volume." msgstr "声音的音量。" msgid "The voice's pan level." -msgstr "声音的声相级别。" +msgstr "声音的声相电平。" msgid "The voice's filter rate." msgstr "声音过滤比率。" @@ -4036,7 +10764,7 @@ msgstr "使用另一条音频总线进行阈值检测,降低声音级别。" msgid "" "The level above which compression is applied to the audio. Value can range " "from -60 to 0." -msgstr "对音频进行压缩的级别。数值范围从 -60 到 0。" +msgstr "超过该电平,压缩将应用于音频。值的范围可以从 -60 到 0。" msgid "" "Adds a delay audio effect to an audio bus. Plays input signal back after a " @@ -4087,7 +10815,7 @@ msgstr "" "[code]tap1[/code] 的平移位置。取值范围为 -1(完全向左)到 1(完全向右)。" msgid "If [code]true[/code], [code]tap2[/code] will be enabled." -msgstr "如果为 [code]true[/code],将启用[code]tap2[/code]。" +msgstr "如果为 [code]true[/code],将启用 [code]tap2[/code]。" msgid "[b]Tap2[/b] delay time in milliseconds." msgstr "[b]Tap2[/b] 延迟时间,单位为毫秒。" @@ -4112,7 +10840,17 @@ msgstr "" "20000。" msgid "Distortion type." -msgstr "失真类型." +msgstr "失真类型。" + +msgid "" +"Increases or decreases the volume after the effect, in decibels. Value can " +"range from -80 to 24." +msgstr "在效果后增加或减少的音量,单位为分贝。取值范围从 -80 到 24。" + +msgid "" +"Increases or decreases the volume before the effect, in decibels. Value can " +"range from -60 to 60." +msgstr "在效果前增加或减少的音量,单位为分贝。取值范围从 -60 到 60。" msgid "" "Digital distortion effect which cuts off peaks at the top and bottom of the " @@ -4130,8 +10868,8 @@ msgid "" "or [AudioEffectEQ21] don't fit your needs." msgstr "" "音频均衡器的基础类。让你可以控制频率。\n" -"如果 [AudioEffectEQ6]、[AudioEffectEQ10] 或 [AudioEffectEQ21]不符合您的需求," -"请使用它来创建一个自定义均衡器。" +"如果 [AudioEffectEQ6]、[AudioEffectEQ10] 或 [AudioEffectEQ21] 不符合您的需" +"求,请使用它来创建一个自定义均衡器。" msgid "" "AudioEffectEQ gives you control over frequencies. Use it to compensate for " @@ -4160,7 +10898,7 @@ msgid "" "Each frequency can be modulated between -60/+24 dB." msgstr "" "为音频总线添加 10 段均衡器音频效果。让你控制 31Hz 到 16000Hz 的频率。\n" -"每个频率可以在 -60/+24dB 之间进行调制。" +"每个频率可以在 -60/+24 dB 之间进行调制。" msgid "" "Frequency bands:\n" @@ -4194,8 +10932,9 @@ msgid "" "over frequencies from 22 Hz to 22000 Hz.\n" "Each frequency can be modulated between -60/+24 dB." msgstr "" -"为音频总线添加21段均衡器音频效果。让你控制22Hz到22000Hz的频率。\n" -"每个频率可以在-60/+24dB之间进行调制。" +"向音频总线添加一个 21 频段均衡器音频效果。使您可以控制从 22 Hz 到 22000 Hz 的" +"频率。\n" +"每个频率都可以在 -60/+24 dB 之间进行调制。" msgid "" "Frequency bands:\n" @@ -4247,6 +10986,15 @@ msgstr "" "另请参阅 [AudioEffectEQ]、[AudioEffectEQ6]、[AudioEffectEQ10]。" msgid "" +"Adds a 6-band equalizer audio effect to an audio bus. Gives you control over " +"frequencies from 32 Hz to 10000 Hz.\n" +"Each frequency can be modulated between -60/+24 dB." +msgstr "" +"向音频总线添加一个 6 频段均衡器音频效果。使您可以控制从 32 Hz 到 10000 Hz 的" +"频率。\n" +"每个频率都可以在 -60/+24 dB 之间进行调制。" + +msgid "" "Frequency bands:\n" "Band 1: 32 Hz\n" "Band 2: 100 Hz\n" @@ -4280,12 +11028,18 @@ msgstr "滤波后频率的增益量。" msgid "Amount of boost in the frequency range near the cutoff frequency." msgstr "在截断频率附近的频率范围内的提升量。" +msgid "Adds a high-pass filter to the audio bus." +msgstr "向音频总线添加一个高通滤波器。" + msgid "" "Cuts frequencies lower than the [member AudioEffectFilter.cutoff_hz] and " "allows higher frequencies to pass." msgstr "" "削减比 [member AudioEffectFilter.cutoff_hz] 更低的频率,允许更高的频率通过。" +msgid "Adds a high-shelf filter to the audio bus." +msgstr "向音频总线添加一个高架滤波器。" + msgid "Reduces all frequencies above the [member AudioEffectFilter.cutoff_hz]." msgstr "降低所有高于 [member AudioEffectFilter.cutoff_hz] 的频率。" @@ -4313,7 +11067,7 @@ msgstr "波形的最大允许值,单位是分贝。数值范围从 -20 到 -0. msgid "" "Applies a gain to the limited waves, in decibels. Value can range from 0 to " "6." -msgstr "将增益应用于有限的波,以分贝为单位。取值范围是 0 到 6。" +msgstr "将增益应用于被限制的波,以分贝为单位。取值范围是 0 到 6。" msgid "" "Threshold from which the limiter begins to be active, in decibels. Value can " @@ -4329,6 +11083,9 @@ msgid "" msgstr "" "削减比 [member AudioEffectFilter.cutoff_hz] 更低的频率,允许更高的频率通过。" +msgid "Adds a low-shelf filter to the audio bus." +msgstr "向音频总线添加一个低架滤波器。" + msgid "Reduces all frequencies below the [member AudioEffectFilter.cutoff_hz]." msgstr "降低 [member AudioEffectFilter.cutoff_hz] 以下的所有频率。" @@ -4342,6 +11099,9 @@ msgstr "" "衰减 [member AudioEffectFilter.cutoff_hz] 周围窄带的频率,并切断这个范围以外" "的频率。" +msgid "Adds a panner audio effect to an audio bus. Pans sound left or right." +msgstr "向音频总线添加一个声相器音频效果。向左或向右平移声音。" + msgid "" "Determines how much of an audio signal is sent to the left and right buses." msgstr "决定向左右总线发送的音频信号量。" @@ -4350,6 +11110,14 @@ msgid "Pan position. Value can range from -1 (fully left) to 1 (fully right)." msgstr "平移位置。值的范围可以从 -1(完全左)到1(完全右)。" msgid "" +"Adds a phaser audio effect to an audio bus.\n" +"Combines the original signal with a copy that is slightly out of phase with " +"the original." +msgstr "" +"向音频总线添加一个移相器音频效果。\n" +"将原始信号和与原始信号稍有相位偏差的副本组合在一起。" + +msgid "" "Combines phase-shifted signals with the original signal. The movement of the " "phase-shifted signals is controlled using a low-frequency oscillator." msgstr "将相移信号与原始信号相结合。使用低频振荡器控制相移信号的移动。" @@ -4359,7 +11127,7 @@ msgid "" "affect bass frequencies. High value can sweep high into the treble. Value " "can range from 0.1 to 4." msgstr "" -"控制滤波器频率扫描的频率。较低的值将主要影响低音频率。高值可以推高高音。值的" +"控制滤波器频率扫描的高度。较低的值将主要影响低音频率。高值可以推高高音。值的" "范围可以从 0.1 到 4。" msgid "Output percent of modified sound. Value can range from 0.1 to 0.9." @@ -4381,6 +11149,13 @@ msgid "" msgstr "以 Hz 为单位调整效果在整个频率范围内上下扫描的速度。" msgid "" +"Adds a pitch-shifting audio effect to an audio bus.\n" +"Raises or lowers the pitch of original sound." +msgstr "" +"为音频总线添加音高变换的音频效果。\n" +"升高或降低原始声音的音高。" + +msgid "" "Allows modulation of pitch independently of tempo. All frequencies can be " "increased/decreased with minimal effect on transients." msgstr "允许独立于速度调制音高。所有频率都可以增加或减少,而对瞬态的影响最小。" @@ -4418,7 +11193,7 @@ msgid "" "Use a buffer of 256 samples for the Fast Fourier transform. Lowest latency, " "but least stable over time." msgstr "" -"使用 256 个样品的缓冲器进行快速傅里叶变换。最低延迟,但随着时间的推移最不稳" +"使用 256 个样本的缓冲器进行快速傅里叶变换。最低延迟,但随着时间的推移最不稳" "定。" msgid "" @@ -4431,22 +11206,25 @@ msgid "" "Use a buffer of 1024 samples for the Fast Fourier transform. This is a " "compromise between latency and stability over time." msgstr "" -"使用 1024 个样本的缓冲器进行快速傅里叶变换。随着时间的推移,这是延迟和稳定性" +"使用 1024 个样本的缓冲器进行快速傅里叶变换。这是延迟和随着时间的推移的稳定性" "之间的折衷。" msgid "" "Use a buffer of 2048 samples for the Fast Fourier transform. High latency, " "but stable over time." msgstr "" -"使用 2048 个样品的缓冲器进行快速傅里叶变换。随着时间的推移,延迟高但稳定。" +"使用 2048 个样本的缓冲器进行快速傅里叶变换。高延迟,但随着时间的推移稳定。" msgid "" "Use a buffer of 4096 samples for the Fast Fourier transform. Highest " "latency, but most stable over time." msgstr "" -"使用 4096 个样品的缓冲器进行快速傅里叶变换。随着时间的推移,延迟最高但最稳" +"使用 4096 个样本的缓冲器进行快速傅里叶变换。延迟最高,但随着时间的推移最稳" "定。" +msgid "Represents the size of the [enum FFTSize] enum." +msgstr "代表 [enum FFTSize] 枚举的大小。" + msgid "Audio effect used for recording the sound from an audio bus." msgstr "用于录制来自音频总线的声音的音频效果。" @@ -4481,6 +11259,20 @@ msgstr "" "本。" msgid "" +"Specifies the format in which the sample will be recorded. See [enum " +"AudioStreamWAV.Format] for available formats." +msgstr "" +"指定样本将被记录的格式。有关可用格式,请参阅 [enum AudioStreamWAV.Format]。" + +msgid "Adds a reverberation audio effect to an Audio bus." +msgstr "向音频总线添加一个混响音频效果。" + +msgid "" +"Simulates the sound of acoustic environments such as rooms, concert halls, " +"caverns, or an open spaces." +msgstr "模拟房间、音乐厅、洞穴或开放空间等声学环境的声音。" + +msgid "" "Defines how reflective the imaginary room's walls are. Value can range from " "0 to 1." msgstr "定义虚拟房间墙壁的反射程度。值的范围是 0 到 1。" @@ -4562,12 +11354,74 @@ msgstr "用平均值作为幅度。" msgid "Use the maximum value as magnitude." msgstr "用最大值作为幅度。" +msgid "" +"An audio effect that can be used to adjust the intensity of stereo panning." +msgstr "一种可用于调整立体声声相强度的音频效果。" + msgid "Overrides the location sounds are heard from." msgstr "覆盖听到声音的位置。" +msgid "" +"Once added to the scene tree and enabled using [method make_current], this " +"node will override the location sounds are heard from. Only one " +"[AudioListener2D] can be current. Using [method make_current] will disable " +"the previous [AudioListener2D].\n" +"If there is no active [AudioListener2D] in the current [Viewport], center of " +"the screen will be used as a hearing point for the audio. [AudioListener2D] " +"needs to be inside [SceneTree] to function." +msgstr "" +"一旦被添加到场景树并使用 [method make_current] 启用,此节点将覆盖听到声音的位" +"置。只有一个 [AudioListener2D] 可以是当前的。使用 [method make_current] 将禁" +"用之前的 [AudioListener2D]。\n" +"如果当前 [Viewport] 中没有活动的 [AudioListener2D],则屏幕中心将用作音频的聆" +"听点。[AudioListener2D] 需要在 [SceneTree] 内才能起作用。" + +msgid "" +"Disables the [AudioListener2D]. If it's not set as current, this method will " +"have no effect." +msgstr "禁用 [AudioListener2D]。如果未设置为当前,则此方法无效。" + +msgid "" +"Returns [code]true[/code] if this [AudioListener2D] is currently active." +msgstr "如果该 [AudioListener2D] 当前处于激活状态,则返回 [code]true[/code]。" + +msgid "" +"Makes the [AudioListener2D] active, setting it as the hearing point for the " +"sounds. If there is already another active [AudioListener2D], it will be " +"disabled.\n" +"This method will have no effect if the [AudioListener2D] is not added to " +"[SceneTree]." +msgstr "" +"激活该 [AudioListener2D],将其设置为声音的聆听点。如果已经有另一个激活的 " +"[AudioListener2D],它将被禁用。\n" +"如果 [AudioListener2D] 未添加到 [SceneTree],则该方法无效。" + +msgid "" +"Once added to the scene tree and enabled using [method make_current], this " +"node will override the location sounds are heard from. This can be used to " +"listen from a location different from the [Camera3D]." +msgstr "" +"一旦添加到场景树并使用 [method make_current] 启用,该节点将覆盖听到声音的位" +"置。这可用于从与 [Camera3D] 不同的位置聆听。" + msgid "Disables the listener to use the current camera's listener instead." msgstr "禁用该监听器,用当前相机的监听器代替。" +msgid "Returns the listener's global orthonormalized [Transform3D]." +msgstr "返回该监听器的全局正交归一化 [Transform3D]。" + +msgid "" +"Returns [code]true[/code] if the listener was made current using [method " +"make_current], [code]false[/code] otherwise.\n" +"[b]Note:[/b] There may be more than one AudioListener3D marked as " +"\"current\" in the scene tree, but only the one that was made current last " +"will be used." +msgstr "" +"如果使用 [method make_current] 将监听器设为当前,则返回 [code]true[/code],否" +"则返回 [code]false[/code]。\n" +"[b]注意:[/b] 场景树中标记为“当前”的 AudioListener3D 可能不止一个,但只会使用" +"最后被设置为当前的那个。" + msgid "Enables the listener. This will override the current camera's listener." msgstr "启用该监听器。将覆盖当前相机的监听器。" @@ -4585,18 +11439,56 @@ msgstr "" msgid "Audio Device Changer Demo" msgstr "音频设备切换演示" +msgid "Adds a bus at [param at_position]." +msgstr "在 [param at_position] 处添加一条总线。" + +msgid "" +"Adds an [AudioEffect] effect to the bus [param bus_idx] at [param " +"at_position]." +msgstr "" +"为在 [param at_position] 处索引为 [param bus_idx] 的总线添加 [AudioEffect] 效" +"果。" + msgid "Generates an [AudioBusLayout] using the available buses and effects." msgstr "使用可用的总线和效果来生成 [AudioBusLayout]。" +msgid "Returns the number of channels of the bus at index [param bus_idx]." +msgstr "返回索引为 [param bus_idx] 的总线的通道数。" + +msgid "" +"Returns the [AudioEffect] at position [param effect_idx] in bus [param " +"bus_idx]." +msgstr "" +"返回索引为 [param bus_idx] 的总线中位于 [param effect_idx] 的 [AudioEffect]。" + +msgid "Returns the number of effects on the bus at [param bus_idx]." +msgstr "返回索引为 [param bus_idx] 的总线上的效果数。" + msgid "" "Returns the [AudioEffectInstance] assigned to the given bus and effect " "indices (and optionally channel)." msgstr "" -"返回分配给给定总线和效果指数(以及可选的通道)的 [AudioEffectInstance]。" +"返回分配给给定总线和效果索引(以及可选的通道)的[AudioEffectInstance]。" + +msgid "Returns the index of the bus with the name [param bus_name]." +msgstr "返回名称为 [param bus_name] 的总线的索引。" + +msgid "Returns the name of the bus with the index [param bus_idx]." +msgstr "返回索引为 [param bus_idx] 的总线的名称。" + +msgid "" +"Returns the name of the bus that the bus at index [param bus_idx] sends to." +msgstr "返回索引为 [param bus_idx] 的总线的发送目标总线的名称。" + +msgid "Returns the volume of the bus at index [param bus_idx] in dB." +msgstr "返回索引为 [param bus_idx] 的总线的音量,单位为 dB。" msgid "Returns the sample rate at the output of the [AudioServer]." msgstr "返回 [AudioServer] 输出的采样率。" +msgid "Returns the names of all audio output devices detected on the system." +msgstr "返回系统中检测到的所有音频输出设备的名称。" + msgid "Returns the audio driver's output latency." msgstr "返回音频驱动器的输出延迟。" @@ -4610,15 +11502,59 @@ msgid "Returns the relative time until the next mix occurs." msgstr "返回下一次混合之前的相对时间。" msgid "" +"If [code]true[/code], the bus at index [param bus_idx] is bypassing effects." +msgstr "如果为 [code]true[/code],则索引为 [param bus_idx] 的总线会绕过效果。" + +msgid "" +"If [code]true[/code], the effect at index [param effect_idx] on the bus at " +"index [param bus_idx] is enabled." +msgstr "" +"如果为 [code]true[/code],则索引为 [param bus_idx] 的总线上启用了索引为 " +"[param effect_idx] 的效果。" + +msgid "If [code]true[/code], the bus at index [param bus_idx] is muted." +msgstr "如果为 [code]true[/code],则索引为 [param bus_idx] 的总线已静音。" + +msgid "If [code]true[/code], the bus at index [param bus_idx] is in solo mode." +msgstr "" +"如果为 [code]true[/code],则索引为 [param bus_idx] 的总线处于独奏模式。" + +msgid "" "Locks the audio driver's main loop.\n" "[b]Note:[/b] Remember to unlock it afterwards." msgstr "" "锁定音频驱动程序的主循环。\n" -"[b]注意:[/b]记得事后解锁。" +"[b]注意:[/b]之后记得解锁。" + +msgid "Moves the bus from index [param index] to index [param to_index]." +msgstr "将总线从索引 [param index] 移动到索引 [param to_index]。" + +msgid "Removes the bus at index [param index]." +msgstr "移除索引 [param index] 处的总线。" + +msgid "" +"Removes the effect at index [param effect_idx] from the bus at index [param " +"bus_idx]." +msgstr "将索引 [param effect_idx] 的效果从索引 [param bus_idx] 的总线上移除。" msgid "Overwrites the currently used [AudioBusLayout]." msgstr "覆盖当前使用的 [AudioBusLayout]。" +msgid "Sets the name of the bus at index [param bus_idx] to [param name]." +msgstr "将索引为 [param bus_idx] 的总线的名称设为 [param name]。" + +msgid "" +"Connects the output of the bus at [param bus_idx] to the bus named [param " +"send]." +msgstr "将索引为 [param bus_idx] 处的总线输出连接到名为 [param send] 的总线。" + +msgid "" +"Sets the volume of the bus at index [param bus_idx] to [param volume_db]." +msgstr "将索引为 [param bus_idx] 的总线的音量设为 [param volume_db]。" + +msgid "Swaps the position of two effects in bus [param bus_idx]." +msgstr "在索引为 [param bus_idx] 的总线中交换两个效果的位置。" + msgid "" "Unlocks the audio driver's main loop. (After locking it, you should always " "unlock it.)" @@ -4645,6 +11581,14 @@ msgstr "检测到 7.1 声道环绕声设置。" msgid "Base class for audio streams." msgstr "音频流的基类。" +msgid "" +"Base class for audio streams. Audio streams are used for sound effects and " +"music playback, and support WAV (via [AudioStreamWAV]) and Ogg (via " +"[AudioStreamOggVorbis]) file formats." +msgstr "" +"音频流的基类。音频流用于播放音效和音乐,支持 WAV(通过 [AudioStreamWAV])和 " +"Ogg(通过 [AudioStreamOggVorbis])文件格式。" + msgid "Audio streams" msgstr "音频流" @@ -4687,9 +11631,9 @@ msgstr "" "code]。\n" "根据[url=https://zh.wikipedia.org/wiki/%E9%87%87%E6%A0%B7%E5%AE%9A%E7%90%86]" "奈奎斯特–香农采样定理[/url],当超过 40000 赫兹时,人类的听觉没有质量上的差别" -"(因为大多数人只能听到 ~20000 赫兹,往往更少)。如果你要生成语音等音高较低的" -"声音,则可以使用 [code]32000[/code] 或 [code]22050[/code] 等较低的采样率,不" -"会降低质量。" +"(因为大多数人最多只能听到 ~20000 赫兹,往往更少)。如果你要生成语音等音高较" +"低的声音,则可以使用 [code]32000[/code] 或 [code]22050[/code] 等较低的采样" +"率,不会降低质量。" msgid "Plays back audio generated using [AudioStreamGenerator]." msgstr "播放使用 [AudioStreamGenerator] 生成的音频。" @@ -4717,6 +11661,58 @@ msgid "MP3 audio stream driver." msgstr "MP3 音频流驱动程序。" msgid "" +"MP3 audio stream driver. See [member data] if you want to load an MP3 file " +"at run-time." +msgstr "" +"MP3 音频流驱动程序。如果要在运行时加载 MP3 文件,请参阅 [member data]。" + +msgid "" +"Contains the audio data in bytes.\n" +"You can load a file without having to import it beforehand using the code " +"snippet below. Keep in mind that this snippet loads the whole file into " +"memory and may not be ideal for huge files (hundreds of megabytes or more).\n" +"[codeblocks]\n" +"[gdscript]\n" +"func load_mp3(path):\n" +" var file = FileAccess.open(path, FileAccess.READ)\n" +" var sound = AudioStreamMP3.new()\n" +" sound.data = file.get_buffer(file.get_length())\n" +" return sound\n" +"[/gdscript]\n" +"[csharp]\n" +"public AudioStreamMP3 LoadMP3(string path)\n" +"{\n" +" using var file = FileAccess.Open(path, FileAccess.ModeFlags.Read);\n" +" var sound = new AudioStreamMP3();\n" +" sound.Data = file.GetBuffer(file.GetLength());\n" +" return sound;\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"包含以字节为单位的音频数据。\n" +"您可以使用下面的代码片段,加载文件而无需事先导入它。请记住,此代码段将整个文" +"件加载到内存中,对于大文件(数百兆字节或更多)可能并不理想。\n" +"[codeblocks]\n" +"[gdscript]\n" +"func load_mp3(path):\n" +" var file = FileAccess.open(path, FileAccess.READ)\n" +" var sound = AudioStreamMP3.new()\n" +" sound.data = file.get_buffer(file.get_length())\n" +" return sound\n" +"[/gdscript]\n" +"[csharp]\n" +"public AudioStreamMP3 LoadMP3(string path)\n" +"{\n" +" using var file = FileAccess.Open(path, FileAccess.ModeFlags.Read);\n" +" var sound = new AudioStreamMP3();\n" +" sound.Data = file.GetBuffer(file.GetLength());\n" +" return sound;\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" "If [code]true[/code], the stream will automatically loop when it reaches the " "end." msgstr "如果为 [code]true[/code],当流到达末尾时将自动循环。" @@ -4724,9 +11720,36 @@ msgstr "如果为 [code]true[/code],当流到达末尾时将自动循环。" msgid "Time in seconds at which the stream starts after being looped." msgstr "循环时,流开始的时间,单位为秒。" +msgid "Contains the raw Ogg data for this stream." +msgstr "包含用于这个流的原始 Ogg 数据。" + msgid "Meta class for playing back audio." msgstr "播放音频的元类。" +msgid "Playback instance for [AudioStreamPolyphonic]." +msgstr "[AudioStreamPolyphonic] 的播放实例。" + +msgid "" +"Playback instance for [AudioStreamPolyphonic]. After setting the " +"[code]stream[/code] property of [AudioStreamPlayer], [AudioStreamPlayer2D], " +"or [AudioStreamPlayer3D], the playback instance can be obtained by calling " +"[method AudioStreamPlayer.get_stream_playback], [method AudioStreamPlayer2D." +"get_stream_playback] or [method AudioStreamPlayer3D.get_stream_playback] " +"methods." +msgstr "" +"[AudioStreamPolyphonic] 的播放实例。设置 [AudioStreamPlayer]、" +"[AudioStreamPlayer2D] 或 [AudioStreamPlayer3D] 的 [code]stream[/code] 属性" +"后,可以通过调用 [method AudioStreamPlayer.get_stream_playback]、[method " +"AudioStreamPlayer2D.get_stream_playback] 或 [method AudioStreamPlayer3D." +"get_stream_playback] 方法获取播放实例。" + +msgid "" +"Stop a stream. The [param stream] argument is an integer ID returned by " +"[method play_stream], which becomes invalid after calling this function." +msgstr "" +"停止某个流。[param stream] 参数是由 [method play_stream] 返回的整数 ID,在调" +"用这个函数后失效。" + msgid "Plays back audio non-positionally." msgstr "播放音频,不考虑所处位置。" @@ -4747,6 +11770,9 @@ msgid "" "[AudioStreamPlayer]." msgstr "返回与此 [AudioStreamPlayer] 关联的 [AudioStreamPlayback] 对象。" +msgid "Plays the audio from the given [param from_position], in seconds." +msgstr "从给定的位置 [param from_position] 播放音频,以秒为单位。" + msgid "Sets the position from which audio will be played, in seconds." msgstr "设置音频的播放位置,以秒为单位。" @@ -4821,6 +11847,13 @@ msgid "" msgstr "返回与该 [AudioStreamPlayer2D] 相关联的 [AudioStreamPlayback] 对象。" msgid "" +"Queues the audio to play on the next physics frame, from the given position " +"[param from_position], in seconds." +msgstr "" +"将要播放的音频入队,将在下一物理帧从给定的位置 [param from_position] 开始播" +"放,单位为秒。" + +msgid "" "Determines which [Area2D] layers affect the sound for reverb and audio bus " "effects. Areas can be used to redirect [AudioStream]s so that they play in a " "certain audio bus. An example of how you might use this is making a " @@ -4834,6 +11867,16 @@ msgstr "" msgid "Maximum distance from which audio is still hearable." msgstr "音频仍可听到的最大距离。" +msgid "" +"If [code]true[/code], audio is playing or is queued to be played (see " +"[method play])." +msgstr "" +"如果为 [code]true[/code],则音频正在播放,或者已加入播放队列(见 [method " +"play])。" + +msgid "Base volume before attenuation." +msgstr "衰减前的基础音量。" + msgid "Plays positional sound in 3D space." msgstr "在 3D 空间中播放与位置相关的声音。" @@ -4891,9 +11934,58 @@ msgid "" "over a larger distance." msgstr "衰减效果的系数。更高的值使声音在更远的距离可以听到。" +msgid "Attenuation of loudness according to linear distance." +msgstr "根据距离对响度进行线性衰减。" + +msgid "Attenuation of loudness according to squared distance." +msgstr "根据距离对响度进行平方衰减。" + +msgid "Attenuation of loudness according to logarithmic distance." +msgstr "根据距离对响度进行对数衰减。" + +msgid "" +"No attenuation of loudness according to distance. The sound will still be " +"heard positionally, unlike an [AudioStreamPlayer]. [constant " +"ATTENUATION_DISABLED] can be combined with a [member max_distance] value " +"greater than [code]0.0[/code] to achieve linear attenuation clamped to a " +"sphere of a defined size." +msgstr "" +"不根据距离衰减响度。与 [AudioStreamPlayer] 不同,声音仍会在位置上被听到。" +"[constant ATTENUATION_DISABLED] 可以与大于 [code]0.0[/code] 的 [member " +"max_distance] 值结合使用,以实现线性衰减,限制在定义的球体大小。" + msgid "Disables doppler tracking." msgstr "禁用多普勒跟踪。" +msgid "Executes doppler tracking in idle step." +msgstr "在空闲步骤中执行多普勒跟踪。" + +msgid "Executes doppler tracking in physics step." +msgstr "在物理步骤中执行多普勒跟踪。" + +msgid "Returns the stream at the specified index." +msgstr "返回指定索引处的流。" + +msgid "Move a stream from one index to another." +msgstr "将流从一个索引移动到另一个索引。" + +msgid "Remove the stream at the specified index." +msgstr "移除指定索引处的流。" + +msgid "Set the AudioStream at the specified index." +msgstr "设置指定索引处的 AudioStream。" + +msgid "" +"The intensity of random pitch variation. A value of 1 means no variation." +msgstr "随机音高变化的强度。值为 1 表示没有变化。" + +msgid "" +"The intensity of random volume variation. A value of 0 means no variation." +msgstr "随机音量变化的强度。值为 0 表示没有变化。" + +msgid "The number of streams in the stream pool." +msgstr "流池中流的数量。" + msgid "Stores audio data loaded from WAV files." msgstr "存储从 WAV 文件加载的音频数据。" @@ -5069,6 +12161,9 @@ msgstr "" "[b]注意:[/b]该属性只影响按钮的视觉表现。无论该属性的值是多少,信号都会在同一" "时刻发出。" +msgid "[Shortcut] associated to the button." +msgstr "与该按钮关联的 [Shortcut]。" + msgid "" "If [code]true[/code], the button will add information about its shortcut in " "the tooltip." @@ -5136,6 +12231,9 @@ msgstr "" "这提供了一个默认的材质,具有多种渲染功能和属性,无需编写着色器代码。详情请看" "下面的教程。" +msgid "Standard Material 3D" +msgstr "标准 3D 材质" + msgid "Returns [code]true[/code], if the specified [enum Feature] is enabled." msgstr "如果指定的 [enum Feature] 被启用,返回 [code]true[/code]。" @@ -5158,6 +12256,15 @@ msgstr "" "用或禁用多个标志。也可以通过将相应成员设置为 [code]true[/code] 来启用标志。选" "项见 [enum Flags] 枚举值。" +msgid "The type of alpha antialiasing to apply. See [enum AlphaAntiAliasing]." +msgstr "要应用的 Alpha 抗锯齿类型。见 [enum AlphaAntiAliasing]。" + +msgid "" +"The hashing scale for Alpha Hash. Recommended values between [code]0[/code] " +"and [code]2[/code]." +msgstr "" +"Alpha Hash 的哈希比例。推荐 [code]0[/code] 和 [code]2[/code] 之间的值。" + msgid "" "The strength of the anisotropy effect. This is multiplied by [member " "anisotropy_flowmap]'s alpha channel if a texture is defined there and the " @@ -5167,6 +12274,24 @@ msgstr "" "纹理,那么这个值会与其 Alpha 通道相乘。" msgid "" +"If [code]true[/code], anisotropy is enabled. Anisotropy changes the shape of " +"the specular blob and aligns it to tangent space. This is useful for brushed " +"aluminium and hair reflections.\n" +"[b]Note:[/b] Mesh tangents are needed for anisotropy to work. If the mesh " +"does not contain tangents, the anisotropy effect will appear broken.\n" +"[b]Note:[/b] Material anisotropy should not to be confused with anisotropic " +"texture filtering, which can be enabled by setting [member texture_filter] " +"to [constant TEXTURE_FILTER_LINEAR_WITH_MIPMAPS_ANISOTROPIC]." +msgstr "" +"如果为 [code]true[/code],则启用各向异性。各向异性会改变镜面反射斑点的形状并" +"将其与切线空间对齐。可用于拉丝铝材和毛发反射。\n" +"[b]注意:[/b]各向异性需要网格切线才能正常工作。如果网格中不包含切线,则各向异" +"性效果会显得破碎。\n" +"[b]注意:[/b]材质的各向异性不应与各向异性纹理过滤相混淆,后者可以通过将 " +"[member texture_filter] 设置为 [constant " +"TEXTURE_FILTER_LINEAR_WITH_MIPMAPS_ANISOTROPIC] 来启用。" + +msgid "" "Texture that offsets the tangent map for anisotropy calculations and " "optionally controls the anisotropy effect (if an alpha channel is present). " "The flowmap texture is expected to be a derivative map, with the red channel " @@ -5343,9 +12468,6 @@ msgid "" "distance." msgstr "如果为 [code]true[/code],则无论距离远近,对象都以相同的尺寸呈现。" -msgid "Grows object vertices in the direction of their normals." -msgstr "沿着法线的方向生长对象顶点。" - msgid "" "A high value makes the material appear more like a metal. Non-metals use " "their albedo as the diffuse color and add diffuse to the specular " @@ -5379,14 +12501,14 @@ msgstr "" "效果的信息时,这很有用。例如,如果您将金属效果存储在红色通道中,将粗糙度存储" "在蓝色通道中,将环境遮挡存储在绿色通道中,就可以减少您使用的纹理数量。" +msgid "The width of the shape outine." +msgstr "形状轮廓的宽度。" + msgid "" "If [code]true[/code], depth testing is disabled and the object will be drawn " "in render order." msgstr "如果为 [code]true[/code],深度测试被禁用,对象将按渲染顺序绘制。" -msgid "If [code]true[/code], normal mapping is enabled." -msgstr "如果为 [code]true[/code],则启用法线映射。" - msgid "The strength of the normal map's effect." msgstr "法线贴图的效果强度。" @@ -5464,6 +12586,22 @@ msgstr "" "subsurf_scatter_strength] 相乘。" msgid "" +"Filter flags for the texture. See [enum TextureFilter] for options.\n" +"[b]Note:[/b] [member heightmap_texture] is always sampled with linear " +"filtering, even if nearest-neighbor filtering is selected here. This is to " +"ensure the heightmap effect looks as intended. If you need sharper height " +"transitions between pixels, resize the heightmap texture in an image editor " +"with nearest-neighbor filtering." +msgstr "" +"纹理的过滤标志。可选项见 [enum TextureFilter]。\n" +"[b]注意:[/b]即便这里选择了最近邻过滤,[member heightmap_texture] 也始终使用" +"线性过滤采样。这是为了确保高度图效果看起来符合预期。如果您需要像素之间的高度" +"过渡更加清晰,请在图像编辑器中使用最近邻过滤调整高度图纹理的大小。" + +msgid "Repeat flags for the texture. See [enum TextureFilter] for options." +msgstr "纹理的重复标志。可选项见 [enum TextureFilter]。" + +msgid "" "If [code]true[/code], instead of using [code]UV[/code] textures will use a " "triplanar texture lookup to determine how to apply textures. Triplanar uses " "the orientation of the object's surface to blend between texture " @@ -5517,13 +12655,13 @@ msgid "Texture specifying per-pixel emission color." msgstr "指定每个像素发射颜色的纹理。" msgid "Texture specifying per-pixel normal vector." -msgstr "指定每像素法向量的纹理。" +msgstr "指定每个像素法向量的纹理。" msgid "Texture specifying per-pixel rim value." msgstr "指定每个像素边缘值的纹理。" msgid "Texture specifying per-pixel clearcoat value." -msgstr "指定每像素清漆值的纹理。" +msgstr "指定每个像素清漆值的纹理。" msgid "" "Texture specifying per-pixel flowmap direction for use with [member " @@ -5533,14 +12671,23 @@ msgstr "指定每个像素流图方向的纹理,用于 [member anisotropy]。" msgid "Texture specifying per-pixel ambient occlusion value." msgstr "指定每个像素环境光遮蔽的纹理。" +msgid "Texture specifying per-pixel height." +msgstr "指定每个像素高度的纹理。" + msgid "Texture specifying per-pixel subsurface scattering." -msgstr "指定每个像素的次表面散射的纹理。" +msgstr "指定每个像素次表面散射的纹理。" + +msgid "Texture specifying per-pixel transmittance for subsurface scattering." +msgstr "指定每个像素用于次表面散射的透射率的纹理。" + +msgid "Texture specifying per-pixel backlight color." +msgstr "指定每个像素背光颜色的纹理。" msgid "Texture specifying per-pixel refraction strength." msgstr "指定每个像素折射强度的纹理。" msgid "Texture specifying per-pixel detail mask blending value." -msgstr "指定每像素细节蒙版混合值的纹理。" +msgstr "指定每个像素细节蒙版混合值的纹理。" msgid "Texture specifying per-pixel detail color." msgstr "指定每个像素细节颜色的纹理。" @@ -5548,8 +12695,69 @@ msgstr "指定每个像素细节颜色的纹理。" msgid "Texture specifying per-pixel detail normal." msgstr "指定每个像素细节法线的纹理。" +msgid "Texture holding ambient occlusion, roughness, and metallic." +msgstr "保存环境光遮蔽、粗糙度和金属度信息的纹理。" + msgid "Represents the size of the [enum TextureParam] enum." -msgstr "表示 [enum TextureParam] 枚举的大小。" +msgstr "代表 [enum TextureParam] 枚举的大小。" + +msgid "" +"The texture filter reads from the nearest pixel only. The simplest and " +"fastest method of filtering, but the texture will look pixelized." +msgstr "" +"纹理过滤器仅读取最邻近的像素。最简单快速的过滤方法,但纹理看起来会像素化。" + +msgid "" +"The texture filter blends between the nearest 4 pixels. Use this when you " +"want to avoid a pixelated style, but do not want mipmaps." +msgstr "" +"纹理过滤器在最邻近的 4 个像素之间混合。如果你想要避免像素化风格,但又不想使" +"用 mipmap,那么请使用这个选项。" + +msgid "" +"The texture filter reads from the nearest pixel in the nearest mipmap. The " +"fastest way to read from textures with mipmaps." +msgstr "" +"纹理过滤器读取最邻近的 mipmap 中的最邻近的像素。带有 mipmap 的纹理的最快读取" +"方法。" + +msgid "" +"The texture filter blends between the nearest 4 pixels and between the " +"nearest 2 mipmaps. Use this for most cases as mipmaps are important to " +"smooth out pixels that are far from the camera." +msgstr "" +"纹理过滤器在最邻近的 4 个像素和最邻近的 2 个 mipmap 之间混合。请在大多数情况" +"下使用,因为 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. The anisotropic " +"filtering level can be changed by adjusting [member ProjectSettings." +"rendering/textures/default_filters/anisotropic_filtering_level]." +msgstr "" +"纹理过滤器读取最邻近的像素,但会根据表面和相机视图之间的夹角选择 mipmap。可以" +"减少几乎与相机成一直线的表面的不自然情况。各向异性过滤级别可以通过调整 " +"[member ProjectSettings.rendering/textures/default_filters/" +"anisotropic_filtering_level] 来改变。" + +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]." +msgstr "" +"纹理过滤器在最邻近的 4 个像素之间进行混合,并会根据表面和相机视图之间的夹角选" +"择 mipmap。可以减少几乎与相机成一直线的表面的不自然情况。这是过滤选项中最慢的" +"一个,但可以得到最高质量的纹理。各向异性过滤级别可以通过调整 [member " +"ProjectSettings.rendering/textures/default_filters/" +"anisotropic_filtering_level] 来改变。" + +msgid "Represents the size of the [enum TextureFilter] enum." +msgstr "代表 [enum TextureFilter] 枚举的大小。" msgid "Use [code]UV[/code] with the detail texture." msgstr "使用 [code]UV[/code] 与细节纹理。" @@ -5557,6 +12765,12 @@ msgstr "使用 [code]UV[/code] 与细节纹理。" msgid "Use [code]UV2[/code] with the detail texture." msgstr "使用 [code]UV2[/code] 与细节纹理。" +msgid "Represents the size of the [enum Transparency] enum." +msgstr "代表 [enum Transparency] 枚举的大小。" + +msgid "Represents the size of the [enum ShadingMode] enum." +msgstr "代表 [enum ShadingMode] 枚举的大小。" + msgid "Constant for setting [member emission_enabled]." msgstr "用于设置 [member emission_enabled] 的常量。" @@ -5575,9 +12789,18 @@ msgstr "用于设置 [member anisotropy_enabled] 的常量。" msgid "Constant for setting [member ao_enabled]." msgstr "用于设置 [member ao_enabled] 的常量。" +msgid "Constant for setting [member heightmap_enabled]." +msgstr "用于设置 [member heightmap_enabled] 的常量。" + msgid "Constant for setting [member subsurf_scatter_enabled]." msgstr "用于设置 [member subsurf_scatter_enabled] 的常量。" +msgid "Constant for setting [member subsurf_scatter_transmittance_enabled]." +msgstr "用于设置 [member subsurf_scatter_transmittance_enabled] 的常量。" + +msgid "Constant for setting [member backlight_enabled]." +msgstr "用于设置 [member backlight_enabled] 的常量。" + msgid "Constant for setting [member refraction_enabled]." msgstr "用于设置 [member refraction_enabled] 的常量。" @@ -5585,7 +12808,7 @@ msgid "Constant for setting [member detail_enabled]." msgstr "用于设置 [member detail_enabled] 的常量。" msgid "Represents the size of the [enum Feature] enum." -msgstr "表示 [enum Feature] 枚举的大小。" +msgstr "代表 [enum Feature] 枚举的大小。" msgid "" "Default blend mode. The color of the object is blended over the background " @@ -5601,8 +12824,22 @@ msgstr "从背景中减去对象的颜色。" msgid "The color of the object is multiplied by the background." msgstr "对象的颜色与背景相乘。" -msgid "No culling is performed." -msgstr "不进行剔除。" +msgid "Disables Alpha AntiAliasing for the material." +msgstr "禁用该材质的 Alpha 抗锯齿。" + +msgid "" +"Enables AlphaToCoverage. Alpha values in the material are passed to the " +"AntiAliasing sample mask." +msgstr "" +"启用 AlphaToCoverage。材质中的 Alpha 值会被传递到 AntiAliasing 采样遮罩。" + +msgid "" +"Enables AlphaToCoverage and forces all non-zero alpha values to [code]1[/" +"code]. Alpha values in the material are passed to the AntiAliasing sample " +"mask." +msgstr "" +"启用 AlphaToCoverage 并将所有非零的 alpha 值强制设为 [code]1[/code]。材质中" +"的 Alpha 值会被传递到 AntiAliasing 采样遮罩。" msgid "Set [code]ALBEDO[/code] to the per-vertex color specified in the mesh." msgstr "将 [code]ALBEDO[/code] 设置为网格中指定的每顶点颜色。" @@ -5648,7 +12885,7 @@ msgid "Enables the shadow to opacity feature." msgstr "启用阴影到不透明度功能。" msgid "Represents the size of the [enum Flags] enum." -msgstr "表示 [enum Flags] 枚举的大小。" +msgstr "代表 [enum Flags] 枚举的大小。" msgid "Default diffuse scattering algorithm." msgstr "默认的漫反射散射算法。" @@ -5668,9 +12905,6 @@ msgstr "默认镜面反射斑点。" msgid "Toon blob which changes size based on roughness." msgstr "基于粗糙度更改大小的 Toon 斑点。" -msgid "No specular blob." -msgstr "无镜面反射斑点。" - msgid "Billboard mode is disabled." msgstr "广告牌模式被禁用。" @@ -5706,28 +12940,27 @@ msgid "" "using the alpha channel." msgstr "根据每个像素与相机的距离,使用 Alpha 通道平滑地淡化对象。" -msgid "" -"Smoothly fades the object out based on each pixel's distance from the camera " -"using a dither approach. Dithering discards pixels based on a set pattern to " -"smoothly fade without enabling transparency. On certain hardware this can be " -"faster than [constant DISTANCE_FADE_PIXEL_ALPHA]." -msgstr "" -"根据每个像素与相机的距离,使用抖动方法平滑地淡化对象。抖动会根据设定的模式丢" -"弃像素,在不启用透明的情况下平滑淡化。在某些硬件上比 [constant " -"DISTANCE_FADE_PIXEL_ALPHA] 更快。" +msgid "3×3 matrix datatype." +msgstr "3×3 矩阵数据类型。" msgid "" -"Smoothly fades the object out based on the object's distance from the camera " -"using a dither approach. Dithering discards pixels based on a set pattern to " -"smoothly fade without enabling transparency. On certain hardware this can be " -"faster than [constant DISTANCE_FADE_PIXEL_ALPHA]." +"3×3 matrix used for 3D rotation and scale. Almost always used as an " +"orthogonal basis for a [Transform3D].\n" +"Contains 3 vector fields X, Y and Z as its columns, which are typically " +"interpreted as the local basis vectors of a transformation. For such use, it " +"is composed of a scaling and a rotation matrix, in that order (M = R.S).\n" +"Can also be accessed as array of 3D vectors. These vectors are normally " +"orthogonal to each other, but are not necessarily normalized (due to " +"scaling).\n" +"For more information, read the \"Matrices and transforms\" documentation " +"article." msgstr "" -"根据对象与相机的距离,使用抖动的方法平滑地淡化对象。抖动根据设定的模式丢弃像" -"素,在不启用透明度的情况下平滑淡化。在某些硬件上可能比 [constant " -"DISTANCE_FADE_PIXEL_ALPHA] 更快。" - -msgid "3×3 matrix datatype." -msgstr "3×3 矩阵数据类型。" +"用于 3D 旋转和缩放的 3×3 矩阵。几乎总是用作 [Transform3D] 的正交基。\n" +"包含 3 个向量字段 X、Y 和 Z 作为其列,它们通常被解释为变换的局部基向量。对于" +"这种用途,它由缩放和旋转矩阵组成,顺序为 (M = R.S)。\n" +"也可以作为 3D 向量数组访问。这些向量通常彼此正交,但不一定是归一化的(由于缩" +"放)。\n" +"更多信息请阅读文档文章《矩阵与变换》。" msgid "Matrices and transforms" msgstr "矩阵与变换" @@ -5741,11 +12974,21 @@ msgstr "矩阵变换演示" msgid "2.5D Demo" msgstr "2.5D 演示" +msgid "Constructs a default-initialized [Basis] set to [constant IDENTITY]." +msgstr "构造默认初始化为 [constant IDENTITY] 的 [Basis] 。" + msgid "Constructs a [Basis] as a copy of the given [Basis]." msgstr "构造给定 [Basis] 的副本。" +msgid "" +"Constructs a pure rotation basis matrix, rotated around the given [param " +"axis] by [param angle] (in radians). The axis must be a normalized vector." +msgstr "" +"构造纯旋转的基矩阵,围绕给定的轴 [param axis] 旋转 [param angle](单位为弧" +"度)。该轴必须是归一化向量。" + msgid "Constructs a pure rotation basis matrix from the given quaternion." -msgstr "根据给定的四元数构造一个纯旋转基矩阵。" +msgstr "根据给定的四元数构造纯旋转的基矩阵。" msgid "Constructs a basis matrix from 3 axis vectors (matrix columns)." msgstr "从 3 个轴向量(矩阵列)构造一个基矩阵。" @@ -5777,6 +13020,19 @@ msgid "Returns the inverse of the matrix." msgstr "返回矩阵的逆值。" msgid "" +"Creates a Basis with a rotation 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 " +"staying perpendicular to the forward axis. The resulting Basis is " +"orthonormalized. The [param target] and [param up] vectors cannot be zero, " +"and cannot be parallel to each other." +msgstr "" +"创建一个旋转的 Basis,使前向轴 (-Z)指向 [param target] 位置。\n" +"向上轴(+Y)指向尽可能靠近 [param up] 向量,同时保持垂直于前向轴。生成的 " +"Basis 是正交归一化的。[param target] 和 [param up] 向量不能为零,也不能相互平" +"行。" + +msgid "" "Returns the orthonormalized version of the matrix (useful to call from time " "to time to avoid rounding error for orthogonal matrices). This performs a " "Gram-Schmidt orthonormalization on the basis of the matrix." @@ -5846,6 +13102,9 @@ msgid "" "transformation." msgstr "在变换中使用时,会沿 Z 轴翻转某物的基。" +msgid "Transforms (multiplies) the [Vector3] by the given [Basis] matrix." +msgstr "使用给定的 [Basis] 矩阵变换(乘)该 [Vector3]。" + msgid "Boolean matrix." msgstr "布尔矩阵。" @@ -5867,6 +13126,9 @@ msgstr "返回位图在指定位置的值。" msgid "Returns bitmap's dimensions." msgstr "返回位图的尺寸。" +msgid "Resizes the image to [param new_size]." +msgstr "将该图像的大小修改为 [param new_size]。" + msgid "" "Sets the bitmap's element at the specified position, to the specified value." msgstr "将位图中指定位置的元素设置为指定值。" @@ -5911,6 +13173,9 @@ msgstr "" "如果节点没有父节点,返回节点的 [member rest] [code]Transform2D[/code],或者返" "回它相对于父节点的放松姿势。" +msgid "Sets the length of the bone in the [code]Bone2D[/code] node." +msgstr "设置该 [code]Bone2D[/code] 节点中骨骼的长度。" + msgid "" "Rest transform of the bone. You can reset the node's transforms to this " "value using [method apply_rest]." @@ -5920,12 +13185,248 @@ msgstr "" msgid "A node that will attach to a bone." msgstr "会附着在骨骼上的节点。" +msgid "The index of the attached bone." +msgstr "所附着骨骼的索引。" + msgid "The name of the attached bone." -msgstr "附着骨骼的名称。" +msgstr "所附着骨骼的名称。" + +msgid "Bone map for retargeting." +msgstr "用于重定向的骨骼映射。" + +msgid "" +"This class contains a hashmap that uses a list of bone names in " +"[SkeletonProfile] as key names.\n" +"By assigning the actual [Skeleton3D] bone name as the key value, it maps the " +"[Skeleton3D] to the [SkeletonProfile]." +msgstr "" +"这个类中有一个哈希表,使用 [SkeletonProfile] 中的骨骼名称作为键名。\n" +"将实际的 [Skeleton3D] 骨骼名赋为键值后,就会将 [Skeleton3D] 映射到 " +"[SkeletonProfile]。" + +msgid "Retargeting 3D Skeletons" +msgstr "重定向 3D 骨架" + +msgid "" +"Returns a skeleton bone name is mapped to [param profile_bone_name].\n" +"In the retargeting process, the returned bone name is the bone name of the " +"source skeleton." +msgstr "" +"返回与配置中的某个骨骼名称 [param profile_bone_name] 映射的骨架中的骨骼名" +"称。\n" +"在重定向过程中,设置的骨骼名称是源骨架中骨骼的名称。" + +msgid "" +"Maps a skeleton bone name to [param profile_bone_name].\n" +"In the retargeting process, the setting bone name is the bone name of the " +"source skeleton." +msgstr "" +"将骨架中的某个骨骼名称映射到配置中的骨骼名称 [param profile_bone_name]。\n" +"在重定向过程中,设置的骨骼名称是源骨架中骨骼的名称。" + +msgid "" +"A [SkeletonProfile] of the mapping target. Key names in the [BoneMap] are " +"synchronized with it." +msgstr "映射目标的 [SkeletonProfile]。[BoneMap] 中的键名与此同步。" msgid "Boolean built-in type." msgstr "布尔型内置型。" +msgid "" +"Boolean is a built-in type. There are two boolean values: [code]true[/code] " +"and [code]false[/code]. You can think of it as a switch with on or off (1 or " +"0) setting. Booleans are used in programming for logic in condition " +"statements, like [code]if[/code] statements.\n" +"Booleans can be directly used in [code]if[/code] statements. The code below " +"demonstrates this on the [code]if can_shoot:[/code] line. You don't need to " +"use [code]== true[/code], you only need [code]if can_shoot:[/code]. " +"Similarly, use [code]if not can_shoot:[/code] rather than [code]== false[/" +"code].\n" +"[codeblocks]\n" +"[gdscript]\n" +"var _can_shoot = true\n" +"\n" +"func shoot():\n" +" if _can_shoot:\n" +" pass # Perform shooting actions here.\n" +"[/gdscript]\n" +"[csharp]\n" +"private bool _canShoot = true;\n" +"\n" +"public void Shoot()\n" +"{\n" +" if (_canShoot)\n" +" {\n" +" // Perform shooting actions here.\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"The following code will only create a bullet if both conditions are met: " +"action \"shoot\" is pressed and if [code]can_shoot[/code] is [code]true[/" +"code].\n" +"[b]Note:[/b] [code]Input.is_action_pressed(\"shoot\")[/code] is also a " +"boolean that is [code]true[/code] when \"shoot\" is pressed and [code]false[/" +"code] when \"shoot\" isn't pressed.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var _can_shoot = true\n" +"\n" +"func shoot():\n" +" if _can_shoot and Input.is_action_pressed(\"shoot\"):\n" +" create_bullet()\n" +"[/gdscript]\n" +"[csharp]\n" +"private bool _canShoot = true;\n" +"\n" +"public void Shoot()\n" +"{\n" +" if (_canShoot && Input.IsActionPressed(\"shoot\"))\n" +" {\n" +" CreateBullet();\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"The following code will set [code]can_shoot[/code] to [code]false[/code] and " +"start a timer. This will prevent player from shooting until the timer runs " +"out. Next [code]can_shoot[/code] will be set to [code]true[/code] again " +"allowing player to shoot once again.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var _can_shoot = true\n" +"@onready var _cool_down = $CoolDownTimer\n" +"\n" +"func shoot():\n" +" if _can_shoot and Input.is_action_pressed(\"shoot\"):\n" +" create_bullet()\n" +" _can_shoot = false\n" +" _cool_down.start()\n" +"\n" +"func _on_cool_down_timer_timeout():\n" +" _can_shoot = true\n" +"[/gdscript]\n" +"[csharp]\n" +"private bool _canShoot = true;\n" +"private Timer _coolDown;\n" +"\n" +"public override void _Ready()\n" +"{\n" +" _coolDown = GetNode<Timer>(\"CoolDownTimer\");\n" +"}\n" +"\n" +"public void Shoot()\n" +"{\n" +" if (_canShoot && Input.IsActionPressed(\"shoot\"))\n" +" {\n" +" CreateBullet();\n" +" _canShoot = false;\n" +" _coolDown.Start();\n" +" }\n" +"}\n" +"\n" +"public void OnCoolDownTimerTimeout()\n" +"{\n" +" _canShoot = true;\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"布尔是内置类型。布尔值有两个:[code]true[/code] 和 [code]false[/code]。你可以" +"把它想象成开关,有开和关(1 和 0)两种状态。布尔型在编程中用于条件语句的逻" +"辑,如 [code]if[/code] 语句。\n" +"布尔型可以直接用于 [code]if[/code] 语句中。下面的代码在 [code]if can_shoot:[/" +"code] 那一行进行了演示。你不需要使用 [code]== true[/code],你只需要 [code]if " +"can_shoot:[/code]。同样的,请使用 [code]if not can_shoot:[/code] 而不是 " +"[code]== false[/code]。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var _can_shoot = true\n" +"\n" +"func shoot():\n" +" if _can_shoot:\n" +" pass # 在此执行射击。\n" +"[/gdscript]\n" +"[csharp]\n" +"private bool _canShoot = true;\n" +"\n" +"public void Shoot()\n" +"{\n" +" if (_canShoot)\n" +" {\n" +" // 在此执行射击。\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"下面的代码只有在两个条件都满足的情况下才会创建子弹:动作“shoot”被按下,并且 " +"[code]can_shoot[/code] 为 [code]true[/code]。\n" +"[b]注意:[/b][code]Input.is_action_pressed(\"shoot\")[/code] 也是布尔值," +"当“shoot”被按下时为 [code]true[/code],当“shoot”没有被按下时为 [code]false[/" +"code]。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var _can_shoot = true\n" +"\n" +"func shoot():\n" +" if _can_shoot and Input.is_action_pressed(\"shoot\"):\n" +" create_bullet()\n" +"[/gdscript]\n" +"[csharp]\n" +"private bool _canShoot = true;\n" +"\n" +"public void Shoot()\n" +"{\n" +" if (_canShoot && Input.IsActionPressed(\"shoot\"))\n" +" {\n" +" CreateBullet();\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"下面的代码会将 [code]can_shoot[/code] 设置为 [code]false[/code] 并启动计时" +"器。这样就会在计时器结束前阻止玩家进行射击。然后 [code]can_shoot[/code] 就会" +"再次被设为 [code]true[/code],再次允许玩家进行射击。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var _can_shoot = true\n" +"@onready var _cool_down = $CoolDownTimer\n" +"\n" +"func shoot():\n" +" if _can_shoot and Input.is_action_pressed(\"shoot\"):\n" +" create_bullet()\n" +" _can_shoot = false\n" +" _cool_down.start()\n" +"\n" +"func _on_cool_down_timer_timeout():\n" +" _can_shoot = true\n" +"[/gdscript]\n" +"[csharp]\n" +"private bool _canShoot = true;\n" +"private Timer _coolDown;\n" +"\n" +"public override void _Ready()\n" +"{\n" +" _coolDown = GetNode<Timer>(\"CoolDownTimer\");\n" +"}\n" +"\n" +"public void Shoot()\n" +"{\n" +" if (_canShoot && Input.IsActionPressed(\"shoot\"))\n" +" {\n" +" CreateBullet();\n" +" _canShoot = false;\n" +" _coolDown.Start();\n" +" }\n" +"}\n" +"\n" +"public void OnCoolDownTimerTimeout()\n" +"{\n" +" _canShoot = true;\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" + msgid "Constructs a [bool] as a copy of the given [bool]." msgstr "构造给定 [bool] 的副本。" @@ -5948,6 +13449,62 @@ msgstr "" msgid "Base class for box containers." msgstr "盒式容器的基类。" +msgid "" +"Arranges child [Control] nodes vertically or horizontally, and rearranges " +"them automatically when their minimum size changes." +msgstr "" +"将子级 [Control] 节点垂直或水平排列,在它们的最小尺寸发生变化时会自动重新排" +"列。" + +msgid "" +"Adds a [Control] node to the box as a spacer. If [param begin] is " +"[code]true[/code], it will insert the [Control] node in front of all other " +"children." +msgstr "" +"添加 [Control] 节点作为间隔。如果 [param begin] 为 [code]true[/code],则会将" +"该 [Control] 节点添加到所有其他节点之前。" + +msgid "" +"The alignment of the container's children (must be one of [constant " +"ALIGNMENT_BEGIN], [constant ALIGNMENT_CENTER], or [constant ALIGNMENT_END])." +msgstr "" +"该容器子节点的对齐方式(必须是 [constant ALIGNMENT_BEGIN]、[constant " +"ALIGNMENT_CENTER]、[constant ALIGNMENT_END] 之一)。" + +msgid "" +"If [code]true[/code], the [BoxContainer] will arrange its children " +"vertically, rather than horizontally.\n" +"Can't be changed when using [HBoxContainer] and [VBoxContainer]." +msgstr "" +"如果为 [code]true[/code],则该 [BoxContainer] 会将子节点垂直排列,否则会水平" +"排列。\n" +"使用 [HBoxContainer] 和 [VBoxContainer] 时无法改变。" + +msgid "" +"The child controls will be arranged at the beginning of the container, i.e. " +"top if orientation is vertical, left if orientation is horizontal (right for " +"RTL layout)." +msgstr "" +"子控件会被排列在该容器的开头,如果是垂直朝向则为顶部,如果是水平朝向则为左侧" +"(RTL 布局时为右侧)。" + +msgid "The child controls will be centered in the container." +msgstr "子控件会在该容器里居中。" + +msgid "" +"The child controls will be arranged at the end of the container, i.e. bottom " +"if orientation is vertical, right if orientation is horizontal (left for RTL " +"layout)." +msgstr "" +"子控件会被排列在该容器的末尾,如果是垂直朝向则为底部,如果是水平朝向则为右侧" +"(RTL 布局时为左侧)。" + +msgid "The space between the [BoxContainer]'s elements, in pixels." +msgstr "[BoxContainer] 元素之间的距离,单位为像素。" + +msgid "Generate an axis-aligned box [PrimitiveMesh]." +msgstr "生成轴对齐盒 [PrimitiveMesh]。" + msgid "Number of extra edge loops inserted along the Z axis." msgstr "沿 Z 轴插入的额外边缘环的数量。" @@ -5963,6 +13520,81 @@ msgstr "3D 动力学角色演示" msgid "Standard themed Button." msgstr "标准主题按钮。" +msgid "" +"Button is the standard themed button. It can contain text and an icon, and " +"will display them according to the current [Theme].\n" +"[b]Example of creating a button and assigning an action when pressed by code:" +"[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _ready():\n" +" var button = Button.new()\n" +" button.text = \"Click me\"\n" +" button.pressed.connect(self._button_pressed)\n" +" add_child(button)\n" +"\n" +"func _button_pressed():\n" +" print(\"Hello world!\")\n" +"[/gdscript]\n" +"[csharp]\n" +"public override void _Ready()\n" +"{\n" +" var button = new Button();\n" +" button.Text = \"Click me\";\n" +" button.Pressed += ButtonPressed;\n" +" AddChild(button);\n" +"}\n" +"\n" +"private void ButtonPressed()\n" +"{\n" +" GD.Print(\"Hello world!\");\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"Buttons (like all Control nodes) can also be created in the editor, but some " +"situations may require creating them from code.\n" +"See also [BaseButton] which contains common properties and methods " +"associated with this node.\n" +"[b]Note:[/b] Buttons do not interpret touch input and therefore don't " +"support multitouch, since mouse emulation can only press one button at a " +"given time. Use [TouchScreenButton] for buttons that trigger gameplay " +"movement or actions, as [TouchScreenButton] supports multitouch." +msgstr "" +"Button 是标准的主题按钮。它可以包含文字和图标,并根据当前的 [Theme] 显示。\n" +"[b]通过代码创建一个按钮并指定一个在按下时的动作的例子:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _ready():\n" +" var button = Button.new()\n" +" button.text = \"Click me\"\n" +" button.pressed.connect(self._button_pressed)\n" +" add_child(button)\n" +"\n" +"func _button_pressed():\n" +" print(\"Hello world!\")\n" +"[/gdscript]\n" +"[csharp]\n" +"public override void _Ready()\n" +"{\n" +" var button = new Button();\n" +" button.Text = \"Click me\";\n" +" button.Pressed += ButtonPressed;\n" +" AddChild(button);\n" +"}\n" +"\n" +"private void ButtonPressed()\n" +"{\n" +" GD.Print(\"Hello world!\");\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"按钮(与所有控件节点一样)也可以在编辑器中创建,但某些情况下可能需要从代码中" +"创建它们。\n" +"另请参阅 [BaseButton],其中包含与此节点相关联的通用属性和方法。\n" +"[b]注意:[/b]按钮不处理触摸输入,因此不支持多点触控,因为模拟鼠标在给定时间只" +"能按下一个按钮。将 [TouchScreenButton] 用于触发游戏移动或动作的按钮,因为 " +"[TouchScreenButton] 支持多点触控。" + msgid "OS Test Demo" msgstr "操作系统测试演示" @@ -5982,43 +13614,106 @@ msgstr "启用后,按钮的图标将展开/收缩以适应按钮的大小, msgid "Flat buttons don't display decoration." msgstr "平面按钮不显示装饰。" +msgid "" +"Language code used for line-breaking and text shaping algorithms, if left " +"empty current locale is used instead." +msgstr "语言代码,用于断行和文本塑形算法,如果留空则使用当前区域设置。" + msgid "The button's text that will be displayed inside the button's area." -msgstr "按钮的文字,将显示在按钮的区域内。" +msgstr "该按钮的文本,将显示在按钮的区域内。" + +msgid "Base text writing direction." +msgstr "基础文本书写方向。" msgid "Default text [Color] of the [Button]." -msgstr "[Button] 的默认文本 [Color]。" +msgstr "该 [Button] 的默认文本 [Color]。" msgid "Text [Color] used when the [Button] is disabled." -msgstr "禁用 [Button] 时使用的文本 [Color]。" +msgstr "该 [Button] 处于禁用状态时,使用的文本 [Color]。" msgid "" "Text [Color] used when the [Button] is focused. Only replaces the normal " "text color of the button. Disabled, hovered, and pressed states take " "precedence over this color." msgstr "" -"当 [Button] 获得焦点时使用的文本 [Color]。只取代按钮的正常文本颜色。禁用、悬" -"停和按下状态优先于这个颜色。" +"该 [Button] 处于聚焦状态时,使用的文本 [Color]。只替换该按钮的正常文本颜色。" +"禁用、悬停、按下状态优先于这个颜色。" msgid "Text [Color] used when the [Button] is being hovered." -msgstr "悬停 [Button] 时使用的文本 [Color]。" +msgstr "该 [Button] 处于悬停状态时,使用的文本 [Color]。" + +msgid "Text [Color] used when the [Button] is being hovered and pressed." +msgstr "该 [Button] 处于悬停并按下状态时,使用的文本 [Color]。" + +msgid "The tint of text outline of the [Button]." +msgstr "该 [Button] 的文本轮廓的着色。" msgid "Text [Color] used when the [Button] is being pressed." -msgstr "正在按下 [Button] 时使用的文本 [Color] 。" +msgstr "该 [Button] 处于按下状态时,使用的文本 [Color] 。" + +msgid "Icon modulate [Color] used when the [Button] is disabled." +msgstr "该 [Button] 处于禁用状态时,使用的图标调制 [Color]。" + +msgid "" +"Icon modulate [Color] used when the [Button] is focused. Only replaces the " +"normal modulate color of the button. Disabled, hovered, and pressed states " +"take precedence over this color." +msgstr "" +"该 [Button] 处于聚焦状态时,使用的图标调制 [Color]。仅替换该按钮的正常调制颜" +"色。禁用、悬停和按下状态优先于这个颜色。" + +msgid "Icon modulate [Color] used when the [Button] is being hovered." +msgstr "该 [Button] 处于悬停状态时,使用的图标调制[Color]。" + +msgid "" +"Icon modulate [Color] used when the [Button] is being hovered and pressed." +msgstr "该 [Button] 处于悬停并按下按下状态时,使用的图标调制 [Color]。" + +msgid "Default icon modulate [Color] of the [Button]." +msgstr "该 [Button] 的默认图标调制 [Color]。" + +msgid "Icon modulate [Color] used when the [Button] is being pressed." +msgstr "该 [Button] 处于按下状态时,使用的图标调制 [Color]。" + +msgid "" +"The horizontal space between [Button]'s icon and text. Negative values will " +"be treated as [code]0[/code] when used." +msgstr "" +"[Button] 的图标和文本之间的水平间距。使用时会将负值当作 [code]0[/code]。" msgid "[Font] of the [Button]'s text." -msgstr "[Button] 文本的 [Font]。" +msgstr "该 [Button] 文本的 [Font]。" + +msgid "Font size of the [Button]'s text." +msgstr "该 [Button] 文本的字体大小。" msgid "[StyleBox] used when the [Button] is disabled." -msgstr "当 [Button] 被禁用时,使用的 [StyleBox]。" +msgstr "该 [Button] 处于禁用状态时使用的 [StyleBox]。" + +msgid "" +"[StyleBox] used when the [Button] is focused. The [code]focus[/code] " +"[StyleBox] is displayed [i]over[/i] the base [StyleBox], so a partially " +"transparent [StyleBox] should be used to ensure the base [StyleBox] remains " +"visible. A [StyleBox] that represents an outline or an underline works well " +"for this purpose. To disable the focus visual effect, assign a " +"[StyleBoxEmpty] resource. Note that disabling the focus visual effect will " +"harm keyboard/controller navigation usability, so this is not recommended " +"for accessibility reasons." +msgstr "" +"该 [Button] 处于聚焦状态时使用的 [StyleBox]。[code]focus[/code] [StyleBox] 显" +"示在基础 [StyleBox] [i]之上[/i],所以应该使用部分透明的 [StyleBox],确保基础 " +"[StyleBox] 仍然可见。代表轮廓或下划线的 [StyleBox] 可以很好地实现这个目的。要" +"禁用聚焦的视觉效果,请指定 [StyleBoxEmpty] 资源。请注意,禁用聚焦的视觉效果会" +"影响使用键盘/手柄进行导航的可用性,所以出于可访问性的原因,不建议这样做。" msgid "[StyleBox] used when the [Button] is being hovered." -msgstr "悬停 [Button] 时使用的 [StyleBox]。" +msgstr "该 [Button] 处于悬停状态时使用的 [StyleBox]。" msgid "Default [StyleBox] for the [Button]." -msgstr "[Button] 的默认 [StyleBox]。" +msgstr "该 [Button] 的默认 [StyleBox]。" msgid "[StyleBox] used when the [Button] is being pressed." -msgstr "按下 [Button] 时使用的 [StyleBox]。" +msgstr "该 [Button] 处于按下状态时使用的 [StyleBox]。" msgid "Group of Buttons." msgstr "按钮组。" @@ -6029,20 +13724,343 @@ msgstr "返回当前按下的按钮。" msgid "Emitted when one of the buttons of the group is pressed." msgstr "当该组中的一个按钮被按下时触发。" +msgid "" +"Built-in type representing a method in an object instance or a standalone " +"function." +msgstr "内置类型,代表对象实例中的某个方法,或者某个独立函数。" + +msgid "" +"[Callable] is a built-in [Variant] type that represents a function. It can " +"either be a method within an [Object] instance, or a standalone function not " +"related to any object, like a lambda function. Like all [Variant] types, it " +"can be stored in variables and passed to other functions. It is most " +"commonly used for signal callbacks.\n" +"[b]Example:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"func print_args(arg1, arg2, arg3 = \"\"):\n" +" prints(arg1, arg2, arg3)\n" +"\n" +"func test():\n" +" var callable = Callable(self, \"print_args\")\n" +" callable.call(\"hello\", \"world\") # Prints \"hello world \".\n" +" callable.call(Vector2.UP, 42, callable) # Prints \"(0, -1) 42 Node(node." +"gd)::print_args\".\n" +" callable.call(\"invalid\") # Invalid call, should have at least 2 " +"arguments.\n" +"[/gdscript]\n" +"[csharp]\n" +"// Default parameter values are not supported.\n" +"public void PrintArgs(Variant arg1, Variant arg2, Variant arg3 = default)\n" +"{\n" +" GD.PrintS(arg1, arg2, arg3);\n" +"}\n" +"\n" +"public void Test()\n" +"{\n" +" // Invalid calls fail silently.\n" +" Callable callable = new Callable(this, MethodName.PrintArgs);\n" +" callable.Call(\"hello\", \"world\"); // Default parameter values are not " +"supported, should have 3 arguments.\n" +" callable.Call(Vector2.Up, 42, callable); // Prints \"(0, -1) 42 " +"Node(Node.cs)::PrintArgs\".\n" +" callable.Call(\"invalid\"); // Invalid call, should have 3 arguments.\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"In GDScript, it's possible to create lambda functions within a method. " +"Lambda functions are custom callables that are not associated with an " +"[Object] instance. Optionally, lambda functions can also be named. The name " +"will be displayed in the debugger, or when calling [method get_method].\n" +"[codeblock]\n" +"func _init():\n" +" var my_lambda = func (message):\n" +" print(message)\n" +"\n" +" # Prints Hello everyone!\n" +" my_lambda.call(\"Hello everyone!\")\n" +"\n" +" # Prints \"Attack!\", when the button_pressed signal is emitted.\n" +" button_pressed.connect(func(): print(\"Attack!\"))\n" +"[/codeblock]" +msgstr "" +"可调用体 [Callable] 是内置的 [Variant] 类型,代表某个函数。可以是 [Object] 实" +"例中的某个方法,也可以是与对象无关的独立函数,比如 lambda 函数。和所有 " +"[Variant] 类型一样可以保存在变量里,传递给其他函数。最常用于信号回调。\n" +"[b]示例:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"func print_args(arg1, arg2, arg3 = \"\"):\n" +" prints(arg1, arg2, arg3)\n" +"\n" +"func test():\n" +" var callable = Callable(self, \"print_args\")\n" +" callable.call(\"hello\", \"world\") # 输出 \"hello world \".\n" +" callable.call(Vector2.UP, 42, callable) # 输出 \"(0, -1) 42 Node(node." +"gd)::print_args\".\n" +" callable.call(\"invalid\") # 无效调用,应当至少有 2 个参数。\n" +"[/gdscript]\n" +"[csharp]\n" +"// 不支持参数默认值。\n" +"public void PrintArgs(Variant arg1, Variant arg2, Variant arg3 = default)\n" +"{\n" +" GD.PrintS(arg1, arg2, arg3);\n" +"}\n" +"\n" +"public void Test()\n" +"{\n" +" // Invalid calls fail silently.\n" +" Callable callable = new Callable(this, MethodName.PrintArgs);\n" +" callable.Call(\"hello\", \"world\"); // 不支持参数默认值,应当有 3 个参" +"数。\n" +" callable.Call(Vector2.Up, 42, callable); // 输出 \"(0, -1) 42 Node(Node." +"cs)::PrintArgs\".\n" +" callable.Call(\"invalid\"); // 无效调用,应当有 3 个参数。\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"GDScript 中可以在方法里创建 lambda 函数。Lambda 函数是自定义的可调用体,不与 " +"[Object] 实例关联。也可以为 Lambda 函数命名。该名称会显示在调试器中,也会在 " +"[method get_method] 中使用。\n" +"[codeblock]\n" +"func _init():\n" +" var my_lambda = func (message):\n" +" print(message)\n" +"\n" +" # 输出 大家好呀!\n" +" my_lambda.call(\"大家好呀!\")\n" +"\n" +" # 发出 button_pressed 信号时输出 \"全军出击!\"。\n" +" button_pressed.connect(func(): print(\"全军出击!\"))\n" +"[/codeblock]" + msgid "Constructs an empty [Callable], with no object nor method bound." msgstr "构造空的 [Callable],没有绑定对象和方法。" msgid "Constructs a [Callable] as a copy of the given [Callable]." msgstr "构造给定 [Callable] 的副本。" +msgid "" +"Creates a new [Callable] for the method named [param method] in the " +"specified [param object]." +msgstr "" +"创建新的 [Callable],使用指定对象 [param object] 中名为 [param method] 的方" +"法。" + +msgid "" +"Returns a copy of this [Callable] with one or more arguments bound. When " +"called, the bound arguments are passed [i]after[/i] the arguments supplied " +"by [method call]." +msgstr "" +"返回该 [Callable] 的副本,绑定其中的一个或多个参数。调用时,被绑定的参数在提" +"供给 [method call] 的参数[i]之后[/i]传递。" + +msgid "" +"Returns a copy of this [Callable] with one or more arguments bound, reading " +"them from an array. When called, the bound arguments are passed [i]after[/i] " +"the arguments supplied by [method call]." +msgstr "" +"返回该 [Callable] 的副本,绑定其中的一个或多个参数,参数从数组中读取。调用" +"时,被绑定的参数在提供给 [method call] 的参数[i]之后[/i]传递。" + +msgid "" +"Calls the method represented by this [Callable]. Arguments can be passed and " +"should match the method's signature." +msgstr "" +"调用该 [Callable] 所代表的方法。可以传递参数,必须与该方法的签名相匹配。" + +msgid "" +"Calls the method represented by this [Callable] in deferred mode, i.e. " +"during the idle frame. Arguments can be passed and should match the method's " +"signature.\n" +"[codeblock]\n" +"func _ready():\n" +" grab_focus.call_deferred()\n" +"[/codeblock]" +msgstr "" +"使用延迟模式调用该 [Callable] 所代表的方法,即在空闲帧中调用。可以传递参数," +"必须与该方法的签名相匹配。\n" +"[codeblock]\n" +"func _ready():\n" +" grab_focus.call_deferred()\n" +"[/codeblock]" + +msgid "" +"Calls the method represented by this [Callable]. Unlike [method call], this " +"method expects all arguments to be contained inside the [param arguments] " +"[Array]." +msgstr "" +"调用该 [Callable] 所代表的方法。与 [method call] 不同,这个方法需要所有参数都" +"放在 [param arguments] [Array] 之中。" + +msgid "" +"Return the bound arguments (as long as [method get_bound_arguments_count] is " +"greater than zero), or empty (if [method get_bound_arguments_count] is less " +"than or equal to zero)." +msgstr "" +"返回绑定的参数(只要 [method get_bound_arguments_count] 大于零)或者空数组" +"(如果 [method get_bound_arguments_count] 小于等于零)。" + +msgid "" +"Returns the total amount of arguments bound (or unbound) via successive " +"[method bind] or [method unbind] calls. If the amount of arguments unbound " +"is greater than the ones bound, this function returns a value less than zero." +msgstr "" +"返回通过成功调用 [method bind] 或 [method unbind] 绑定(或解绑)参数的总数。" +"如果解绑参数的总数比绑定参数大,则这个函数的返回值小于零。" + +msgid "" +"Returns the name of the method represented by this [Callable]. If the " +"callable is a lambda function, returns the function's name." +msgstr "" +"返回该 [Callable] 所代表的方法的名称。如果该可调用体是 lambda 函数,则返回该" +"函数的名称。" + +msgid "Returns the object on which this [Callable] is called." +msgstr "返回该 [Callable] 所调用的对象。" + +msgid "" +"Returns the ID of this [Callable]'s object (see [method Object." +"get_instance_id])." +msgstr "返回该 [Callable] 中对象的 ID(见 [method Object.get_instance_id])。" + +msgid "" +"Returns the 32-bit hash value of this [Callable]'s object.\n" +"[b]Note:[/b] [Callable]s with equal content will always produce identical " +"hash values. However, the reverse is not true. Returning identical hash " +"values does [i]not[/i] imply the callables are equal, because different " +"callables can have identical hash values due to hash collisions. The engine " +"uses a 32-bit hash algorithm for [method hash]." +msgstr "" +"返回该 [Callable] 对象的 32 位哈希值。\n" +"[b]注意:[/b]内容相同的 [Callable] 哈希值始终相同。反之则不然,返回的哈希值相" +"同[i]并不[/i]意味着可调用体相等,因为不同的可调用体可能由于哈希冲突而具有相同" +"的哈希值。引擎在 [method hash] 中使用 32 位哈希算法。" + +msgid "" +"Returns [code]true[/code] if this [Callable] is a custom callable. Custom " +"callables are created from [method bind] or [method unbind]. In GDScript, " +"lambda functions are also custom callables." +msgstr "" +"如果该 [Callable] 为自定义可调用体,则返回 [code]true[/code]。自定义可调用体" +"是由 [method bind] 或 [method unbind] 创建的。在 GDScript 中,lambda 函数也是" +"自定义可调用体。" + +msgid "" +"Returns [code]true[/code] if this [Callable] has no target to call the " +"method on." +msgstr "如果该 [Callable] 没有调用方法的目标,则返回 [code]true[/code]。" + +msgid "" +"Returns [code]true[/code] if this [Callable] is a standard callable. This " +"method is the opposite of [method is_custom]. Returns [code]false[/code] if " +"this callable is a lambda function." +msgstr "" +"如果该 [Callable] 为标准可调用体,则返回 [code]true[/code]。这个方法与 " +"[method is_custom] 相对。如果该可调用体为 lambda 函数,则返回 [code]false[/" +"code]。" + +msgid "" +"Returns [code]true[/code] if the callable's object exists and has a valid " +"method name assigned, or is a custom callable." +msgstr "" +"如果该可调用体的对象存在,且分配了有效的方法名,或者为自定义可调用体,则返回 " +"[code]true[/code]。" + +msgid "" +"Perform an RPC (Remote Procedure Call). This is used for multiplayer and is " +"normally not available, unless the function being called has been marked as " +"[i]RPC[/i]. Calling this method on unsupported functions will result in an " +"error. See [method Node.rpc]." +msgstr "" +"执行 RPC(Remote Procedure Call,远程过程调用)。用于多人游戏,一般不可用,除" +"非所调用的函数有 [i]RPC[/i] 标记。在不支持的方法上调用该方法会导致出错。见 " +"[method Node.rpc]。" + +msgid "" +"Perform an RPC (Remote Procedure Call) on a specific peer ID (see " +"multiplayer documentation for reference). This is used for multiplayer and " +"is normally not available unless the function being called has been marked " +"as [i]RPC[/i]. Calling this method on unsupported functions will result in " +"an error. See [method Node.rpc_id]." +msgstr "" +"针对特定的对等体 ID(请参阅多人游戏文档)执行 RPC(Remote Procedure Call,远" +"程过程调用)。用于多人游戏,一般不可用,除非所调用的函数有 [i]RPC[/i] 标记。" +"在不支持的方法上调用该方法会导致出错。见 [method Node.rpc_id]。" + +msgid "" +"Returns a copy of this [Callable] with the arguments unbound, as defined by " +"[param argcount]. Calling the returned [Callable] will call the method " +"without the extra arguments that are supplied in the [Callable] on which you " +"are calling this method." +msgstr "" +"返回该 [Callable] 的副本,解绑若干个参数,个数由 [param argcount] 定义。调用" +"返回的 [Callable] 时,会去除所提供参数中的额外参数,再对原 [Callable] 的方法" +"进行调用。" + +msgid "Returns [code]true[/code] if both [Callable]s invoke different targets." +msgstr "如果两个 [Callable] 调用的目标不同,则返回 [code]true[/code]。" + +msgid "" +"Returns [code]true[/code] if both [Callable]s invoke the same custom target." +msgstr "如果两个 [Callable] 调用的自定义目标相同,则返回 [code]true[/code]。" + msgid "Calls the specified method after optional delay." msgstr "在可选的延迟之后调用指定的方法。" +msgid "" +"Makes the callback call delayed by given time in seconds.\n" +"[b]Example:[/b]\n" +"[codeblock]\n" +"var tween = get_tree().create_tween()\n" +"tween.tween_callback(queue_free).set_delay(2) #this will call queue_free() " +"after 2 seconds\n" +"[/codeblock]" +msgstr "" +"让该回调延迟给定的时间,单位为秒。\n" +"[b]示例:[/b]\n" +"[codeblock]\n" +"var tween = get_tree().create_tween()\n" +"tween.tween_callback(queue_free).set_delay(2) # 会在 2 秒后调用 " +"queue_free()\n" +"[/codeblock]" + msgid "Camera node for 2D scenes." msgstr "2D 场景的相机节点。" +msgid "" +"Camera node for 2D scenes. It forces the screen (current layer) to scroll " +"following this node. This makes it easier (and faster) to program scrollable " +"scenes than manually changing the position of [CanvasItem]-based nodes.\n" +"Cameras register themselves in the nearest [Viewport] node (when ascending " +"the tree). Only one camera can be active per viewport. If no viewport is " +"available ascending the tree, the camera will register in the global " +"viewport.\n" +"This node is intended to be a simple helper to get things going quickly, but " +"more functionality may be desired to change how the camera works. To make " +"your own custom camera node, inherit it from [Node2D] and change the " +"transform of the canvas by setting [member Viewport.canvas_transform] in " +"[Viewport] (you can obtain the current [Viewport] by using [method Node." +"get_viewport]).\n" +"Note that the [Camera2D] node's [code]position[/code] doesn't represent the " +"actual position of the screen, which may differ due to applied smoothing or " +"limits. You can use [method get_screen_center_position] to get the real " +"position." +msgstr "" +"用于 2D 场景的相机节点。它强制屏幕(当前层)跟随该节点滚动。与手动改变基于 " +"[CanvasItem] 节点的坐标相比,这使得对可滚动场景进行编程更加容易和快捷。\n" +"相机会在最近的 [Viewport](在上层树时)节点中注册自己。每个视口只能激活一个相" +"机。如果树上没有可用的视口,相机将在全局视口中注册。\n" +"这个节点旨在成为简单的辅助工具,让事情便捷,但可能需要更多的功能来改变相机的" +"工作方式。要制作自定义相机节点,则从 [Node2D] 继承,并通过设置 [Viewport] 中" +"的 [member Viewport.canvas_transform] 来改变画布的变换(你可以通过使用 " +"[method Node.get_viewport] 获得当前的 [Viewport])。\n" +"请注意,[Camera2D] 节点的 [code]position[/code] 并不代表屏幕的实际位置,这可" +"能会因应用的平滑或限制而有所不同。可以使用 [method " +"get_screen_center_position] 获取真实位置。" + msgid "2D Isometric Demo" -msgstr "2D 等轴测演示" +msgstr "2D 等轴演示" msgid "2D HDR Demo" msgstr "2D HDR 演示" @@ -6053,6 +14071,22 @@ msgstr "将相机与跟踪的节点对齐。" msgid "Forces the camera to update scroll immediately." msgstr "强制相机立即更新滚动。" +msgid "" +"Returns the specified [enum Side]'s margin. See also [member " +"drag_bottom_margin], [member drag_top_margin], [member drag_left_margin], " +"and [member drag_right_margin]." +msgstr "" +"返回指定边 [enum Side] 的边距。另见 [member drag_bottom_margin]、[member " +"drag_top_margin]、[member drag_left_margin] 和 [member drag_right_margin]。" + +msgid "" +"Returns the camera limit for the specified [enum Side]. See also [member " +"limit_bottom], [member limit_top], [member limit_left], and [member " +"limit_right]." +msgstr "" +"返回指定边 [enum Side] 的相机极限。另见 [member limit_bottom]、[member " +"limit_top]、[member limit_left] 和 [member limit_right]。" + msgid "The Camera2D's anchor point. See [enum AnchorMode] constants." msgstr "Camera2D 的锚点。见 [enum AnchorMode] 常量。" @@ -6095,6 +14129,21 @@ msgid "Camera node, displays from a point of view." msgstr "相机节点,会从某个角度进行显示。" msgid "" +"[Camera3D] is a special node that displays what is visible from its current " +"location. Cameras register themselves in the nearest [Viewport] node (when " +"ascending the tree). Only one camera can be active per viewport. If no " +"viewport is available ascending the tree, the camera will register in the " +"global viewport. In other words, a camera just provides 3D display " +"capabilities to a [Viewport], and, without one, a scene registered in that " +"[Viewport] (or higher viewports) can't be displayed." +msgstr "" +"[Camera3D] 是一个特殊节点,用于显示从其当前位置可见的内容。相机在最近的 " +"[Viewport] 节点中注册自己(当树上行)。每个视口中只能有一个激活的相机。如果在" +"树上没有可用的视口,相机将在全局视口中注册。换句话说,相机只是用来为 " +"[Viewport] 提供 3D 显示能力的,如果没有,则在该 [Viewport](或更高层视口)中" +"注册的场景无法显示。" + +msgid "" "Returns the camera's frustum planes in world space units as an array of " "[Plane]s in the following order: near, far, left, top, right, bottom. Not to " "be confused with [member frustum_offset]." @@ -6136,6 +14185,9 @@ msgstr "" "返回世界空间中的 3D 坐标,即通过逆相机投影在 [Viewport] 矩形上投影一个点的结" "果。这对于以原点、法线,投射光线形式用于对象相交或拾取很有用。" +msgid "The [CameraAttributes] to use for this camera." +msgstr "该相机所使用的 [CameraAttributes]。" + msgid "" "The culling mask that describes which 3D render layers are rendered by this " "camera." @@ -6259,6 +14311,9 @@ msgstr "" "url]。与这些物体相比,该相机的相对速度的变化会影响音频的感知方式(改变音频的 " "[member AudioStreamPlayer3D.pitch_scale])。" +msgid "Parent class for camera settings." +msgstr "相机设置的父类。" + msgid "" "If [code]true[/code], enables the tonemapping auto exposure mode of the " "scene renderer. If [code]true[/code], the renderer will automatically " @@ -6278,6 +14333,9 @@ msgid "" "camera to perform auto exposure." msgstr "自动曝光效果的速度。影响相机执行自动曝光所需的时间。" +msgid "Physically-based camera settings." +msgstr "基于物理的相机设置。" + msgid "" "A camera feed gives you access to a single physical camera attached to your " "device." @@ -6401,6 +14459,65 @@ msgstr "" "我们要访问 [CameraFeed] 中的哪个图像,如果相机图像被分割成 Y 和 CbCr 分量,这" "一点很重要。" +msgid "" +"Child [CanvasItem] nodes of a [CanvasGroup] are drawn as a single object. It " +"allows to e.g. draw overlapping translucent 2D nodes without blending (set " +"[member CanvasItem.self_modulate] property of [CanvasGroup] to achieve this " +"effect).\n" +"[b]Note:[/b] The [CanvasGroup] uses a custom shader to read from the " +"backbuffer to draw its children. Assigning a [Material] to the [CanvasGroup] " +"overrides the builtin shader. To duplicate the behavior of the builtin " +"shader in a custom [Shader] use the following:\n" +"[codeblock]\n" +"shader_type canvas_item;\n" +"render_mode unshaded;\n" +"\n" +"uniform sampler2D screen_texture : hint_screen_texture, repeat_disable, " +"filter_nearest;\n" +"\n" +"void fragment() {\n" +" vec4 c = textureLod(screen_texture, SCREEN_UV, 0.0);\n" +"\n" +" if (c.a > 0.0001) {\n" +" c.rgb /= c.a;\n" +" }\n" +"\n" +" COLOR *= c;\n" +"}\n" +"[/codeblock]\n" +"[b]Note:[/b] Since [CanvasGroup] and [member CanvasItem.clip_children] both " +"utilize the backbuffer, children of a [CanvasGroup] who have their [member " +"CanvasItem.clip_children] set to anything other than [constant CanvasItem." +"CLIP_CHILDREN_DISABLED] will not function correctly." +msgstr "" +"[CanvasGroup] 的所有子 [CanvasItem] 节点会作为一个单独的对象绘制。它允许在不" +"混合的情况下绘制重叠的半透明 2D 节点(设置 [CanvasGroup] 的 [member " +"CanvasItem.self_modulate] 属性来实现这一效果)。\n" +"[b]注意:[/b][CanvasGroup] 使用一个自定义着色器从后台缓冲区读取以绘制其子节" +"点。为 [CanvasGroup] 指定一个 [Material] 会覆盖内置着色器。要在自定义 " +"[Shader] 中复制内置着色器的行为,请使用以下方法:\n" +"[codeblock]\n" +"shader_type canvas_item;\n" +"render_mode unshaded;\n" +"\n" +"uniform sampler2D screen_texture : hint_screen_texture, repeat_disable, " +"filter_nearest;\n" +"\n" +"void fragment() {\n" +" vec4 c = textureLod(screen_texture, SCREEN_UV, 0.0);\n" +"\n" +" if (c.a > 0.0001) {\n" +" c.rgb /= c.a;\n" +" }\n" +"\n" +" COLOR *= c;\n" +"}\n" +"[/codeblock]\n" +"[b]注意:[/b]由于 [CanvasGroup] 和 [member CanvasItem.clip_children] 都使用后" +"台缓冲区,因此 [CanvasGroup] 的子级如果将其 [member CanvasItem." +"clip_children] 设置为 [constant CanvasItem.CLIP_CHILDREN_DISABLED] 以外的其他" +"值将无法正常工作。" + msgid "Base class of anything 2D." msgstr "任何 2D 对象的基类。" @@ -6410,6 +14527,19 @@ msgstr "Viewport 和画布变换" msgid "Custom drawing in 2D" msgstr "2D 中的自定义绘图" +msgid "Draws a string first character using a custom font." +msgstr "使用自定义字体绘制字符串的第一个字符。" + +msgid "Draws a string first character outline using a custom font." +msgstr "使用自定义字体绘制字符串中第一个字符的轮廓。" + +msgid "" +"Draws a colored, filled circle. See also [method draw_arc], [method " +"draw_polyline] and [method draw_polygon]." +msgstr "" +"绘制彩色的实心圆。另见 [method draw_arc]、[method draw_polyline] 和 [method " +"draw_polygon]。" + msgid "" "Draws a [Mesh] in 2D, using the provided texture. See [MeshInstance2D] for " "related documentation." @@ -6436,15 +14566,64 @@ msgstr "" "draw_polygon]、[method draw_rect]。" msgid "" -"Sets a custom transform for drawing via components. Anything drawn " -"afterwards will be transformed by this." -msgstr "设置通过组件进行绘图的自定义变换。此后绘制的任何东西都将被它变换。" - -msgid "" "Sets a custom transform for drawing via matrix. Anything drawn afterwards " "will be transformed by this." msgstr "设置通过矩阵绘制时的自定义变换。此后绘制的任何东西都将被它变换。" +msgid "" +"Draws [param text] using the specified [param font] at the [param pos] " +"(bottom-left corner using the baseline of the font). The text will have its " +"color multiplied by [param modulate]. If [param width] is greater than or " +"equal to 0, the text will be clipped if it exceeds the specified width.\n" +"[b]Example using the default project font:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"# If using this method in a script that redraws constantly, move the\n" +"# `default_font` declaration to a member variable assigned in `_ready()`\n" +"# so the Control is only created once.\n" +"var default_font = ThemeDB.fallback_font\n" +"var default_font_size = ThemeDB.fallback_font_size\n" +"draw_string(default_font, Vector2(64, 64), \"Hello world\", " +"HORIZONTAL_ALIGNMENT_LEFT, -1, default_font_size)\n" +"[/gdscript]\n" +"[csharp]\n" +"// If using this method in a script that redraws constantly, move the\n" +"// `default_font` declaration to a member variable assigned in `_Ready()`\n" +"// so the Control is only created once.\n" +"Font defaultFont = ThemeDB.FallbackFont;\n" +"int defaultFontSize = ThemeDB.FallbackFontSize;\n" +"DrawString(defaultFont, new Vector2(64, 64), \"Hello world\", " +"HORIZONTAL_ALIGNMENT_LEFT, -1, defaultFontSize);\n" +"[/csharp]\n" +"[/codeblocks]\n" +"See also [method Font.draw_string]." +msgstr "" +"使用指定的 [param font] 在 [param pos](使用的字体的基线的左下角)处绘制 " +"[param text]。该文本的颜色将乘以 [param modulate]。如果 [param width] 大于等" +"于 0,则文本超过指定宽度将被裁剪。\n" +"[b]使用项目默认字体的例子:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"# 如果在不断重绘的脚本中使用此方法,\n" +"# 则将 `default_font` 声明移动到在 `_ready()` 中赋值的成员变量中\n" +"# 这样 Control 只创建一次。\n" +"var default_font = ThemeDB.fallback_font\n" +"var default_font_size = ThemeDB.fallback_font_size\n" +"draw_string(default_font, Vector2(64, 64), \"Hello world\", " +"HORIZONTAL_ALIGNMENT_LEFT, -1, default_font_size)\n" +"[/gdscript]\n" +"[csharp]\n" +"// 如果在不断重绘的脚本中使用此方法,\n" +"// 则将 `default_font` 声明移动到在 `_ready()` 中赋值的成员变量中\n" +"// 这样 Control 只创建一次。\n" +"Font defaultFont = ThemeDB.FallbackFont;\n" +"int defaultFontSize = ThemeDB.FallbackFontSize;\n" +"DrawString(defaultFont, new Vector2(64, 64), \"Hello world\", " +"HORIZONTAL_ALIGNMENT_LEFT, -1, defaultFontSize);\n" +"[/csharp]\n" +"[/codeblocks]\n" +"另请参阅 [method Font.draw_string]。" + msgid "Draws a styled rectangle." msgstr "绘制一个样式矩形。" @@ -6480,6 +14659,9 @@ msgstr "返回此项目的变换矩阵。" msgid "Returns the viewport's boundaries as a [Rect2]." msgstr "以 [Rect2] 形式返回视口的边界。" +msgid "Returns an individual bit on the rendering visibility layer." +msgstr "返回渲染可见层上的某个比特位。" + msgid "Returns the [World2D] where this item is in." msgstr "返回此物品所在的 [World2D]。" @@ -6531,30 +14713,60 @@ msgstr "" "各种 [code]popup*()[/code] 函数的其中之一。" msgid "" +"Allows the current node to clip children nodes, essentially acting as a mask." +msgstr "允许当前节点裁剪子节点,本质上是充当遮罩。" + +msgid "" "The rendering layers in which this [CanvasItem] responds to [Light2D] nodes." -msgstr "此 [CanvasItem] 在其中响应 [Light2D] 节点的渲染层。" +msgstr "该 [CanvasItem] 的渲染层,用于响应 [Light2D] 节点。" msgid "The material applied to textures on this [CanvasItem]." -msgstr "在此 [CanvasItem] 上应用于纹理的材质。" +msgstr "材质,应用于该 [CanvasItem] 的纹理。" msgid "The color applied to textures on this [CanvasItem]." -msgstr "应用于此 [CanvasItem] 上纹理的颜色。" +msgstr "颜色,应用于该 [CanvasItem] 的纹理。" msgid "" "The color applied to textures on this [CanvasItem]. This is not inherited by " "children [CanvasItem]s." -msgstr "" -"应用于此 [CanvasItem] 上纹理的颜色。子 [CanvasItem] 节点不会继承这个颜色。" +msgstr "颜色,应用于该 [CanvasItem] 的纹理。不会被子级 [CanvasItem] 继承。" msgid "If [code]true[/code], the object draws behind its parent." msgstr "如果为 [code]true[/code],则对象在其父对象后面绘制。" +msgid "The texture filtering mode to use on this [CanvasItem]." +msgstr "在该 [CanvasItem] 上使用的纹理过滤模式。" + +msgid "The texture repeating mode to use on this [CanvasItem]." +msgstr "在该 [CanvasItem] 上使用的纹理重复模式。" + +msgid "" +"If [code]true[/code], this [CanvasItem] will [i]not[/i] inherit its " +"transform from parent [CanvasItem]s. Its draw order will also be changed to " +"make it draw on top of other [CanvasItem]s that do not have [member " +"top_level] set to [code]true[/code]. The [CanvasItem] will effectively act " +"as if it was placed as a child of a bare [Node]." +msgstr "" +"如果为 [code]true[/code],则该 [CanvasItem] [i]不会[/i]继承父级 [CanvasItem] " +"的变换。它的绘制顺序也会发生改变,会在其他没有将 [member top_level] 设置为 " +"[code]true[/code] 的 [CanvasItem] 之上绘制。效果和把该 [CanvasItem] 作为裸 " +"[Node] 的子级一样。" + msgid "" "If [code]true[/code], the parent [CanvasItem]'s [member material] property " "is used as this one's material." msgstr "" -"如果为 [code]true[/code],则将父级[CanvasItem]的[member material]属性用作此项" -"的材质。" +"如果为 [code]true[/code],则将父级 [CanvasItem] 的 [member material] 属性用作" +"此项的材质。" + +msgid "" +"The rendering layer in which this [CanvasItem] is rendered by [Viewport] " +"nodes. A [Viewport] will render a [CanvasItem] if it and all its parents " +"share a layer with the [Viewport]'s canvas cull mask." +msgstr "" +"[Viewport] 节点渲染该 [CanvasItem] 时所使用的渲染层。只有 [CanvasItem] 及其所" +"有父级均与 [Viewport] 的画布剔除遮罩有交集,该 [Viewport] 才会渲染此 " +"[CanvasItem]。" msgid "" "If [code]true[/code], this [CanvasItem] is drawn. The node is only visible " @@ -6571,6 +14783,21 @@ msgstr "" "[code]popup*()[/code] 函数之一。" msgid "" +"If [code]true[/code], child nodes with the lowest Y position are drawn " +"before those with a higher Y position. If [code]false[/code], Y-sorting is " +"disabled. Y-sorting only affects children that inherit from [CanvasItem].\n" +"You can nest nodes with Y-sorting. Child Y-sorted nodes are sorted in the " +"same space as the parent Y-sort. This feature allows you to organize a scene " +"better or divide it into multiple ones without changing your scene tree." +msgstr "" +"如果为 [code]true[/code],则会在绘制 Y 位置最低的子节点之后再绘制 Y 位置较高" +"的子节点。如果为 [code]false[/code],则禁用 Y 排序。Y 排序仅影响继承自 " +"[CanvasItem] 的子节点。\n" +"可以将 Y 排序的节点进行嵌套。子级 Y 排序的节点,会与父级在同一空间中进行 Y 排" +"序。此功能可以让你在不更改场景树的情况下,更好地组织场景,或者将场景分为多个" +"场景。" + +msgid "" "If [code]true[/code], the node's Z index is relative to its parent's Z " "index. If this node's Z index is 2 and its parent's effective Z index is 3, " "then this node's effective Z index will be 2 + 3 = 5." @@ -6580,6 +14807,23 @@ msgstr "" "引将是 2 + 3 = 5。" msgid "" +"Z index. Controls the order in which the nodes render. A node with a higher " +"Z index will display in front of others. Must be between [constant " +"RenderingServer.CANVAS_ITEM_Z_MIN] and [constant RenderingServer." +"CANVAS_ITEM_Z_MAX] (inclusive).\n" +"[b]Note:[/b] Changing the Z index of a [Control] only affects the drawing " +"order, not the order in which input events are handled. This can be useful " +"to implement certain UI animations, e.g. a menu where hovered items are " +"scaled and should overlap others." +msgstr "" +"Z 索引。控制节点的渲染顺序。具有较高 Z 索引的节点将显示在其他节点的前面。必须" +"在 [constant RenderingServer.CANVAS_ITEM_Z_MIN] 和 [constant RenderingServer." +"CANVAS_ITEM_Z_MAX]之间(包含)。\n" +"[b]注意:[/b]改变 [Control] 的 Z 索引只影响绘图顺序,不影响处理输入事件的顺" +"序。可用于实现某些 UI 动画,例如对处于悬停状态的菜单项进行缩放,此时会与其他" +"内容重叠。" + +msgid "" "Emitted when the [CanvasItem] must redraw, [i]after[/i] the related " "[constant NOTIFICATION_DRAW] notification, and [i]before[/i] [method _draw] " "is called.\n" @@ -6593,6 +14837,14 @@ msgstr "" msgid "Emitted when becoming hidden." msgstr "当隐藏时发出。" +msgid "" +"Emitted when the item's [Rect2] boundaries (position or size) have changed, " +"or when an action is taking place that may have impacted these boundaries (e." +"g. changing [member Sprite2D.texture])." +msgstr "" +"当 CanvasItem 的 [Rect2] 边界(位置或大小)发生变化时,或者当发生可能影响这些" +"边界的操作(例如,更改 [member Sprite2D.texture])时发出。" + msgid "Emitted when the visibility (hidden/visible) changes." msgstr "当可见性(隐藏/可见)更改时发出。" @@ -6622,6 +14874,38 @@ msgstr "该 [CanvasItem] 已进入画布。" msgid "The [CanvasItem] has exited the canvas." msgstr "该 [CanvasItem] 已退出画布。" +msgid "The [CanvasItem] will inherit the filter from its parent." +msgstr "该 [CanvasItem] 将从其父级继承过滤器。" + +msgid "Texture will not repeat." +msgstr "纹理不会重复。" + +msgid "Texture will repeat normally." +msgstr "纹理将正常重复。" + +msgid "" +"Texture will repeat in a 2x2 tiled mode, where elements at even positions " +"are mirrored." +msgstr "纹理将以 2x2 平铺模式重复,其中偶数位置的元素会被镜像。" + +msgid "Represents the size of the [enum TextureRepeat] enum." +msgstr "代表 [enum TextureRepeat] 枚举的大小。" + +msgid "" +"Parent is used for the purposes of clipping only. Child is clipped to the " +"parent's visible area, parent is not drawn." +msgstr "父级仅用于裁剪目的。子级被裁剪到父级的可见区域,不绘制父级。" + +msgid "" +"Parent is used for clipping child, but parent is also drawn underneath child " +"as normal before clipping child to its visible area." +msgstr "" +"父级用于裁剪子级,但在将子级剪裁到其可见区域之前,父级也像往常一样绘制在子级" +"下方。" + +msgid "Represents the size of the [enum ClipChildrenMode] enum." +msgstr "代表 [enum ClipChildrenMode] 枚举的大小。" + msgid "A material for [CanvasItem]s." msgstr "[CanvasItem]的材质。" @@ -6643,13 +14927,51 @@ msgid "The manner in which material reacts to lighting." msgstr "材质对照明的反应方式。" msgid "" +"The number of columns in the spritesheet assigned as [Texture2D] for a " +"[GPUParticles2D] or [CPUParticles2D].\n" +"[b]Note:[/b] This property is only used and visible in the editor if [member " +"particles_animation] is [code]true[/code]." +msgstr "" +"[GPUParticles2D] 或 [CPUParticles2D] 指定给 [Texture2D] 的精灵表中拥有的列" +"数。\n" +"[b]注意:[/b] 该属性只有在 [member particles_animation] 为 [code]true[/code] " +"时,才会在编辑器中被使用和可见。" + +msgid "" "If [code]true[/code], the particles animation will loop.\n" "[b]Note:[/b] This property is only used and visible in the editor if [member " "particles_animation] is [code]true[/code]." msgstr "" "如果为 [code]true[/code],粒子动画将循环播放。\n" -"[b]注意:[/b]只有当 [member particles_animation] 为 [code]true[/code] 时,该" -"属性才会在编辑器中使用并可见。" +"[b]注意:[/b] 该属性只有在 [member particles_animation]为 [code]true[/code] " +"时,才会在编辑器中被使用和可见。" + +msgid "" +"The number of rows in the spritesheet assigned as [Texture2D] for a " +"[GPUParticles2D] or [CPUParticles2D].\n" +"[b]Note:[/b] This property is only used and visible in the editor if [member " +"particles_animation] is [code]true[/code]." +msgstr "" +"[GPUParticles2D] 或 [CPUParticles2D] 指定给 [Texture2D] 的精灵表中拥有的行" +"数。\n" +"[b]注意:[/b] 该属性只有在 [member particles_animation] 为 [code]true[/code] " +"时,才会在编辑器中被使用和可见。" + +msgid "" +"If [code]true[/code], enable spritesheet-based animation features when " +"assigned to [GPUParticles2D] and [CPUParticles2D] nodes. The [member " +"ParticleProcessMaterial.anim_speed_max] or [member CPUParticles2D." +"anim_speed_max] should also be set to a positive value for the animation to " +"play.\n" +"This property (and other [code]particles_anim_*[/code] properties that " +"depend on it) has no effect on other types of nodes." +msgstr "" +"如果 [code]true[/code] ,在分配给 [GPUParticles2D] 和 [CPUParticles2D] 节点" +"时,启用基于精灵表的动画功能。[member ParticleProcessMaterial." +"anim_speed_max] 或 [member CPUParticles2D.anim_speed_max] 也应该设置为正值," +"才能播放动画。\n" +"这个属性(以及其他依赖它的 [code]particles_anim_*[/code] 属性)对其他类型的节" +"点没有影响。" msgid "" "Mix blending mode. Colors are assumed to be independent of the alpha " @@ -6684,6 +15006,24 @@ msgstr "将材质渲染成只有光的样子。" msgid "Canvas drawing layer." msgstr "画布绘图层。" +msgid "" +"Canvas drawing layer. [CanvasItem] nodes that are direct or indirect " +"children of a [CanvasLayer] will be drawn in that layer. The layer is a " +"numeric index that defines the draw order. The default 2D scene renders with " +"index 0, so a [CanvasLayer] with index -1 will be drawn below, and one with " +"index 1 will be drawn above. This is very useful for HUDs (in layer 1+ or " +"above), or backgrounds (in layer -1 or below).\n" +"Embedded [Window]s are placed in layer 1024. CanvasItems in layer 1025 or " +"above appear in front of embedded windows, CanvasItems in layer 1023 or " +"below appear behind embedded windows." +msgstr "" +"画布绘图层。[CanvasLayer] 的直接或间接子级的 [CanvasItem] 节点将在该层中绘" +"制。层是一个决定绘制顺序的数字索引。默认 2D 场景的渲染索引为 0,因此索引为 " +"-1 的 [CanvasLayer] 会在其下方绘制,索引为 1 的则会在其上方绘制。这对于 HUD" +"(在 1+ 层或更高层中)或背景(在 -1 层或更低层中)非常有用。\n" +"内嵌 [Window] 位于 1024 层。位于 1024 层及更高层的 CanvasItem 会出现在内嵌窗" +"口之前,位于 1024 层及更低层的 CanvasItem 会出现在内嵌窗口之后。" + msgid "Canvas layers" msgstr "画布层" @@ -6722,9 +15062,6 @@ msgstr "" "幕上的某个固定位置。\n" "与 [member follow_viewport_scale] 配合可以实现伪 3D 效果。" -msgid "Layer index for draw order. Lower values are drawn first." -msgstr "绘制顺序的图层索引。首先绘制较低的值。" - msgid "The layer's base offset." msgstr "图层的基本偏移量。" @@ -6797,6 +15134,9 @@ msgstr "" msgid "Kinematic character (2D)" msgstr "运动学角色(2D)" +msgid "Using CharacterBody2D" +msgstr "使用 CharacterBody2D" + msgid "2D Kinematic Character Demo" msgstr "2D 运动学角色演示" @@ -6856,6 +15196,9 @@ msgstr "" "1)}\n" "[/codeblock]" +msgid "Font resource used to render glyph." +msgstr "用于渲染字形的字体资源。" + msgid "" "Number of glyphs in the grapheme cluster. This value is set in the first " "glyph of a cluster. Setting this property won't affect drawing." @@ -6913,31 +15256,74 @@ msgstr "渲染复选图标时使用的垂直偏移量(单位为像素)。" msgid "The [Font] to use for the [CheckBox] text." msgstr "该 [CheckBox] 的文本所使用的 [Font]。" +msgid "Font size of the [CheckBox]'s text." +msgstr "该 [CheckBox] 的文本字体大小。" + msgid "The check icon to display when the [CheckBox] is checked." -msgstr "该 [CheckBox] 被勾选时显示的复选图标。" +msgstr "选中图标,该 [CheckBox] 处于选中状态时使用。" + +msgid "" +"The check icon to display when the [CheckBox] is checked and is disabled." +msgstr "选中图标,该 [CheckBox] 处于选中且禁用状态时使用。" + +msgid "" +"The check icon to display when the [CheckBox] is configured as a radio " +"button and is checked." +msgstr "选中图标,该 [CheckBox] 被配置为单选按钮并处于选中状态时使用。" + +msgid "" +"The check icon to display when the [CheckBox] is configured as a radio " +"button, is disabled, and is unchecked." +msgstr "选中图标,该 [CheckBox] 被配置为单选按钮并处于未选且禁用状态时使用。" + +msgid "" +"The check icon to display when the [CheckBox] is configured as a radio " +"button and is unchecked." +msgstr "选中图标,该 [CheckBox] 被配置为单选按钮并处于未选状态时使用。" msgid "The check icon to display when the [CheckBox] is unchecked." -msgstr "该 [CheckBox] 未被勾选时显示的复选图标。" +msgstr "选中图标,该 [CheckBox] 处于未选状态时使用。" + +msgid "" +"The check icon to display when the [CheckBox] is unchecked and is disabled." +msgstr "选中图标,该 [CheckBox] 处于未选状态时使用。" msgid "" "The [StyleBox] to display as a background when the [CheckBox] is disabled." -msgstr "该 [CheckBox] 被禁用时作为背景显示的 [StyleBox]。" +msgstr "作为背景显示的 [StyleBox],该 [CheckBox] 处于禁用状态时使用。" + +msgid "" +"The [StyleBox] to display as a background when the [CheckBox] is focused. " +"The [code]focus[/code] [StyleBox] is displayed [i]over[/i] the base " +"[StyleBox], so a partially transparent [StyleBox] should be used to ensure " +"the base [StyleBox] remains visible. A [StyleBox] that represents an outline " +"or an underline works well for this purpose. To disable the focus visual " +"effect, assign a [StyleBoxEmpty] resource. Note that disabling the focus " +"visual effect will harm keyboard/controller navigation usability, so this is " +"not recommended for accessibility reasons." +msgstr "" +"作为背景显示的 [StyleBox],该 [CheckBox] 处于聚焦状态时使用。[code]focus[/" +"code] [StyleBox] 显示在基础 [StyleBox] [i]之上[/i],所以应该使用部分透明的 " +"[StyleBox],确保基础 [StyleBox] 仍然可见。代表轮廓或下划线的 [StyleBox] 可以" +"很好地实现这个目的。要禁用聚焦的视觉效果,请指定 [StyleBoxEmpty] 资源。请注" +"意,禁用聚焦的视觉效果会影响使用键盘/手柄进行导航的可用性,所以出于可访问性的" +"原因,不建议这样做。" msgid "" "The [StyleBox] to display as a background when the [CheckBox] is hovered." -msgstr "该 [CheckBox] 被悬停时作为背景显示的 [StyleBox]。" +msgstr "作为背景显示的 [StyleBox],该 [CheckBox] 处于悬停状态时使用。" msgid "" "The [StyleBox] to display as a background when the [CheckBox] is hovered and " "pressed." -msgstr "该 [CheckBox] 被悬停且被按下时作为背景显示的 [StyleBox]。" +msgstr "作为背景显示的 [StyleBox],该 [CheckBox] 处于悬停且按下状态时使用。" msgid "The [StyleBox] to display as a background." msgstr "作为背景显示的 [StyleBox]。" msgid "" "The [StyleBox] to display as a background when the [CheckBox] is pressed." -msgstr "该 [CheckBox] 被按下时作为背景显示的 [StyleBox]。" +msgstr "作为背景显示的 [StyleBox],该 [CheckBox] 处于按下状态时使用。" msgid "Checkable button. See also [CheckBox]." msgstr "可复选的按钮。另请参阅 [CheckBox]。" @@ -6969,24 +15355,88 @@ msgid "The vertical offset used when rendering the toggle icons (in pixels)." msgstr "渲染切换图标时使用的垂直偏移量(单位为像素)。" msgid "The [Font] to use for the [CheckButton] text." -msgstr "该 [CheckButton] 的文本所使用的 [Font]。" +msgstr "该 [CheckButton] 文本所使用的 [Font]。" + +msgid "Font size of the [CheckButton]'s text." +msgstr "该 [CheckButton] 文本的字体大小。" + +msgid "" +"The icon to display when the [CheckButton] is checked (for left-to-right " +"layouts)." +msgstr "显示的图标,用于该 [CheckButton] 的勾选状态(从左至右布局)。" + +msgid "" +"The icon to display when the [CheckButton] is checked and disabled (for left-" +"to-right layouts)." +msgstr "" +"显示的图标,用于该 [CheckButton] 的勾选且禁用状态(用于从左至右布局)。" + +msgid "" +"The icon to display when the [CheckButton] is checked and disabled (for " +"right-to-left layouts)." +msgstr "" +"显示的图标,用于该 [CheckButton] 的勾选且禁用状态(用于从右至左布局)。" + +msgid "" +"The icon to display when the [CheckButton] is checked (for right-to-left " +"layouts)." +msgstr "显示的图标,用于该 [CheckButton] 的勾选状态(用于从右至左布局)。" + +msgid "" +"The icon to display when the [CheckButton] is unchecked (for left-to-right " +"layouts)." +msgstr "显示的图标,用于该 [CheckButton] 的未选状态(用于从左至右布局)。" + +msgid "" +"The icon to display when the [CheckButton] is unchecked and disabled (for " +"left-to-right layouts)." +msgstr "" +"显示的图标,用于该 [CheckButton] 的未选且禁用状态(用于从左至右布局)。" + +msgid "" +"The icon to display when the [CheckButton] is unchecked and disabled (for " +"right-to-left layouts)." +msgstr "" +"显示的图标,用于该 [CheckButton] 的未选且禁用状态(用于从右至左布局)。" + +msgid "" +"The icon to display when the [CheckButton] is unchecked (for right-to-left " +"layouts)." +msgstr "显示的图标,用于该 [CheckButton] 的未选状态(用于从右至左布局)。" msgid "" "The [StyleBox] to display as a background when the [CheckButton] is disabled." -msgstr "该 [CheckButton] 被禁用时作为背景显示的 [StyleBox]。" +msgstr "作为背景显示的 [StyleBox],用于该 [CheckButton] 的禁用状态。" + +msgid "" +"The [StyleBox] to display as a background when the [CheckButton] is focused. " +"The [code]focus[/code] [StyleBox] is displayed [i]over[/i] the base " +"[StyleBox], so a partially transparent [StyleBox] should be used to ensure " +"the base [StyleBox] remains visible. A [StyleBox] that represents an outline " +"or an underline works well for this purpose. To disable the focus visual " +"effect, assign a [StyleBoxEmpty] resource. Note that disabling the focus " +"visual effect will harm keyboard/controller navigation usability, so this is " +"not recommended for accessibility reasons." +msgstr "" +"作为背景显示的 [StyleBox],用于该 [CheckButton] 的聚焦状态。[code]focus[/" +"code] [StyleBox] 显示在基础 [StyleBox] [i]之上[/i],所以应该使用部分透明的 " +"[StyleBox],确保基础 [StyleBox] 仍然可见。代表轮廓或下划线的 [StyleBox] 可以" +"很好地实现这个目的。要禁用聚焦的视觉效果,请指定 [StyleBoxEmpty] 资源。请注" +"意,禁用聚焦的视觉效果会影响使用键盘/手柄进行导航的可用性,所以出于可访问性的" +"原因,不建议这样做。" msgid "" "The [StyleBox] to display as a background when the [CheckButton] is hovered." -msgstr "该 [CheckButton] 被悬停时作为背景显示的 [StyleBox]。" +msgstr "作为背景显示的 [StyleBox],用于该 [CheckButton] 的悬停状态。" msgid "" "The [StyleBox] to display as a background when the [CheckButton] is hovered " "and pressed." -msgstr "该 [CheckButton] 被悬停且被按下时作为背景显示的 [StyleBox]。" +msgstr "作为背景显示的 [StyleBox],用于该 [CheckButton] 的悬停且按下状态。" msgid "" "The [StyleBox] to display as a background when the [CheckButton] is pressed." -msgstr "该 [CheckButton] 被按下时作为背景显示的 [StyleBox]。" +msgstr "作为背景显示的 [StyleBox],用于该 [CheckButton] 的按下状态。" msgid "The circle's radius." msgstr "圆的半径。" @@ -7000,12 +15450,237 @@ msgstr "提供对为每个可用类存储的元数据的访问。" msgid "Returns the names of all the classes available." msgstr "返回所有可用类的名称。" +msgid "" +"Returns the names of all the classes that directly or indirectly inherit " +"from [param class]." +msgstr "返回所有直接或间接继承自 [param class] 的类的名称。" + +msgid "Returns the parent class of [param class]." +msgstr "返回 [param class] 的父类。" + +msgid "Creates an instance of [param class]." +msgstr "创建 [param class] 的实例。" + +msgid "Returns whether this [param class] is enabled or not." +msgstr "返回这个 [param class] 是否已启用。" + +msgid "" +"Returns whether [param inherits] is an ancestor of [param class] or not." +msgstr "返回 [param inherits] 是否为 [param class] 的祖先。" + +msgid "" +"Override this method to define what items in [param candidates] should be " +"displayed.\n" +"Both [param candidates] and the return is a [Array] of [Dictionary], see " +"[method get_code_completion_option] for [Dictionary] content." +msgstr "" +"覆盖此方法以确定应该显示 [param candidates] 中的哪些项。\n" +"参数 [param candidates] 和返回值都是一个 [Array] 的 [Dictionary],而 " +"[Dictionary] 的键值,详见 [method get_code_completion_option]。" + +msgid "" +"Override this method to define what happens when the user requests code " +"completion. If [param force] is true, any checks should be bypassed." +msgstr "" +"覆盖此方法以定义当用户请求代码完成时发生的情况。如果 [param force] 为真,会绕" +"过任何检查。" + +msgid "" +"Adds a brace pair.\n" +"Both the start and end keys must be symbols. Only the start key has to be " +"unique." +msgstr "" +"添加一对大括号。\n" +"开始和结束键都必须是符号。只有开始键必须是唯一的。" + +msgid "" +"Submits an item to the queue of potential candidates for the autocomplete " +"menu. Call [method update_code_completion_options] to update the list.\n" +"[b]Note:[/b] This list will replace all current candidates." +msgstr "" +"将补全项提交到自动补全菜单的潜在候选队列。调用 [method " +"update_code_completion_options] 来更新列表。\n" +"[b]注意:[/b] 此列表将替换所有当前候选。" + +msgid "" +"Returns if the given line is foldable, that is, it has indented lines right " +"below it or a comment / string block." +msgstr "" +"返回给定的行是否可折叠,也就是说,它的正下方有缩进的行或注释 / 字符串块。" + +msgid "Cancels the autocomplete menu." +msgstr "取消自动补全菜单。" + +msgid "Clears all bookmarked lines." +msgstr "清除所有书签行。" + +msgid "Clears all breakpointed lines." +msgstr "清除所有断点行。" + +msgid "Removes all comment delimiters." +msgstr "移除所有注释分隔符。" + +msgid "Clears all executed lines." +msgstr "清除所有已执行的行。" + +msgid "Removes all string delimiters." +msgstr "移除所有字符串分隔符。" + +msgid "" +"Inserts the selected entry into the text. If [param replace] is true, any " +"existing text is replaced rather then merged." +msgstr "" +"将选定的条目插入文本中。如果 [param replace] 为真,任何现有的文本都会被替换," +"而不是合并。" + +msgid "" +"Perform an indent as if the user activated the \"ui_text_indent\" action." +msgstr "执行一个缩进,就像用户触发了“ui_text_indent”动作一样。" + +msgid "" +"Folds all lines that are possible to be folded (see [method can_fold_line])." +msgstr "折叠所有可能被折叠的行(参见 [method can_fold_line])。" + +msgid "Folds the given line, if possible (see [method can_fold_line])." +msgstr "如果可能,折叠给定的行(参见 [method can_fold_line])。" + +msgid "Gets all bookmarked lines." +msgstr "获取所有书签行。" + +msgid "Gets all breakpointed lines." +msgstr "获取所有断点行。" + +msgid "" +"Gets the completion option at [param index]. The return [Dictionary] has the " +"following key-values:\n" +"[code]kind[/code]: [enum CodeCompletionKind]\n" +"[code]display_text[/code]: Text that is shown on the autocomplete menu.\n" +"[code]insert_text[/code]: Text that is to be inserted when this item is " +"selected.\n" +"[code]font_color[/code]: Color of the text on the autocomplete menu.\n" +"[code]icon[/code]: Icon to draw on the autocomplete menu.\n" +"[code]default_value[/code]: Value of the symbol." +msgstr "" +"获取在 [param index] 处的补全选项。返回的 [Dictionary] 有以下键值。\n" +"[code]kind[/code]:[enum CodeCompletionKind]\n" +"[code]display_text[/code] :在自动补全菜单上显示的文本。\n" +"[code]insert_text[/code] :当选中这个选项时要插入的文本。\n" +"[code]font_color[/code]:自动补全菜单上文本的颜色。\n" +"[code]icon[/code] :在自动补全菜单上绘制的图标。\n" +"[code]default_value[/code]:符号的值。" + +msgid "" +"Gets all completion options, see [method get_code_completion_option] for " +"return content." +msgstr "获取所有补全选项,返回值见 [method get_code_completion_option]。" + +msgid "Gets the index of the current selected completion option." +msgstr "获取当前已选定补全项的索引。" + +msgid "Gets the end key for a string or comment region index." +msgstr "获取字符串或注释块索引的结束键。" + +msgid "Gets the start key for a string or comment region index." +msgstr "获取字符串或注释块索引的开始键。" + +msgid "Gets all executing lines." +msgstr "获取所有正在执行的行。" + +msgid "Returns all lines that are current folded." +msgstr "返回当前折叠的所有行。" + +msgid "" +"Returns the full text with char [code]0xFFFF[/code] at the caret location." +msgstr "返回在插入符号位置带有 [code]0xFFFF[/code] 字符的全文。" + +msgid "" +"Returns the full text with char [code]0xFFFF[/code] at the cursor location." +msgstr "返回在光标位置处带有 [code]0xFFFF[/code] 字符的全文。" + +msgid "Returns [code]true[/code] if comment [param start_key] exists." +msgstr "如果注释的 [param start_key] 存在,返回 [code]true[/code] 。" + +msgid "Returns [code]true[/code] if string [param start_key] exists." +msgstr "如果字符串的 [param start_key] 存在,返回 [code]true[/code] 。" + +msgid "" +"Indents selected lines, or in the case of no selection the caret line by one." +msgstr "缩进选定的行,或者在没有选择的情况下,将光标行缩进一个。" + +msgid "Returns whether the line at the specified index is bookmarked or not." +msgstr "返回指定索引处的行是否添加了书签。" + +msgid "Returns whether the line at the specified index is breakpointed or not." +msgstr "返回指定索引处的行是否有断点。" + +msgid "" +"Returns whether the line at the specified index is marked as executing or " +"not." +msgstr "返回指定索引处的行是否标记为正在执行。" + msgid "Returns whether the line at the specified index is folded or not." msgstr "返回指定索引处的行是否折叠。" +msgid "Removes the comment delimiter with [param start_key]." +msgstr "移除带有 [param start_key] 的注释分隔符。" + +msgid "Removes the string delimiter with [param start_key]." +msgstr "移除带有 [param start_key] 的字符串分隔符。" + +msgid "" +"Emits [signal code_completion_requested], if [param force] is true will " +"bypass all checks. Otherwise will check that the caret is in a word or in " +"front of a prefix. Will ignore the request if all current options are of " +"type file path, node path or signal." +msgstr "" +"发出 [signal code_completion_requested],如果 [param force] 为真将绕过所有检" +"查。否则,将检查光标是否在一个词中或在一个前缀的前面。如果当前所有选项都是文" +"件路径、节点路径或信号类型,将忽略该请求。" + +msgid "Sets the current selected completion option." +msgstr "设置当前选定的补全选项。" + +msgid "Sets the code hint text. Pass an empty string to clear." +msgstr "设置代码提示文本。传递一个空字符串来清除。" + +msgid "Sets if the code hint should draw below the text." +msgstr "设置代码提示是否应绘制在文本下方。" + +msgid "Sets the line as bookmarked." +msgstr "将该行设置为书签。" + +msgid "Sets the line as breakpointed." +msgstr "将该行设置为断点。" + +msgid "Sets the line as executing." +msgstr "将该行设置为正在执行。" + msgid "Toggle the folding of the code block at the given line." msgstr "在给定行切换代码块的折叠。" +msgid "Unfolds all lines, folded or not." +msgstr "展开所有行,无论是否被折叠。" + +msgid "Unfolds all lines that were previously folded." +msgstr "展开之前被折叠的所有行。" + +msgid "" +"Unindents selected lines, or in the case of no selection the caret line by " +"one. Same as performing \"ui_text_unindent\" action." +msgstr "" +"解除所选行的缩进,或者在没有选择的情况下,将光标行缩进一个。与触" +"发“ui_text_unindent ”动作相同。" + +msgid "" +"Submits all completion options added with [method " +"add_code_completion_option]. Will try to force the autoccomplete menu to " +"popup, if [param force] is [code]true[/code].\n" +"[b]Note:[/b] This will replace all current candidates." +msgstr "" +"提交所有用 [method add_code_completion_option] 添加的补全选项。如果 [param " +"force] 是 [code]true[/code],将尝试强制弹出自动补全菜单 。\n" +"[b]注意:[/b] 这将取代所有当前的候补选项。" + msgid "Sets the font [Color]." msgstr "设置字体颜色 [Color]。" @@ -7018,6 +15693,46 @@ msgstr "设置行间距。" msgid "Sets the default [Font]." msgstr "设置默认的字体 [Font]。" +msgid "Sets default font size." +msgstr "设置默认的字体大小。" + +msgid "" +"Sets a custom [Texture2D] to draw in the line folding gutter when a line is " +"folded and can be unfolded." +msgstr "" +"当行被折叠且可以展开时,设置要在行折叠装订线中绘制的一个自定义 [Texture2D]。" + +msgid "Sets a custom [Texture2D] to draw at the end of a folded line." +msgstr "设置要绘制在折叠行末尾的一个自定义 [Texture2D]。" + +msgid "Sets a custom [Texture2D] for space text characters." +msgstr "为空格文本字符,设置一个自定义 [Texture2D]。" + +msgid "Sets a custom [Texture2D] for tab text characters." +msgstr "为制表符文本字符,设置一个自定义 [Texture2D]。" + +msgid "[StyleBox] for the code completion popup." +msgstr "用于代码补全弹窗的 [StyleBox]。" + +msgid "" +"Sets the [StyleBox] when in focus. The [code]focus[/code] [StyleBox] is " +"displayed [i]over[/i] the base [StyleBox], so a partially transparent " +"[StyleBox] should be used to ensure the base [StyleBox] remains visible. A " +"[StyleBox] that represents an outline or an underline works well for this " +"purpose. To disable the focus visual effect, assign a [StyleBoxEmpty] " +"resource. Note that disabling the focus visual effect will harm keyboard/" +"controller navigation usability, so this is not recommended for " +"accessibility reasons." +msgstr "" +"设置当获得焦点时的 [StyleBox]。该 [code]focus[/code] [StyleBox] 显示在基础 " +"[StyleBox] [i]之上[/i],因此应使用部分透明的 [StyleBox] 以确保基础 " +"[StyleBox] 保持可见。表示轮廓或下划线的 [StyleBox] 非常适合此目的。要禁用焦点" +"视觉效果,请指定一个 [StyleBoxEmpty] 资源。请注意,禁用焦点视觉效果会破坏键" +"盘 / 控制器导航的可用性,出于可访问性原因,不建议这样做。" + +msgid "Sets the [StyleBox]." +msgstr "设置该 [StyleBox]。" + msgid "Base node for 2D collision objects." msgstr "2D 碰撞对象的基础节点。" @@ -7039,6 +15754,18 @@ msgstr "" "[CanvasLayer])。不同画布中的对象之间的碰撞行为是未定义的。" msgid "" +"Accepts unhandled [InputEvent]s. [param shape_idx] is the child index of the " +"clicked [Shape2D]. Connect to the [code]input_event[/code] signal to easily " +"pick up these events.\n" +"[b]Note:[/b] [method _input_event] requires [member input_pickable] to be " +"[code]true[/code] and at least one [member collision_layer] bit to be set." +msgstr "" +"接收未处理的 [InputEvent]。[param shape_idx] 是被点击的 [Shape2D] 的子索引。" +"连接到 [code]input_event[/code] 信号即可轻松获取这些事件。\n" +"[b]注意:[/b][method _input_event] 要求 [member input_pickable] 为 " +"[code]true[/code],并且至少要设置一个 [member collision_layer] 位。" + +msgid "" "Creates a new shape owner for the given object. Returns [code]owner_id[/" "code] of the new owner for future reference." msgstr "" @@ -7105,9 +15832,53 @@ msgstr "" "进入/离开,鼠标位于其中时,就会报告输入事件。要求至少设置一个 [member " "collision_layer] 位。" +msgid "" +"When [member Node.process_mode] is set to [constant Node." +"PROCESS_MODE_DISABLED], remove from the physics simulation to stop all " +"physics interactions with this [CollisionObject2D].\n" +"Automatically re-added to the physics simulation when the [Node] is " +"processed again." +msgstr "" +"当 [member Node.process_mode] 被设置为 [constant Node.PROCESS_MODE_DISABLED] " +"时,从物理仿真中移除,停止与此 [CollisionObject2D] 的所有物理交互。\n" +"当该 [Node] 再次被处理时,会自动重新加入到物理仿真中。" + +msgid "" +"When [member Node.process_mode] is set to [constant Node." +"PROCESS_MODE_DISABLED], do not affect the physics simulation." +msgstr "" +"当 [member Node.process_mode] 被设置为 [constant Node.PROCESS_MODE_DISABLED] " +"时,不影响物理仿真。" + msgid "Base node for collision objects." msgstr "碰撞对象的基础节点。" +msgid "" +"Receives unhandled [InputEvent]s. [param position] is the location in world " +"space of the mouse pointer on the surface of the shape with index [param " +"shape_idx] and [param normal] is the normal vector of the surface at that " +"point. Connect to the [signal input_event] signal to easily pick up these " +"events.\n" +"[b]Note:[/b] [method _input_event] requires [member input_ray_pickable] to " +"be [code]true[/code] and at least one [member collision_layer] bit to be set." +msgstr "" +"接收未处理的 [InputEvent]。[param position] 是鼠标指针在索引为 [param " +"shape_idx] 的形状表面上的世界空间位置,[param normal] 是该点表面的法向量。连" +"接到 [signal input_event] 信号即可轻松获取这些事件。\n" +"[b]注意:[/b][method _input_event] 要求 [member input_ray_pickable] 为 " +"[code]true[/code],并且至少要设置一个 [member collision_layer] 位。" + +msgid "" +"When [member Node.process_mode] is set to [constant Node." +"PROCESS_MODE_DISABLED], remove from the physics simulation to stop all " +"physics interactions with this [CollisionObject3D].\n" +"Automatically re-added to the physics simulation when the [Node] is " +"processed again." +msgstr "" +"当 [member Node.process_mode] 被设置为 [constant Node.PROCESS_MODE_DISABLED] " +"时,从物理仿真中移除,停止与此 [CollisionObject3D] 的所有物理交互。\n" +"当该 [Node] 再次被处理时,会自动重新加入到物理仿真中。" + msgid "Defines a 2D collision polygon." msgstr "定义 2D 碰撞多边形。" @@ -7143,6 +15914,26 @@ msgid "Collisions will only include the polygon edges." msgstr "碰撞将仅包括多边形边缘。" msgid "" +"Allows editing a concave or convex collision polygon's vertices on a " +"selected plane. Can also set a depth perpendicular to that plane. This class " +"is only available in the editor. It will not appear in the scene tree at run-" +"time. Creates several [ConvexPolygonShape3D]s at run-time to represent the " +"original polygon using convex decomposition.\n" +"[b]Note:[/b] Since this is an editor-only helper, properties modified during " +"gameplay will have no effect.\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 "" +"允许在选定平面上编辑凹形或凸形碰撞多边形的顶点。也可以设置垂直于该平面的深" +"度。该类仅在编辑器中可用。它不会在运行时出现在场景树中。在运行时创建多个 " +"[ConvexPolygonShape3D] 以使用凸分解表示原始多边形。\n" +"[b]注意:[/b]由于这是一个仅限编辑器的助手类,因此在游戏过程中修改的属性将无" +"效。\n" +"[b]警告:[/b]非均匀缩放的 CollisionPolygon3D 节点可能无法按预期运行。请确保保" +"持其比例统一(即在所有轴上相同),并改为更改其 [member polygon] 的顶点。" + +msgid "" "Length that the resulting collision extends in either direction " "perpendicular to its polygon." msgstr "产生的碰撞在垂直于其多边形的任一方向上延伸的长度。" @@ -7216,6 +16007,27 @@ 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. [b]IMPORTANT[/b]: this " +"is an Editor-only helper to create shapes, use [method CollisionObject3D." +"shape_owner_get_shape] to get the actual 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] 属性来" +"配置形状。[b]重要[/b]:这是一个仅供编辑器使用的用于创建形状的助手类,使用 " +"[method CollisionObject3D.shape_owner_get_shape] 来获取实际形状。\n" +"您可以使用此节点来表示各种碰撞形状,例如,将其添加到 [Area3D] 以为其提供检测" +"形状,或将其添加到 [PhysicsBody3D] 以创建实体对象。\n" +"[b]警告:[/b]非均匀缩放的 CollisionShape3D 节点可能无法按预期运行。请确保保持" +"其比例统一(即在所有轴上相同),并改为更改其 [member shape] 资源的大小。" + +msgid "" "If this method exists within a script it will be called whenever the shape " "resource has been modified." msgstr "如果脚本中存在此方法,则只要修改形状资源,就会调用该方法。" @@ -7223,6 +16035,42 @@ msgstr "如果脚本中存在此方法,则只要修改形状资源,就会调 msgid "A disabled collision shape has no effect in the world." msgstr "禁用的碰撞形状对世界没有任何影响。" +msgid "Color built-in type, in RGBA format." +msgstr "颜色内置类型,格式为 RGBA。" + +msgid "" +"A color represented in RGBA format by red ([member r]), green ([member g]), " +"blue ([member b]), and alpha ([member a]) components. Each component is a 16-" +"bit floating-point value, usually ranging from 0 to 1. Some properties (such " +"as [member CanvasItem.modulate]) may support values greater than 1, for " +"overbright or High Dynamic Range colors. If you want to supply values in a " +"range of 0 to 255, you should use [method @GDScript.Color8].\n" +"Colors can also be created by name from a set of standardized colors, " +"through the [String] constructor, [method from_string], or by directly " +"fetching the color constants documented here. The standardized color set is " +"based on the [url=https://en.wikipedia.org/wiki/X11_color_names]X11 color " +"names[/url], with the addition of [constant TRANSPARENT].\n" +"[b]Note:[/b] In a boolean context, a Color will evaluate to [code]false[/" +"code] if it's equal to [code]Color(0, 0, 0, 1)[/code] (opaque black). " +"Otherwise, a Color will always evaluate to [code]true[/code].\n" +"[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/" +"color_constants.png]Color constants cheatsheet[/url]" +msgstr "" +"由红([member r])、绿([member g])、蓝([member b])和 alpha([member a])" +"分量表示的 RGBA 格式的颜色。每个分量都是一个 16 位浮点值,通常介于 0 到 1 之" +"间。对于过亮或高动态范围颜色,某些属性(例如 [member CanvasItem.modulate])可" +"能支持大于 1 的值。使用 [method @GDScript.Color8] 提供 0 到 255 范围内的" +"值。\n" +"也可以通过 [String] 构造函数、[method from_string] 或通过直接获取此处记录的颜" +"色常量,从一组标准化颜色中按名称创建颜色。标准化颜色集基于 [url=https://en." +"wikipedia.org/wiki/X11_color_names]X11 颜色名称[/url],并添加了 [constant " +"TRANSPARENT]。\n" +"[b]注意:[/b]在布尔上下文中,等于 [code]Color(0, 0, 0, 1)[/code](不透明的黑" +"色)的 Color 将被评估为 [code]false[/code]。否则,Color 将始终被评估为 " +"[code]true[/code]。\n" +"[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/" +"color_constants.png]Color 常量速查表[/url]" + msgid "2D GD Paint Demo" msgstr "2D GD 画图演示" @@ -7246,6 +16094,157 @@ msgid "Constructs a [Color] as a copy of the given [Color]." msgstr "构造给定 [Color] 的副本。" msgid "" +"Constructs a [Color] from RGB values, typically between 0.0 and 1.0. [member " +"a] is set to 1.0.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var color = Color(0.2, 1.0, 0.7) # Similar to `Color8(51, 255, 178, 255)`\n" +"[/gdscript]\n" +"[csharp]\n" +"var color = new Color(0.2f, 1.0f, 0.7f); // Similar to `Color.Color8(51, " +"255, 178, 255)`\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"从通常介于 0.0 和 1.0 之间的 RGB 值构造一个 [Color]。[member a] 被设置为 " +"1.0。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var color = Color(0.2, 1.0, 0.7) # 类似于 `Color8(51, 255, 178, 255)`\n" +"[/gdscript]\n" +"[csharp]\n" +"var color = new Color(0.2f, 1.0f, 0.7f); // 类似于 `Color.Color8(51, 255, " +"178, 255)`\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Constructs a [Color] from RGBA values, typically between 0.0 and 1.0.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var color = Color(0.2, 1.0, 0.7, 0.8) # Similar to `Color8(51, 255, 178, " +"204)`\n" +"[/gdscript]\n" +"[csharp]\n" +"var color = new Color(0.2f, 1.0f, 0.7f, 0.8f); // Similar to `Color." +"Color8(51, 255, 178, 255, 204)`\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"从通常介于 0.0 和 1.0 之间的 RGBA 值构造一个 [Color]。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var color = Color(0.2, 1.0, 0.7, 0.8) # 类似于 `Color8(51, 255, 178, 204)`\n" +"[/gdscript]\n" +"[csharp]\n" +"var color = new Color(0.2f, 1.0f, 0.7f, 0.8f); // 类似于 `Color.Color8(51, " +"255, 178, 255, 204)`\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Returns a new color resulting from overlaying this color over the given " +"color. In a painting program, you can imagine it as the [param over] color " +"painted over this color (including alpha).\n" +"[codeblocks]\n" +"[gdscript]\n" +"var bg = Color(0.0, 1.0, 0.0, 0.5) # Green with alpha of 50%\n" +"var fg = Color(1.0, 0.0, 0.0, 0.5) # Red with alpha of 50%\n" +"var blended_color = bg.blend(fg) # Brown with alpha of 75%\n" +"[/gdscript]\n" +"[csharp]\n" +"var bg = new Color(0.0f, 1.0f, 0.0f, 0.5f); // Green with alpha of 50%\n" +"var fg = new Color(1.0f, 0.0f, 0.0f, 0.5f); // Red with alpha of 50%\n" +"Color blendedColor = bg.Blend(fg); // Brown with alpha of 75%\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回将该颜色混合到给定颜色上所产生的新颜色。在绘画程序中,您可以将其想象为在" +"该颜色(包括 alpha)上绘制的 [param over] 颜色。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var bg = Color(0.0, 1.0, 0.0, 0.5) # 50% 不透明的绿色\n" +"var fg = Color(1.0, 0.0, 0.0, 0.5) # 50% 不透明的红色\n" +"var blended_color = bg.blend(fg) # 75% 不透明的棕色\n" +"[/gdscript]\n" +"[csharp]\n" +"var bg = new Color(0.0f, 1.0f, 0.0f, 0.5f); // 50% 不透明的绿色\n" +"var fg = new Color(1.0f, 0.0f, 0.0f, 0.5f); // 50% 不透明的红色\n" +"Color blendedColor = bg.Blend(fg); // 75% 不透明的棕色\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Returns a new color resulting from making this color darker by the specified " +"[param amount] (ratio from 0.0 to 1.0). See also [method lightened].\n" +"[codeblocks]\n" +"[gdscript]\n" +"var green = Color(0.0, 1.0, 0.0)\n" +"var darkgreen = green.darkened(0.2) # 20% darker than regular green\n" +"[/gdscript]\n" +"[csharp]\n" +"var green = new Color(0.0f, 1.0f, 0.0f);\n" +"Color darkgreen = green.Darkened(0.2f); // 20% darker than regular green\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回通过指定 [param amount](从 0.0 到 1.0 的比率)使该颜色变暗而产生的新颜" +"色。另见 [method lightened]。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var green = Color(0.0, 1.0, 0.0)\n" +"var darkgreen = green.darkened(0.2) # 比普通的绿色深 20%\n" +"[/gdscript]\n" +"[csharp]\n" +"var green = new Color(0.0f, 1.0f, 0.0f);\n" +"Color darkgreen = green.Darkened(0.2f); // 比普通的绿色深 20%\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Returns a new color from [param rgba], an HTML hexadecimal color string. " +"[param rgba] is not case-sensitive, and may be prefixed by a hash sign " +"([code]#[/code]).\n" +"[param rgba] must be a valid three-digit or six-digit hexadecimal color " +"string, and may contain an alpha channel value. If [param rgba] does not " +"contain an alpha channel value, an alpha channel value of 1.0 is applied. If " +"[param rgba] is invalid, returns an empty color.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var blue = Color.html(\"#0000ff\") # blue is Color(0.0, 0.0, 1.0, 1.0)\n" +"var green = Color.html(\"#0F0\") # green is Color(0.0, 1.0, 0.0, 1.0)\n" +"var col = Color.html(\"663399cc\") # col is Color(0.4, 0.2, 0.6, 0.8)\n" +"[/gdscript]\n" +"[csharp]\n" +"var blue = Color.FromHtml(\"#0000ff\"); // blue is Color(0.0, 0.0, 1.0, " +"1.0)\n" +"var green = Color.FromHtml(\"#0F0\"); // green is Color(0.0, 1.0, 0.0, " +"1.0)\n" +"var col = Color.FromHtml(\"663399cc\"); // col is Color(0.4, 0.2, 0.6, 0.8)\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"从 HTML 十六进制颜色字符串 [param rgba] 返回一个新颜色。[param rgba] 不区分大" +"小写,可以使用哈希符号([code]#[/code])作为前缀。\n" +"[param rgba] 必须是有效的三位或六位十六进制颜色字符串,并且可以包含 alpha 通" +"道值。如果 [param rgba] 不包含 alpha 通道值,则应用 alpha 通道值 1.0。如果 " +"[param rgba] 无效,则返回一个空颜色。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var blue = Color.html(\"#0000ff\") # blue 为 Color(0.0, 0.0, 1.0, 1.0)\n" +"var green = Color.html(\"#0F0\") # green 为 Color(0.0, 1.0, 0.0, 1.0)\n" +"var col = Color.html(\"663399cc\") # col 为 Color(0.4, 0.2, 0.6, 0.8)\n" +"[/gdscript]\n" +"[csharp]\n" +"var blue = Color.FromHtml(\"#0000ff\"); // blue 为 Color(0.0, 0.0, 1.0, " +"1.0)\n" +"var green = Color.FromHtml(\"#0F0\"); // green 为 Color(0.0, 1.0, 0.0, " +"1.0)\n" +"var col = Color.FromHtml(\"663399cc\"); // col 为 Color(0.4, 0.2, 0.6, 0.8)\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" "Returns the linear interpolation between this color's components and [param " "to]'s components. The interpolation factor [param weight] should be between " "0.0 and 1.0 (inclusive). See also [method @GlobalScope.lerp].\n" @@ -7291,6 +16290,233 @@ msgstr "" "[/codeblocks]" msgid "" +"Returns a new color resulting from making this color lighter by the " +"specified [param amount], which should be a ratio from 0.0 to 1.0. See also " +"[method darkened].\n" +"[codeblocks]\n" +"[gdscript]\n" +"var green = Color(0.0, 1.0, 0.0)\n" +"var light_green = green.lightened(0.2) # 20% lighter than regular green\n" +"[/gdscript]\n" +"[csharp]\n" +"var green = new Color(0.0f, 1.0f, 0.0f);\n" +"Color lightGreen = green.Lightened(0.2f); // 20% lighter than regular green\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回通过指定 [param amount](从 0.0 到 1.0 的比率)使该颜色变亮而产生的新颜" +"色。另见 [method darkened]。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var green = Color(0.0, 1.0, 0.0)\n" +"var light_green = green.lightened(0.2) # 比普通的绿色要淡 20%\n" +"[/gdscript]\n" +"[csharp]\n" +"var green = new Color(0.0f, 1.0f, 0.0f);\n" +"Color lightGreen = green.Lightened(0.2f); // 比普通的绿色要淡 20%\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Returns the color converted to a 32-bit integer in ABGR format (each " +"component is 8 bits). ABGR is the reversed version of the default RGBA " +"format.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var color = Color(1, 0.5, 0.2)\n" +"print(color.to_abgr32()) # Prints 4281565439\n" +"[/gdscript]\n" +"[csharp]\n" +"var color = new Color(1.0f, 0.5f, 0.2f);\n" +"GD.Print(color.ToAbgr32()); // Prints 4281565439\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回转换为 ABGR 格式(每个分量为 8 位)的 32 位整数的颜色。ABGR 是默认 RGBA " +"格式的反转版本。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var color = Color(1, 0.5, 0.2)\n" +"print(color.to_abgr32()) # 输出 4281565439\n" +"[/gdscript]\n" +"[csharp]\n" +"var color = new Color(1.0f, 0.5f, 0.2f);\n" +"GD.Print(color.ToAbgr32()); // 输出 4281565439\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Returns the color converted to a 64-bit integer in ABGR format (each " +"component is 16 bits). ABGR is the reversed version of the default RGBA " +"format.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var color = Color(1, 0.5, 0.2)\n" +"print(color.to_abgr64()) # Prints -225178692812801\n" +"[/gdscript]\n" +"[csharp]\n" +"var color = new Color(1.0f, 0.5f, 0.2f);\n" +"GD.Print(color.ToAbgr64()); // Prints -225178692812801\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回转换为 ABGR 格式(每个分量为 16 位)的 64 位整数的颜色。ABGR 是默认 RGBA " +"格式的反转版本。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var color = Color(1, 0.5, 0.2)\n" +"print(color.to_abgr64()) # 输出 -225178692812801\n" +"[/gdscript]\n" +"[csharp]\n" +"var color = new Color(1.0f, 0.5f, 0.2f);\n" +"GD.Print(color.ToAbgr64()); // 输出 -225178692812801\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Returns the color converted to a 32-bit integer in ARGB format (each " +"component is 8 bits). ARGB is more compatible with DirectX.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var color = Color(1, 0.5, 0.2)\n" +"print(color.to_argb32()) # Prints 4294934323\n" +"[/gdscript]\n" +"[csharp]\n" +"var color = new Color(1.0f, 0.5f, 0.2f);\n" +"GD.Print(color.ToArgb32()); // Prints 4294934323\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回转换为 ARGB 格式(每个分量为 8 位)的 32 位整数的颜色。ARGB 与 DirectX 更" +"兼容。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var color = Color(1, 0.5, 0.2)\n" +"print(color.to_argb32()) # 输出 4294934323\n" +"[/gdscript]\n" +"[csharp]\n" +"var color = new Color(1.0f, 0.5f, 0.2f);\n" +"GD.Print(color.ToArgb32()); // 输出 4294934323\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Returns the color converted to a 64-bit integer in ARGB format (each " +"component is 16 bits). ARGB is more compatible with DirectX.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var color = Color(1, 0.5, 0.2)\n" +"print(color.to_argb64()) # Prints -2147470541\n" +"[/gdscript]\n" +"[csharp]\n" +"var color = new Color(1.0f, 0.5f, 0.2f);\n" +"GD.Print(color.ToArgb64()); // Prints -2147470541\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回转换为 ARGB 格式(每个分量为 16 位)的 64 位整数的颜色。ARGB 与 DirectX " +"更兼容。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var color = Color(1, 0.5, 0.2)\n" +"print(color.to_argb64()) # 输出 -2147470541\n" +"[/gdscript]\n" +"[csharp]\n" +"var color = new Color(1.0f, 0.5f, 0.2f);\n" +"GD.Print(color.ToArgb64()); // 输出 -2147470541\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Returns the color converted to an HTML hexadecimal color [String] in RGBA " +"format, without the hash ([code]#[/code]) prefix.\n" +"Setting [param with_alpha] to [code]false[/code], excludes alpha from the " +"hexadecimal string, using RGB format instead of RGBA format.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var white = Color(1, 1, 1, 0.5)\n" +"var with_alpha = white.to_html() # Returns \"ffffff7f\"\n" +"var without_alpha = white.to_html(false) # Returns \"ffffff\"\n" +"[/gdscript]\n" +"[csharp]\n" +"var white = new Color(1, 1, 1, 0.5f);\n" +"string withAlpha = white.ToHtml(); // Returns \"ffffff7f\"\n" +"string withoutAlpha = white.ToHtml(false); // Returns \"ffffff\"\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回将该颜色转换为 RGBA 格式的 HTML 十六进制颜色 [String],不带([code]#[/" +"code])前缀。\n" +"将 [param with_alpha] 设置为 [code]false[/code],会从十六进制字符串中排除 " +"alpha,使用 RGB 格式而不是 RGBA 格式。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var white = Color(1, 1, 1, 0.5)\n" +"var with_alpha = white.to_html() # 返回 \"ffffff7f\"\n" +"var without_alpha = white.to_html(false) # 返回 \"ffffff\"\n" +"[/gdscript]\n" +"[csharp]\n" +"var white = new Color(1, 1, 1, 0.5f);\n" +"string withAlpha = white.ToHtml(); // 返回 \"ffffff7f\"\n" +"string withoutAlpha = white.ToHtml(false); // 返回 \"ffffff\"\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Returns the color converted to a 32-bit integer in RGBA format (each " +"component is 8 bits). RGBA is Godot's default format.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var color = Color(1, 0.5, 0.2)\n" +"print(color.to_rgba32()) # Prints 4286526463\n" +"[/gdscript]\n" +"[csharp]\n" +"var color = new Color(1, 0.5f, 0.2f);\n" +"GD.Print(color.ToRgba32()); // Prints 4286526463\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回转换为 RGBA 格式(每个分量为 8 位)的 32 位整数的颜色。RGBA 是 Godot 的默" +"认格式。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var color = Color(1, 0.5, 0.2)\n" +"print(color.to_rgba32()) # 输出 4286526463\n" +"[/gdscript]\n" +"[csharp]\n" +"var color = new Color(1, 0.5f, 0.2f);\n" +"GD.Print(color.ToRgba32()); // 输出 4286526463\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Returns the color converted to a 64-bit integer in RGBA format (each " +"component is 16 bits). RGBA is Godot's default format.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var color = Color(1, 0.5, 0.2)\n" +"print(color.to_rgba64()) # Prints -140736629309441\n" +"[/gdscript]\n" +"[csharp]\n" +"var color = new Color(1, 0.5f, 0.2f);\n" +"GD.Print(color.ToRgba64()); // Prints -140736629309441\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回转换为 RGBA 格式(每个分量为 16 位)的 64 位整数的颜色。RGBA 是 Godot 的" +"默认格式。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var color = Color(1, 0.5, 0.2)\n" +"print(color.to_rgba64()) # 输出 -140736629309441\n" +"[/gdscript]\n" +"[csharp]\n" +"var color = new Color(1, 0.5f, 0.2f);\n" +"GD.Print(color.ToRgba64()); // 输出 -140736629309441\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" "The color's alpha component, typically on the range of 0 to 1. A value of 0 " "means that the color is fully transparent. A value of 1 means that the color " "is fully opaque." @@ -7337,6 +16563,9 @@ msgstr "米黄色。" msgid "Bisque color." msgstr "橘黄色。" +msgid "Black color. In GDScript, this is the default value of any color." +msgstr "黑色。在 GDScript 中,这是所有颜色的默认值。" + msgid "Blue color." msgstr "蓝色。" @@ -7703,6 +16932,9 @@ msgstr "蓟色。" msgid "Tomato color." msgstr "番茄色。" +msgid "Transparent color (white with zero alpha)." +msgstr "透明色(Alpha 为零的白色)。" + msgid "Turquoise color." msgstr "松石绿。" @@ -7736,6 +16968,45 @@ msgstr "黄色。" msgid "Yellow green color." msgstr "黄绿色。" +msgid "" +"Returns [code]true[/code] if the colors are not exactly equal.\n" +"[b]Note:[/b] Due to floating-point precision errors, consider using [method " +"is_equal_approx] instead, which is more reliable." +msgstr "" +"如果颜色不完全相等,则返回 [code]true[/code]。\n" +"[b]注意:[/b]由于浮点数精度误差,请考虑改用 [method is_equal_approx],会更可" +"靠。" + +msgid "" +"Multiplies each component of the [Color] by the components of the given " +"[Color]." +msgstr "将该 [Color] 的每个分量乘以给定 [Color] 的对应分量。" + +msgid "Multiplies each component of the [Color] by the given [float]." +msgstr "将该 [Color] 的每个分量乘以给定的 [float]。" + +msgid "Multiplies each component of the [Color] by the given [int]." +msgstr "将该 [Color] 的每个分量乘以给定的 [int]。" + +msgid "" +"Adds each component of the [Color] with the components of the given [Color]." +msgstr "将该 [Color] 的每个分量加上给定 [Color] 的对应分量。" + +msgid "" +"Subtracts each component of the [Color] by the components of the given " +"[Color]." +msgstr "将该 [Color] 的每个分量减去给定 [Color] 的对应分量。" + +msgid "" +"Divides each component of the [Color] by the components of the given [Color]." +msgstr "将该 [Color] 的每个分量除以给定 [Color] 的每个分量。" + +msgid "Divides each component of the [Color] by the given [float]." +msgstr "将该 [Color] 的每个分量除以给定的 [float]。" + +msgid "Divides each component of the [Color] by the given [int]." +msgstr "将该 [Color] 的每个分量除以给定的 [int]。" + msgid "Color picker control." msgstr "取色器控件。" @@ -7870,20 +17141,40 @@ msgstr "[ColorPickerButton] 的图标和文本之间的水平间距。" msgid "[Font] of the [ColorPickerButton]'s text." msgstr "[ColorPickerButton] 文本的 [Font]。" +msgid "Font size of the [ColorPickerButton]'s text." +msgstr "[ColorPickerButton] 文本的字体大小。" + msgid "The background of the color preview rect on the button." msgstr "颜色预览的背景将在按钮上显示。" msgid "[StyleBox] used when the [ColorPickerButton] is disabled." -msgstr "当 [ColorPickerButton] 被禁用时使用的 [StyleBox]。" +msgstr "该 [ColorPickerButton] 处于禁用状态时使用的 [StyleBox]。" + +msgid "" +"[StyleBox] used when the [ColorPickerButton] is focused. The [code]focus[/" +"code] [StyleBox] is displayed [i]over[/i] the base [StyleBox], so a " +"partially transparent [StyleBox] should be used to ensure the base " +"[StyleBox] remains visible. A [StyleBox] that represents an outline or an " +"underline works well for this purpose. To disable the focus visual effect, " +"assign a [StyleBoxEmpty] resource. Note that disabling the focus visual " +"effect will harm keyboard/controller navigation usability, so this is not " +"recommended for accessibility reasons." +msgstr "" +"该 [ColorPickerButton] 处于聚焦状态时使用的 [StyleBox]。[code]focus[/code] " +"[StyleBox] 显示在基础 [StyleBox] [i]之上[/i],所以应该使用部分透明的 " +"[StyleBox],确保基础 [StyleBox] 仍然可见。代表轮廓或下划线的 [StyleBox] 可以" +"很好地实现这个目的。要禁用聚焦的视觉效果,请指定 [StyleBoxEmpty] 资源。请注" +"意,禁用聚焦的视觉效果会影响使用键盘/手柄进行导航的可用性,所以出于可访问性的" +"原因,不建议这样做。" msgid "[StyleBox] used when the [ColorPickerButton] is being hovered." -msgstr "悬停 [ColorPickerButton] 时使用的 [StyleBox]。" +msgstr "该 [ColorPickerButton] 处于悬停状态时使用的 [StyleBox]。" msgid "Default [StyleBox] for the [ColorPickerButton]." -msgstr "[ColorPickerButton] 的默认 [StyleBox]。" +msgstr "该 [ColorPickerButton] 的默认 [StyleBox]。" msgid "[StyleBox] used when the [ColorPickerButton] is being pressed." -msgstr "按下 [ColorPickerButton] 时使用的 [StyleBox]。" +msgstr "该 [ColorPickerButton] 处于按下状态时使用的 [StyleBox]。" msgid "Colored rectangle." msgstr "彩色矩形。" @@ -7896,6 +17187,104 @@ msgstr "" "[ReferenceRect] 代替。" msgid "" +"The fill color.\n" +"[codeblocks]\n" +"[gdscript]\n" +"$ColorRect.color = Color(1, 0, 0, 1) # Set ColorRect's color to red.\n" +"[/gdscript]\n" +"[csharp]\n" +"GetNode<ColorRect>(\"ColorRect\").Color = new Color(1, 0, 0, 1); // Set " +"ColorRect's color to red.\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"填充色。\n" +"[codeblocks]\n" +"[gdscript]\n" +"$ColorRect.color = Color(1, 0, 0, 1) # 将 ColorRect 的颜色设置为红色。\n" +"[/gdscript]\n" +"[csharp]\n" +"GetNode<ColorRect>(\"ColorRect\").Color = new Color(1, 0, 0, 1); // 将 " +"ColorRect 的颜色设置为红色。\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "6-sided texture typically used in 3D rendering, optionally compressed." +msgstr "6 面纹理,通常用于 3D 渲染,可选择压缩。" + +msgid "" +"Array of 6-sided textures typically used in 3D rendering, optionally " +"compressed." +msgstr "6 面纹理的数组,通常用于 3D 渲染,可选择压缩。" + +msgid "Texture with 2 dimensions, optionally compressed." +msgstr "二维纹理,可选择压缩。" + +msgid "Loads the texture from the specified [param path]." +msgstr "从指定的路径 [param path] 加载纹理。" + +msgid "The [CompressedTexture2D]'s file path to a [code].ctex[/code] file." +msgstr "该 [CompressedTexture2D] 的文件路径,指向 [code].ctex[/code] 文件。" + +msgid "Array of 2-dimensional textures, optionally compressed." +msgstr "二维纹理的数组,可选择压缩。" + +msgid "Texture with 3 dimensions, optionally compressed." +msgstr "三维纹理,可选择压缩。" + +msgid "The [CompressedTexture3D]'s file path to a [code].ctex3d[/code] file." +msgstr "该 [CompressedTexture3D] 的文件路径,指向 [code].ctex3d[/code] 文件。" + +msgid "Base class for texture arrays that can optionally be compressed." +msgstr "可压缩纹理数组的基类。" + +msgid "Loads the texture at [param path]." +msgstr "从路径 [param path] 加载纹理。" + +msgid "" +"2D concave polygon shape to be added as a [i]direct[/i] child of a " +"[PhysicsBody2D] or [Area2D] using a [CollisionShape2D] node. It is made out " +"of segments and is optimal for complex polygonal concave collisions. " +"However, it is not advised to use for [RigidBody2D] nodes. A " +"CollisionPolygon2D in convex decomposition mode (solids) or several convex " +"objects are advised for that instead. Otherwise, a concave polygon 2D shape " +"is better for static collisions.\n" +"The main difference between a [ConvexPolygonShape2D] and a " +"[ConcavePolygonShape2D] is that a concave polygon assumes it is concave and " +"uses a more complex method of collision detection, and a convex one forces " +"itself to be convex to speed up collision detection.\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.\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)." +msgstr "" +"使用 [CollisionShape2D] 节点作为 [PhysicsBody2D] 或 [Area2D] 的[i]直接[/i]子" +"节点添加的 2D 凹多边形形状。它由线段组成,最适合复杂的多边形凹面碰撞。但是," +"不建议用于 [RigidBody2D] 节点。建议改用凸分解模式(实体)的 " +"CollisionPolygon2D 或多个凸对象。否则,凹多边形 2D 形状更适合静态碰撞。\n" +"[ConvexPolygonShape2D] 和 [ConcavePolygonShape2D] 之间的主要区别在于,凹多边" +"形假设它是凹的,并使用更复杂的碰撞检测方法,而凸多边形强制自身成为凸面以加速" +"碰撞检测。\n" +"[b]性能:[/b]由于其复杂性,[ConcavePolygonShape2D] 是检查碰撞时最慢的碰撞形" +"状。它的使用通常应限于关卡几何。对于凸几何,使用 [ConvexPolygonShape2D] 会表" +"现更好。对于需要凹碰撞的动态物理实体,可以用几个 [ConvexPolygonShape2D] 来表" +"示它的碰撞,使用凸分解;有关说明,请参阅 [ConvexPolygonShape2D] 的文档。但" +"是,请首先考虑使用原始碰撞形状,例如 [CircleShape2D] 或 " +"[RectangleShape2D]。\n" +"[b]警告:[/b]将该形状用于 [Area2D](通过 [CollisionShape2D] 节点)可能会产生" +"意想不到的结果:该区域将仅检测与 [ConcavePolygonShape2D] 中的线段的碰撞(而非" +"任何诸如形状的“内部”)。" + +msgid "" "The array of points that make up the [ConcavePolygonShape2D]'s line segments." msgstr "组成 [ConcavePolygonShape2D] 线段的点的数组。" @@ -7934,7 +17323,7 @@ msgstr "" "如果低于 0.05,则扭曲被锁定。" msgid "Represents the size of the [enum Param] enum." -msgstr "表示 [enum Param] 枚举的大小。" +msgstr "代表 [enum Param] 枚举的大小。" msgid "Helper class to handle INI-style files." msgstr "用于处理 INI 样式文件的辅助类。" @@ -7982,6 +17371,32 @@ msgid "Dialog for confirmation of actions." msgstr "确认动作的对话框。" msgid "" +"Dialog for confirmation of actions. This dialog inherits from " +"[AcceptDialog], but has by default an OK and Cancel button (in host OS " +"order).\n" +"To get cancel action, you can use:\n" +"[codeblocks]\n" +"[gdscript]\n" +"get_cancel_button().pressed.connect(self.canceled)\n" +"[/gdscript]\n" +"[csharp]\n" +"GetCancelButton().Pressed += Canceled;\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"用于确认操作的对话框。这个对话框继承自 [AcceptDialog],但默认有一个确定和取消" +"按钮(按主机操作系统顺序)。\n" +"要获得取消操作,你可以使用\n" +"[codeblocks]\n" +"[gdscript]\n" +"get_cancel_button().pressed.connect(self.canceled)\n" +"[/gdscript]\n" +"[csharp]\n" +"GetCancelButton().Pressed += Canceled;\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" "Returns the cancel button.\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 " @@ -8019,6 +17434,85 @@ msgid "" "Notification for when sorting the children, it must be obeyed immediately." msgstr "对子节点进行排序时的通知,必须立即服从。" +msgid "" +"All user interface nodes inherit from Control. A control's anchors and " +"offsets adapt its position and size relative to its parent." +msgstr "" +"所有用户界面节点都继承自 Control(控件)。控件使用锚点和偏移来调整相对于父级" +"的位置和大小。" + +msgid "" +"Base class for all UI-related nodes. [Control] features a bounding rectangle " +"that defines its extents, an anchor position relative to its parent control " +"or the current viewport, and offsets relative to the anchor. The offsets " +"update automatically when the node, any of its parents, or the screen size " +"change.\n" +"For more information on Godot's UI system, anchors, offsets, and containers, " +"see the related tutorials in the manual. To build flexible UIs, you'll need " +"a mix of UI elements that inherit from [Control] and [Container] nodes.\n" +"[b]User Interface nodes and input[/b]\n" +"Godot propagates input events via viewports. Each [Viewport] is responsible " +"for propagating [InputEvent]s to their child nodes. As the [member SceneTree." +"root] is a [Window], this already happens automatically for all UI elements " +"in your game.\n" +"Input events are propagated through the [SceneTree] from the root node to " +"all child nodes by calling [method Node._input]. For UI elements " +"specifically, it makes more sense to override the virtual method [method " +"_gui_input], which filters out unrelated input events, such as by checking z-" +"order, [member mouse_filter], focus, or if the event was inside of the " +"control's bounding box.\n" +"Call [method accept_event] so no other node receives the event. Once you " +"accept an input, it becomes handled so [method Node._unhandled_input] will " +"not process it.\n" +"Only one [Control] node can be in focus. Only the node in focus will receive " +"events. To get the focus, call [method grab_focus]. [Control] nodes lose " +"focus when another node grabs it, or if you hide the node in focus.\n" +"Sets [member mouse_filter] to [constant MOUSE_FILTER_IGNORE] to tell a " +"[Control] node to ignore mouse or touch events. You'll need it if you place " +"an icon on top of a button.\n" +"[Theme] resources change the Control's appearance. If you change the [Theme] " +"on a [Control] node, it affects all of its children. To override some of the " +"theme's parameters, call one of the [code]add_theme_*_override[/code] " +"methods, like [method add_theme_font_override]. You can override the theme " +"with the Inspector.\n" +"[b]Note:[/b] Theme items are [i]not[/i] [Object] properties. This means you " +"can't access their values using [method Object.get] and [method Object.set]. " +"Instead, use the [code]get_theme_*[/code] and [code]add_theme_*_override[/" +"code] methods provided by this class." +msgstr "" +"所有 UI 相关节点的基类。[Control] 具有定义其范围的边界矩形,相对于父控件或当" +"前视口的锚点位置,以及相对于锚点的偏移。当节点、任何父节点或屏幕尺寸发生变化" +"时,偏移就会自动更新。\n" +"更多关于 Godot 的 UI 系统、锚点、偏移和容器的信息,请参阅手册中的相关教程。要" +"构建灵活的 UI,你需要混合使用从 [Control] 和 [Container] 节点继承的 UI 元" +"素。\n" +"[b]用户界面节点与输入[/b]\n" +"Godot 使用视口来传播输入事件。视口负责将 [InputEvent] 传播给它的子节点。因为 " +"[member SceneTree.root] 是 [Window],所以游戏中的所有 UI 元素都会自动进行传" +"播。\n" +"输入事件通过调用 [method Node._input] 在 [SceneTree] 中传播,从根节点传播到所" +"有子节点。对 UI 元素而言,覆盖的最好是 [method _gui_input],可以过滤掉无关的" +"输入事件,例如它会对 Z 顺序、[member mouse_filter]、焦点、事件是否在该控件的" +"边界框内等条件进行检查。\n" +"请调用 [method accept_event],这样其他节点就不会收到该事件。输入被接受后,就" +"会被标记为已处理,[method Node._unhandled_input] 不会对它进行处理。\n" +"只能有一个 [Control] 节点处于焦点。只有处于焦点的节点才会接收到事件。要获得焦" +"点,请调用 [method grab_focus]。导致 [Control] 节点失去焦点的情况有:其他节点" +"获得了焦点、隐藏了聚焦节点。\n" +"将 [member mouse_filter] 设置为 [constant MOUSE_FILTER_IGNORE] 可以让 " +"[Control] 节点忽略鼠标或触摸事件。如果你在按钮上放了一个图标,就会需要用" +"到。\n" +"[Theme] 资源会更改控件的外观。如果你更改了 [Control] 节点上的 [Theme],则会影" +"响其所有子节点。要覆盖某些主题的参数,请调用 [code]add_theme_*_override[/" +"code] 方法,例如 [method add_theme_font_override]。你可以使用检查器覆盖主" +"题。\n" +"[b]注意:[/b]主题项[i]不是[/i] [Object] 的属性。这意味着你无法使用 [method " +"Object.get] 和 [method Object.set] 访问它们的值。请改用这个类的 " +"[code]get_theme_*[/code] 和 [code]add_theme_*_override[/code] 方法。" + +msgid "GUI documentation index" +msgstr "GUI 文档索引" + msgid "Control node gallery" msgstr "控件节点一览" @@ -8026,6 +17520,333 @@ msgid "All GUI Demos" msgstr "所有 GUI 演示" msgid "" +"Godot calls this method to test if [param data] from a control's [method " +"_get_drag_data] can be dropped at [param at_position]. [param at_position] " +"is local to this control.\n" +"This method should only be used to test the data. Process the data in " +"[method _drop_data].\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _can_drop_data(position, data):\n" +" # Check position if it is relevant to you\n" +" # Otherwise, just check data\n" +" return typeof(data) == TYPE_DICTIONARY and data.has(\"expected\")\n" +"[/gdscript]\n" +"[csharp]\n" +"public override bool _CanDropData(Vector2 atPosition, Variant data)\n" +"{\n" +" // Check position if it is relevant to you\n" +" // Otherwise, just check data\n" +" return data.VariantType == Variant.Type.Dictionary && data." +"AsGodotDictionary().Contains(\"expected\");\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"Godot 调用该方法来测试是否可以将控件的 [method _get_drag_data] 中的 [param " +"data] 放在 [param at_position] 处。[param at_position] 是该控件的局部位置。\n" +"此方法应仅用于测试数据。处理 [method _drop_data] 中的数据。\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _can_drop_data(position, data):\n" +" # 如果 position 与您相关则检查它\n" +" # 否则,只检查 data\n" +" return typeof(data) == TYPE_DICTIONARY and data.has(\"expected\")\n" +"[/gdscript]\n" +"[csharp]\n" +"public override bool _CanDropData(Vector2 atPosition, Variant data)\n" +"{\n" +" // 如果 position 与您相关则检查它\n" +" // 否则,只检查 data\n" +" return data.VariantType == Variant.Type.Dictionary && data." +"AsGodotDictionary().Contains(\"expected\");\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Godot calls this method to pass you the [param data] from a control's " +"[method _get_drag_data] result. Godot first calls [method _can_drop_data] to " +"test if [param data] is allowed to drop at [param at_position] where [param " +"at_position] is local to this control.\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _can_drop_data(position, data):\n" +" return typeof(data) == TYPE_DICTIONARY and data.has(\"color\")\n" +"\n" +"func _drop_data(position, data):\n" +" var color = data[\"color\"]\n" +"[/gdscript]\n" +"[csharp]\n" +"public override bool _CanDropData(Vector2 atPosition, Variant data)\n" +"{\n" +" return data.VariantType == Variant.Type.Dictionary && dict." +"AsGodotDictionary().Contains(\"color\");\n" +"}\n" +"\n" +"public override void _DropData(Vector2 atPosition, Variant data)\n" +"{\n" +" Color color = data.AsGodotDictionary()[\"color\"].AsColor();\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"Godot 调用该方法从控件的 [method _get_drag_data] 结果中向您传递 [param " +"data]。Godot 首先调用 [method _can_drop_data] 来测试是否允许 [param data] 在 " +"[param at_position] 处放置,其中 [param at_position] 是该控件的局部位置。\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _can_drop_data(position, data):\n" +" return typeof(data) == TYPE_DICTIONARY and data.has(\"color\")\n" +"\n" +"func _drop_data(position, data):\n" +" var color = data[\"color\"]\n" +"[/gdscript]\n" +"[csharp]\n" +"public override bool _CanDropData(Vector2 atPosition, Variant data)\n" +"{\n" +" return data.VariantType == Variant.Type.Dictionary && dict." +"AsGodotDictionary().Contains(\"color\");\n" +"}\n" +"\n" +"public override void _DropData(Vector2 atPosition, Variant data)\n" +"{\n" +" Color color = data.AsGodotDictionary()[\"color\"].AsColor();\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Godot calls this method to get data that can be dragged and dropped onto " +"controls that expect drop data. Returns [code]null[/code] if there is no " +"data to drag. Controls that want to receive drop data should implement " +"[method _can_drop_data] and [method _drop_data]. [param at_position] is " +"local to this control. Drag may be forced with [method force_drag].\n" +"A preview that will follow the mouse that should represent the data can be " +"set with [method set_drag_preview]. A good time to set the preview is in " +"this method.\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _get_drag_data(position):\n" +" var mydata = make_data() # This is your custom method generating the " +"drag data.\n" +" set_drag_preview(make_preview(mydata)) # This is your custom method " +"generating the preview of the drag data.\n" +" return mydata\n" +"[/gdscript]\n" +"[csharp]\n" +"public override Variant _GetDragData(Vector2 atPosition)\n" +"{\n" +" var myData = MakeData(); // This is your custom method generating the " +"drag data.\n" +" SetDragPreview(MakePreview(myData)); // This is your custom method " +"generating the preview of the drag data.\n" +" return myData;\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"Godot 调用该方法来获取可以拖放到期望放置数据的控件上的数据。如果没有要拖动的" +"数据,则返回 [code]null[/code]。想要接收拖放数据的控件应该实现 [method " +"_can_drop_data] 和 [method _drop_data]。[param at_position] 是该控件的局部位" +"置。可以使用 [method force_drag] 强制拖动。\n" +"可以使用 [method set_drag_preview] 设置跟随鼠标显示数据的预览。设置预览的好时" +"机就是在这个方法中。\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _get_drag_data(position):\n" +" var mydata = make_data() # This is your custom method generating the " +"drag data.\n" +" set_drag_preview(make_preview(mydata)) # 这是您生成拖动数据预览的自定义方" +"法。\n" +" return mydata\n" +"[/gdscript]\n" +"[csharp]\n" +"public override Variant _GetDragData(Vector2 atPosition)\n" +"{\n" +" var myData = MakeData(); // This is your custom method generating the " +"drag data.\n" +" SetDragPreview(MakePreview(myData)); // 这是您生成拖动数据预览的自定义方" +"法。\n" +" return myData;\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Virtual method to be implemented by the user. Use this method to process and " +"accept inputs on UI elements. See [method accept_event].\n" +"[b]Example usage for clicking a control:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _gui_input(event):\n" +" if event is InputEventMouseButton:\n" +" if event.button_index == MOUSE_BUTTON_LEFT and event.pressed:\n" +" print(\"I've been clicked D:\")\n" +"[/gdscript]\n" +"[csharp]\n" +"public override void _GuiInput(InputEvent @event)\n" +"{\n" +" if (@event is InputEventMouseButton mb)\n" +" {\n" +" if (mb.ButtonIndex == MouseButton.Left && mb.Pressed)\n" +" {\n" +" GD.Print(\"I've been clicked D:\");\n" +" }\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"The event won't trigger if:\n" +"* clicking outside the control (see [method _has_point]);\n" +"* control has [member mouse_filter] set to [constant MOUSE_FILTER_IGNORE];\n" +"* control is obstructed by another [Control] on top of it, which doesn't " +"have [member mouse_filter] set to [constant MOUSE_FILTER_IGNORE];\n" +"* control's parent has [member mouse_filter] set to [constant " +"MOUSE_FILTER_STOP] or has accepted the event;\n" +"* it happens outside the parent's rectangle and the parent has either " +"[member clip_contents] enabled.\n" +"[b]Note:[/b] Event position is relative to the control origin." +msgstr "" +"由用户实现的虚方法。使用此方法处理和接受 UI 元素上的输入。请参阅 [method " +"accept_event]。\n" +"[b]点击控件的用法示例:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _gui_input(event):\n" +" if event is InputEventMouseButton:\n" +" if event.button_index == MOUSE_BUTTON_LEFT and event.pressed:\n" +" print(\"我已被点击 D:\")\n" +"[/gdscript]\n" +"[csharp]\n" +"public override void _GuiInput(InputEvent @event)\n" +"{\n" +" if (@event is InputEventMouseButton mb)\n" +" {\n" +" if (mb.ButtonIndex == MouseButton.Left && mb.Pressed)\n" +" {\n" +" GD.Print(\"我已被点击 D:\");\n" +" }\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"如果出现以下情况,则不会触发该事件:\n" +"* 在控件外点击(参阅[method _has_point]);\n" +"* 控件将 [member mouse_filter] 设置为 [constant MOUSE_FILTER_IGNORE];\n" +"* 控件被其上的另一个 [Control] 阻挡,该控件没有将 [member mouse_filter] 设置" +"为 [constant MOUSE_FILTER_IGNORE];\n" +"* 控件的父级已将 [member mouse_filter] 设置为 [constant MOUSE_FILTER_STOP] 或" +"已接受该事件;\n" +"* 它发生在父级的矩形之外,并且父级已启用 [member clip_contents]。\n" +"[b]注意:[/b]事件位置相对于该控件原点。" + +msgid "" +"Virtual method to be implemented by the user. Returns a [Control] node that " +"should be used as a tooltip instead of the default one. The [param for_text] " +"includes the contents of the [member tooltip_text] property.\n" +"The returned node must be of type [Control] or Control-derived. It can have " +"child nodes of any type. It is freed when the tooltip disappears, so make " +"sure you always provide a new instance (if you want to use a pre-existing " +"node from your scene tree, you can duplicate it and pass the duplicated " +"instance). When [code]null[/code] or a non-Control node is returned, the " +"default tooltip will be used instead.\n" +"The returned node will be added as child to a [PopupPanel], so you should " +"only provide the contents of that panel. That [PopupPanel] can be themed " +"using [method Theme.set_stylebox] for the type [code]\"TooltipPanel\"[/code] " +"(see [member tooltip_text] for an example).\n" +"[b]Note:[/b] The tooltip is shrunk to minimal size. If you want to ensure " +"it's fully visible, you might want to set its [member custom_minimum_size] " +"to some non-zero value.\n" +"[b]Note:[/b] The node (and any relevant children) should be [member " +"CanvasItem.visible] when returned, otherwise, the viewport that instantiates " +"it will not be able to calculate its minimum size reliably.\n" +"[b]Example of usage with a custom-constructed node:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _make_custom_tooltip(for_text):\n" +" var label = Label.new()\n" +" label.text = for_text\n" +" return label\n" +"[/gdscript]\n" +"[csharp]\n" +"public override Control _MakeCustomTooltip(string forText)\n" +"{\n" +" var label = new Label();\n" +" label.Text = forText;\n" +" return label;\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Example of usage with a custom scene instance:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _make_custom_tooltip(for_text):\n" +" var tooltip = preload(\"res://some_tooltip_scene.tscn\").instantiate()\n" +" tooltip.get_node(\"Label\").text = for_text\n" +" return tooltip\n" +"[/gdscript]\n" +"[csharp]\n" +"public override Control _MakeCustomTooltip(string forText)\n" +"{\n" +" Node tooltip = ResourceLoader.Load<PackedScene>(\"res://" +"some_tooltip_scene.tscn\").Instantiate();\n" +" tooltip.GetNode<Label>(\"Label\").Text = forText;\n" +" return tooltip;\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"由用户实现的虚方法。返回一个 [Control] 节点,该节点取代默认节点以用作工具提" +"示。[param for_text] 包含 [member tooltip_text] 属性的内容。\n" +"返回的节点必须是 [Control] 类型或 Control 派生类型。它可以有任何类型的子节" +"点。当工具提示消失时它会被释放,因此请确保您始终提供一个新实例(如果您想使用" +"场景树中预先存在的节点,您可以复制它并传递复制的实例)。当返回 [code]null[/" +"code] 或非控制节点时,将使用默认的工具提示。\n" +"返回的节点将作为子节点添加到 [PopupPanel],因此您应该只提供该面板的内容。该 " +"[PopupPanel] 可以使用 [method Theme.set_stylebox] 为类型 " +"[code]\"TooltipPanel\"[/code] 设置主题(参见 [member tooltip_text] 示例)。\n" +"[b]注意:[/b]工具提示会被缩小到最小大小。如果您想确保它完全可见,您可能需要将" +"其 [member custom_minimum_size] 设置为非零值。\n" +"[b]注意:[/b]返回时节点(和任何相关的子节点)应该是 [member CanvasItem." +"visible],否则,实例化它的视口将无法可靠地计算它的最小大小。\n" +"[b]自定义构造节点的用法示例:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _make_custom_tooltip(for_text):\n" +" var label = Label.new()\n" +" label.text = for_text\n" +" return label\n" +"[/gdscript]\n" +"[csharp]\n" +"public override Control _MakeCustomTooltip(string forText)\n" +"{\n" +" var label = new Label();\n" +" label.Text = forText;\n" +" return label;\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]自定义场景实例的使用示例:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _make_custom_tooltip(for_text):\n" +" var tooltip = preload(\"res://some_tooltip_scene.tscn\").instantiate()\n" +" tooltip.get_node(\"Label\").text = for_text\n" +" return tooltip\n" +"[/gdscript]\n" +"[csharp]\n" +"public override Control _MakeCustomTooltip(string forText)\n" +"{\n" +" Node tooltip = ResourceLoader.Load<PackedScene>(\"res://" +"some_tooltip_scene.tscn\").Instantiate();\n" +" tooltip.GetNode<Label>(\"Label\").Text = forText;\n" +" return tooltip;\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" "Marks an input event as handled. Once you accept an input event, it stops " "propagating, even to nodes listening to [method Node._unhandled_input] or " "[method Node._unhandled_key_input]." @@ -8034,6 +17855,87 @@ msgstr "" "[method Node._unhandled_input] 和 [method Node._unhandled_key_input] 的节点。" msgid "" +"Creates a local override for a theme [Font] with the specified [param name]. " +"Local overrides always take precedence when fetching theme items for the " +"control. An override can be removed with [method " +"remove_theme_font_override].\n" +"See also [method get_theme_font]." +msgstr "" +"为具有指定 [param name] 的主题 [Font] 创建本地覆盖。在获取控件的主题项时,本" +"地覆盖始终优先。覆盖可以使用 [method remove_theme_font_override] 移除。\n" +"另见 [method get_theme_font]。" + +msgid "" +"Creates a local override for a theme [StyleBox] with the specified [param " +"name]. Local overrides always take precedence when fetching theme items for " +"the control. An override can be removed with [method " +"remove_theme_stylebox_override].\n" +"See also [method get_theme_stylebox].\n" +"[b]Example of modifying a property in a StyleBox by duplicating it:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"# The snippet below assumes the child node MyButton has a StyleBoxFlat " +"assigned.\n" +"# Resources are shared across instances, so we need to duplicate it\n" +"# to avoid modifying the appearance of all other buttons.\n" +"var new_stylebox_normal = $MyButton.get_theme_stylebox(\"normal\")." +"duplicate()\n" +"new_stylebox_normal.border_width_top = 3\n" +"new_stylebox_normal.border_color = Color(0, 1, 0.5)\n" +"$MyButton.add_theme_stylebox_override(\"normal\", new_stylebox_normal)\n" +"# Remove the stylebox override.\n" +"$MyButton.remove_theme_stylebox_override(\"normal\")\n" +"[/gdscript]\n" +"[csharp]\n" +"// The snippet below assumes the child node MyButton has a StyleBoxFlat " +"assigned.\n" +"// Resources are shared across instances, so we need to duplicate it\n" +"// to avoid modifying the appearance of all other buttons.\n" +"StyleBoxFlat newStyleboxNormal = GetNode<Button>(\"MyButton\")." +"GetThemeStylebox(\"normal\").Duplicate() as StyleBoxFlat;\n" +"newStyleboxNormal.BorderWidthTop = 3;\n" +"newStyleboxNormal.BorderColor = new Color(0, 1, 0.5f);\n" +"GetNode<Button>(\"MyButton\").AddThemeStyleboxOverride(\"normal\", " +"newStyleboxNormal);\n" +"// Remove the stylebox override.\n" +"GetNode<Button>(\"MyButton\").RemoveThemeStyleboxOverride(\"normal\");\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"使用指定的 [param name] 为主题 [StyleBox] 创建本地覆盖。在获取控件的主题项" +"时,本地覆盖始终优先。覆盖可以使用 [method remove_theme_stylebox_override] 移" +"除。\n" +"另见 [method get_theme_stylebox]。\n" +"[b]通过复制来修改 StyleBox 中的属性的示例:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"# 下面的代码片段假设子节点 MyButton 分配了一个 StyleBoxFlat。\n" +"# 资源是跨实例共享的,所以我们需要复制它\n" +"# 以避免修改所有其他按钮的外观。\n" +"var new_stylebox_normal = $MyButton.get_theme_stylebox(\"normal\")." +"duplicate()\n" +"new_stylebox_normal.border_width_top = 3\n" +"new_stylebox_normal.border_color = Color(0, 1, 0.5)\n" +"$MyButton.add_theme_stylebox_override(\"normal\", new_stylebox_normal)\n" +"# 移除样式盒覆盖。\n" +"$MyButton.remove_theme_stylebox_override(\"normal\")\n" +"[/gdscript]\n" +"[csharp]\n" +"// 下面的代码片段假设子节点 MyButton 分配了一个 StyleBoxFlat。\n" +"// 资源是跨实例共享的,所以我们需要复制它\n" +"// 以避免修改所有其他按钮的外观。\n" +"StyleBoxFlat newStyleboxNormal = GetNode<Button>(\"MyButton\")." +"GetThemeStylebox(\"normal\").Duplicate() as StyleBoxFlat;\n" +"newStyleboxNormal.BorderWidthTop = 3;\n" +"newStyleboxNormal.BorderColor = new Color(0, 1, 0.5f);\n" +"GetNode<Button>(\"MyButton\").AddThemeStyleboxOverride(\"normal\", " +"newStyleboxNormal);\n" +"// 移除样式盒覆盖。\n" +"GetNode<Button>(\"MyButton\").RemoveThemeStyleboxOverride(\"normal\");\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" "Finds the next (below in the tree) [Control] that can receive the focus." msgstr "找到下一个可以接受焦点的 [Control],在树的下方。" @@ -8053,12 +17955,262 @@ msgid "Returns the parent control node." msgstr "返回父控制节点。" msgid "" +"Returns a [Color] from the first matching [Theme] in the tree if that " +"[Theme] has a color item with the specified [param name] and [param " +"theme_type]. If [param theme_type] is omitted the class name of the current " +"control is used as the type, or [member theme_type_variation] if it is " +"defined. If the type is a class name its parent classes are also checked, in " +"order of inheritance. If the type is a variation its base types are checked, " +"in order of dependency, then the control's class name and its parent classes " +"are checked.\n" +"For the current control its local overrides are considered first (see " +"[method add_theme_color_override]), then its assigned [member theme]. After " +"the current control, each parent control and its assigned [member theme] are " +"considered; controls without a [member theme] assigned are skipped. If no " +"matching [Theme] is found in the tree, the custom project [Theme] (see " +"[member ProjectSettings.gui/theme/custom]) and the default [Theme] are used " +"(see [ThemeDB]).\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _ready():\n" +" # Get the font color defined for the current Control's class, if it " +"exists.\n" +" modulate = get_theme_color(\"font_color\")\n" +" # Get the font color defined for the Button class.\n" +" modulate = get_theme_color(\"font_color\", \"Button\")\n" +"[/gdscript]\n" +"[csharp]\n" +"public override void _Ready()\n" +"{\n" +" // Get the font color defined for the current Control's class, if it " +"exists.\n" +" Modulate = GetThemeColor(\"font_color\");\n" +" // Get the font color defined for the Button class.\n" +" Modulate = GetThemeColor(\"font_color\", \"Button\");\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"从树中第一个匹配的 [Theme] 返回 [Color],该 [Theme] 中应存在指定名称 [param " +"name] 和主题类型 [param theme_type] 的颜色项。如果省略 [param theme_type] 则" +"会使用当前控件的类名,如果定义了 [member theme_type_variation] 则会优先使用。" +"如果该类型为类名,则还会按照继承顺序检查父类。如果该类型为变种,则还会按照依" +"赖顺序检查基础类型,然后再检查该控件的类名及其父类。\n" +"会首先考虑当前控件的本地覆盖项(见 [method add_theme_color_override]),然后" +"才是其 [member theme]。各个父控件及其 [member theme] 在当前控件之后考虑;会跳" +"过没有 [member theme] 的控件。如果树中没有匹配的 [Theme],则会使用自定义项目 " +"[Theme](见 [member ProjectSettings.gui/theme/custom])和默认 [Theme](见 " +"[ThemeDB])。\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _ready():\n" +" # 获取当前 Control 类中定义的字体颜色,前提是存在。\n" +" modulate = get_theme_color(\"font_color\")\n" +" # 获取 Button 类中定义的字体颜色。\n" +" modulate = get_theme_color(\"font_color\", \"Button\")\n" +"[/gdscript]\n" +"[csharp]\n" +"public override void _Ready()\n" +"{\n" +" // 获取当前 Control 类中定义的字体颜色,前提是存在。\n" +" Modulate = GetThemeColor(\"font_color\");\n" +" // 获取 Button 类中定义的字体颜色。\n" +" Modulate = GetThemeColor(\"font_color\", \"Button\");\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Returns a constant from the first matching [Theme] in the tree if that " +"[Theme] has a constant item with the specified [param name] and [param " +"theme_type].\n" +"See [method get_theme_color] for details." +msgstr "" +"从树中第一个匹配的 [Theme] 返回常量,该 [Theme] 中应存在指定名称 [param " +"name] 和主题类型 [param theme_type] 的常量项。\n" +"详情请参阅 [method get_theme_color]。" + +msgid "" +"Returns the default base scale value from the first matching [Theme] in the " +"tree if that [Theme] has a valid [member Theme.default_base_scale] value.\n" +"See [method get_theme_color] for details." +msgstr "" +"从树中第一个匹配的 [Theme] 返回默认基础缩放值,该 [Theme] 中应存在有效的 " +"[member Theme.default_base_scale] 值。\n" +"详情请参阅 [method get_theme_color]。" + +msgid "" +"Returns the default font from the first matching [Theme] in the tree if that " +"[Theme] has a valid [member Theme.default_font] value.\n" +"See [method get_theme_color] for details." +msgstr "" +"从树中第一个匹配的 [Theme] 返回默认字体,该 [Theme] 中应存在有效的 [member " +"Theme.default_font] 值。\n" +"详情请参阅 [method get_theme_color]。" + +msgid "" +"Returns the default font size value from the first matching [Theme] in the " +"tree if that [Theme] has a valid [member Theme.default_font_size] value.\n" +"See [method get_theme_color] for details." +msgstr "" +"从树中第一个匹配的 [Theme] 返回默认字体大小,该 [Theme] 中应存在有效的 " +"[member Theme.default_font_size] 值。\n" +"详情请参阅 [method get_theme_color]。" + +msgid "" +"Returns a [Font] from the first matching [Theme] in the tree if that [Theme] " +"has a font item with the specified [param name] and [param theme_type].\n" +"See [method get_theme_color] for details." +msgstr "" +"从树中第一个匹配的 [Theme] 返回 [Font],该 [Theme] 中应存在指定名称 [param " +"name] 和主题类型 [param theme_type] 的字体项。\n" +"详情请参阅 [method get_theme_color]。" + +msgid "" +"Returns a font size from the first matching [Theme] in the tree if that " +"[Theme] has a font size item with the specified [param name] and [param " +"theme_type].\n" +"See [method get_theme_color] for details." +msgstr "" +"从树中第一个匹配的 [Theme] 返回字体大小,该 [Theme] 中应存在指定名称 [param " +"name] 和主题类型 [param theme_type] 的字体大小项。\n" +"详情请参阅 [method get_theme_color]。" + +msgid "" +"Returns an icon from the first matching [Theme] in the tree if that [Theme] " +"has an icon item with the specified [param name] and [param theme_type].\n" +"See [method get_theme_color] for details." +msgstr "" +"从树中第一个匹配的 [Theme] 返回图标,该 [Theme] 中应存在指定名称 [param " +"name] 和主题类型 [param theme_type] 的图标项。\n" +"详情请参阅 [method get_theme_color]。" + +msgid "" +"Returns a [StyleBox] from the first matching [Theme] in the tree if that " +"[Theme] has a stylebox item with the specified [param name] and [param " +"theme_type].\n" +"See [method get_theme_color] for details." +msgstr "" +"从树中第一个匹配的 [Theme] 返回 [StyleBox],该 [Theme] 中应存在指定名称 " +"[param name] 和主题类型 [param theme_type] 的样式盒项。\n" +"详情请参阅 [method get_theme_color]。" + +msgid "" "Returns [code]true[/code] if this is the current focused control. See " "[member focus_mode]." msgstr "" "如果这是当前的焦点控件,则返回 [code]true[/code]。见 [member focus_mode]。" msgid "" +"Returns [code]true[/code] if there is a matching [Theme] in the tree that " +"has a color item with the specified [param name] and [param theme_type].\n" +"See [method get_theme_color] for details." +msgstr "" +"如果树中存在匹配的 [Theme] 则返回 [code]true[/code],该 [Theme] 中应存在指定" +"名称 [param name] 和主题类型 [param theme_type] 的颜色项。\n" +"详情请参阅 [method get_theme_color]。" + +msgid "" +"Returns [code]true[/code] if there is a local override for a theme [Color] " +"with the specified [param name] in this [Control] node.\n" +"See [method add_theme_color_override]." +msgstr "" +"如果该 [Control] 节点中存在名为指定 [param name] 的主题 [Color] 本地覆盖项," +"则返回 [code]true[/code]。\n" +"详情请参阅 [method add_theme_color_override]。" + +msgid "" +"Returns [code]true[/code] if there is a matching [Theme] in the tree that " +"has a constant item with the specified [param name] and [param theme_type].\n" +"See [method get_theme_color] for details." +msgstr "" +"如果树中存在匹配的 [Theme] 则返回 [code]true[/code],该 [Theme] 中应存在指定" +"名称 [param name] 和主题类型 [param theme_type] 的常量项。\n" +"详情请参阅 [method get_theme_color]。" + +msgid "" +"Returns [code]true[/code] if there is a local override for a theme constant " +"with the specified [param name] in this [Control] node.\n" +"See [method add_theme_constant_override]." +msgstr "" +"如果该 [Control] 节点中存在名为指定 [param name] 的主题常量本地覆盖项,则返" +"回 [code]true[/code]。\n" +"详情请参阅 [method add_theme_constant_override]。" + +msgid "" +"Returns [code]true[/code] if there is a matching [Theme] in the tree that " +"has a font item with the specified [param name] and [param theme_type].\n" +"See [method get_theme_color] for details." +msgstr "" +"如果树中存在匹配的 [Theme] 则返回 [code]true[/code],该 [Theme] 中应存在指定" +"名称 [param name] 和主题类型 [param theme_type] 的字体项。\n" +"详情请参阅 [method get_theme_color]。" + +msgid "" +"Returns [code]true[/code] if there is a local override for a theme [Font] " +"with the specified [param name] in this [Control] node.\n" +"See [method add_theme_font_override]." +msgstr "" +"如果该 [Control] 节点中存在名为指定 [param name] 的主题 [Font] 本地覆盖项,则" +"返回 [code]true[/code]。\n" +"详情请参阅 [method add_theme_font_override]。" + +msgid "" +"Returns [code]true[/code] if there is a matching [Theme] in the tree that " +"has a font size item with the specified [param name] and [param " +"theme_type].\n" +"See [method get_theme_color] for details." +msgstr "" +"如果树中存在匹配的 [Theme] 则返回 [code]true[/code],该 [Theme] 中应存在指定" +"名称 [param name] 和主题类型 [param theme_type] 的字体大小项。\n" +"详情请参阅 [method get_theme_color]。" + +msgid "" +"Returns [code]true[/code] if there is a local override for a theme font size " +"with the specified [param name] in this [Control] node.\n" +"See [method add_theme_font_size_override]." +msgstr "" +"如果该 [Control] 节点中存在名为指定 [param name] 的主题字体大小本地覆盖项,则" +"返回 [code]true[/code]。\n" +"详情请参阅 [method add_theme_font_size_override]。" + +msgid "" +"Returns [code]true[/code] if there is a matching [Theme] in the tree that " +"has an icon item with the specified [param name] and [param theme_type].\n" +"See [method get_theme_color] for details." +msgstr "" +"如果树中存在匹配的 [Theme] 则返回 [code]true[/code],该 [Theme] 中应存在指定" +"名称 [param name] 和主题类型 [param theme_type] 的图标项。\n" +"详情请参阅 [method get_theme_color]。" + +msgid "" +"Returns [code]true[/code] if there is a local override for a theme icon with " +"the specified [param name] in this [Control] node.\n" +"See [method add_theme_icon_override]." +msgstr "" +"如果该 [Control] 节点中存在名为指定 [param name] 的主题图标本地覆盖项,则返" +"回 [code]true[/code]。\n" +"详情请参阅 [method add_theme_icon_override]。" + +msgid "" +"Returns [code]true[/code] if there is a matching [Theme] in the tree that " +"has a stylebox item with the specified [param name] and [param theme_type].\n" +"See [method get_theme_color] for details." +msgstr "" +"如果树中存在匹配的 [Theme] 则返回 [code]true[/code],该 [Theme] 中应存在指定" +"名称 [param name] 和主题类型 [param theme_type] 的样式盒项。\n" +"详情请参阅 [method get_theme_color]。" + +msgid "" +"Returns [code]true[/code] if there is a local override for a theme " +"[StyleBox] with the specified [param name] in this [Control] node.\n" +"See [method add_theme_stylebox_override]." +msgstr "" +"如果该 [Control] 节点中存在名为指定 [param name] 的主题 [StyleBox] 本地覆盖" +"项,则返回 [code]true[/code]。\n" +"详情请参阅 [method add_theme_stylebox_override]。" + +msgid "" "Returns [code]true[/code] if a drag operation is successful. Alternative to " "[method Viewport.gui_is_drag_successful].\n" "Best used with [constant Node.NOTIFICATION_DRAG_END]." @@ -8067,6 +18219,91 @@ msgstr "" "gui_is_drag_successful] 的替代方案。\n" "建议与 [constant Node.NOTIFICATION_DRAG_END] 配合使用。" +msgid "Returns [code]true[/code] if layout is right-to-left." +msgstr "如果布局是从右至左的,则返回 [code]true[/code]。" + +msgid "Give up the focus. No other control will be able to receive input." +msgstr "放弃焦点。不会让其他控件能够接收键盘输入。" + +msgid "" +"Removes a local override for a theme [Color] with the specified [param name] " +"previously added by [method add_theme_color_override] or via the Inspector " +"dock." +msgstr "" +"移除名为指定 [param name] 的主题 [Color] 本地覆盖项,该覆盖项由 [method " +"add_theme_color_override] 或检查器面板添加的。" + +msgid "" +"Removes a local override for a theme constant with the specified [param " +"name] previously added by [method add_theme_constant_override] or via the " +"Inspector dock." +msgstr "" +"移除名为指定 [param name] 的主题常量本地覆盖项,该覆盖项由 [method " +"add_theme_constant_override] 或检查器面板添加的。" + +msgid "" +"Removes a local override for a theme [Font] with the specified [param name] " +"previously added by [method add_theme_font_override] or via the Inspector " +"dock." +msgstr "" +"移除名为指定 [param name] 的主题 [Font] 本地覆盖项,该覆盖项由 [method " +"add_theme_font_override] 或检查器面板添加的。" + +msgid "" +"Removes a local override for a theme font size with the specified [param " +"name] previously added by [method add_theme_font_size_override] or via the " +"Inspector dock." +msgstr "" +"移除名为指定 [param name] 的主题字体大小本地覆盖项,该覆盖项由 [method " +"add_theme_font_size_override] 或检查器面板添加的。" + +msgid "" +"Removes a local override for a theme icon with the specified [param name] " +"previously added by [method add_theme_icon_override] or via the Inspector " +"dock." +msgstr "" +"移除名为指定 [param name] 的主题图标本地覆盖项,该覆盖项由 [method " +"add_theme_icon_override] 或检查器面板添加的。" + +msgid "" +"Removes a local override for a theme [StyleBox] with the specified [param " +"name] previously added by [method add_theme_stylebox_override] or via the " +"Inspector dock." +msgstr "" +"移除名为指定 [param name] 的主题 [StyleBox] 本地覆盖项,该覆盖项由 [method " +"add_theme_stylebox_override] 或检查器面板添加的。" + +msgid "" +"Moves the mouse cursor to [param position], relative to [member position] of " +"this [Control].\n" +"[b]Note:[/b] [method warp_mouse] is only supported on Windows, macOS and " +"Linux. It has no effect on Android, iOS and Web." +msgstr "" +"将鼠标光标移动到 [param position],相对于该 [Control] 的 [member " +"position]。\n" +"[b]注意:[/b][method warp_mouse] 仅在 Windows、macOS 和 Linux 上受支持。它在 " +"Android、iOS 和 Web 上没有效果。" + +msgid "" +"Toggles if any text should automatically change to its translated version " +"depending on the current locale. Note that this will not affect any internal " +"nodes (e.g. the popup of a [MenuButton]).\n" +"Also decides if the node's strings should be parsed for POT generation." +msgstr "" +"切换是否所有文本都应该根据当前区域设置自动变为翻译后的版本。请注意,内部节点" +"不受影响(例如 [MenuButton] 的弹出内容)。\n" +"还会决定生成 POT 时是否应解析该节点中的字符串。" + +msgid "" +"Enables whether rendering of [CanvasItem] based children should be clipped " +"to this control's rectangle. If [code]true[/code], parts of a child which " +"would be visibly outside of this control's rectangle will not be rendered " +"and won't receive input." +msgstr "" +"渲染基于 [CanvasItem] 的子节点时,是否应剪裁到该控件的矩形中。如果为 " +"[code]true[/code],则子节点显示在该控件的矩形范围之外的部分,不会渲染,也不会" +"接收输入。" + msgid "" "The minimum size of the node's bounding rectangle. If you set it to a value " "greater than (0, 0), the node's bounding rectangle will always have at least " @@ -8078,6 +18315,83 @@ msgstr "" "其内容,无论是纹理还是子节点。" msgid "" +"Tells Godot which node it should give focus to if the user presses the down " +"arrow on the keyboard or down on a gamepad by default. You can change the " +"key by editing the [member ProjectSettings.input/ui_down] input action. The " +"node must be a [Control]. If this property is not set, Godot will give focus " +"to the closest [Control] to the bottom of this one." +msgstr "" +"告诉 Godot 在默认情况下,当用户按下键盘上的向下箭头或游戏手柄上的向下键时,应" +"将焦点交给哪个节点。你可以通过编辑 [member ProjectSettings.input/ui_down] 的" +"输入动作来更改按键。该节点必须为 [Control]。如果未设置此属性,则 Godot 会将焦" +"点交给与该控件底部最接近的 [Control]。" + +msgid "" +"Tells Godot which node it should give focus to if the user presses the left " +"arrow on the keyboard or left on a gamepad by default. You can change the " +"key by editing the [member ProjectSettings.input/ui_left] input action. The " +"node must be a [Control]. If this property is not set, Godot will give focus " +"to the closest [Control] to the left of this one." +msgstr "" +"告诉 Godot 在默认情况下,当用户按下键盘上的向左箭头或游戏手柄上的向左键时,应" +"将焦点交给哪个节点。你可以通过编辑 [member ProjectSettings.input/ui_left] 的" +"输入动作来更改按键。该节点必须为 [Control]。如果未设置此属性,则 Godot 会将焦" +"点交给与该控件左侧最接近的 [Control]。" + +msgid "" +"Tells Godot which node it should give focus to if the user presses the right " +"arrow on the keyboard or right on a gamepad by default. You can change the " +"key by editing the [member ProjectSettings.input/ui_right] input action. The " +"node must be a [Control]. If this property is not set, Godot will give focus " +"to the closest [Control] to the bottom of this one." +msgstr "" +"告诉 Godot 在默认情况下,当用户按下键盘上的向右箭头或游戏手柄上的向右键时,应" +"将焦点交给哪个节点。你可以通过编辑 [member ProjectSettings.input/ui_right] 的" +"输入动作来更改按键。该节点必须为 [Control]。如果未设置此属性,则 Godot 会将焦" +"点交给与该控件右侧最接近的 [Control]。" + +msgid "" +"Tells Godot which node it should give focus to if the user presses the top " +"arrow on the keyboard or top on a gamepad by default. You can change the key " +"by editing the [member ProjectSettings.input/ui_up] input action. The node " +"must be a [Control]. If this property is not set, Godot will give focus to " +"the closest [Control] to the bottom of this one." +msgstr "" +"告诉 Godot 在默认情况下,当用户按下键盘上的向上箭头或游戏手柄上的向上键时,应" +"将焦点交给哪个节点。你可以通过编辑 [member ProjectSettings.input/ui_up] 的输" +"入动作来更改按键。该节点必须为 [Control]。如果未设置此属性,则 Godot 会将焦点" +"交给与该控件顶部最接近的 [Control]。" + +msgid "" +"Tells Godot which node it should give focus to if the user presses [kbd]Tab[/" +"kbd] on a keyboard by default. You can change the key by editing the [member " +"ProjectSettings.input/ui_focus_next] input action.\n" +"If this property is not set, Godot will select a \"best guess\" based on " +"surrounding nodes in the scene tree." +msgstr "" +"告诉 Godot 在默认情况下,当用户按下键盘上的 [kbd]Tab[/kbd] 时,应将焦点交给哪" +"个节点。你可以通过编辑 [member ProjectSettings.input/ui_focus_next] 的输入动" +"作来更改按键。\n" +"如果未设置此属性,则 Godot 会将根据场景树中的附近节点选择一个“最佳猜测”。" + +msgid "" +"Tells Godot which node it should give focus to if the user presses " +"[kbd]Shift + Tab[/kbd] on a keyboard by default. You can change the key by " +"editing the [member ProjectSettings.input/ui_focus_prev] input action.\n" +"If this property is not set, Godot will select a \"best guess\" based on " +"surrounding nodes in the scene tree." +msgstr "" +"告诉 Godot 在默认情况下,当用户按下键盘上的 [kbd]Shift + Tab[/kbd] 时,应将焦" +"点交给哪个节点。你可以通过编辑 [member ProjectSettings.input/ui_focus_prev] " +"的输入动作来更改按键。\n" +"如果未设置此属性,则 Godot 会将根据场景树中的附近节点选择一个“最佳猜测”。" + +msgid "" +"The node's global position, relative to the world (usually to the " +"[CanvasLayer])." +msgstr "该节点的全局位置,相对于世界(通常为 [CanvasLayer])。" + +msgid "" "Controls the direction on the horizontal axis in which the control should " "grow if its horizontal minimum size is changed to be greater than its " "current size, as the control always has to be at least the minimum size." @@ -8094,6 +18408,26 @@ msgstr "" "沿该方向增大,因为控件始终必须至少为最小尺寸。" msgid "" +"Controls layout direction and text writing direction. Right-to-left layouts " +"are necessary for certain languages (e.g. Arabic and Hebrew)." +msgstr "" +"控制布局方向和文本书写方向。某些语言需要从右至左的布局(例如阿拉伯语和希伯来" +"语)。" + +msgid "" +"If [code]true[/code], automatically converts code line numbers, list " +"indices, [SpinBox] and [ProgressBar] values from the Western Arabic (0..9) " +"to the numeral systems used in current locale.\n" +"[b]Note:[/b] Numbers within the text are not automatically converted, it can " +"be done manually, using [method TextServer.format_number]." +msgstr "" +"如果为 [code]true[/code],则会自动将代码行号、列表索引号、[SpinBox] 和 " +"[ProgressBar] 的值,从阿拉伯数字(0..9)转换为当前区域设置所使用的记数系" +"统。\n" +"[b]注意:[/b]不会自动转换文本中的数字,可以使用 [method TextServer." +"format_number] 手动转换。" + +msgid "" "The default cursor shape for this control. Useful for Godot plugins and " "applications or games that use the system's mouse cursors.\n" "[b]Note:[/b] On Linux, shapes may vary depending on the cursor theme of the " @@ -8114,6 +18448,90 @@ msgstr "" "信号。参阅常量来了解每个常量的作用。" msgid "" +"Distance between the node's bottom edge and its parent control, based on " +"[member anchor_bottom].\n" +"Offsets are often controlled by one or multiple parent [Container] nodes, so " +"you should not modify them manually if your node is a direct child of a " +"[Container]. Offsets update automatically when you move or resize the node." +msgstr "" +"该节点底部边缘与其父控件之间的距离,基于 [member anchor_bottom]。\n" +"偏移量通常由一个或多个父 [Container] 节点控制,因此如果你的节点是 " +"[Container] 的直接子节点,则不应进行手动修改。移动节点或调整节点大小时,偏移" +"量会自动更新。" + +msgid "" +"Distance between the node's left edge and its parent control, based on " +"[member anchor_left].\n" +"Offsets are often controlled by one or multiple parent [Container] nodes, so " +"you should not modify them manually if your node is a direct child of a " +"[Container]. Offsets update automatically when you move or resize the node." +msgstr "" +"该节点左侧边缘与其父控件之间的距离,基于 [member anchor_left]。\n" +"偏移量通常由一个或多个父 [Container] 节点控制,因此如果你的节点是 " +"[Container] 的直接子节点,则不应进行手动修改。移动节点或调整节点大小时,偏移" +"量会自动更新。" + +msgid "" +"Distance between the node's right edge and its parent control, based on " +"[member anchor_right].\n" +"Offsets are often controlled by one or multiple parent [Container] nodes, so " +"you should not modify them manually if your node is a direct child of a " +"[Container]. Offsets update automatically when you move or resize the node." +msgstr "" +"该节点右侧边缘与其父控件之间的距离,基于 [member anchor_right]。\n" +"偏移量通常由一个或多个父 [Container] 节点控制,因此如果你的节点是 " +"[Container] 的直接子节点,则不应进行手动修改。移动节点或调整节点大小时,偏移" +"量会自动更新。" + +msgid "" +"Distance between the node's top edge and its parent control, based on " +"[member anchor_top].\n" +"Offsets are often controlled by one or multiple parent [Container] nodes, so " +"you should not modify them manually if your node is a direct child of a " +"[Container]. Offsets update automatically when you move or resize the node." +msgstr "" +"该节点顶部边缘与其父控件之间的距离,基于 [member anchor_top]。\n" +"偏移量通常由一个或多个父 [Container] 节点控制,因此如果你的节点是 " +"[Container] 的直接子节点,则不应进行手动修改。移动节点或调整节点大小时,偏移" +"量会自动更新。" + +msgid "" +"By default, the node's pivot is its top-left corner. When you change its " +"[member rotation] or [member scale], it will rotate or scale around this " +"pivot. Set this property to [member size] / 2 to pivot around the Control's " +"center." +msgstr "" +"默认情况下,该节点的轴心位于左上角。更改 [member rotation] 或 [member scale] " +"时,将围绕该轴心进行旋转或缩放。如果将该属性设置为 [member size] / 2,则围绕" +"的是该控件的中心点。" + +msgid "" +"The node's position, relative to its containing node. It corresponds to the " +"rectangle's top-left corner. The property is not affected by [member " +"pivot_offset]." +msgstr "" +"该节点的位置,相对于父节点。对应的是矩形的左上角。该属性不受 [member " +"pivot_offset] 的影响。" + +msgid "" +"The node's rotation around its pivot, in radians. See [member pivot_offset] " +"to change the pivot's position." +msgstr "" +"该节点围绕其轴心的旋转,单位为弧度。更改轴心的位置请参阅 [member " +"pivot_offset]。" + +msgid "" +"Helper property to access [member rotation] in degrees instead of radians." +msgstr "辅助属性,用于按度数访问 [member rotation] 而不是弧度数。" + +msgid "" +"The size of the node's bounding rectangle, in the node's coordinate system. " +"[Container] nodes update this property automatically." +msgstr "" +"该节点的边界矩形的大小,使用该节点的坐标系。[Container] 节点会自动更新此属" +"性。" + +msgid "" "Tells the parent [Container] nodes how they should resize and place the node " "on the X axis. Use one of the [enum SizeFlags] constants to change the " "flags. See the constants to learn what each does." @@ -8129,6 +18547,83 @@ msgstr "" "告诉父 [Container] 节点应如何调整尺寸并将其放置在 X 轴上。使用 [enum " "SizeFlags] 常量之一更改标志。查看常量以了解每个常量的作用。" +msgid "" +"The [Theme] resource this node and all its [Control] and [Window] children " +"use. If a child node has its own [Theme] resource set, theme items are " +"merged with child's definitions having higher priority.\n" +"[b]Note:[/b] [Window] styles will have no effect unless the window is " +"embedded." +msgstr "" +"该节点及其子 [Control] 和 [Window] 所使用的 [Theme] 资源。如果子节点也设置了 " +"[Theme] 资源,则会合并主题项,子节点的定义优先级更高。\n" +"[b]注意:[/b]除非 [Window] 为嵌入式,否则窗口样式无效。" + +msgid "" +"The default tooltip text. The tooltip appears when the user's mouse cursor " +"stays idle over this control for a few moments, provided that the [member " +"mouse_filter] property is not [constant MOUSE_FILTER_IGNORE]. The time " +"required for the tooltip to appear can be changed with the [member " +"ProjectSettings.gui/timers/tooltip_delay_sec] option. See also [method " +"get_tooltip].\n" +"The tooltip popup will use either a default implementation, or a custom one " +"that you can provide by overriding [method _make_custom_tooltip]. The " +"default tooltip includes a [PopupPanel] and [Label] whose theme properties " +"can be customized using [Theme] methods with the [code]\"TooltipPanel\"[/" +"code] and [code]\"TooltipLabel\"[/code] respectively. For example:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var style_box = StyleBoxFlat.new()\n" +"style_box.set_bg_color(Color(1, 1, 0))\n" +"style_box.set_border_width_all(2)\n" +"# We assume here that the `theme` property has been assigned a custom Theme " +"beforehand.\n" +"theme.set_stylebox(\"panel\", \"TooltipPanel\", style_box)\n" +"theme.set_color(\"font_color\", \"TooltipLabel\", Color(0, 1, 1))\n" +"[/gdscript]\n" +"[csharp]\n" +"var styleBox = new StyleBoxFlat();\n" +"styleBox.SetBgColor(new Color(1, 1, 0));\n" +"styleBox.SetBorderWidthAll(2);\n" +"// We assume here that the `Theme` property has been assigned a custom Theme " +"beforehand.\n" +"Theme.SetStyleBox(\"panel\", \"TooltipPanel\", styleBox);\n" +"Theme.SetColor(\"font_color\", \"TooltipLabel\", new Color(0, 1, 1));\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"默认工具提示文本。如果 [member mouse_filter] 属性不是 [constant " +"MOUSE_FILTER_IGNORE],则当用户的鼠标光标在此控件上停留片刻时,将出现工具提" +"示。可以使用 [member ProjectSettings.gui/timers/tooltip_delay_sec] 选项更改工" +"具提示出现所需的时间。另见 [method get_tooltip]。\n" +"工具提示弹出窗口将使用默认实现,或者使用通过覆盖 [method " +"_make_custom_tooltip] 提供的自定义实现。默认工具提示包括一个 [PopupPanel] 和 " +"[Label],其主题属性可以使用 [Theme] 方法分别对 [code]\"TooltipPanel\"[/code] " +"和 [code]\"TooltipLabel\"[/code] 进行自定义。例如:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var style_box = StyleBoxFlat.new()\n" +"style_box.set_bg_color(Color(1, 1, 0))\n" +"style_box.set_border_width_all(2)\n" +"# 我们在这里假设`Theme`属性已经被事先分配了一个自定义的主题。\n" +"theme.set_stylebox(\"panel\", \"TooltipPanel\", style_box)\n" +"theme.set_color(\"font_color\", \"TooltipLabel\", Color(0, 1, 1))\n" +"[/gdscript]\n" +"[csharp]\n" +"var styleBox = new StyleBoxFlat();\n" +"styleBox.SetBgColor(new Color(1, 1, 0));\n" +"styleBox.SetBorderWidthAll(2);\n" +"// 我们在这里假设`Theme`属性已经被事先分配了一个自定义的主题。\n" +"Theme.SetStyleBox(\"panel\", \"TooltipPanel\", styleBox);\n" +"Theme.SetColor(\"font_color\", \"TooltipLabel\", new Color(0, 1, 1));\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "Emitted when the node gains focus." +msgstr "当该节点获得焦点时发出。" + +msgid "Emitted when the node loses focus." +msgstr "当该节点失去焦点时发出。" + msgid "Emitted when the node receives an [InputEvent]." msgstr "当节点收到 [InputEvent] 时发出。" @@ -8188,6 +18683,9 @@ msgid "" "scrolled." msgstr "当此节点在已停止滚动的 [ScrollContainer] 内部时发送。" +msgid "Sent when control layout direction is changed." +msgstr "当控件的布局方向改变时发送。" + msgid "" "Show the system's arrow mouse cursor when the user hovers the node. Use with " "[member mouse_default_cursor_shape]." @@ -8467,6 +18965,29 @@ msgstr "" "[code]anchor_*[/code] 成员变量中使用,例如 [member anchor_left]。要一次更改全" "部 4 个锚点,请使用 [method set_anchors_preset]。" +msgid "Left-to-right layout direction." +msgstr "从左至右的布局方向。" + +msgid "Right-to-left layout direction." +msgstr "从右至左的布局方向。" + +msgid "Text writing direction is the same as layout direction." +msgstr "文字书写方向与布局方向相同。" + +msgid "" +"Automatic text writing direction, determined from the current locale and " +"text content." +msgstr "自动文本书写方向,根据当前区域设置和文本内容确定。" + +msgid "Left-to-right text writing direction." +msgstr "从左至右的文本书写方向。" + +msgid "Right-to-left text writing direction." +msgstr "从右至左的文本书写方向。" + +msgid "Convex polygon shape resource for 2D physics." +msgstr "凸多边形形状资源,用于 2D 物理。" + msgid "" "The polygon's list of vertices. Can be in either clockwise or " "counterclockwise order. Only set this property with convex hull points, use " @@ -8488,24 +19009,63 @@ msgstr "粒子系统(2D)" msgid "Returns the [Curve] of the parameter specified by [enum Parameter]." msgstr "返回由 [enum Parameter] 指定的参数的 [Curve]。" +msgid "Returns the maximum value range for the given parameter." +msgstr "返回给定参数的最大值范围。" + +msgid "Returns the minimum value range for the given parameter." +msgstr "返回给定参数的最小值范围。" + msgid "Restarts the particle emitter." msgstr "重新启动粒子发射器。" msgid "Sets the [Curve] of the parameter specified by [enum Parameter]." msgstr "设置 [enum Parameter] 指定的参数的 [Curve]。" +msgid "Sets the maximum value for the given parameter." +msgstr "设置给定参数的最大值。" + +msgid "Sets the minimum value for the given parameter." +msgstr "设置给定参数的最小值。" + +msgid "" +"Enables or disables the given flag (see [enum ParticleFlags] for options)." +msgstr "启用或禁用给定的标志(选项见 [enum ParticleFlags])。" + +msgid "Number of particles emitted in one emission cycle." +msgstr "一个发射周期中发射的粒子数。" + msgid "Each particle's rotation will be animated along this [Curve]." msgstr "每个粒子的旋转将沿此 [Curve] 进行动画处理。" +msgid "Maximum initial rotation applied to each particle, in degrees." +msgstr "应用于每个粒子的最大初始旋转(单位为度)。" + +msgid "Minimum equivalent of [member angle_max]." +msgstr "[member angle_max] 的对应最小值。" + msgid "Each particle's angular velocity will vary along this [Curve]." msgstr "每个粒子的角速度将沿此 [Curve] 变化。" +msgid "" +"Maximum initial angular velocity (rotation speed) applied to each particle " +"in [i]degrees[/i] per second." +msgstr "应用于每个粒子的最大初始角速度(旋转速度),单位为[i]度[/i]每秒。" + +msgid "Minimum equivalent of [member angular_velocity_max]." +msgstr "[member angular_velocity_max] 的对应最小值。" + msgid "Each particle's animation offset will vary along this [Curve]." msgstr "每个粒子的动画偏移将沿此 [Curve] 变化。" +msgid "Minimum equivalent of [member anim_offset_max]." +msgstr "[member anim_offset_max] 的对应最小值。" + msgid "Each particle's animation speed will vary along this [Curve]." msgstr "每个粒子的动画速度将沿此 [Curve] 变化。" +msgid "Minimum equivalent of [member anim_speed_max]." +msgstr "[member anim_speed_max] 的对应最小值。" + msgid "" "Each particle's initial color. If [member texture] is defined, it will be " "multiplied by this color." @@ -8519,6 +19079,9 @@ msgstr "每个粒子的颜色将随着这个 [Gradient] 变化(与 [member col msgid "Damping will vary along this [Curve]." msgstr "阻尼将沿着这条 [Gradient] 变化。" +msgid "Minimum equivalent of [member damping_max]." +msgstr "[member damping_max] 的对应最小值。" + msgid "Unit vector specifying the particles' emission direction." msgstr "指定粒子发射方向的单位向量。" @@ -8587,12 +19150,24 @@ msgstr "重力作用于每个粒子。" msgid "Each particle's hue will vary along this [Curve]." msgstr "每个粒子的色相都将随之变化。" +msgid "Minimum equivalent of [member hue_variation_max]." +msgstr "[member hue_variation_max] 对应的最小值。" + +msgid "Minimum equivalent of [member initial_velocity_max]." +msgstr "[member initial_velocity_max] 的对应最小值。" + +msgid "Amount of time each particle will exist." +msgstr "每个粒子存在的时间。" + msgid "Particle lifetime randomness ratio." msgstr "粒子寿命随机率。" msgid "Each particle's linear acceleration will vary along this [Curve]." msgstr "每个粒子的线性加速度将沿此 [Curve] 变化。" +msgid "Minimum equivalent of [member linear_accel_max]." +msgstr "[member linear_accel_max] 的对应最小值。" + msgid "" "If [code]true[/code], only one emission cycle occurs. If set [code]true[/" "code] during a cycle, emission will stop at the cycle's end." @@ -8603,6 +19178,9 @@ msgstr "" msgid "Each particle's orbital velocity will vary along this [Curve]." msgstr "每个粒子的轨道速度将跟随这个 [Curve] 变化。" +msgid "Minimum equivalent of [member orbit_velocity_max]." +msgstr "[member orbit_velocity_max] 的对应最小值。" + msgid "Align Y axis of particle with the direction of its velocity." msgstr "将粒子的 Y 轴与其速度方向对齐。" @@ -8612,16 +19190,39 @@ msgstr "粒子系统启动时就好像已经运行了这么多秒一样。" msgid "Each particle's radial acceleration will vary along this [Curve]." msgstr "每个粒子的径向加速度将跟随这个 [Curve] 变化。" +msgid "Minimum equivalent of [member radial_accel_max]." +msgstr "[member radial_accel_max] 的对应最小值。" + msgid "Emission lifetime randomness ratio." msgstr "发射寿命随机率。" msgid "Each particle's scale will vary along this [Curve]." msgstr "每个粒子的缩放将跟随这个 [Curve] 变化。" +msgid "Maximum initial scale applied to each particle." +msgstr "应用于每个粒子的最大初始缩放。" + +msgid "Minimum equivalent of [member scale_amount_max]." +msgstr "[member scale_amount_max] 的对应最小值。" + +msgid "" +"Each particle's horizontal scale will vary along this [Curve].\n" +"[member split_scale] must be enabled." +msgstr "" +"每个粒子的水平比例都会沿着这条 [Curve] 变化。\n" +"必须启用 [member split_scale]。" + +msgid "" +"Each particle's vertical scale will vary along this [Curve].\n" +"[member split_scale] must be enabled." +msgstr "" +"每个粒子的垂直比例都会沿着这条 [Curve] 变化。\n" +"必须启用 [member split_scale]。" + msgid "" "Particle system's running speed scaling ratio. A value of [code]0[/code] can " "be used to pause the particles." -msgstr "粒子系统的运行速度缩放比例。将值设为 [code]0[/code] 可用于暂停粒子。" +msgstr "粒子系统的运行速度缩放比例。[code]0[/code]值可用于暂停粒子。" msgid "" "Each particle's initial direction range from [code]+spread[/code] to [code]-" @@ -8632,6 +19233,9 @@ msgstr "" msgid "Each particle's tangential acceleration will vary along this [Curve]." msgstr "每个粒子的切向加速度将跟随这个 [Curve] 变化。" +msgid "Minimum equivalent of [member tangential_accel_max]." +msgstr "[member tangential_accel_max] 的对应最小值。" + msgid "Particle texture. If [code]null[/code], particles will be squares." msgstr "粒子纹理。如果为 [code]null[/code],则粒子将为正方形。" @@ -8641,12 +19245,104 @@ msgstr "粒子按发射顺序绘制。" msgid "Particles are drawn in order of remaining lifetime." msgstr "按照剩余寿命的顺序绘制粒子。" +msgid "" +"Use with [method set_param_min], [method set_param_max], and [method " +"set_param_curve] to set initial velocity properties." +msgstr "" +"与 [method set_param_min]、[method set_param_max]、[method set_param_curve] " +"一起使用,设置初始速度属性。" + +msgid "" +"Use with [method set_param_min], [method set_param_max], and [method " +"set_param_curve] to set angular velocity properties." +msgstr "" +"与 [method set_param_min]、[method set_param_max]、[method set_param_curve] " +"一起使用,设置角速度属性。" + +msgid "" +"Use with [method set_param_min], [method set_param_max], and [method " +"set_param_curve] to set orbital velocity properties." +msgstr "" +"与 [method set_param_min]、[method set_param_max]、[method set_param_curve] " +"一起使用,设置轨道速度属性。" + +msgid "" +"Use with [method set_param_min], [method set_param_max], and [method " +"set_param_curve] to set linear acceleration properties." +msgstr "" +"与 [method set_param_min]、[method set_param_max]、[method set_param_curve] " +"一起使用,设置线性加速度属性。" + +msgid "" +"Use with [method set_param_min], [method set_param_max], and [method " +"set_param_curve] to set radial acceleration properties." +msgstr "" +"与 [method set_param_min]、[method set_param_max]、[method set_param_curve] " +"一起使用,设置径向加速度属性。" + +msgid "" +"Use with [method set_param_min], [method set_param_max], and [method " +"set_param_curve] to set tangential acceleration properties." +msgstr "" +"与 [method set_param_min]、[method set_param_max]、[method set_param_curve] " +"一起使用,设置切向加速度属性。" + +msgid "" +"Use with [method set_param_min], [method set_param_max], and [method " +"set_param_curve] to set damping properties." +msgstr "" +"与 [method set_param_min]、[method set_param_max]、[method set_param_curve] " +"一起使用,设置阻尼属性。" + +msgid "" +"Use with [method set_param_min], [method set_param_max], and [method " +"set_param_curve] to set angle properties." +msgstr "" +"与 [method set_param_min]、[method set_param_max]、[method set_param_curve] " +"一起使用,设置角度属性。" + +msgid "" +"Use with [method set_param_min], [method set_param_max], and [method " +"set_param_curve] to set scale properties." +msgstr "" +"与 [method set_param_min]、[method set_param_max]、[method set_param_curve] " +"一起使用,设置缩放属性。" + +msgid "" +"Use with [method set_param_min], [method set_param_max], and [method " +"set_param_curve] to set hue variation properties." +msgstr "" +"与 [method set_param_min]、[method set_param_max]、[method set_param_curve] " +"一起使用,设置色相变化属性。" + +msgid "" +"Use with [method set_param_min], [method set_param_max], and [method " +"set_param_curve] to set animation speed properties." +msgstr "" +"与 [method set_param_min]、[method set_param_max]、[method set_param_curve] " +"一起使用,设置动画速度属性。" + +msgid "" +"Use with [method set_param_min], [method set_param_max], and [method " +"set_param_curve] to set animation offset properties." +msgstr "" +"与 [method set_param_min]、[method set_param_max]、[method set_param_curve] " +"一起使用,设置动画偏移属性。" + msgid "Represents the size of the [enum Parameter] enum." -msgstr "表示 [enum Parameter] 枚举的大小。" +msgstr "代表 [enum Parameter] 枚举的大小。" + +msgid "" +"Use with [method set_particle_flag] to set [member particle_flag_align_y]." +msgstr "" +"与 [method set_particle_flag] 一起使用,设置 [member particle_flag_align_y]。" msgid "Present for consistency with 3D particle nodes, not used in 2D." msgstr "为了与 3D 粒子节点保持一致而存在,在 2D 中不使用。" +msgid "Represents the size of the [enum ParticleFlags] enum." +msgstr "代表 [enum ParticleFlags] 枚举的大小。" + msgid "All particles will be emitted from a single point." msgstr "所有粒子将从一个点发射。" @@ -8677,11 +19373,32 @@ msgstr "" "emission_colors] 进行调制。" msgid "Represents the size of the [enum EmissionShape] enum." -msgstr "表示 [enum EmissionShape] 枚举的大小。" +msgstr "代表 [enum EmissionShape] 枚举的大小。" msgid "CPU-based 3D particle emitter." msgstr "基于 CPU 的 3D 粒子发射器。" +msgid "Maximum angle." +msgstr "最大角度。" + +msgid "Minimum angle." +msgstr "最小角度。" + +msgid "Maximum animation offset." +msgstr "最大动画偏移。" + +msgid "Minimum animation offset." +msgstr "最小动画偏移。" + +msgid "Maximum particle animation speed." +msgstr "最大粒子动画速度。" + +msgid "Minimum particle animation speed." +msgstr "最小粒子动画速度。" + +msgid "Maximum damping." +msgstr "最大阻尼。" + msgid "" "The rectangle's extents if [member emission_shape] is set to [constant " "EMISSION_SHAPE_BOX]." @@ -8720,11 +19437,56 @@ msgstr "" "Y/Z 平面中的 [member spread] 数量。值 [code]1[/code] 将粒子限制在 X/Z 平面" "上。" +msgid "Maximum hue variation." +msgstr "最大色相变化。" + +msgid "Minimum hue variation." +msgstr "最小色相变化。" + +msgid "Maximum value of the initial velocity." +msgstr "初始速度的最大值。" + +msgid "Minimum value of the initial velocity." +msgstr "初始速度的最小值。" + +msgid "Maximum linear acceleration." +msgstr "最大线性加速度。" + +msgid "Minimum linear acceleration." +msgstr "最小线性加速度。" + msgid "" "The [Mesh] used for each particle. If [code]null[/code], particles will be " "spheres." msgstr "每个粒子使用的 [Mesh]。如果为 [code]null[/code],则粒子将为球形。" +msgid "Maximum orbit velocity." +msgstr "最大轨道速度。" + +msgid "Minimum orbit velocity." +msgstr "最小轨道速度。" + +msgid "Maximum radial acceleration." +msgstr "最大径向加速度。" + +msgid "Minimum radial acceleration." +msgstr "最小径向加速度。" + +msgid "Maximum scale." +msgstr "最大缩放。" + +msgid "Minimum scale." +msgstr "最小缩放。" + +msgid "Curve for the scale over life, along the x axis." +msgstr "生命周期内,沿 X 轴的缩放曲线。" + +msgid "Curve for the scale over life, along the y axis." +msgstr "生命周期内,沿 Y 轴的缩放曲线。" + +msgid "Curve for the scale over life, along the z axis." +msgstr "生命周期内,沿 Z 轴的缩放曲线。" + 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." @@ -8732,12 +19494,33 @@ msgstr "" "每个粒子的初始方向范围为 [code]+spread[/code] 至 [code]-spread[/code] 度。适" "用于 X/Z 平面和 Y/Z 平面。" +msgid "Maximum tangent acceleration." +msgstr "最大切向加速度。" + +msgid "Minimum tangent acceleration." +msgstr "最小切向加速度。" + msgid "Particles are drawn in order of depth." msgstr "粒子按深度顺序绘制。" +msgid "" +"Use with [method set_particle_flag] to set [member particle_flag_rotate_y]." +msgstr "" +"与 [method set_particle_flag] 一起使用,设置 [member " +"particle_flag_rotate_y]。" + +msgid "" +"Use with [method set_particle_flag] to set [member particle_flag_disable_z]." +msgstr "" +"与 [method set_particle_flag] 一起使用,设置[member " +"particle_flag_disable_z]。" + msgid "Particles will be emitted in the volume of a sphere." msgstr "粒子将在球体的体积中发射。" +msgid "Particles will be emitted on the surface of a sphere." +msgstr "粒子将在球体表面发射。" + msgid "Particles will be emitted in the volume of a box." msgstr "粒子将在盒子的体积中发射。" @@ -8747,9 +19530,232 @@ msgstr "粒子将以环形或圆柱的形式发射出来。" msgid "Access to advanced cryptographic functionalities." msgstr "访问高级加密功能。" +msgid "" +"The Crypto class allows you to access some more advanced cryptographic " +"functionalities in Godot.\n" +"For now, this includes generating cryptographically secure random bytes, RSA " +"keys and self-signed X509 certificates generation, asymmetric key encryption/" +"decryption, and signing/verification.\n" +"[codeblocks]\n" +"[gdscript]\n" +"extends Node\n" +"\n" +"var crypto = Crypto.new()\n" +"var key = CryptoKey.new()\n" +"var cert = X509Certificate.new()\n" +"\n" +"func _ready():\n" +" # Generate new RSA key.\n" +" key = crypto.generate_rsa(4096)\n" +" # Generate new self-signed certificate with the given key.\n" +" cert = crypto.generate_self_signed_certificate(key, \"CN=mydomain.com," +"O=My Game Company,C=IT\")\n" +" # Save key and certificate in the user folder.\n" +" key.save(\"user://generated.key\")\n" +" cert.save(\"user://generated.crt\")\n" +" # Encryption\n" +" var data = \"Some data\"\n" +" var encrypted = crypto.encrypt(key, data.to_utf8())\n" +" # Decryption\n" +" var decrypted = crypto.decrypt(key, encrypted)\n" +" # Signing\n" +" var signature = crypto.sign(HashingContext.HASH_SHA256, data." +"sha256_buffer(), key)\n" +" # Verifying\n" +" var verified = crypto.verify(HashingContext.HASH_SHA256, data." +"sha256_buffer(), signature, key)\n" +" # Checks\n" +" assert(verified)\n" +" assert(data.to_utf8() == decrypted)\n" +"[/gdscript]\n" +"[csharp]\n" +"using Godot;\n" +"using System.Diagnostics;\n" +"\n" +"public partial class MyNode : Node\n" +"{\n" +" private Crypto _crypto = new Crypto();\n" +" private CryptoKey _key = new CryptoKey();\n" +" private X509Certificate _cert = new X509Certificate();\n" +"\n" +" public override void _Ready()\n" +" {\n" +" // Generate new RSA key.\n" +" _key = _crypto.GenerateRsa(4096);\n" +" // Generate new self-signed certificate with the given key.\n" +" _cert = _crypto.GenerateSelfSignedCertificate(_key, \"CN=mydomain." +"com,O=My Game Company,C=IT\");\n" +" // Save key and certificate in the user folder.\n" +" _key.Save(\"user://generated.key\");\n" +" _cert.Save(\"user://generated.crt\");\n" +" // Encryption\n" +" string data = \"Some data\";\n" +" byte[] encrypted = _crypto.Encrypt(_key, data.ToUtf8());\n" +" // Decryption\n" +" byte[] decrypted = _crypto.Decrypt(_key, encrypted);\n" +" // Signing\n" +" byte[] signature = _crypto.Sign(HashingContext.HashType.Sha256, Data." +"Sha256Buffer(), _key);\n" +" // Verifying\n" +" bool verified = _crypto.Verify(HashingContext.HashType.Sha256, Data." +"Sha256Buffer(), signature, _key);\n" +" // Checks\n" +" Debug.Assert(verified);\n" +" Debug.Assert(data.ToUtf8() == decrypted);\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"Crypto 类允许您访问 Godot 中一些更高级的加密功能。\n" +"目前,这包括生成加密安全随机字节、RSA 密钥和自签名 X509 证书生成、非对称密钥" +"加密/解密、以及签名/验证。\n" +"[codeblocks]\n" +"[gdscript]\n" +"extends Node\n" +"\n" +"var crypto = Crypto.new()\n" +"var key = CryptoKey.new()\n" +"var cert = X509Certificate.new()\n" +"\n" +"func _ready():\n" +" # 生成新的 RSA 密钥。\n" +" key = crypto.generate_rsa(4096)\n" +" # 使用给定的密钥生成新的自签名证书。\n" +" cert = crypto.generate_self_signed_certificate(key, \"CN=mydomain.com," +"O=My Game Company,C=IT\")\n" +" # 将密钥和证书保存在用户文件夹中。\n" +" key.save(\"user://generated.key\")\n" +" cert.save(\"user://generated.crt\")\n" +" # 加密\n" +" var data = \"Some data\"\n" +" var encrypted = crypto.encrypt(key, data.to_utf8())\n" +" # 解密\n" +" var decrypted = crypto.decrypt(key, encrypted)\n" +" # 签名\n" +" var signature = crypto.sign(HashingContext.HASH_SHA256, data." +"sha256_buffer(), key)\n" +" # 验证\n" +" var verified = crypto.verify(HashingContext.HASH_SHA256, data." +"sha256_buffer(), signature, key)\n" +" # 校验\n" +" assert(verified)\n" +" assert(data.to_utf8() == decrypted)\n" +"[/gdscript]\n" +"[csharp]\n" +"using Godot;\n" +"using System.Diagnostics;\n" +"\n" +"public partial class MyNode : Node\n" +"{\n" +" private Crypto _crypto = new Crypto();\n" +" private CryptoKey _key = new CryptoKey();\n" +" private X509Certificate _cert = new X509Certificate();\n" +"\n" +" public override void _Ready()\n" +" {\n" +" // 生成新的 RSA 密钥。\n" +" _key = _crypto.GenerateRsa(4096);\n" +" // 使用给定的密钥生成新的自签名证书。\n" +" _cert = _crypto.GenerateSelfSignedCertificate(_key, \"CN=mydomain." +"com,O=My Game Company,C=IT\");\n" +" // 将密钥和证书保存在用户文件夹中。\n" +" _key.Save(\"user://generated.key\");\n" +" _cert.Save(\"user://generated.crt\");\n" +" // 加密\n" +" string data = \"Some data\";\n" +" byte[] encrypted = _crypto.Encrypt(_key, data.ToUtf8());\n" +" // 解密\n" +" byte[] decrypted = _crypto.Decrypt(_key, encrypted);\n" +" // 签名\n" +" byte[] signature = _crypto.Sign(HashingContext.HashType.Sha256, Data." +"Sha256Buffer(), _key);\n" +" // 验证\n" +" bool verified = _crypto.Verify(HashingContext.HashType.Sha256, Data." +"Sha256Buffer(), signature, _key);\n" +" // 校验\n" +" Debug.Assert(verified);\n" +" Debug.Assert(data.ToUtf8() == decrypted);\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Generates a self-signed [X509Certificate] from the given [CryptoKey] and " +"[param issuer_name]. The certificate validity will be defined by [param " +"not_before] and [param not_after] (first valid date and last valid date). " +"The [param issuer_name] must contain at least \"CN=\" (common name, i.e. the " +"domain name), \"O=\" (organization, i.e. your company name), " +"\"C=\" (country, i.e. 2 lettered ISO-3166 code of the country the " +"organization is based in).\n" +"A small example to generate an RSA key and a X509 self-signed certificate.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var crypto = Crypto.new()\n" +"# Generate 4096 bits RSA key.\n" +"var key = crypto.generate_rsa(4096)\n" +"# Generate self-signed certificate using the given key.\n" +"var cert = crypto.generate_self_signed_certificate(key, \"CN=example.com,O=A " +"Game Company,C=IT\")\n" +"[/gdscript]\n" +"[csharp]\n" +"var crypto = new Crypto();\n" +"// Generate 4096 bits RSA key.\n" +"CryptoKey key = crypto.GenerateRsa(4096);\n" +"// Generate self-signed certificate using the given key.\n" +"X509Certificate cert = crypto.GenerateSelfSignedCertificate(key, " +"\"CN=mydomain.com,O=My Game Company,C=IT\");\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"根据给定的 [CryptoKey] 和 [param issuer_name] 生成自签名的 " +"[X509Certificate]。证书有效性将由 [param not_before] 和 [param not_after](第" +"一个有效日期和最后一个有效日期)定义。[param issuer_name] 必须至少包" +"含“CN=”(通用名称,即域名)、“O=”(组织,即您的公司名称)、“C=”(国家,即 2 " +"个字母的该组织所在的国家/地区的 ISO-3166 代码)。\n" +"生成 RSA 密钥和 X509 自签名证书的小示例。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var crypto = Crypto.new()\n" +"# 生成 4096 比特 RSA 密钥。\n" +"var key = crypto.generate_rsa(4096)\n" +"# 使用给定的密钥生成自签名证书。\n" +"var cert = crypto.generate_self_signed_certificate(key, \"CN=example.com,O=A " +"Game Company,C=IT\")\n" +"[/gdscript]\n" +"[csharp]\n" +"var crypto = new Crypto();\n" +"// 生成 4096 比特 RSA 密钥。\n" +"CryptoKey key = crypto.GenerateRsa(4096);\n" +"// 使用给定的密钥生成自签名证书。\n" +"X509Certificate cert = crypto.GenerateSelfSignedCertificate(key, " +"\"CN=mydomain.com,O=My Game Company,C=IT\");\n" +"[/csharp]\n" +"[/codeblocks]" + msgid "A cryptographic key (RSA)." msgstr "加密密钥(RSA)。" +msgid "" +"The CryptoKey class represents a cryptographic key. Keys can be loaded and " +"saved like any other [Resource].\n" +"They can be used to generate a self-signed [X509Certificate] via [method " +"Crypto.generate_self_signed_certificate] and as private key in [method " +"StreamPeerTLS.accept_stream] along with the appropriate certificate." +msgstr "" +"CryptoKey 类表示加密密钥。密钥可以像其他任何 [Resource] 一样进行加载和保" +"存。\n" +"密钥可以通过 [method Crypto.generate_self_signed_certificate] 生成自签名的 " +"[X509Certificate],并可作为 [method StreamPeerTLS.accept_stream] 中相应的证书" +"的私钥。" + +msgid "" +"Returns [code]true[/code] if this CryptoKey only has the public part, and " +"not the private one." +msgstr "" +"如果该 CryptoKey 仅具有公钥部分,没有私钥部分,则返回 [code]true[/code]。" + msgid "A CSG Box shape." msgstr "CSG 盒子形状。" @@ -9058,6 +20064,9 @@ msgstr "" "Godot 版本中可用。\n" "另请参阅 [GodotSharp]。" +msgid "C# documentation index" +msgstr "C# 文档索引" + msgid "Returns a new instance of the script." msgstr "返回该脚本的新实例。" @@ -9150,6 +20159,20 @@ msgstr "" "错误信息。" msgid "" +"Returns a list of points along the curve, with almost uniform density. " +"[param max_stages] controls how many subdivisions a curve segment may face " +"before it is considered approximate enough. Each subdivision splits the " +"segment in half, so the default 5 stages may mean up to 32 subdivisions per " +"curve segment. Increase with care!\n" +"[param tolerance_length] controls the maximal distance between two " +"neighboring points, before the segment has to be subdivided." +msgstr "" +"返回沿曲线的点列表,具有几乎均匀的密度。[param max_stages] 控制曲线段在被认为" +"足够近似之前可能面临多少次细分。每次细分将段分成两半,因此默认的 5 个阶段可能" +"意味着每个曲线段最多 32 个细分。请谨慎增加!\n" +"[param tolerance_length] 控制在必须细分线段之前两个相邻点之间的最大距离。" + +msgid "" "The distance in pixels between two adjacent cached points. Changing it " "forces the cache to be recomputed the next time the [method " "get_baked_points] or [method get_baked_length] function is called. The " @@ -9163,6 +20186,9 @@ msgstr "" msgid "Describes a Bézier curve in 3D space." msgstr "描述 3D 空间的贝兹尔曲线。" +msgid "Returns the cache of points as a [PackedVector3Array]." +msgstr "返回缓存的点,类型为 [PackedVector3Array]。" + msgid "" "The distance in meters between two adjacent cached points. Changing it " "forces the cache to be recomputed the next time the [method " @@ -9188,6 +20214,15 @@ msgstr "" "纹理宽度(单位为像素)。较大的值能够更好地表示高频数据(例如方向的突变),但" "会增加生成时间和内存占用。" +msgid "The [Curve] that is rendered onto the texture's red channel." +msgstr "渲染到该纹理红色通道上的 [Curve]。" + +msgid "The [Curve] that is rendered onto the texture's green channel." +msgstr "渲染到该纹理绿色通道上的 [Curve]。" + +msgid "The [Curve] that is rendered onto the texture's blue channel." +msgstr "渲染到该纹理蓝色通道上的 [Curve]。" + msgid "Class representing a cylindrical [PrimitiveMesh]." msgstr "表示圆柱形 [PrimitiveMesh] 的类。" @@ -9200,7 +20235,7 @@ msgstr "" "bottom_radius] 属性设置为 [code]0.0[/code],这个类可以用来创建圆锥体。" msgid "Full height of the cylinder." -msgstr "缸体的全高。" +msgstr "圆柱体的全高。" msgid "" "Number of radial segments on the cylinder. Higher values result in a more " @@ -9222,6 +20257,9 @@ msgstr "" "产生更多的细分,这可用于使用着色器或程序式网格工具创建更平滑的显示效果,但以" "性能为代价。" +msgid "Cylinder shape for 3D collisions." +msgstr "圆柱体形状,用于 3D 碰撞。" + msgid "The cylinder's height." msgstr "圆柱体的高度。" @@ -9266,21 +20304,826 @@ msgstr "" "该值越大,连接在关节上的机构变形越小。关节对各机构施加一个相反的力,即刚度乘" "以与其静止长度的大小差的乘积。" +msgid "Node that projects a texture onto a [MeshInstance3D]." +msgstr "将纹理投影到 [MeshInstance3D] 上的节点。" + +msgid "" +"Returns the [Texture2D] associated with the specified [enum DecalTexture]. " +"This is a convenience method, in most cases you should access the texture " +"directly.\n" +"For example, instead of [code]albedo_tex = $Decal.get_texture(Decal." +"TEXTURE_ALBEDO)[/code], use [code]albedo_tex = $Decal.texture_albedo[/" +"code].\n" +"One case where this is better than accessing the texture directly is when " +"you want to copy one Decal's textures to another. For example:\n" +"[codeblocks]\n" +"[gdscript]\n" +"for i in Decal.TEXTURE_MAX:\n" +" $NewDecal.set_texture(i, $OldDecal.get_texture(i))\n" +"[/gdscript]\n" +"[csharp]\n" +"for (int i = 0; i < (int)Decal.DecalTexture.Max; i++)\n" +"{\n" +" GetNode<Decal>(\"NewDecal\").SetTexture(i, GetNode<Decal>(\"OldDecal\")." +"GetTexture(i));\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回与指定的 [enum DecalTexture] 关联的 [Texture2D]。这是一个便捷方法,在大多" +"数情况下,你应该直接访问纹理。\n" +"例如,相比于 [code]albedo_tex = $Decal.get_texture(Decal.TEXTURE_ALBEDO)[/" +"code],请使用 [code]albedo_tex = $Decal.texture_albedo[/code]。\n" +"有一种情况下这种写法比直接访问纹理更好,那就是当想要将贴花的纹理复制到另一个" +"贴花是。例如:\n" +"[codeblocks]\n" +"[gdscript]\n" +"for i in Decal.TEXTURE_MAX:\n" +" $NewDecal.set_texture(i, $OldDecal.get_texture(i))\n" +"[/gdscript]\n" +"[csharp]\n" +"for (int i = 0; i < (int)Decal.DecalTexture.Max; i++)\n" +"{\n" +" GetNode<Decal>(\"NewDecal\").SetTexture(i, GetNode<Decal>(\"OldDecal\")." +"GetTexture(i));\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Sets the [Texture2D] associated with the specified [enum DecalTexture]. This " +"is a convenience method, in most cases you should access the texture " +"directly.\n" +"For example, instead of [code]$Decal.set_texture(Decal.TEXTURE_ALBEDO, " +"albedo_tex)[/code], use [code]$Decal.texture_albedo = albedo_tex[/code].\n" +"One case where this is better than accessing the texture directly is when " +"you want to copy one Decal's textures to another. For example:\n" +"[codeblocks]\n" +"[gdscript]\n" +"for i in Decal.TEXTURE_MAX:\n" +" $NewDecal.set_texture(i, $OldDecal.get_texture(i))\n" +"[/gdscript]\n" +"[csharp]\n" +"for (int i = 0; i < (int)Decal.DecalTexture.Max; i++)\n" +"{\n" +" GetNode<Decal>(\"NewDecal\").SetTexture(i, GetNode<Decal>(\"OldDecal\")." +"GetTexture(i));\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"设置与指定的 [enum DecalTexture] 关联的 [Texture2D]。这是一个便捷方法,在大多" +"数情况下,你应该直接访问纹理。\n" +"例如,相比于 [code]albedo_tex = $Decal.set_texture(Decal.TEXTURE_ALBEDO, " +"albedo_tex)[/code],请使用 [code]$Decal.texture_albedo = albedo_tex[/" +"code]。\n" +"有一种情况下这种写法比直接访问纹理更好,那就是当想要将贴花的纹理复制到另一个" +"贴花是。例如:\n" +"[codeblocks]\n" +"[gdscript]\n" +"for i in Decal.TEXTURE_MAX:\n" +" $NewDecal.set_texture(i, $OldDecal.get_texture(i))\n" +"[/gdscript]\n" +"[csharp]\n" +"for (int i = 0; i < (int)Decal.DecalTexture.Max; i++)\n" +"{\n" +" GetNode<Decal>(\"NewDecal\").SetTexture(i, GetNode<Decal>(\"OldDecal\")." +"GetTexture(i));\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Blends the albedo [Color] of the decal with albedo [Color] of the underlying " +"mesh. This can be set to [code]0.0[/code] to create a decal that only " +"affects normal or ORM. In this case, an albedo texture is still required as " +"its alpha channel will determine where the normal and ORM will be " +"overridden. See also [member modulate]." +msgstr "" +"将该贴花的反照率 [Color] 与底层网格的反照率 [Color] 混合。可以将其设置为 " +"[code]0.0[/code],从而创建仅影响法线或 ORM 的贴花。这种情况下仍然需要反照率纹" +"理,因为它的 Alpha 通道将决定覆盖法线和 ORM 的位置。另见 [member modulate]。" + +msgid "" +"Specifies which [member VisualInstance3D.layers] this decal will project on. " +"By default, Decals affect all layers. This is used so you can specify which " +"types of objects receive the Decal and which do not. This is especially " +"useful so you can ensure that dynamic objects don't accidentally receive a " +"Decal intended for the terrain under them." +msgstr "" +"指定此贴花将投射到哪些 [member VisualInstance3D.layers] 上。默认情况下,贴花" +"会影响所有图层。可用于指定哪些类型的对象接收该贴花、哪些不接收。这一点特别有" +"用,你可以确保动态对象不会意外收到用于其下方地形的贴花。" + +msgid "" +"The distance from the camera at which the Decal begins to fade away (in 3D " +"units)." +msgstr "与相机的距离,贴花从该处开始淡出(以 3D 单位表示)。" + +msgid "" +"If [code]true[/code], decals will smoothly fade away when far from the " +"active [Camera3D] starting at [member distance_fade_begin]. The Decal will " +"fade out over [member distance_fade_begin] + [member distance_fade_length], " +"after which it will be culled and not sent to the shader at all. Use this to " +"reduce the number of active Decals in a scene and thus improve performance." +msgstr "" +"如果为 [code]true[/code],贴花会在远离活动的 [Camera3D] 时平滑地淡出,从 " +"[member distance_fade_begin] 开始。该贴花将在 [member distance_fade_begin] + " +"[member distance_fade_length] 处消失,之后就会被剔除,根本不会发送到着色器。" +"请使用这个选项来减少场景中激活贴花的数量,从而提高性能。" + +msgid "" +"The distance over which the Decal fades (in 3D units). The Decal becomes " +"slowly more transparent over this distance and is completely invisible at " +"the end. Higher values result in a smoother fade-out transition, which is " +"more suited when the camera moves fast." +msgstr "" +"该贴花淡出的距离(以 3D 单位表示)。这段距离内,该贴花会慢慢变得透明,直至完" +"全不可见。值越大,淡出过渡更平滑,更适合于相机快速移动的情况。" + +msgid "" +"Energy multiplier for the emission texture. This will make the decal emit " +"light at a higher or lower intensity, independently of the albedo color. See " +"also [member modulate]." +msgstr "" +"自发光纹理的能量倍数。会使贴花以更高或更低的强度发光,与反照率颜色无关。另见 " +"[member modulate]。" + +msgid "" +"Sets the curve over which the decal will fade as the surface gets further " +"from the center of the [AABB]. Only positive values are valid (negative " +"values will be clamped to [code]0.0[/code]). See also [member upper_fade]." +msgstr "" +"设置该贴花的淡出曲线,表示随着表面远离 [AABB] 中心而逐渐淡出。仅正值有效(负" +"值将被限制到 [code]0.0[/code])。另见 [member upper_fade]。" + +msgid "" +"Changes the [Color] of the Decal by multiplying the albedo and emission " +"colors with this value. The alpha component is only taken into account when " +"multiplying the albedo color, not the emission color. See also [member " +"emission_energy] and [member albedo_mix] to change the emission and albedo " +"intensity independently of each other." +msgstr "" +"更改贴花的 [Color],将其反照率和自发光颜色乘以这个值。仅在与反照率颜色相乘时" +"才会考虑 Alpha 分量,与自发光颜色相乘时则不会。如果要独立更改自发光和反照率强" +"度,请参阅 [member emit_energy] 和 [member albedo_mix]。" + +msgid "" +"Fades the Decal if the angle between the Decal's [AABB] and the target " +"surface becomes too large. A value of [code]0[/code] projects the Decal " +"regardless of angle, a value of [code]1[/code] limits the Decal to surfaces " +"that are nearly perpendicular.\n" +"[b]Note:[/b] Setting [member normal_fade] to a value greater than [code]0.0[/" +"code] has a small performance cost due to the added normal angle " +"computations." +msgstr "" +"如果贴花的 [AABB] 与目标表面之间的角度变得过大,则淡出贴花。值为 [code]0[/" +"code] 时在投影贴花会忽略角度,值为 [code]1[/code] 时会将贴花限制到几乎垂直的" +"表面。\n" +"[b]注意:[/b]将 [member normal_fade] 设置为大于 [code]0.0[/code] 的值会有较小" +"的性能成本,因为增加了法线角度计算。" + +msgid "" +"[Texture2D] with the base [Color] of the Decal. Either this or the [member " +"texture_emission] must be set for the Decal to be visible. Use the alpha " +"channel like a mask to smoothly blend the edges of the decal with the " +"underlying object.\n" +"[b]Note:[/b] Unlike [BaseMaterial3D] whose filter mode can be adjusted on a " +"per-material basis, the filter mode for [Decal] textures is set globally " +"with [member ProjectSettings.rendering/textures/decals/filter]." +msgstr "" +"带有贴花的基础 [Color] 的 [Texture2D]。必须设置这个属性或者 [member " +"texture_emission] 贴花才可见。要将贴花的边缘与底层对象平滑地混合,请像遮罩一" +"样使用 Alpha 通道。\n" +"[b]注意:[/b][BaseMaterial3D] 的过滤模式可以对每个材质进行调整,而 [Decal] 纹" +"理的过滤模式是通过 [member ProjectSettings.rendering/textures/decals/filter] " +"全局设置的。" + +msgid "" +"[Texture2D] with the per-pixel normal map for the decal. Use this to add " +"extra detail to decals.\n" +"[b]Note:[/b] Unlike [BaseMaterial3D] whose filter mode can be adjusted on a " +"per-material basis, the filter mode for [Decal] textures is set globally " +"with [member ProjectSettings.rendering/textures/decals/filter].\n" +"[b]Note:[/b] Setting this texture alone will not result in a visible decal, " +"as [member texture_albedo] must also be set. To create a normal-only decal, " +"load an albedo texture into [member texture_albedo] and set [member " +"albedo_mix] to [code]0.0[/code]. The albedo texture's alpha channel will be " +"used to determine where the underlying surface's normal map should be " +"overridden (and its intensity)." +msgstr "" +"带有贴花的逐像素法线贴图的 [Texture2D]。可用于为贴花添加额外的细节。\n" +"[b]注意:[/b][BaseMaterial3D] 的过滤模式可以对每个材质进行调整,而 [Decal] 纹" +"理的过滤模式是通过 [member ProjectSettings.rendering/textures/decals/filter] " +"全局设置的。\n" +"[b]注意:[/b]单独设置此纹理时贴花不可见,因为还必须设置 [member " +"texture_albedo]。要创建仅包含法线的贴花,请将反照率纹理加载到 [member " +"texture_albedo],并将 [member albedo_mix] 设置为 [code]0.0[/code]。反照率纹理" +"的 Alpha 通道将用于确定应在何处覆盖底层表面的法线贴图(及其强度)。" + +msgid "" +"[Texture2D] storing ambient occlusion, roughness, and metallic for the " +"decal. Use this to add extra detail to decals.\n" +"[b]Note:[/b] Unlike [BaseMaterial3D] whose filter mode can be adjusted on a " +"per-material basis, the filter mode for [Decal] textures is set globally " +"with [member ProjectSettings.rendering/textures/decals/filter].\n" +"[b]Note:[/b] Setting this texture alone will not result in a visible decal, " +"as [member texture_albedo] must also be set. To create a ORM-only decal, " +"load an albedo texture into [member texture_albedo] and set [member " +"albedo_mix] to [code]0.0[/code]. The albedo texture's alpha channel will be " +"used to determine where the underlying surface's ORM map should be " +"overridden (and its intensity)." +msgstr "" +"存有贴花的环境光遮蔽、粗糙度、金属性的 [Texture2D]。可用于为贴花添加额外的细" +"节。\n" +"[b]注意:[/b][BaseMaterial3D] 的过滤模式可以对每个材质进行调整,而 [Decal] 纹" +"理的过滤模式是通过 [member ProjectSettings.rendering/textures/decals/filter] " +"全局设置的。\n" +"[b]注意:[/b]单独设置此纹理时贴花不可见,因为还必须设置 [member " +"texture_albedo]。要创建仅包含 ORM 的贴花,请将反照率纹理加载到 [member " +"texture_albedo],并将 [member albedo_mix] 设置为 [code]0.0[/code]。反照率纹理" +"的 Alpha 通道将用于确定应在何处覆盖底层表面的 ORM 贴图(及其强度)。" + +msgid "" +"Sets the curve over which the decal will fade as the surface gets further " +"from the center of the [AABB]. Only positive values are valid (negative " +"values will be clamped to [code]0.0[/code]). See also [member lower_fade]." +msgstr "" +"设置该贴花的淡出曲线,表示随着表面远离 [AABB] 中心而逐渐淡出。仅正值有效(负" +"值将被限制到 [code]0.0[/code])。另见 [member upper_fade]。" + +msgid "[Texture2D] corresponding to [member texture_albedo]." +msgstr "与 [member texture_albedo] 对应的 [Texture2D]。" + +msgid "[Texture2D] corresponding to [member texture_normal]." +msgstr "与 [member texture_normal] 对应的 [Texture2D]。" + +msgid "[Texture2D] corresponding to [member texture_orm]." +msgstr "与 [member texture_orm] 对应的 [Texture2D]。" + +msgid "[Texture2D] corresponding to [member texture_emission]." +msgstr "与 [member texture_emission] 对应的 [Texture2D]。" + +msgid "Max size of [enum DecalTexture] enum." +msgstr "[enum DecalTexture] 枚举的最大大小。" + msgid "Dictionary type." msgstr "字典类型。" +msgid "" +"Dictionary type. Associative container, which contains values referenced by " +"unique keys. Dictionaries are composed of pairs of keys (which must be " +"unique) and values. Dictionaries will preserve the insertion order when " +"adding new entries. In other programming languages, this data structure is " +"sometimes referred to as a hash map or associative array.\n" +"You can define a dictionary by placing a comma-separated list of [code]key: " +"value[/code] pairs in curly braces [code]{}[/code].\n" +"[b]Note:[/b] Dictionaries are always passed by reference. To get a copy of a " +"dictionary which can be modified independently of the original dictionary, " +"use [method duplicate].\n" +"Creating a dictionary:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var my_dict = {} # Creates an empty dictionary.\n" +"\n" +"var dict_variable_key = \"Another key name\"\n" +"var dict_variable_value = \"value2\"\n" +"var another_dict = {\n" +" \"Some key name\": \"value1\",\n" +" dict_variable_key: dict_variable_value,\n" +"}\n" +"\n" +"var points_dict = {\"White\": 50, \"Yellow\": 75, \"Orange\": 100}\n" +"\n" +"# Alternative Lua-style syntax.\n" +"# Doesn't require quotes around keys, but only string constants can be used " +"as key names.\n" +"# Additionally, key names must start with a letter or an underscore.\n" +"# Here, `some_key` is a string literal, not a variable!\n" +"another_dict = {\n" +" some_key = 42,\n" +"}\n" +"[/gdscript]\n" +"[csharp]\n" +"var myDict = new Godot.Collections.Dictionary(); // Creates an empty " +"dictionary.\n" +"var pointsDict = new Godot.Collections.Dictionary\n" +"{\n" +" {\"White\", 50},\n" +" {\"Yellow\", 75},\n" +" {\"Orange\", 100}\n" +"};\n" +"[/csharp]\n" +"[/codeblocks]\n" +"You can access a dictionary's value by referencing its corresponding key. In " +"the above example, [code]points_dict[\"White\"][/code] will return [code]50[/" +"code]. You can also write [code]points_dict.White[/code], which is " +"equivalent. However, you'll have to use the bracket syntax if the key you're " +"accessing the dictionary with isn't a fixed string (such as a number or " +"variable).\n" +"[codeblocks]\n" +"[gdscript]\n" +"@export_enum(\"White\", \"Yellow\", \"Orange\") var my_color: String\n" +"var points_dict = {\"White\": 50, \"Yellow\": 75, \"Orange\": 100}\n" +"func _ready():\n" +" # We can't use dot syntax here as `my_color` is a variable.\n" +" var points = points_dict[my_color]\n" +"[/gdscript]\n" +"[csharp]\n" +"[Export(PropertyHint.Enum, \"White,Yellow,Orange\")]\n" +"public string MyColor { get; set; }\n" +"private Godot.Collections.Dictionary _pointsDict = new Godot.Collections." +"Dictionary\n" +"{\n" +" {\"White\", 50},\n" +" {\"Yellow\", 75},\n" +" {\"Orange\", 100}\n" +"};\n" +"\n" +"public override void _Ready()\n" +"{\n" +" int points = (int)_pointsDict[MyColor];\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"In the above code, [code]points[/code] will be assigned the value that is " +"paired with the appropriate color selected in [code]my_color[/code].\n" +"Dictionaries can contain more complex data:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var my_dict = {\n" +" \"First Array\": [1, 2, 3, 4] # Assigns an Array to a String key.\n" +"}\n" +"[/gdscript]\n" +"[csharp]\n" +"var myDict = new Godot.Collections.Dictionary\n" +"{\n" +" {\"First Array\", new Godot.Collections.Array{1, 2, 3, 4}}\n" +"};\n" +"[/csharp]\n" +"[/codeblocks]\n" +"To add a key to an existing dictionary, access it like an existing key and " +"assign to it:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var points_dict = {\"White\": 50, \"Yellow\": 75, \"Orange\": 100}\n" +"points_dict[\"Blue\"] = 150 # Add \"Blue\" as a key and assign 150 as its " +"value.\n" +"[/gdscript]\n" +"[csharp]\n" +"var pointsDict = new Godot.Collections.Dictionary\n" +"{\n" +" {\"White\", 50},\n" +" {\"Yellow\", 75},\n" +" {\"Orange\", 100}\n" +"};\n" +"pointsDict[\"Blue\"] = 150; // Add \"Blue\" as a key and assign 150 as its " +"value.\n" +"[/csharp]\n" +"[/codeblocks]\n" +"Finally, dictionaries can contain different types of keys and values in the " +"same dictionary:\n" +"[codeblocks]\n" +"[gdscript]\n" +"# This is a valid dictionary.\n" +"# To access the string \"Nested value\" below, use `my_dict.sub_dict." +"sub_key` or `my_dict[\"sub_dict\"][\"sub_key\"]`.\n" +"# Indexing styles can be mixed and matched depending on your needs.\n" +"var my_dict = {\n" +" \"String Key\": 5,\n" +" 4: [1, 2, 3],\n" +" 7: \"Hello\",\n" +" \"sub_dict\": {\"sub_key\": \"Nested value\"},\n" +"}\n" +"[/gdscript]\n" +"[csharp]\n" +"// This is a valid dictionary.\n" +"// To access the string \"Nested value\" below, use `((Godot.Collections." +"Dictionary)myDict[\"sub_dict\"])[\"sub_key\"]`.\n" +"var myDict = new Godot.Collections.Dictionary {\n" +" {\"String Key\", 5},\n" +" {4, new Godot.Collections.Array{1,2,3}},\n" +" {7, \"Hello\"},\n" +" {\"sub_dict\", new Godot.Collections.Dictionary{{\"sub_key\", \"Nested " +"value\"}}}\n" +"};\n" +"[/csharp]\n" +"[/codeblocks]\n" +"The keys of a dictionary can be iterated with the [code]for[/code] keyword:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var groceries = {\"Orange\": 20, \"Apple\": 2, \"Banana\": 4}\n" +"for fruit in groceries:\n" +" var amount = groceries[fruit]\n" +"[/gdscript]\n" +"[csharp]\n" +"var groceries = new Godot.Collections.Dictionary{{\"Orange\", 20}, " +"{\"Apple\", 2}, {\"Banana\", 4}};\n" +"foreach (var (fruit, amount) in groceries)\n" +"{\n" +" // `fruit` is the key, `amount` is the value.\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Note:[/b] Erasing elements while iterating over dictionaries is [b]not[/" +"b] supported and will result in unpredictable behavior.\n" +"[b]Note:[/b] When declaring a dictionary with [code]const[/code], the " +"dictionary becomes read-only. A read-only Dictionary's entries cannot be " +"overridden at run-time. This does [i]not[/i] affect nested [Array] and " +"[Dictionary] values." +msgstr "" +"字典类型。关联型容器,容器中的值(Value)由唯一的键(Key)引用。字典由若干键" +"值对组成(键必须唯一,不能重复)。添加新条目时,字典会保持插入顺序。在其他编" +"程语言中,这样的数据结构有时也称为哈希表或关联数组。\n" +"你可以使用大括号 [code]{}[/code] 中放置用逗号分隔的一对对 [code]键:值[/code] " +"列表来定义字典。\n" +"[b]注意:[/b]字典始终按引用传递。要获取字典的副本,能独立于原字典进行修改,请" +"使用 [method duplicate]。\n" +"字典的创建:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var my_dict = {} # 创建空字典。\n" +"\n" +"var dict_variable_key = \"Another key name\"\n" +"var dict_variable_value = \"value2\"\n" +"var another_dict = {\n" +" \"Some key name\": \"value1\",\n" +" dict_variable_key: dict_variable_value,\n" +"}\n" +"\n" +"var points_dict = {\"White\": 50, \"Yellow\": 75, \"Orange\": 100}\n" +"\n" +"# 备选 Lua 分隔语法。\n" +"# 不需要在键周围加引号,但键名只能为字符串常量。\n" +"# 另外,键名必须以字母或下划线开头。\n" +"# 此处的 `some_key` 是字符串字面量,不是变量!\n" +"another_dict = {\n" +" some_key = 42,\n" +"}\n" +"[/gdscript]\n" +"[csharp]\n" +"var myDict = new Godot.Collections.Dictionary(); // 创建空字典。\n" +"var pointsDict = new Godot.Collections.Dictionary\n" +"{\n" +" {\"White\", 50},\n" +" {\"Yellow\", 75},\n" +" {\"Orange\", 100}\n" +"};\n" +"[/csharp]\n" +"[/codeblocks]\n" +"你可以通过键来访问字典中对应的值。上面的例子中,[code]points_dict[\"White\"]" +"[/code] 会返回 [code]50[/code]。你也可以写 [code]points_dict.White[/code],和" +"前面的写法是等价的。不过如果用来访问字典的键不是固定字符串的话(例如数字或者" +"变量),那么就只能使用方括号语法。\n" +"[codeblocks]\n" +"[gdscript]\n" +"@export_enum(\"White\", \"Yellow\", \"Orange\") var my_color: String\n" +"var points_dict = {\"White\": 50, \"Yellow\": 75, \"Orange\": 100}\n" +"func _ready():\n" +" # 不能使用点语法,因为 `my_color` 是变量。\n" +" var points = points_dict[my_color]\n" +"[/gdscript]\n" +"[csharp]\n" +"[Export(PropertyHint.Enum, \"White,Yellow,Orange\")]\n" +"public string MyColor { get; set; }\n" +"private Godot.Collections.Dictionary _pointsDict = new Godot.Collections." +"Dictionary\n" +"{\n" +" {\"White\", 50},\n" +" {\"Yellow\", 75},\n" +" {\"Orange\", 100}\n" +"};\n" +"\n" +"public override void _Ready()\n" +"{\n" +" int points = (int)_pointsDict[MyColor];\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"在上面的代码中,[code]points[/code] 会被赋值为与 [code]my_color[/code] 中选中" +"的颜色相对应的值。\n" +"字典可以包含更复杂的数据:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var my_dict = {\n" +" \"First Array\": [1, 2, 3, 4] # 将 Array 赋给 String 键。\n" +"}\n" +"[/gdscript]\n" +"[csharp]\n" +"var myDict = new Godot.Collections.Dictionary\n" +"{\n" +" {\"First Array\", new Godot.Collections.Array{1, 2, 3, 4}}\n" +"};\n" +"[/csharp]\n" +"[/codeblocks]\n" +"要往已有字典中添加键,请像已有键一样进行访问并赋值:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var points_dict = {\"White\": 50, \"Yellow\": 75, \"Orange\": 100}\n" +"points_dict[\"Blue\"] = 150 # 将 \"Blue\" 添加为键,并将 150 赋为它的值。\n" +"[/gdscript]\n" +"[csharp]\n" +"var pointsDict = new Godot.Collections.Dictionary\n" +"{\n" +" {\"White\", 50},\n" +" {\"Yellow\", 75},\n" +" {\"Orange\", 100}\n" +"};\n" +"pointsDict[\"Blue\"] = 150; // 将 \"Blue\" 添加为键,并将 150 赋为它的值。\n" +"[/csharp]\n" +"[/codeblocks]\n" +"最后,同一个字典里可以包含不同类型的键和值:\n" +"[codeblocks]\n" +"[gdscript]\n" +"# 这是有效的字典。\n" +"# 要访问下面的 \"Nested value\",请使用 `my_dict.sub_dict.sub_key` 或 " +"`my_dict[\"sub_dict\"][\"sub_key\"]`。\n" +"# 索引风格可以按需混合使用。\n" +"var my_dict = {\n" +" \"String Key\": 5,\n" +" 4: [1, 2, 3],\n" +" 7: \"Hello\",\n" +" \"sub_dict\": {\"sub_key\": \"Nested value\"},\n" +"}\n" +"[/gdscript]\n" +"[csharp]\n" +"// 这是有效的字典。\n" +"// 要访问下面的 \"Nested value\",请使用 `((Godot.Collections." +"Dictionary)myDict[\"sub_dict\"])[\"sub_key\"]`。\n" +"var myDict = new Godot.Collections.Dictionary {\n" +" {\"String Key\", 5},\n" +" {4, new Godot.Collections.Array{1,2,3}},\n" +" {7, \"Hello\"},\n" +" {\"sub_dict\", new Godot.Collections.Dictionary{{\"sub_key\", \"Nested " +"value\"}}}\n" +"};\n" +"[/csharp]\n" +"[/codeblocks]\n" +"字典中的键可以用 [code]for[/code] 关键字进行遍历:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var groceries = {\"Orange\": 20, \"Apple\": 2, \"Banana\": 4}\n" +"for fruit in groceries:\n" +" var amount = groceries[fruit]\n" +"[/gdscript]\n" +"[csharp]\n" +"var groceries = new Godot.Collections.Dictionary{{\"Orange\", 20}, " +"{\"Apple\", 2}, {\"Banana\", 4}};\n" +"foreach (var (fruit, amount) in groceries)\n" +"{\n" +" // `fruit` 为键,`amount` 为值。\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]注意:[/b][b]不支持[/b]在遍历字典时清除元素,可能造成无法预知的行为。\n" +"[b]注意:[/b]使用 [code]const[/code] 声明字典时,字典会变为只读。只读字典中的" +"条目无法在运行时覆盖。嵌套的 [Array] 和 [Dictionary] 值[i]不受影响[/i]。" + msgid "GDScript basics: Dictionary" msgstr "GDScript 基础:字典" msgid "Constructs an empty [Dictionary]." msgstr "构造空的 [Dictionary]。" +msgid "" +"Returns the same dictionary as [param from]. If you need a copy of the " +"dictionary, use [method duplicate]." +msgstr "" +"返回与 [param from] 相同的字典。如果你需要该字典的副本,请使用 [method " +"duplicate]。" + +msgid "Clears the dictionary, removing all entries from it." +msgstr "清空该字典,移除其中的所有条目。" + +msgid "" +"Creates and returns a new copy of the dictionary. If [param deep] is " +"[code]true[/code], inner [Dictionary] and [Array] keys and values are also " +"copied, recursively." +msgstr "" +"创建并返回该字典的副本。如果 [param deep] 为 [code]true[/code],内部的 " +"[Dictionary] 和 [Array] 键和值也会被递归复制。" + +msgid "" +"Removes the dictionary entry by key, if it exists. Returns [code]true[/code] " +"if the given [param key] existed in the dictionary, otherwise [code]false[/" +"code].\n" +"[b]Note:[/b] Do not erase entries while iterating over the dictionary. You " +"can iterate over the [method keys] array instead." +msgstr "" +"如果字典中存在与键对应的条目,则将其移除。如果给定的键 [param key] 在字典中存" +"在,则返回 [code]true[/code] ,否则返回 [code]false[/code] 。\n" +"[b]注意:[/b]请勿在遍历字典时擦除条目。你可以改为遍历 [method keys] 数组。" + +msgid "" +"Finds and returns the first key whose associated value is equal to [param " +"value], or [code]null[/code] if it is not found.\n" +"[b]Note:[/b] [code]null[/code] is also a valid key. If inside the " +"dictionary, [method find_key] may give misleading results." +msgstr "" +"找到并返回关联值等于 [param value] 的第一个键,如果没有找到,则返回 " +"[code]null[/code]。\n" +"[b]注意:[/b][code]null[/code] 也是有效的键。如果字典中包含这个键,则 " +"[method find_key] 可能会给出误导性的结果。" + +msgid "" +"Returns the corresponding value for the given [param key] in the dictionary. " +"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 default],如果省略了该参数则返回 [code]null[/code]。" + +msgid "" +"Returns [code]true[/code] if the dictionary contains an entry with the given " +"[param key].\n" +"[codeblocks]\n" +"[gdscript]\n" +"var my_dict = {\n" +" \"Godot\" : 4,\n" +" 210 : null,\n" +"}\n" +"\n" +"print(my_dict.has(\"Godot\")) # Prints true\n" +"print(my_dict.has(210)) # Prints true\n" +"print(my_dict.has(4)) # Prints false\n" +"[/gdscript]\n" +"[csharp]\n" +"var myDict = new Godot.Collections.Dictionary\n" +"{\n" +" { \"Godot\", 4 },\n" +" { 210, default },\n" +"};\n" +"\n" +"GD.Print(myDict.Contains(\"Godot\")); // Prints true\n" +"GD.Print(myDict.Contains(210)); // Prints true\n" +"GD.Print(myDict.Contains(4)); // Prints false\n" +"[/csharp]\n" +"[/codeblocks]\n" +"In GDScript, this is equivalent to the [code]in[/code] operator:\n" +"[codeblock]\n" +"if \"Godot\" in {\"Godot\": 4}:\n" +" print(\"The key is here!\") # Will be printed.\n" +"[/codeblock]\n" +"[b]Note:[/b] This method returns [code]true[/code] as long as the [param " +"key] exists, even if its corresponding value is [code]null[/code]." +msgstr "" +"如果该字典包含给定的键 [param key],则返回 [code]true[/code]。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var my_dict = {\n" +" \"Godot\" : 4,\n" +" 210 : null,\n" +"}\n" +"\n" +"print(my_dict.has(\"Godot\")) # 输出 true\n" +"print(my_dict.has(210)) # 输出 true\n" +"print(my_dict.has(4)) # 输出 false\n" +"[/gdscript]\n" +"[csharp]\n" +"var myDict = new Godot.Collections.Dictionary\n" +"{\n" +" { \"Godot\", 4 },\n" +" { 210, default },\n" +"};\n" +"\n" +"GD.Print(myDict.Contains(\"Godot\")); // 输出 true\n" +"GD.Print(myDict.Contains(210)); // 输出 true\n" +"GD.Print(myDict.Contains(4)); // 输出 false\n" +"[/csharp]\n" +"[/codeblocks]\n" +"在 GDScript 中等价于 [code]in[/code] 运算符:\n" +"[codeblock]\n" +"if \"Godot\" in {\"Godot\": 4}:\n" +" print(\"这个键存在!\") # 会进行输出。\n" +"[/codeblock]\n" +"[b]注意:[/b]只要键 [param key] 存在,该方法就会返回 [code]true[/code],即便" +"这个键对应的值为 [code]null[/code]。" + +msgid "" +"Returns [code]true[/code] if the dictionary contains all keys in the given " +"[param keys] array.\n" +"[codeblock]\n" +"var data = {\"width\" : 10, \"height\" : 20}\n" +"data.has_all([\"height\", \"width\"]) # Returns true\n" +"[/codeblock]" +msgstr "" +"如果该字典包含给定数组 [param keys] 中的所有键,则返回 [code]true[/code]。\n" +"[codeblock]\n" +"var data = {\"width\" : 10, \"height\" : 20}\n" +"data.has_all([\"height\", \"width\"]) # 返回 true\n" +"[/codeblock]" + +msgid "" +"Returns a hashed 32-bit integer value representing the dictionary contents.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var dict1 = {\"A\": 10, \"B\": 2}\n" +"var dict2 = {\"A\": 10, \"B\": 2}\n" +"\n" +"print(dict1.hash() == dict2.hash()) # Prints true\n" +"[/gdscript]\n" +"[csharp]\n" +"var dict1 = new Godot.Collections.Dictionary{{\"A\", 10}, {\"B\", 2}};\n" +"var dict2 = new Godot.Collections.Dictionary{{\"A\", 10}, {\"B\", 2}};\n" +"\n" +"// Godot.Collections.Dictionary has no Hash() method. Use GD.Hash() " +"instead.\n" +"GD.Print(GD.Hash(dict1) == GD.Hash(dict2)); // Prints true\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Note:[/b] Dictionaries with the same entries but in a different order " +"will not have the same hash.\n" +"[b]Note:[/b] Dictionaries with equal hash values are [i]not[/i] guaranteed " +"to be the same, because of hash collisions. On the countrary, dictionaries " +"with different hash values are guaranteed to be different." +msgstr "" +"返回代表该字典内容的 32 位整数哈希值。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var dict1 = {\"A\": 10, \"B\": 2}\n" +"var dict2 = {\"A\": 10, \"B\": 2}\n" +"\n" +"print(dict1.hash() == dict2.hash()) # 输出 true\n" +"[/gdscript]\n" +"[csharp]\n" +"var dict1 = new Godot.Collections.Dictionary{{\"A\", 10}, {\"B\", 2}};\n" +"var dict2 = new Godot.Collections.Dictionary{{\"A\", 10}, {\"B\", 2}};\n" +"\n" +"// Godot.Collections.Dictionary 没有 Hash() 方法。请改用 GD.Hash()。\n" +"GD.Print(GD.Hash(dict1) == GD.Hash(dict2)); // 输出 true\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]注意:[/b]如果两个字典条目相同,但顺序不同,则哈希值也不同。\n" +"[b]注意:[/b]哈希值相同的字典[i]不保证[/i]相同,因为可能存在哈希碰撞。相对" +"地,哈希值不同的字典保证不同。" + +msgid "" +"Returns [code]true[/code] if the dictionary is empty (its size is [code]0[/" +"code]). See also [method size]." +msgstr "" +"如果该字典为空(大小为 [code]0[/code]),则返回 [code]true[/code]。另见 " +"[method size]。" + +msgid "" +"Returns [code]true[/code] if the dictionary is read-only. See [method " +"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] 关键字声明的字典自动只读。" + msgid "Returns the list of keys in the dictionary." msgstr "返回该字典中的键列表。" +msgid "" +"Makes the dictionary read-only, i.e. disables modification of the " +"dictionary's contents. Does not apply to nested content, e.g. content of " +"nested dictionaries." +msgstr "" +"使该字典只读,即禁用字典内容的修改。不适用于嵌套内容,例如内嵌字典的内容。" + +msgid "" +"Adds entries from [param dictionary] to this dictionary. By default, " +"duplicate keys are not copied over, unless [param overwrite] is [code]true[/" +"code]." +msgstr "" +"将 [param dictionary] 中的条目添加到该字典中。默认不复制重复的键,除非 " +"[param overwrite] 为 [code]true[/code]。" + +msgid "" +"Returns the number of entries in the dictionary. Empty dictionaries ([code]" +"{ }[/code]) always return [code]0[/code]. See also [method is_empty]." +msgstr "" +"返回该字典中条目的数量。空字典([code]{ }[/code])始终返回 [code]0[/code]。另" +"见 [method is_empty]。" + msgid "Returns the list of values in this dictionary." msgstr "返回该字典中的值列表。" +msgid "" +"Returns [code]true[/code] if the two dictionaries do not contain the same " +"keys and values." +msgstr "如果两个字典包含的键、值不同,则返回 [code]true[/code] 。" + +msgid "" +"Returns [code]true[/code] if the two dictionaries contain the same keys and " +"values. The order of the entries does not matter.\n" +"[b]Note:[/b] In C#, by convention, this operator compares by [b]reference[/" +"b]. If you need to compare by value, iterate over both dictionaries." +msgstr "" +"如果两个字典包含的键、值心相同,则返回 [code]true[/code] 。条目顺序并不重" +"要。\n" +"[b]注意:[/b]在 C# 中,按照惯例,这个操作符进行的是按[b]引用[/b]比较。如果你" +"需要按值比较,请遍历这两个字典。" + +msgid "" +"Returns the corresponding value for the given [param key] in the dictionary. " +"If the entry does not exist, fails and returns [code]null[/code]. For safe " +"access, use [method get] or [method has]." +msgstr "" +"返回该字典中与给定的键 [parma key] 对应的值。如果条目不存在或者失败,则返回 " +"[code]null[/code]。为了更安全的访问,请使用 [method get] 或 [method has]。" + msgid "Type used to handle the filesystem." msgstr "用于处理文件系统的类型。" @@ -9288,6 +21131,25 @@ msgid "File system" msgstr "文件系统" msgid "" +"Copies the [param from] file to the [param to] destination. Both arguments " +"should be paths to files, either relative or absolute. If the destination " +"file exists and is not access-protected, it will be overwritten.\n" +"If [param chmod_flags] is different than [code]-1[/code], the Unix " +"permissions for the destination path will be set to the provided value, if " +"available on the current operating system.\n" +"Returns one of the [enum Error] code constants ([constant OK] on success)." +msgstr "" +"将 [param from] 文件复制到 [param to] 目标位置。两个参数都应该是文件的路径," +"可以是相对路径,也可以是绝对路径。如果目标文件存在并且没有访问保护,则它将被" +"覆盖。\n" +"如果 [param chmod_flags] 不同于 [code]-1[/code],且如果在当前操作系统上可用," +"目标路径的 Unix 权限将设置为提供的值。\n" +"返回 [enum Error] 错误码常量之一(成功时为 [constant OK])。" + +msgid "Static version of [method copy]. Supports only absolute paths." +msgstr "静态版本的 [method copy]。仅支持绝对路径。" + +msgid "" "Returns whether the current item processed with the last [method get_next] " "call is a directory ([code].[/code] and [code]..[/code] are considered " "directories)." @@ -9301,6 +21163,17 @@ msgid "" msgstr "" "返回目标目录是否存在。参数可以是相对于当前目录的路径,也可以是绝对路径。" +msgid "Static version of [method dir_exists]. Supports only absolute paths." +msgstr "静态版本的 [method dir_exists]。仅支持绝对路径。" + +msgid "" +"Returns whether the target file exists. The argument can be relative to the " +"current directory, or an absolute path.\n" +"For a static equivalent, use [method FileAccess.file_exists]." +msgstr "" +"返回目标文件是否存在。参数可以是相对于当前目录的路径,也可以是绝对路径。\n" +"对于静态等效项,请使用 [method FileAccess.file_exists]。" + msgid "" "Returns the absolute path to the currently opened directory (e.g. " "[code]res://folder[/code] or [code]C:\\tmp\\folder[/code])." @@ -9336,15 +21209,41 @@ msgstr "" "在其他平台上,或者当请求的驱动器不存在时,该方法会返回空的 String。" msgid "" +"Returns the result of the last [method open] call in the current thread." +msgstr "返回当前线程中最后一次 [method open] 调用的结果。" + +msgid "" "Closes the current stream opened with [method list_dir_begin] (whether it " "has been fully processed with [method get_next] does not matter)." msgstr "" "关闭用 [method list_dir_begin] 打开的当前流(并不关注是否已经用 [method " "get_next] 完成处理)。" +msgid "Static version of [method make_dir]. Supports only absolute paths." +msgstr "静态版本的 [method make_dir]。仅支持绝对路径。" + +msgid "" +"Static version of [method make_dir_recursive]. Supports only absolute paths." +msgstr "静态版本的 [method make_dir_recursive]。仅支持绝对路径。" + +msgid "Static version of [method remove]. Supports only absolute paths." +msgstr "静态版本的 [method remove]。仅支持绝对路径。" + +msgid "Static version of [method rename]. Supports only absolute paths." +msgstr "静态版本的 [method rename]。仅支持绝对路径。" + +msgid "Directional 2D light from a distance." +msgstr "来自远处的 2D 平行光。" + +msgid "2D lights and shadows" +msgstr "2D 灯光和阴影" + msgid "Directional light from a distance, as from the Sun." msgstr "来自远处的平行光,如太阳光。" +msgid "Lights and shadows" +msgstr "灯光与阴影" + msgid "" "If [code]true[/code], shadow detail is sacrificed in exchange for smoother " "transitions between splits. Enabling shadow blend splitting also has a " @@ -9409,6 +21308,227 @@ msgstr "" "将视图frustum分成4个区域,每个区域都有自己的阴影图。这是最慢的方向性阴影模" "式。" +msgid "Singleton for window management functions." +msgstr "单例,用于窗口管理等功能。" + +msgid "" +"[DisplayServer] handles everything related to window management. This is " +"separated from [OS] as a single operating system may support multiple " +"display servers.\n" +"[b]Headless mode:[/b] Starting the engine with the [code]--headless[/code] " +"[url=$DOCS_URL/tutorials/editor/command_line_tutorial.html]command line " +"argument[/url] disables all rendering and window management functions. Most " +"functions from [DisplayServer] will return dummy values in this case." +msgstr "" +"所有与窗口管理相关的内容都由 [DisplayServer](显示服务器)处理。因为一个操作" +"系统可能支持多个显示服务器,所以与 [OS] 是分开的。\n" +"[b]无头模式:[/b]如果使用 [code]--headless[/code] [url=$DOCS_URL/tutorials/" +"editor/command_line_tutorial.html]命令行参数[/url]启动引擎,就会禁用所有渲染" +"和窗口管理功能。此时 [DisplayServer] 的大多数函数都会返回虚拟值。" + +msgid "Returns the user's clipboard as a string if possible." +msgstr "如果可能,将用户的剪贴板作为字符串返回。" + +msgid "Returns [code]true[/code] if there is content on the user's clipboard." +msgstr "如果用户的剪贴板中有内容,则返回 [code]true[/code]。" + +msgid "Sets the user's clipboard content to the given string." +msgstr "将用户的剪贴板内容设置为给定的字符串。" + +msgid "" +"Returns the default mouse cursor shape set by [method cursor_set_shape]." +msgstr "返回默认鼠标光标形状,由 [method cursor_set_shape] 设置。" + +msgid "Returns index of the primary screen." +msgstr "返回主屏幕的索引。" + +msgid "Returns the number of displays available." +msgstr "返回可用的显示器数量。" + +msgid "Returns index of the screen which contains specified rectangle." +msgstr "返回包含指定矩形的屏幕的索引。" + +msgid "" +"Returns the accelerator of the item at index [param idx]. Accelerators are " +"special combinations of keys that activate the item, no matter which control " +"is focused.\n" +"[b]Note:[/b] This method is implemented on macOS." +msgstr "" +"返回索引 [param idx] 处项目的加速器。加速器是无论哪个控件获得焦点时激活项目的" +"特殊键组合。\n" +"[b]注意:[/b]该方法在 macOS 上实现。" + +msgid "" +"Returns the index of the item with the specified [param tag]. Index is " +"automatically assigned to each item by the engine. Index can not be set " +"manually.\n" +"[b]Note:[/b] This method is implemented on macOS." +msgstr "" +"返回具有指定 [param tag] 的项的索引。索引由引擎自动分配给每个项。索引不能被手" +"动设置。\n" +"[b]注意:[/b]该方法在 macOS 上实现。" + +msgid "" +"Returns the index of the item with the specified [param text]. Index is " +"automatically assigned to each item by the engine. Index can not be set " +"manually.\n" +"[b]Note:[/b] This method is implemented on macOS." +msgstr "" +"返回具有指定 [param text] 的项的索引。索引由引擎自动分配给每个项。索引不能被" +"手动设置。\n" +"[b]注意:[/b]该方法在 macOS 上实现。" + +msgid "" +"Returns the submenu ID of the item at index [param idx]. See [method " +"global_menu_add_submenu_item] for more info on how to add a submenu.\n" +"[b]Note:[/b] This method is implemented on macOS." +msgstr "" +"返回索引 [param idx] 处项的子菜单 ID。有关如何添加子菜单的更多信息,请参阅 " +"[method global_menu_add_submenu_item]。\n" +"[b]注意:[/b]该方法在 macOS 上实现。" + +msgid "" +"Returns [code]true[/code] if the item at index [param idx] is disabled. When " +"it is disabled it can't be selected, or its action invoked.\n" +"See [method global_menu_set_item_disabled] for more info on how to disable " +"an item.\n" +"[b]Note:[/b] This method is implemented on macOS." +msgstr "" +"如果索引 [param idx] 处的项被禁用,则返回 [code]true[/code]。当它被禁用时,它" +"不能被选择,或者它的动作被调用。\n" +"有关如何禁用项的更多信息,请参阅 [method global_menu_set_item_disabled]。\n" +"[b]注意:[/b]该方法在 macOS 上实现。" + +msgid "" +"Returns [code]true[/code] if the item at index [param idx] has radio button-" +"style checkability.\n" +"[b]Note:[/b] This is purely cosmetic; you must add the logic for checking/" +"unchecking items in radio groups.\n" +"[b]Note:[/b] This method is implemented on macOS." +msgstr "" +"如果索引 [param idx] 处的项具有单选按钮样式的可勾选性,则返回 [code]true[/" +"code]。\n" +"[b]注意:[/b]这纯粹是装饰性的; 您必须添加用于勾选/取消勾选单选组中项的逻" +"辑。\n" +"[b]注意:[/b]该方法在 macOS 上实现。" + +msgid "" +"Removes the item at index [param idx] from the global menu [param " +"menu_root].\n" +"[b]Note:[/b] The indices of items after the removed item will be shifted by " +"one.\n" +"[b]Note:[/b] This method is implemented on macOS." +msgstr "" +"从全局菜单 [param menu_root] 中移除索引 [param idx] 处的项。\n" +"[b]注意:[/b]被移除的项之后的项的索引将移动一位。\n" +"[b]注意:[/b]该方法在 macOS 上实现。" + +msgid "" +"Sets the callback of the item at index [param idx]. Callback is emitted when " +"an item is pressed.\n" +"[b]Note:[/b] The [param callback] Callable needs to accept exactly one " +"Variant parameter, the parameter passed to the Callable will be the value " +"passed to the tag parameter when the menu item was created.\n" +"[b]Note:[/b] This method is implemented on macOS." +msgstr "" +"设置索引 [param idx] 处项的回调。按下项时发出回调。\n" +"[b]注意:[/b][param callback] Callable 需要恰好接受一个 Variant 参数,传递给 " +"Callable 的参数将是创建菜单项时传递给 tag 参数的值。\n" +"[b]注意:[/b]该方法在 macOS 上实现。" + +msgid "" +"Enables/disables the item at index [param idx]. When it is disabled, it " +"can't be selected and its action can't be invoked.\n" +"[b]Note:[/b] This method is implemented on macOS." +msgstr "" +"启用/禁用索引 [param idx] 处的项。当它被禁用时,它不能被选择并且它的动作不能" +"被调用。\n" +"[b]注意:[/b]该方法在 macOS 上实现。" + +msgid "" +"Sets the submenu of the item at index [param idx]. The submenu is the ID of " +"a global menu root that would be shown when the item is clicked.\n" +"[b]Note:[/b] This method is implemented on macOS." +msgstr "" +"设置索引 [param idx] 处项目的子菜单。子菜单是全局菜单根的 ID,单击该项目时将" +"显示该菜单根。\n" +"[b]注意:[/b]该方法在 macOS 上实现。" + +msgid "" +"Sets the [String] tooltip of the item at the specified index [param idx].\n" +"[b]Note:[/b] This method is implemented on macOS." +msgstr "" +"设置指定索引 [param idx] 处项的 [String] 工具提示。\n" +"[b]注意:[/b]该方法在 macOS 上实现。" + +msgid "" +"Returns [code]true[/code] if OS is using dark mode.\n" +"[b]Note:[/b] This method is implemented on macOS, Windows and Linux (X11)." +msgstr "" +"如果操作系统正在使用暗黑模式,则返回 [code]true[/code]。\n" +"[b]注意:[/b]这个方法在 macOS、Windows 和 Linux(X11)上实现。" + +msgid "" +"Returns [code]true[/code] if OS supports dark mode.\n" +"[b]Note:[/b] This method is implemented on macOS, Windows and Linux (X11)." +msgstr "" +"如果操作系统支持暗黑模式,则返回 [code]true[/code]。\n" +"[b]注意:[/b]这个方法在 macOS、Windows 和 Linux(X11)上实现。" + +msgid "" +"Returns active keyboard layout index.\n" +"[b]Note:[/b] This method is implemented on Linux (X11), macOS and Windows." +msgstr "" +"返回激活的键盘布局的索引。\n" +"[b]注意:[/b]本方法在 Linux(X11)、macOS 和 Windows 上实现。" + +msgid "" +"Converts a physical (US QWERTY) [param keycode] to one in the active " +"keyboard layout.\n" +"[b]Note:[/b] This method is implemented on Linux (X11), macOS and Windows." +msgstr "" +"将物理(美式 QWERTY)键码 [param keycode] 转换为激活键盘布局中的键码。\n" +"[b]注意:[/b]本方法在 Linux(X11)、macOS 和 Windows 上实现。" + +msgid "" +"Returns the number of keyboard layouts.\n" +"[b]Note:[/b] This method is implemented on Linux (X11), macOS and Windows." +msgstr "" +"返回键盘布局的数量。\n" +"[b]注意:[/b]本方法在 Linux(X11)、macOS 和 Windows 上实现。" + +msgid "" +"Returns the ISO-639/BCP-47 language code of the keyboard layout at position " +"[param index].\n" +"[b]Note:[/b] This method is implemented on Linux (X11), macOS and Windows." +msgstr "" +"返回位于 [param index] 位置的键盘布局的 ISO-639/BCP-47 语言代码。\n" +"[b]注意:[/b]本方法在 Linux(X11)、macOS 和 Windows 上实现。" + +msgid "" +"Returns the localized name of the keyboard layout at position [param " +"index].\n" +"[b]Note:[/b] This method is implemented on Linux (X11), macOS and Windows." +msgstr "" +"返回位于 [param index] 位置的键盘布局的本地化名称。\n" +"[b]注意:[/b]本方法在 Linux(X11)、macOS 和 Windows 上实现。" + +msgid "" +"Sets the active keyboard layout.\n" +"[b]Note:[/b] This method is implemented on Linux (X11), macOS and Windows." +msgstr "" +"设置激活的键盘布局。\n" +"[b]注意:[/b]本方法在 Linux(X11)、macOS 和 Windows 上实现。" + +msgid "Returns the current mouse mode. See also [method mouse_set_mode]." +msgstr "返回当前的鼠标模式。另见 [method mouse_set_mode]。" + +msgid "Returns the mouse cursor's current position." +msgstr "返回鼠标光标当前位置。" + +msgid "Sets the current mouse mode. See also [method mouse_get_mode]." +msgstr "设置当前的鼠标模式。另见 [method mouse_get_mode]。" + msgid "" "Returns the total number of available tablet drivers.\n" "[b]Note:[/b] This method is implemented on Windows." @@ -9432,15 +21552,785 @@ msgstr "" msgid "Hides the virtual keyboard if it is shown, does nothing otherwise." msgstr "如果虚拟键盘为显示状态则隐藏虚拟键盘,否则不做任何操作。" +msgid "" +"Shows the virtual keyboard if the platform has one.\n" +"[param existing_text] parameter is useful for implementing your own " +"[LineEdit] or [TextEdit], as it tells the virtual keyboard what text has " +"already been typed (the virtual keyboard uses it for auto-correct and " +"predictions).\n" +"[param position] parameter is the screen space [Rect2] of the edited text.\n" +"[param type] parameter allows configuring which type of virtual keyboard to " +"show.\n" +"[param max_length] limits the number of characters that can be entered if " +"different from [code]-1[/code].\n" +"[param cursor_start] can optionally define the current text cursor position " +"if [param cursor_end] is not set.\n" +"[param cursor_start] and [param cursor_end] can optionally define the " +"current text selection.\n" +"[b]Note:[/b] This method is implemented on Android, iOS and Web." +msgstr "" +"如果该平台有虚拟键盘,则显示虚拟键盘。\n" +"[param existing_text] 参数对于实现您自己的 [LineEdit] 或 [TextEdit] 很有用," +"因为它告诉虚拟键盘已经输入了哪些文本(虚拟键盘使用它进行自动更正和预测)。\n" +"[param position] 参数为编辑文本的屏幕空间 [Rect2]。\n" +"[param type] 参数允许配置要显示的虚拟键盘类型。\n" +"[param max_length] 在当与 [code]-1[/code] 不同时,限制可输入的字符数。\n" +"如果未设置 [param cursor_end],则可选参数 [param cursor_start] 可以定义当前文" +"本光标位置。\n" +"可选参数 [param cursor_start] 和 [param cursor_end],可以定义当前文本选区。\n" +"[b]注意:[/b]该方法在 Android、iOS 和 Web 上实现。" + +msgid "" +"Sets the mouse cursor position to the given [param position] relative to an " +"origin at the upper left corner of the currently focused game Window Manager " +"window.\n" +"[b]Note:[/b] [method warp_mouse] is only supported on Windows, macOS and " +"Linux. It has no effect on Android, iOS and Web." +msgstr "" +"将鼠标光标位置设置为相对于当前聚焦的游戏窗口管理器窗口左上角的原点的给定 " +"[param position]。\n" +"[b]注意:[/b][method warp_mouse] 仅在 Windows、macOS 和 Linux 上受支持。它在 " +"Android、iOS 和 Web 上无效。" + +msgid "" +"Returns the window's maximum size (in pixels). See also [method " +"window_set_max_size]." +msgstr "返回该窗口的最大尺寸,单位为像素。另见 [member 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]。" + +msgid "Returns the mode of the given window." +msgstr "返回给定窗口的模式。" + +msgid "" +"Returns the position of the client area of the given window on the screen." +msgstr "返回屏幕上给定窗口的客户端区域位置。" + +msgid "Returns the V-Sync mode of the given window." +msgstr "返回给定窗口的垂直同步模式。" + +msgid "" +"Returns [code]true[/code] if the given window can be maximized (the maximize " +"button is enabled)." +msgstr "" +"如果给定的窗口能够最大化(最大化按钮已启用),则返回 [code]true[/code]。" + +msgid "" +"Sets the maximum size of the window specified by [param window_id] in " +"pixels. Normally, the user will not be able to drag the window to make it " +"smaller than the specified size. See also [method window_get_max_size].\n" +"[b]Note:[/b] It's recommended to change this value using [member Window." +"max_size] instead.\n" +"[b]Note:[/b] Using third-party tools, it is possible for users to disable " +"window geometry restrictions and therefore bypass this limit." +msgstr "" +"设置由 [param window_id] 指定的窗口的最大大小(单位为像素)。通常,用户将无法" +"拖动窗口使其小于指定大小。另见 [method window_get_max_size]。\n" +"[b]注意:[/b]建议改用 [member Window.max_size] 更改此值。\n" +"[b]注意:[/b]使用第三方工具,用户可以禁用窗口几何限制,从而绕过此限制。" + +msgid "" +"Sets the minimum size for the given window to [param min_size] (in pixels). " +"Normally, the user will not be able to drag the window to make it larger " +"than the specified size. See also [method window_get_min_size].\n" +"[b]Note:[/b] It's recommended to change this value using [member Window." +"min_size] instead.\n" +"[b]Note:[/b] By default, the main window has a minimum size of " +"[code]Vector2i(64, 64)[/code]. This prevents issues that can arise when the " +"window is resized to a near-zero size.\n" +"[b]Note:[/b] Using third-party tools, it is possible for users to disable " +"window geometry restrictions and therefore bypass this limit." +msgstr "" +"将给定窗口的最小大小设置为 [param min_size](单位为像素)。通常,用户将无法拖" +"动窗口使其大于指定大小。另见 [method window_get_min_size]。\n" +"[b]注意:[/b]建议改用 [member Window.min_size] 来更改此值。\n" +"[b]注意:[/b]默认情况下,主窗口的最小大小为 [code]Vector2i(64, 64)[/code]。这" +"可以防止将窗口调整为接近零的大小时可能出现的问题。\n" +"[b]注意:[/b]使用第三方工具,用户可以禁用窗口几何限制,从而绕过此限制。" + +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 " +"will be intercepted by the window, which is the default behavior).\n" +"[codeblocks]\n" +"[gdscript]\n" +"# Set region, using Path2D node.\n" +"DisplayServer.window_set_mouse_passthrough($Path2D.curve." +"get_baked_points())\n" +"\n" +"# Set region, using Polygon2D node.\n" +"DisplayServer.window_set_mouse_passthrough($Polygon2D.polygon)\n" +"\n" +"# Reset region to default.\n" +"DisplayServer.window_set_mouse_passthrough([])\n" +"[/gdscript]\n" +"[csharp]\n" +"// Set region, using Path2D node.\n" +"DisplayServer.WindowSetMousePassthrough(GetNode<Path2D>(\"Path2D\").Curve." +"GetBakedPoints());\n" +"\n" +"// Set region, using Polygon2D node.\n" +"DisplayServer.WindowSetMousePassthrough(GetNode<Polygon2D>(\"Polygon2D\")." +"Polygon);\n" +"\n" +"// Reset region to default.\n" +"DisplayServer.WindowSetMousePassthrough(new Vector2[] {});\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Note:[/b] On Windows, the portion of a window that lies outside the " +"region is not drawn, while on Linux (X11) and macOS it is.\n" +"[b]Note:[/b] This method is implemented on Linux (X11), macOS and Windows." +msgstr "" +"设置一个接受鼠标事件的窗口的多边形区域。该区域外的鼠标事件将被传递出去。\n" +"传递一个空数组将禁用穿透支持(所有鼠标事件将被窗口拦截,这是默认行为)。\n" +"[codeblocks]\n" +"[gdscript]\n" +"# 设置区域,使用 Path2D 节点。\n" +"DisplayServer.window_set_mouse_passthrough($Path2D.curve." +"get_baked_points())\n" +"\n" +"# 设置区域,使用 Polygon2D 节点。\n" +"DisplayServer.window_set_mouse_passthrough($Polygon2D.polygon)\n" +"\n" +"# 重置区域为默认值。\n" +"DisplayServer.window_set_mouse_passthrough([])\n" +"[/gdscript]\n" +"[csharp]\n" +"// 设置区域,使用 Path2D 节点。\n" +"DisplayServer.WindowSetMousePassthrough(GetNode<Path2D>(\"Path2D\").Curve." +"GetBakedPoints());\n" +"\n" +"// 设置区域,使用 Polygon2D 节点。\n" +"DisplayServer.WindowSetMousePassthrough(GetNode<Polygon2D>(\"Polygon2D\")." +"Polygon);\n" +"\n" +"// 重置区域为默认值。\n" +"DisplayServer.WindowSetMousePassthrough(new Vector2[] {});\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]注意:[/b]在 Windows 上,不会绘制位于区域之外的窗口部分,而在 Linux(X11)" +"和 macOS 上则会绘制。\n" +"[b]注意:[/b]该方法在 Linux(X11)、macOS 和 Windows 上实现。" + +msgid "" +"Sets the position of the given window to [param position]. On multi-monitor " +"setups, the screen position is relative to the virtual desktop area. On " +"multi-monitor setups with different screen resolutions or orientations, the " +"origin may be located outside any display like this:\n" +"[codeblock]\n" +"* (0, 0) +-------+\n" +" | |\n" +"+-------------+ | |\n" +"| | | |\n" +"| | | |\n" +"+-------------+ +-------+\n" +"[/codeblock]\n" +"See also [method window_get_position] and [method window_set_size].\n" +"[b]Note:[/b] It's recommended to change this value using [member Window." +"position] instead." +msgstr "" +"将给定窗口的位置设置为 [param position]。在多显示器设置中,屏幕位置是相对于虚" +"拟桌面区域的。在具有不同屏幕分辨率或方向的多显示器设置中,原点可能位于任何显" +"示器之外,如下所示:\n" +"[codeblock]\n" +"* (0, 0) +-------+\n" +" | |\n" +"+-------------+ | |\n" +"| | | |\n" +"| | | |\n" +"+-------------+ +-------+\n" +"[/codeblock]\n" +"另见 [method window_get_position] 和 [method window_set_size]。\n" +"[b]注意:[/b]建议改用 [member Window.position] 更改此值。" + +msgid "" +"Sets the size of the given window to [param size] (in pixels). See also " +"[method window_get_size] and [method window_get_position].\n" +"[b]Note:[/b] It's recommended to change this value using [member Window." +"size] instead." +msgstr "" +"将给定窗口的大小设置为 [param size](单位为像素)。另见 [method " +"window_get_size] 和 [method window_get_position]。\n" +"[b]注意:[/b]建议改用 [member Window.size] 更改此值。" + +msgid "" +"Sets the title of the given window to [param title].\n" +"[b]Note:[/b] It's recommended to change this value using [member Window." +"title] instead.\n" +"[b]Note:[/b] Avoid changing the window title every frame, as this can cause " +"performance issues on certain window managers. Try to change the window " +"title only a few times per second at most." +msgstr "" +"将给定窗口的标题设置为 [param title]。\n" +"[b]注意:[/b]建议改用 [member Window.title] 更改此值。\n" +"[b]注意:[/b]避免每一帧都更改窗口标题,因为这会导致某些窗口管理器出现性能问" +"题。尝试每秒最多更改几次窗口标题。" + +msgid "" +"Sets window transient parent. Transient window is will be destroyed with its " +"transient parent and will return focus to their parent when closed. The " +"transient window is displayed on top of a non-exclusive full-screen parent " +"window. Transient windows can't enter full-screen mode.\n" +"[b]Note:[/b] It's recommended to change this value using [member Window." +"transient] instead.\n" +"[b]Note:[/b] The behavior might be different depending on the platform." +msgstr "" +"设置窗口瞬态父级。瞬态窗口将与其瞬态父级一起销毁,并在关闭时将焦点返回到它们" +"的父级。瞬态窗口显示在非排他性全屏父窗口的顶部。瞬态窗口无法进入全屏模式。\n" +"[b]注意:[/b]建议改用 [member Window.transient] 更改此值。\n" +"[b]注意:[/b]行为可能因平台而异。" + +msgid "" +"Display server supports global menu. This allows the application to display " +"its menu items in the operating system's top bar. [b]macOS[/b]" +msgstr "" +"显示服务器支持全局菜单。能够让应用程序在操作系统的顶部栏显示其菜单项。" +"[b]macOS[/b]" + +msgid "" +"Display server supports multiple windows that can be moved outside of the " +"main window. [b]Windows, macOS, Linux (X11)[/b]" +msgstr "" +"显示服务器支持多窗口,可以移动到主窗口之外。[b]Windows、macOS、Linux(X11)[/" +"b]" + +msgid "" +"Display server supports touchscreen input. [b]Windows, Linux (X11), Android, " +"iOS, Web[/b]" +msgstr "" +"显示服务器支持触屏输入。[b]Windows、Linux(X11)、Android、iOS、Web[/b]" + +msgid "" +"Display server supports mouse input. [b]Windows, macOS, Linux (X11), " +"Android, Web[/b]" +msgstr "" +"显示服务器支持鼠标输入。[b]Windows、macOS、Linux(X11)、Android、Web[/b]" + +msgid "" +"Display server supports setting and getting clipboard data. See also " +"[constant FEATURE_CLIPBOARD_PRIMARY]. [b]Windows, macOS, Linux (X11), " +"Android, iOS, Web[/b]" +msgstr "" +"显示服务器支持剪贴板数据的设置和获取。另见 [constant " +"FEATURE_CLIPBOARD_PRIMARY]。[b]Windows、macOS、Linux(X11)、Android、iOS、" +"Web[/b]" + +msgid "" +"Display server supports popping up a virtual keyboard when requested to " +"input text without a physical keyboard. [b]Android, iOS, Web[/b]" +msgstr "" +"显示服务器支持在请求输入文本但没有物理键盘时弹出虚拟键盘。[b]Android、iOS、" +"Web[/b]" + +msgid "" +"Display server supports setting the mouse cursor shape to be different from " +"the default. [b]Windows, macOS, Linux (X11), Android, Web[/b]" +msgstr "" +"显示服务器支持将鼠标光标形状设置为与默认不同。[b]Windows、macOS、Linux" +"(X11)、Android、Web[/b]" + +msgid "" +"Display server supports setting the mouse cursor shape to a custom image. " +"[b]Windows, macOS, Linux (X11), Web[/b]" +msgstr "" +"显示服务器支持将鼠标光标形状设置为自定义图像。[b]Windows、macOS、Linux" +"(X11)、Web[/b]" + +msgid "" +"Display server supports changing the window icon (usually displayed in the " +"top-left corner). [b]Windows, macOS, Linux (X11)[/b]" +msgstr "" +"显示服务器支持改变窗口图标(通常显示在左上角)。[b]Windows、macOS、Linux" +"(X11)[/b]" + +msgid "" +"Display server supports changing the window icon (usually displayed in the " +"top-left corner). [b]Windows, macOS[/b]" +msgstr "显示服务器支持改变窗口图标(通常显示在左上角)。[b]Windows、macOS[/b]" + +msgid "" +"Display server supports changing the screen orientation. [b]Android, iOS[/b]" +msgstr "显示服务器支持改变屏幕朝向。[b]Android、iOS[/b]" + msgid "Makes the mouse cursor visible if it is hidden." msgstr "如果鼠标光标处于隐藏状态,则使其可见。" msgid "Makes the mouse cursor hidden if it is visible." msgstr "如果鼠标光标是可见的,则使其隐藏。" +msgid "" +"Captures the mouse. The mouse will be hidden and its position locked at the " +"center of the window manager's window.\n" +"[b]Note:[/b] If you want to process the mouse's movement in this mode, you " +"need to use [member InputEventMouseMotion.relative]." +msgstr "" +"捕获鼠标。鼠标将被隐藏,其位置被锁定在窗口管理器窗口的中心。\n" +"[b]注意:[/b]如果你想在这种模式下处理鼠标的移动,则需要使用 [member " +"InputEventMouseMotion.relative]。" + +msgid "Confines the mouse cursor to the game window, and make it visible." +msgstr "将鼠标光标限制在游戏窗口内,并使其可见。" + +msgid "Confines the mouse cursor to the game window, and make it hidden." +msgstr "将鼠标光标限制在游戏窗口内,并使其隐藏。" + +msgid "Represents the primary screen." +msgstr "代表主屏幕。" + +msgid "" +"Represents the screen where the main window is located. This is usually the " +"default value in functions that allow specifying one of several screens." +msgstr "代表主窗口所在的屏幕。如果函数允许指定不同的屏幕,这个值通常是默认值。" + +msgid "Default landscape orientation." +msgstr "默认横屏朝向。" + +msgid "Default portrait orienstation." +msgstr "默认竖屏朝向。" + +msgid "Reverse landscape orientation (upside down)." +msgstr "倒横屏朝向(上下颠倒)。" + +msgid "Reverse portrait orientation (upside down)." +msgstr "倒竖屏朝向(上下颠倒)。" + +msgid "" +"Automatic landscape orientation (default or reverse depending on sensor)." +msgstr "自动横屏朝向(传感器决定默认或倒向)。" + +msgid "" +"Automatic portrait orientation (default or reverse depending on sensor)." +msgstr "自动竖屏朝向(传感器决定默认或倒向)。" + +msgid "" +"Automatic landscape or portrait orientation (default or reverse depending on " +"sensor)." +msgstr "自动横屏或竖屏朝向(传感器决定默认或倒向)。" + +msgid "Default text virtual keyboard." +msgstr "默认文本虚拟键盘。" + +msgid "Multiline virtual keyboard." +msgstr "多行虚拟键盘。" + +msgid "Virtual number keypad, useful for PIN entry." +msgstr "虚拟数字键盘,可用于 PIN 输入。" + +msgid "Virtual number keypad, useful for entering fractional numbers." +msgstr "虚拟数字键盘,可用于输入小数。" + +msgid "Virtual phone number keypad." +msgstr "虚拟手机号码键盘。" + +msgid "" +"Virtual keyboard with additional keys to assist with typing email addresses." +msgstr "带有附加键的虚拟键盘,可帮助输入电子邮件地址。" + +msgid "" +"Virtual keyboard for entering a password. On most platforms, this should " +"disable autocomplete and autocapitalization.\n" +"[b]Note:[/b] This is not supported on Web. Instead, this behaves identically " +"to [constant KEYBOARD_TYPE_DEFAULT]." +msgstr "" +"用于输入密码的虚拟键盘。在大多数平台上,这应该会禁用自动完成和自动首字母大写" +"功能。\n" +"[b]注意:[/b]Web 平台不支持。与 [constant KEYBOARD_TYPE_DEFAULT] 的行为相同。" + +msgid "Virtual keyboard with additional keys to assist with typing URLs." +msgstr "带有附加键的虚拟键盘,可帮助输入 URL。" + +msgid "Represents the size of the [enum CursorShape] enum." +msgstr "代表 [enum CursorShape] 枚举的大小。" + +msgid "" +"Windowed mode, i.e. [Window] doesn't occupy the whole screen (unless set to " +"the size of the screen)." +msgstr "窗口模式,即 [Window] 不占据整个屏幕(除非设置为屏幕的大小)。" + +msgid "" +"Minimized window mode, i.e. [Window] is not visible and available on window " +"manager's window list. Normally happens when the minimize button is pressed." +msgstr "" +"最小化窗口模式,即 [Window] 在窗口管理器的窗口列表中既不可见也不可用。通常发" +"生在按下最小化按钮时。" + +msgid "Max value of the [enum WindowFlags]." +msgstr "[enum WindowFlags] 的最大值。" + +msgid "" +"Sent when the mouse pointer enters the window, see [method " +"window_set_window_event_callback]." +msgstr "" +"当鼠标指针进入该窗口时发送,见 [method window_set_window_event_callback]。" + +msgid "" +"Sent when the mouse pointer exits the window, see [method " +"window_set_window_event_callback]." +msgstr "" +"当鼠标指针退出该窗口时发送,见 [method window_set_window_event_callback]。" + +msgid "" +"Sent when the window grabs focus, see [method " +"window_set_window_event_callback]." +msgstr "当该窗口获得焦点时发送,见 [method window_set_window_event_callback]。" + +msgid "" +"Sent when the window loses focus, see [method " +"window_set_window_event_callback]." +msgstr "当该窗口失去焦点时发送,见 [method window_set_window_event_callback]。" + msgid "Helper class to implement a DTLS server." msgstr "实现 DTLS 服务器的辅助类。" +msgid "" +"This class is used to store the state of a DTLS server. Upon [method setup] " +"it converts connected [PacketPeerUDP] to [PacketPeerDTLS] accepting them via " +"[method take_connection] as DTLS clients. Under the hood, this class is used " +"to store the DTLS state and cookies of the server. The reason of why the " +"state and cookies are needed is outside of the scope of this documentation.\n" +"Below a small example of how to use it:\n" +"[codeblocks]\n" +"[gdscript]\n" +"# server_node.gd\n" +"extends Node\n" +"\n" +"var dtls := DTLSServer.new()\n" +"var server := UDPServer.new()\n" +"var peers = []\n" +"\n" +"func _ready():\n" +" server.listen(4242)\n" +" var key = load(\"key.key\") # Your private key.\n" +" var cert = load(\"cert.crt\") # Your X509 certificate.\n" +" dtls.setup(key, cert)\n" +"\n" +"func _process(delta):\n" +" while server.is_connection_available():\n" +" var peer : PacketPeerUDP = server.take_connection()\n" +" var dtls_peer : PacketPeerDTLS = dtls.take_connection(peer)\n" +" if dtls_peer.get_status() != PacketPeerDTLS.STATUS_HANDSHAKING:\n" +" continue # It is normal that 50% of the connections fails due to " +"cookie exchange.\n" +" print(\"Peer connected!\")\n" +" peers.append(dtls_peer)\n" +"\n" +" for p in peers:\n" +" p.poll() # Must poll to update the state.\n" +" if p.get_status() == PacketPeerDTLS.STATUS_CONNECTED:\n" +" while p.get_available_packet_count() > 0:\n" +" print(\"Received message from client: %s\" % p.get_packet()." +"get_string_from_utf8())\n" +" p.put_packet(\"Hello DTLS client\".to_utf8())\n" +"[/gdscript]\n" +"[csharp]\n" +"// ServerNode.cs\n" +"using Godot;\n" +"\n" +"public partial class ServerNode : Node\n" +"{\n" +" private DtlsServer _dtls = new DtlsServer();\n" +" private UdpServer _server = new UdpServer();\n" +" private Godot.Collections.Array<PacketPeerDTLS> _peers = new Godot." +"Collections.Array<PacketPeerDTLS>();\n" +"\n" +" public override void _Ready()\n" +" {\n" +" _server.Listen(4242);\n" +" var key = GD.Load<CryptoKey>(\"key.key\"); // Your private key.\n" +" var cert = GD.Load<X509Certificate>(\"cert.crt\"); // Your X509 " +"certificate.\n" +" _dtls.Setup(key, cert);\n" +" }\n" +"\n" +" public override void _Process(double delta)\n" +" {\n" +" while (Server.IsConnectionAvailable())\n" +" {\n" +" PacketPeerUDP peer = _server.TakeConnection();\n" +" PacketPeerDTLS dtlsPeer = _dtls.TakeConnection(peer);\n" +" if (dtlsPeer.GetStatus() != PacketPeerDtls.Status.Handshaking)\n" +" {\n" +" continue; // It is normal that 50% of the connections fails " +"due to cookie exchange.\n" +" }\n" +" GD.Print(\"Peer connected!\");\n" +" _peers.Add(dtlsPeer);\n" +" }\n" +"\n" +" foreach (var p in _peers)\n" +" {\n" +" p.Poll(); // Must poll to update the state.\n" +" if (p.GetStatus() == PacketPeerDtls.Status.Connected)\n" +" {\n" +" while (p.GetAvailablePacketCount() > 0)\n" +" {\n" +" GD.Print($\"Received Message From Client: {p.GetPacket()." +"GetStringFromUtf8()}\");\n" +" p.PutPacket(\"Hello DTLS Client\".ToUtf8());\n" +" }\n" +" }\n" +" }\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[codeblocks]\n" +"[gdscript]\n" +"# client_node.gd\n" +"extends Node\n" +"\n" +"var dtls := PacketPeerDTLS.new()\n" +"var udp := PacketPeerUDP.new()\n" +"var connected = false\n" +"\n" +"func _ready():\n" +" udp.connect_to_host(\"127.0.0.1\", 4242)\n" +" dtls.connect_to_peer(udp, false) # Use true in production for " +"certificate validation!\n" +"\n" +"func _process(delta):\n" +" dtls.poll()\n" +" if dtls.get_status() == PacketPeerDTLS.STATUS_CONNECTED:\n" +" if !connected:\n" +" # Try to contact server\n" +" dtls.put_packet(\"The answer is... 42!\".to_utf8())\n" +" while dtls.get_available_packet_count() > 0:\n" +" print(\"Connected: %s\" % dtls.get_packet()." +"get_string_from_utf8())\n" +" connected = true\n" +"[/gdscript]\n" +"[csharp]\n" +"// ClientNode.cs\n" +"using Godot;\n" +"using System.Text;\n" +"\n" +"public partial class ClientNode : Node\n" +"{\n" +" private PacketPeerDtls _dtls = new PacketPeerDtls();\n" +" private PacketPeerUdp _udp = new PacketPeerUdp();\n" +" private bool _connected = false;\n" +"\n" +" public override void _Ready()\n" +" {\n" +" _udp.ConnectToHost(\"127.0.0.1\", 4242);\n" +" _dtls.ConnectToPeer(_udp, validateCerts: false); // Use true in " +"production for certificate validation!\n" +" }\n" +"\n" +" public override void _Process(double delta)\n" +" {\n" +" _dtls.Poll();\n" +" if (_dtls.GetStatus() == PacketPeerDtls.Status.Connected)\n" +" {\n" +" if (!_connected)\n" +" {\n" +" // Try to contact server\n" +" _dtls.PutPacket(\"The Answer Is..42!\".ToUtf8());\n" +" }\n" +" while (_dtls.GetAvailablePacketCount() > 0)\n" +" {\n" +" GD.Print($\"Connected: {_dtls.GetPacket()." +"GetStringFromUtf8()}\");\n" +" _connected = true;\n" +" }\n" +" }\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"该类用于存储 DTLS 服务器的状态。在 [method setup] 之后,它将连接的 " +"[PacketPeerUDP] 转换为 [PacketPeerDTLS],通过 [method take_connection] 接受它" +"们作为 DTLS 客户端。在底层,这个类用于存储服务器的 DTLS 状态和 cookie。为什么" +"需要状态和 cookie 的原因不在本文档的范围内。\n" +"下面是一个如何使用它的小例子:\n" +"[codeblocks]\n" +"[gdscript]\n" +"# server_node.gd\n" +"extends Node\n" +"\n" +"var dtls := DTLSServer.new()\n" +"var server := UDPServer.new()\n" +"var peers = []\n" +"\n" +"func _ready():\n" +" server.listen(4242)\n" +" var key = load(\"key.key\") # 你的私钥。\n" +" var cert = load(\"cert.crt\") # 你的 X509 证书。\n" +" dtls.setup(key, cert)\n" +"\n" +"func _process(delta):\n" +" while server.is_connection_available():\n" +" var peer : PacketPeerUDP = server.take_connection()\n" +" var dtls_peer : PacketPeerDTLS = dtls.take_connection(peer)\n" +" if dtls_peer.get_status() != PacketPeerDTLS.STATUS_HANDSHAKING:\n" +" continue # 由于 cookie 交换,50% 的连接会失败,这是正常现象。\n" +" print(\"对等体已连接!\")\n" +" peers.append(dtls_peer)\n" +"\n" +" for p in peers:\n" +" p.poll() # Must poll to update the state.\n" +" if p.get_status() == PacketPeerDTLS.STATUS_CONNECTED:\n" +" while p.get_available_packet_count() > 0:\n" +" print(\"从客户端收到消息:%s\" % p.get_packet()." +"get_string_from_utf8())\n" +" p.put_packet(\"你好 DTLS 客户端\".to_utf8())\n" +"[/gdscript]\n" +"[csharp]\n" +"// ServerNode.cs\n" +"using Godot;\n" +"\n" +"public partial class ServerNode : Node\n" +"{\n" +" private DtlsServer _dtls = new DtlsServer();\n" +" private UdpServer _server = new UdpServer();\n" +" private Godot.Collections.Array<PacketPeerDTLS> _peers = new Godot." +"Collections.Array<PacketPeerDTLS>();\n" +"\n" +" public override void _Ready()\n" +" {\n" +" _server.Listen(4242);\n" +" var key = GD.Load<CryptoKey>(\"key.key\"); // 你的私钥。\n" +" var cert = GD.Load<X509Certificate>(\"cert.crt\"); // 你的 X509 证" +"书。\n" +" _dtls.Setup(key, cert);\n" +" }\n" +"\n" +" public override void _Process(double delta)\n" +" {\n" +" while (Server.IsConnectionAvailable())\n" +" {\n" +" PacketPeerUDP peer = _server.TakeConnection();\n" +" PacketPeerDTLS dtlsPeer = _dtls.TakeConnection(peer);\n" +" if (dtlsPeer.GetStatus() != PacketPeerDtls.Status.Handshaking)\n" +" {\n" +" continue; // 由于 cookie 交换,50% 的连接会失败,这是正常现" +"象。\n" +" }\n" +" GD.Print(\"对等体已连接!\");\n" +" _peers.Add(dtlsPeer);\n" +" }\n" +"\n" +" foreach (var p in _peers)\n" +" {\n" +" p.Poll(); // Must poll to update the state.\n" +" if (p.GetStatus() == PacketPeerDtls.Status.Connected)\n" +" {\n" +" while (p.GetAvailablePacketCount() > 0)\n" +" {\n" +" GD.Print($\"从客户端收到消息: {p.GetPacket()." +"GetStringFromUtf8()}\");\n" +" p.PutPacket(\"你好 DTLS 客户端\".ToUtf8());\n" +" }\n" +" }\n" +" }\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[codeblocks]\n" +"[gdscript]\n" +"# client_node.gd\n" +"extends Node\n" +"\n" +"var dtls := PacketPeerDTLS.new()\n" +"var udp := PacketPeerUDP.new()\n" +"var connected = false\n" +"\n" +"func _ready():\n" +" udp.connect_to_host(\"127.0.0.1\", 4242)\n" +" dtls.connect_to_peer(udp, false) # 生产环境中请使用 true 进行证书校验!\n" +"\n" +"func _process(delta):\n" +" dtls.poll()\n" +" if dtls.get_status() == PacketPeerDTLS.STATUS_CONNECTED:\n" +" if !connected:\n" +" # 尝试联系服务器\n" +" dtls.put_packet(\"回应是… 42!\".to_utf8())\n" +" while dtls.get_available_packet_count() > 0:\n" +" print(\"已连接:%s\" % dtls.get_packet()." +"get_string_from_utf8())\n" +" connected = true\n" +"[/gdscript]\n" +"[csharp]\n" +"// ClientNode.cs\n" +"using Godot;\n" +"using System.Text;\n" +"\n" +"public partial class ClientNode : Node\n" +"{\n" +" private PacketPeerDtls _dtls = new PacketPeerDtls();\n" +" private PacketPeerUdp _udp = new PacketPeerUdp();\n" +" private bool _connected = false;\n" +"\n" +" public override void _Ready()\n" +" {\n" +" _udp.ConnectToHost(\"127.0.0.1\", 4242);\n" +" _dtls.ConnectToPeer(_udp, validateCerts: false); // 生产环境中请使用 " +"true 进行证书校验!\n" +" }\n" +"\n" +" public override void _Process(double delta)\n" +" {\n" +" _dtls.Poll();\n" +" if (_dtls.GetStatus() == PacketPeerDtls.Status.Connected)\n" +" {\n" +" if (!_connected)\n" +" {\n" +" // 尝试联系服务器\n" +" _dtls.PutPacket(\"回应是… 42!\".ToUtf8());\n" +" }\n" +" while (_dtls.GetAvailablePacketCount() > 0)\n" +" {\n" +" GD.Print($\"已连接:{_dtls.GetPacket()." +"GetStringFromUtf8()}\");\n" +" _connected = true;\n" +" }\n" +" }\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "Godot editor's command palette." +msgstr "Godot 编辑器的命令面板。" + +msgid "" +"Adds a custom command to EditorCommandPalette.\n" +"- [param command_name]: [String] (Name of the [b]Command[/b]. This is " +"displayed to the user.)\n" +"- [param key_name]: [String] (Name of the key for a particular [b]Command[/" +"b]. This is used to uniquely identify the [b]Command[/b].)\n" +"- [param binded_callable]: [Callable] (Callable of the [b]Command[/b]. This " +"will be executed when the [b]Command[/b] is selected.)\n" +"- [param shortcut_text]: [String] (Shortcut text of the [b]Command[/b] if " +"available.)" +msgstr "" +"向 EditorCommandPalette 添加自定义命令。\n" +"- [param command_name]:[String]([b]Command[/b] 的名称。这会显示给用户。)\n" +"- [param key_name]:[String](特定 [b]Command[/b] 的密钥名称。这用于唯一标识 " +"[b]Command[/b]。)\n" +"- [param binded_callable]:[Callable]([b]Command[/b] 的 Callable。这将在选" +"择 [b]Command[/b] 时执行。)\n" +"- [param shortcut_text]:[String]([b]Command[/b] 的快捷键文本,如果可用。)" + +msgid "" +"Returns an array of [EditorDebuggerSession] currently available to this " +"debugger plugin.\n" +"Note: Not sessions in the array may be inactive, check their state via " +"[method EditorDebuggerSession.is_active]" +msgstr "" +"返回该调试器插件当前可用的 [EditorDebuggerSession] 数组。\n" +"注意:不是数组中的会话可能处于非活动状态,通过 [method EditorDebuggerSession." +"is_active] 检查它们的状态" + +msgid "A class to interact with the editor debugger." +msgstr "与编辑器调试器交互的类。" + msgid "A script that is executed when exporting the project." msgstr "在导出项目时执行的脚本。" @@ -9491,7 +22381,7 @@ msgstr "在 [method _export_file] 中调用。跳过当前文件,因此它不 msgid "" "An editor feature profile which can be used to disable specific features." -msgstr "编辑器功能配置文件,可用于禁用特定功能。" +msgstr "编辑器功能配置,可用于禁用特定功能。" msgid "" "An editor feature profile can be used to disable specific features of the " @@ -9503,28 +22393,31 @@ msgid "" "To manage editor feature profiles visually, use [b]Editor > Manage Feature " "Profiles...[/b] at the top of the editor window." msgstr "" -"编辑器功能配置文件可以用来禁用 Godot 编辑器的特定功能。当禁用时,这些功能将不" -"会出现在编辑器中,从而使编辑器不那么混乱。这个设置使编辑器更简洁,在团队中工" -"作时。例如,游戏美术和关卡设计师可以使用禁用脚本编辑器的功能配置文件,以避免" -"意外地对他们不应该编辑的文件进行更改。\n" -"要可视化地管理编辑器功能配置文件,请使用编辑器窗口顶部的[b]编辑器 >管理功能配" -"置文件...[/b]。" +"编辑器功能配置可以用来禁用 Godot 编辑器的特定功能。当禁用时,这些功能将不会出" +"现在编辑器中,从而使编辑器不那么混乱。这个设置使编辑器更简洁,在团队中工作" +"时。例如,游戏美术和关卡设计师可以使用禁用脚本编辑器的功能配置,以避免意外地" +"对他们不应该编辑的文件进行更改。\n" +"要可视化地管理编辑器功能配置,请使用编辑器窗口顶部的[b]编辑器 >管理功能配" +"置...[/b]。" + +msgid "Returns the specified [param feature]'s human-readable name." +msgstr "返回指定特性 [param feature] 的人类可读名称。" msgid "" "Loads an editor feature profile from a file. The file must follow the JSON " "format obtained by using the feature profile manager's [b]Export[/b] button " "or the [method save_to_file] method." msgstr "" -"从文件中加载一个编辑器功能配置文件。该文件必须遵循 JSON 格式,通过使用功能配" -"置文件管理器的[b]导出[/b]按钮或 [method save_to_file] 方法获得。" +"从文件中加载一个编辑器功能配置。该文件必须遵循 JSON 格式,通过使用功能配置管" +"理器的[b]导出[/b]按钮或 [method save_to_file] 方法获得。" msgid "" "Saves the editor feature profile to a file in JSON format. It can then be " "imported using the feature profile manager's [b]Import[/b] button or the " "[method load_from_file] method." msgstr "" -"将编辑器的功能配置保存到 JSON 格式的文件中。然后可以使用功能配置文件管理器的" -"[b]导入[/b]按钮或 [method load_from_file] 方法导入它。" +"将编辑器的功能配置保存到 JSON 格式的文件中。然后可以使用功能配置管理器的[b]导" +"入[/b]按钮或 [method load_from_file] 方法导入它。" msgid "" "The 3D editor. If this feature is disabled, the 3D editor won't display but " @@ -9563,11 +22456,24 @@ msgstr "文件系统面板。如果禁用此功能,则文件系统面板将不 msgid "" "The Import dock. If this feature is disabled, the Import dock won't be " "visible." -msgstr "导入扩展面板。如果禁用此功能,则导入扩展面板将不可见。" +msgstr "导入面板。如果禁用此功能,则导入面板将不可见。" + +msgid "" +"The History dock. If this feature is disabled, the History dock won't be " +"visible." +msgstr "历史面板。如果禁用此功能,则历史面板将不可见。" msgid "A modified version of [FileDialog] used by the editor." msgstr "编辑器使用的 [FileDialog] 的修改版。" +msgid "" +"[EditorFileDialog] is an enhanced version of [FileDialog] available only to " +"editor plugins. Additional features include list of favorited/recent files " +"and ability to see files as thumbnails grid instead of list." +msgstr "" +"[EditorFileDialog] 是 [FileDialog] 的增强版,只对编辑器插件可用。额外的功能包" +"括收藏/最近文件列表和以缩略图网格而不是列表的形式查看文件的能力。" + msgid "Removes all filters except for \"All Files (*)\"." msgstr "移除“All Files(*)”筛选器之外的所有筛选器。" @@ -9705,6 +22611,18 @@ msgstr "扫描文件系统的改动。" msgid "Check if the source of any imported resource changed." msgstr "检查是否更改了已导入资源的来源。" +msgid "" +"Add a file in an existing directory, or schedule file information to be " +"updated on editor restart. Can be used to update text files saved by an " +"external program.\n" +"This will not import the file. To reimport, call [method reimport_files] or " +"[method scan] methods." +msgstr "" +"在现有目录中添加文件,或计划在编辑器重新启动时更新文件信息。可用于更新由外部" +"程序保存的文本文件。\n" +"这不会导入文件。要重新导入,请调用 [method reimport_files] 或 [method scan] " +"方法。" + msgid "Emitted if the filesystem changed." msgstr "在文件系统更改的时候触发。" @@ -9715,6 +22633,9 @@ msgid "" "Emitted if at least one resource is reloaded when the filesystem is scanned." msgstr "如果在扫描文件系统的时候,至少有一个资源被重新加载,则触发该信号。" +msgid "Emitted when the list of global script classes gets updated." +msgstr "更新全局脚本类列表时触发。" + msgid "Emitted if the source of any imported file changed." msgstr "如果导入文件的来源发生变化,则触发。" @@ -9724,9 +22645,38 @@ msgstr "资源文件系统的目录。" msgid "A more generalized, low-level variation of the directory concept." msgstr "目录概念的一个更概括的、低级的概念。" +msgid "" +"Returns the index of the directory with name [param name] or [code]-1[/code] " +"if not found." +msgstr "返回名为 [param name] 的目录索引,如果未找到返回 [code]-1[/code]。" + +msgid "" +"Returns the index of the file with name [param name] or [code]-1[/code] if " +"not found." +msgstr "返回名为 [param name] 的文件索引,如果未找到返回 [code]-1[/code]。" + +msgid "Returns the name of the file at index [param idx]." +msgstr "返回索引 [param idx] 处的文件名。" + msgid "Returns the number of files in this directory." msgstr "返回目录里文件的数量。" +msgid "" +"Returns [code]true[/code] if the file at index [param idx] imported properly." +msgstr "如果索引 [param idx] 处的文件正确导入,则返回 [code]true[/code]。" + +msgid "Returns the path to the file at index [param idx]." +msgstr "返回索引 [param idx] 处的文件所在路径。" + +msgid "" +"Returns the resource type of the file at index [param idx]. This returns a " +"string such as [code]\"Resource\"[/code] or [code]\"GDScript\"[/code], " +"[i]not[/i] a file extension such as [code]\".gd\"[/code]." +msgstr "" +"返回在索引 [code]idx[/code] 处文件的资源类型。这将返回字符串,如 " +"[code]\"Resource\"[/code] 或 [code]\"GDScript\"[/code],[i]而不是[/i] 文件扩" +"展名,如 [code]\".gd\"[/code]。" + msgid "Returns the name of this directory." msgstr "返回这个目录的名字。" @@ -9740,16 +22690,284 @@ msgstr "" msgid "Returns the path to this directory." msgstr "返回这个目录的路径。" +msgid "Returns the subdirectory at index [param idx]." +msgstr "返回在索引 [param idx] 处的子目录。" + msgid "Returns the number of subdirectories in this directory." msgstr "返回这个目录的子目录的数量。" msgid "" +"This class is used to query and configure a certain import format. It is " +"used in conjunction with asset format import plugins." +msgstr "该类用于查询和配置某种导入格式。它与资产格式导入插件配合使用。" + +msgid "Return the file extensions supported." +msgstr "返回支持的文件扩展名。" + +msgid "Return whether this importer is active." +msgstr "返回此导入器是否处于活动状态。" + +msgid "" "Registers a custom resource importer in the editor. Use the class to parse " "any file and import it as a new resource type." msgstr "" "在编辑器中注册一个自定义资源导入器。使用该类来解析任何文件,并将其作为新的资" "源类型导入。" +msgid "" +"[EditorImportPlugin]s provide a way to extend the editor's resource import " +"functionality. Use them to import resources from custom files or to provide " +"alternatives to the editor's existing importers.\n" +"EditorImportPlugins work by associating with specific file extensions and a " +"resource type. See [method _get_recognized_extensions] and [method " +"_get_resource_type]. They may optionally specify some import presets that " +"affect the import process. EditorImportPlugins are responsible for creating " +"the resources and saving them in the [code].godot/imported[/code] directory " +"(see [member ProjectSettings.application/config/" +"use_hidden_project_data_directory]).\n" +"Below is an example EditorImportPlugin that imports a [Mesh] from a file " +"with the extension \".special\" or \".spec\":\n" +"[codeblocks]\n" +"[gdscript]\n" +"@tool\n" +"extends EditorImportPlugin\n" +"\n" +"func _get_importer_name():\n" +" return \"my.special.plugin\"\n" +"\n" +"func _get_visible_name():\n" +" return \"Special Mesh\"\n" +"\n" +"func _get_recognized_extensions():\n" +" return [\"special\", \"spec\"]\n" +"\n" +"func _get_save_extension():\n" +" return \"mesh\"\n" +"\n" +"func _get_resource_type():\n" +" return \"Mesh\"\n" +"\n" +"func _get_preset_count():\n" +" return 1\n" +"\n" +"func _get_preset_name(i):\n" +" return \"Default\"\n" +"\n" +"func _get_import_options(i):\n" +" return [{\"name\": \"my_option\", \"default_value\": false}]\n" +"\n" +"func _import(source_file, save_path, options, platform_variants, " +"gen_files):\n" +" var file = FileAccess.open(source_file, FileAccess.READ)\n" +" if file == null:\n" +" return FAILED\n" +" var mesh = ArrayMesh.new()\n" +" # Fill the Mesh with data read in \"file\", left as an exercise to the " +"reader.\n" +"\n" +" var filename = save_path + \".\" + _get_save_extension()\n" +" return ResourceSaver.save(mesh, filename)\n" +"[/gdscript]\n" +"[csharp]\n" +"using Godot;\n" +"\n" +"public partial class MySpecialPlugin : EditorImportPlugin\n" +"{\n" +" public override string _GetImporterName()\n" +" {\n" +" return \"my.special.plugin\";\n" +" }\n" +"\n" +" public override string _GetVisibleName()\n" +" {\n" +" return \"Special Mesh\";\n" +" }\n" +"\n" +" public override string[] _GetRecognizedExtensions()\n" +" {\n" +" return new string[] { \"special\", \"spec\" };\n" +" }\n" +"\n" +" public override string _GetSaveExtension()\n" +" {\n" +" return \"mesh\";\n" +" }\n" +"\n" +" public override string _GetResourceType()\n" +" {\n" +" return \"Mesh\";\n" +" }\n" +"\n" +" public override int _GetPresetCount()\n" +" {\n" +" return 1;\n" +" }\n" +"\n" +" public override string _GetPresetName(int presetIndex)\n" +" {\n" +" return \"Default\";\n" +" }\n" +"\n" +" public override Godot.Collections.Array<Godot.Collections.Dictionary> " +"_GetImportOptions(string path, int presetIndex)\n" +" {\n" +" return new Godot.Collections.Array<Godot.Collections.Dictionary>\n" +" {\n" +" new Godot.Collections.Dictionary\n" +" {\n" +" { \"name\", \"myOption\" },\n" +" { \"defaultValue\", false },\n" +" }\n" +" };\n" +" }\n" +"\n" +" public override int _Import(string sourceFile, string savePath, Godot." +"Collections.Dictionary options, Godot.Collections.Array<string> " +"platformVariants, Godot.Collections.Array<string> genFiles)\n" +" {\n" +" using var file = FileAccess.Open(sourceFile, FileAccess.ModeFlags." +"Read);\n" +" if (file.GetError() != Error.Ok)\n" +" {\n" +" return (int)Error.Failed;\n" +" }\n" +"\n" +" var mesh = new ArrayMesh();\n" +" // Fill the Mesh with data read in \"file\", left as an exercise to " +"the reader.\n" +" string filename = $\"{savePath}.{_GetSaveExtension()}\";\n" +" return (int)ResourceSaver.Save(mesh, filename);\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"To use [EditorImportPlugin], register it using the [method EditorPlugin." +"add_import_plugin] method first." +msgstr "" +"[EditorImportPlugin] 提供了一种方法来扩展编辑器的资源导入功能。使用它们从自定" +"义文件中导入资源,或为编辑器的现有导入器提供替代方案。\n" +"EditorImportPlugin 通过与特定的文件扩展名和资源类型相关联来工作。请参见 " +"[method _get_recognized_extensions] 和 [method _get_resource_type]。它们可以" +"选择性地指定一些影响导入过程的导入预设。EditorImportPlugin 负责创建资源并将它" +"们保存在 [code].godot/imported[/code] 目录中(参见 [member ProjectSettings." +"application/config/use_hidden_project_data_directory])。\n" +"下面是一个 EditorImportPlugin 的示例,它从扩展名为“.special”或“.spec”的文件中" +"导入 [Mesh]:\n" +"[codeblocks]\n" +"[gdscript]\n" +"@tool\n" +"extends EditorImportPlugin\n" +"\n" +"func _get_importer_name():\n" +" return \"my.special.plugin\"\n" +"\n" +"func _get_visible_name():\n" +" return \"Special Mesh\"\n" +"\n" +"func _get_recognized_extensions():\n" +" return [\"special\", \"spec\"]\n" +"\n" +"func _get_save_extension():\n" +" return \"mesh\"\n" +"\n" +"func _get_resource_type():\n" +" return \"Mesh\"\n" +"\n" +"func _get_preset_count():\n" +" return 1\n" +"\n" +"func _get_preset_name(i):\n" +" return \"Default\"\n" +"\n" +"func _get_import_options(i):\n" +" return [{\"name\": \"my_option\", \"default_value\": false}]\n" +"\n" +"func _import(source_file, save_path, options, platform_variants, " +"gen_files):\n" +" var file = FileAccess.open(source_file, FileAccess.READ)\n" +" if file == null:\n" +" return FAILED\n" +" var mesh = ArrayMesh.new()\n" +" # 使用从“file”中读取的数据填充 Mesh,留作读者的练习。\n" +"\n" +" var filename = save_path + \".\" + _get_save_extension()\n" +" return ResourceSaver.save(mesh, filename)\n" +"[/gdscript]\n" +"[csharp]\n" +"using Godot;\n" +"\n" +"public partial class MySpecialPlugin : EditorImportPlugin\n" +"{\n" +" public override string _GetImporterName()\n" +" {\n" +" return \"my.special.plugin\";\n" +" }\n" +"\n" +" public override string _GetVisibleName()\n" +" {\n" +" return \"Special Mesh\";\n" +" }\n" +"\n" +" public override string[] _GetRecognizedExtensions()\n" +" {\n" +" return new string[] { \"special\", \"spec\" };\n" +" }\n" +"\n" +" public override string _GetSaveExtension()\n" +" {\n" +" return \"mesh\";\n" +" }\n" +"\n" +" public override string _GetResourceType()\n" +" {\n" +" return \"Mesh\";\n" +" }\n" +"\n" +" public override int _GetPresetCount()\n" +" {\n" +" return 1;\n" +" }\n" +"\n" +" public override string _GetPresetName(int presetIndex)\n" +" {\n" +" return \"Default\";\n" +" }\n" +"\n" +" public override Godot.Collections.Array<Godot.Collections.Dictionary> " +"_GetImportOptions(string path, int presetIndex)\n" +" {\n" +" return new Godot.Collections.Array<Godot.Collections.Dictionary>\n" +" {\n" +" new Godot.Collections.Dictionary\n" +" {\n" +" { \"name\", \"myOption\" },\n" +" { \"defaultValue\", false },\n" +" }\n" +" };\n" +" }\n" +"\n" +" public override int _Import(string sourceFile, string savePath, Godot." +"Collections.Dictionary options, Godot.Collections.Array<string> " +"platformVariants, Godot.Collections.Array<string> genFiles)\n" +" {\n" +" using var file = FileAccess.Open(sourceFile, FileAccess.ModeFlags." +"Read);\n" +" if (file.GetError() != Error.Ok)\n" +" {\n" +" return (int)Error.Failed;\n" +" }\n" +"\n" +" var mesh = new ArrayMesh();\n" +" // 使用从“file”中读取的数据填充 Mesh,留作读者的练习\n" +" string filename = $\"{savePath}.{_GetSaveExtension()}\";\n" +" return (int)ResourceSaver.Save(mesh, filename);\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"要使用 [EditorImportPlugin],请先使用 [method EditorPlugin." +"add_import_plugin] 方法注册它。" + msgid "Import plugins" msgstr "导入插件" @@ -9779,6 +22997,14 @@ msgstr "" msgid "Gets the unique name of the importer." msgstr "获取导入者的唯一名称。" +msgid "" +"Gets the number of initial presets defined by the plugin. Use [method " +"_get_import_options] to get the default options for the preset and [method " +"_get_preset_name] to get the name of the preset." +msgstr "" +"获取插件定义的初始预设的数量。使用 [method _get_import_options] 获取预设的默" +"认选项,使用 [method _get_preset_name] 获取预设的名称。" + msgid "Gets the name of the options preset at this index." msgstr "获取该索引处预设的选项名称。" @@ -9804,15 +23030,107 @@ msgstr "" "[code]\"Animation\"[/code]。" msgid "" +"Gets the extension used to save this resource in the [code].godot/imported[/" +"code] directory (see [member ProjectSettings.application/config/" +"use_hidden_project_data_directory])." +msgstr "" +"获取用于在 [code].godot/imported[/code] 目录中保存此资源的扩展名(请参阅 " +"[member ProjectSettings.application/config/" +"use_hidden_project_data_directory])。" + +msgid "" "Gets the name to display in the import window. You should choose this name " "as a continuation to \"Import as\", e.g. \"Import as Special Mesh\"." msgstr "" "获取在导入窗口中显示的名称。你应该选择这个名字作为“导入为”的延续,例如“导入" "为 Special Mesh”。" +msgid "" +"Imports [param source_file] into [param save_path] with the import [param " +"options] specified. The [param platform_variants] and [param gen_files] " +"arrays will be modified by this function.\n" +"This method must be overridden to do the actual importing work. See this " +"class' description for an example of overriding this method." +msgstr "" +"使用指定的导入选项 [code]options[/code] 将 [code]source_file[/code] 导入到 " +"[code]save_path[/code] 中。此函数将修改[code]platform_variants[/code] 和 " +"[code]gen_files[/code] 数组。\n" +"必须重写这个方法才能完成实际的导入工作。参阅本类的描述以了解如何重写该方法。" + msgid "A control used to edit properties of an object." msgstr "用于编辑对象属性的控件。" +msgid "" +"This is the control that implements property editing in the editor's " +"Settings dialogs, the Inspector dock, etc. To get the [EditorInspector] used " +"in the editor's Inspector dock, use [method EditorInterface.get_inspector].\n" +"[EditorInspector] will show properties in the same order as the array " +"returned by [method Object.get_property_list].\n" +"If a property's name is path-like (i.e. if it contains forward slashes), " +"[EditorInspector] will create nested sections for \"directories\" along the " +"path. For example, if a property is named [code]highlighting/gdscript/" +"node_path_color[/code], it will be shown as \"Node Path Color\" inside the " +"\"GDScript\" section nested inside the \"Highlighting\" section.\n" +"If a property has [constant PROPERTY_USAGE_GROUP] usage, it will group " +"subsequent properties whose name starts with the property's hint string. The " +"group ends when a property does not start with that hint string or when a " +"new group starts. An empty group name effectively ends the current group. " +"[EditorInspector] will create a top-level section for each group. For " +"example, if a property with group usage is named [code]Collide With[/code] " +"and its hint string is [code]collide_with_[/code], a subsequent " +"[code]collide_with_area[/code] property will be shown as \"Area\" inside the " +"\"Collide With\" section. There is also a special case: when the hint string " +"contains the name of a property, that property is grouped too. This is " +"mainly to help grouping properties like [code]font[/code], [code]font_color[/" +"code] and [code]font_size[/code] (using the hint string [code]font_[/" +"code]).\n" +"If a property has [constant PROPERTY_USAGE_SUBGROUP] usage, a subgroup will " +"be created in the same way as a group, and a second-level section will be " +"created for each subgroup.\n" +"[b]Note:[/b] Unlike sections created from path-like property names, " +"[EditorInspector] won't capitalize the name for sections created from " +"groups. So properties with group usage usually use capitalized names instead " +"of snake_cased names." +msgstr "" +"这是在编辑器的设置对话框、检查器停靠面板等中实现属性编辑的控件。要获取在编辑" +"器的检查器停靠面板中使用的 [EditorInspector],请使用 [method EditorInterface." +"get_inspector]。\n" +"[EditorInspector] 将按照与 [method Object.get_property_list] 返回的数组相同的" +"顺序显示属性。\n" +"如果属性的名称类似于路径(即如果它包含正斜杠),[EditorInspector] 将沿路径为" +"各个“目录”创建嵌套的部分。例如,如果属性名为 [code]highlighting/gdscript/" +"node_path_color[/code],则它将在嵌套在“Highlighting”部分内的“GDScript”部分中" +"显示为“Node Path Color”。\n" +"如果某个属性具有 [constant PROPERTY_USAGE_GROUP] 用法,它将对名称以该属性的提" +"示字符串开头的后续属性进行分组。当属性不以该提示字符串开头或新组开始时,该组" +"结束。空组名有效地结束了当前组。[EditorInspector] 将为每个组创建一个顶级部" +"分。例如,如果具有组用法的属性名为 [code]Collide With[/code],其提示字符串为 " +"[code]collide_with_[/code],则后续的 [code]collide_with_area[/code] 属性将显" +"示为 “Collide With” 部分内的 “Area”。还有一种特殊情况:当提示字符串包含属性名" +"称时,该属性也被分组。这主要是为了帮助分组属性,如 [code]font[/code]、" +"[code]font_color[/code] 和 [code]font_size[/code](使用提示字符串 " +"[code]font_[/code])。\n" +"如果属性具有 [constant PROPERTY_USAGE_SUBGROUP] 用法,则将以与组相同的方式创" +"建子组,并为每个子组创建一个二级部分。\n" +"[b]注意:[/b]与从类似路径的属性名称创建的部分不同,[EditorInspector] 不会将从" +"组创建的部分的名称的首字母大写。因此,具有组用法的属性通常使用首字母大写的名" +"称而不是蛇形名称。" + +msgid "Gets the path of the currently selected property." +msgstr "获取当前选定属性的路径。" + +msgid "Emitted when the object being edited by the inspector has changed." +msgstr "当检查器正在编辑的对象发生更改时触发。" + +msgid "" +"Emitted when the Edit button of an [Object] has been pressed in the " +"inspector. This is mainly used in the remote scene tree Inspector." +msgstr "" +"在检查器中按下 [Object] 的“编辑”按钮时发出。这主要用于远程场景树检查器。" + +msgid "Emitted when a property is removed from the inspector." +msgstr "当从检查器中移除属性时触发。" + msgid "Emitted when a property is edited in the inspector." msgstr "在检查器中编辑属性时触发。" @@ -9847,6 +23165,36 @@ msgid "" msgstr "" "在检查器中编辑需要重启应用的属性时触发。仅在项目设置和编辑器设置中使用。" +msgid "Plugin for adding custom property editors on the inspector." +msgstr "插件,用于在检查器上添加自定义属性编辑器。" + +msgid "" +"[EditorInspectorPlugin] allows adding custom property editors to " +"[EditorInspector].\n" +"When an object is edited, the [method _can_handle] function is called and " +"must return [code]true[/code] if the object type is supported.\n" +"If supported, the function [method _parse_begin] will be called, allowing to " +"place custom controls at the beginning of the class.\n" +"Subsequently, the [method _parse_category] and [method _parse_property] are " +"called for every category and property. They offer the ability to add custom " +"controls to the inspector too.\n" +"Finally, [method _parse_end] will be called.\n" +"On each of these calls, the \"add\" functions can be called.\n" +"To use [EditorInspectorPlugin], register it using the [method EditorPlugin." +"add_inspector_plugin] method first." +msgstr "" +"[EditorInspectorPlugin] 允许将自定义属性编辑器添加到 [EditorInspector]。\n" +"当编辑对象时,会调用 [method _can_handle] 函数,如果支持该对象类型,则必须返" +"回 [code]true[/code]。\n" +"如果支持,函数 [method _parse_begin] 将被调用,允许在类的开头放置自定义控" +"件。\n" +"随后,为每个类别和属性调用 [method _parse_category] 和 [method " +"_parse_property]。它们也提供了向检查器添加自定义控件的能力。\n" +"最后,将调用 [method _parse_end]。\n" +"在这些调用中的每一个,都可以调用“add”函数。\n" +"要使用 [EditorInspectorPlugin],首先使用 [method EditorPlugin." +"add_inspector_plugin] 方法注册它。" + msgid "Inspector plugins" msgstr "检查器插件" @@ -9913,6 +23261,9 @@ msgstr "返回在 [FileSystemDock] 中查看的当前路径。" msgid "Returns the edited (current) scene's root [Node]." msgstr "返回正在编辑的(当前)场景的根 [Node]。" +msgid "Returns the [EditorPaths] singleton." +msgstr "返回 [EditorPaths] 单例。" + msgid "" "Returns the actual scale of the editor UI ([code]1.0[/code] being 100% " "scale). This can be used to adjust position and dimensions of the UI added " @@ -9994,6 +23345,21 @@ msgid "Reloads the scene at the given path." msgstr "重新加载给定路径的场景。" msgid "" +"Restarts the editor. This closes the editor and then opens the same project. " +"If [param save] is [code]true[/code], the project will be saved before " +"restarting." +msgstr "" +"重启编辑器。编辑器会关闭,然后再打开相同项目。如果 [param save] 为 " +"[code]true[/code],则重启前会保存项目。" + +msgid "" +"Saves the scene. Returns either [constant OK] or [constant ERR_CANT_CREATE]." +msgstr "保存场景。返回 [constant OK] 或 [constant ERR_CANT_CREATE]。" + +msgid "Saves the scene as a file at [param path]." +msgstr "将场景保存为 [param path] 处的文件。" + +msgid "" "Sets the enabled status of a plugin. The plugin name is the same as its " "directory name." msgstr "设置插件的启用状态。插件名称与其目录名称相同。" @@ -10008,10 +23374,26 @@ msgstr "" "如果为 [code]true[/code],将启用专注模式,该模式会隐藏侧边面板,增加主视图的" "可用空间。" +msgid "Gizmo for editing Node3D objects." +msgstr "用于编辑 Node3D 对象的小工具。" + +msgid "" +"Gizmo that is used for providing custom visualization and editing (handles " +"and subgizmos) for Node3D objects. Can be overridden to create custom " +"gizmos, but for simple gizmos creating a [EditorNode3DGizmoPlugin] is " +"usually recommended." +msgstr "" +"小工具可用于为 Node3D 对象提供自定义可视化和编辑功能(手柄和子工具)。覆盖后" +"可以创建自定义小工具,但对于简单的小工具而言,通常建议创建 " +"[EditorNode3DGizmoPlugin]。" + msgid "" "Removes everything in the gizmo including meshes, collisions and handles." msgstr "移除小工具中的一切,包括网格、碰撞和手柄。" +msgid "Returns the [Node3D] node associated with this gizmo." +msgstr "返回与这个小工具关联的 [Node3D] 节点。" + msgid "" "Sets the gizmo's hidden state. If [code]true[/code], the gizmo will be " "hidden. If [code]false[/code], it will be shown." @@ -10019,6 +23401,12 @@ msgstr "" "设置该小工具的隐藏状态。如果为 [code]true[/code],则该小工具将被隐藏。如果为 " "[code]false[/code] 则会显示。" +msgid "Used by the editor to define Node3D gizmo types." +msgstr "被编辑器用来定义 Node3D 小工具类型。" + +msgid "Node3D gizmo plugins" +msgstr "Node3D 小工具插件" + msgid "" "Override this method to provide the name that will appear in the gizmo " "visibility menu." @@ -10031,6 +23419,11 @@ msgstr "" "将新材质添加到插件的内部插件列表中。然后可以使用[method get_material]访问它。" "不会该被覆盖。" +msgid "" +"Editor-only singleton that returns paths to various OS-specific data folders " +"and files." +msgstr "编辑器专用单例,返回特定于操作系统的各种数据文件夹和文件的路径。" + msgid "Used by the editor to extend its functionality." msgstr "由编辑器使用,用于扩展其功能。" @@ -10043,6 +23436,9 @@ msgstr "" "编辑器使用插件来扩展功能。最常见的插件类型是编辑给定的节点或资源类型、导入插" "件和导出插件。另请参阅 [EditorScript] 向编辑器添加函数。" +msgid "Editor plugins documentation index" +msgstr "编辑器插件文档索引" + msgid "" "This method is called when the editor is about to save the project, switch " "to another tab, etc. It asks the plugin to apply any pending state changes " @@ -10073,6 +23469,329 @@ msgid "" msgstr "当用户在项目设置窗口的插件选项卡中启用[EditorPlugin]时,由引擎调用。" msgid "" +"Called by the engine when the 3D editor's viewport is updated. Use the " +"[code]overlay[/code] [Control] for drawing. You can update the viewport " +"manually by calling [method update_overlays].\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _forward_3d_draw_over_viewport(overlay):\n" +" # Draw a circle at cursor position.\n" +" overlay.draw_circle(overlay.get_local_mouse_position(), 64)\n" +"\n" +"func _forward_3d_gui_input(camera, event):\n" +" if event is InputEventMouseMotion:\n" +" # Redraw viewport when cursor is moved.\n" +" update_overlays()\n" +" return EditorPlugin.AFTER_GUI_INPUT_STOP\n" +" return EditorPlugin.AFTER_GUI_INPUT_PASS\n" +"[/gdscript]\n" +"[csharp]\n" +"public override void _Forward3DDrawOverViewport(Control viewportControl)\n" +"{\n" +" // Draw a circle at cursor position.\n" +" viewportControl.DrawCircle(viewportControl.GetLocalMousePosition(), 64, " +"Colors.White);\n" +"}\n" +"\n" +"public override EditorPlugin.AfterGuiInput _Forward3DGuiInput(Camera3D " +"viewportCamera, InputEvent @event)\n" +"{\n" +" if (@event is InputEventMouseMotion)\n" +" {\n" +" // Redraw viewport when cursor is moved.\n" +" UpdateOverlays();\n" +" return EditorPlugin.AfterGuiInput.Stop;\n" +" }\n" +" return EditorPlugin.AfterGuiInput.Pass;\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"当 3D 编辑器的视口更新时由引擎调用。使用 [code]overlay[/code] [Control] 进行" +"绘制。您可以通过调用 [method update_overlays] 手动更新视口。\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _forward_3d_draw_over_viewport(overlay):\n" +" # 在光标位置画一个圆。\n" +" overlay.draw_circle(overlay.get_local_mouse_position(), 64)\n" +"\n" +"func _forward_3d_gui_input(camera, event):\n" +" if event is InputEventMouseMotion:\n" +" # 当光标被移动时,重绘视口。\n" +" update_overlays()\n" +" return EditorPlugin.AFTER_GUI_INPUT_STOP\n" +" return EditorPlugin.AFTER_GUI_INPUT_PASS\n" +"[/gdscript]\n" +"[csharp]\n" +"public override void _Forward3DDrawOverViewport(Control viewportControl)\n" +"{\n" +" // 在光标位置画一个圆。\n" +" viewportControl.DrawCircle(viewportControl.GetLocalMousePosition(), 64, " +"Colors.White);\n" +"}\n" +"\n" +"public override EditorPlugin.AfterGuiInput _Forward3DGuiInput(Camera3D " +"viewportCamera, InputEvent @event)\n" +"{\n" +" if (@event is InputEventMouseMotion)\n" +" {\n" +" // 当光标被移动时,重绘视口。\n" +" UpdateOverlays();\n" +" return EditorPlugin.AfterGuiInput.Stop;\n" +" }\n" +" return EditorPlugin.AfterGuiInput.Pass;\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Called when there is a root node in the current edited scene, [method " +"_handles] is implemented, and an [InputEvent] happens in the 3D viewport. " +"The return value decides whether the [InputEvent] is consumed or forwarded " +"to other [EditorPlugin]s. See [enum AfterGUIInput] for options.\n" +"[b]Example:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"# Prevents the InputEvent from reaching other Editor classes.\n" +"func _forward_3d_gui_input(camera, event):\n" +" return EditorPlugin.AFTER_GUI_INPUT_STOP\n" +"[/gdscript]\n" +"[csharp]\n" +"// Prevents the InputEvent from reaching other Editor classes.\n" +"public override EditorPlugin.AfterGuiInput _Forward3DGuiInput(Camera3D " +"camera, InputEvent @event)\n" +"{\n" +" return EditorPlugin.AfterGuiInput.Stop;\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"Must [code]return EditorPlugin.AFTER_GUI_INPUT_PASS[/code] in order to " +"forward the [InputEvent] to other Editor classes.\n" +"[b]Example:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"# Consumes InputEventMouseMotion and forwards other InputEvent types.\n" +"func _forward_3d_gui_input(camera, event):\n" +" return EditorPlugin.AFTER_GUI_INPUT_STOP if event is " +"InputEventMouseMotion else EditorPlugin.AFTER_GUI_INPUT_PASS\n" +"[/gdscript]\n" +"[csharp]\n" +"// Consumes InputEventMouseMotion and forwards other InputEvent types.\n" +"public override EditorPlugin.AfterGuiInput _Forward3DGuiInput(Camera3D " +"camera, InputEvent @event)\n" +"{\n" +" return @event is InputEventMouseMotion ? EditorPlugin.AfterGuiInput." +"Stop : EditorPlugin.AfterGuiInput.Pass;\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"在当前编辑的场景中有根节点时调用,实现 [method _handles] 并在3D视口中产生 " +"[InputEvent]。返回值决定 [InputEvent] 是被消费还是转发给其他 [EditorPlugin]。" +"有关选项,请参阅 [enum AfterGUIInput]。\n" +"[b]示例:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"# 阻止 InputEvent 到达其他编辑类。\n" +"func _forward_3d_gui_input(camera, event):\n" +" return EditorPlugin.AFTER_GUI_INPUT_STOP\n" +"[/gdscript]\n" +"[csharp]\n" +"// 阻止 InputEvent 到达其他编辑类。\n" +"public override EditorPlugin.AfterGuiInput _Forward3DGuiInput(Camera3D " +"camera, InputEvent @event)\n" +"{\n" +" return EditorPlugin.AfterGuiInput.Stop;\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"必须为 [code]return EditorPlugin.AFTER_GUI_INPUT_PASS[/code] 以便将 " +"[InputEvent] 转发给其他编辑器类。\n" +"[b]示例:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"# 消耗 InputEventMouseMotion 并转发其他 InputEvent 类型。\n" +"func _forward_3d_gui_input(camera, event):\n" +" return EditorPlugin.AFTER_GUI_INPUT_STOP if event is " +"InputEventMouseMotion else EditorPlugin.AFTER_GUI_INPUT_PASS\n" +"[/gdscript]\n" +"[csharp]\n" +"// 消耗 InputEventMouseMotion 并转发其他 InputEvent 类型。\n" +"public override EditorPlugin.AfterGuiInput _Forward3DGuiInput(Camera3D " +"camera, InputEvent @event)\n" +"{\n" +" return @event is InputEventMouseMotion ? EditorPlugin.AfterGuiInput." +"Stop : EditorPlugin.AfterGuiInput.Pass;\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Called by the engine when the 2D editor's viewport is updated. Use the " +"[code]overlay[/code] [Control] for drawing. You can update the viewport " +"manually by calling [method update_overlays].\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _forward_canvas_draw_over_viewport(overlay):\n" +" # Draw a circle at cursor position.\n" +" overlay.draw_circle(overlay.get_local_mouse_position(), 64, Color." +"WHITE)\n" +"\n" +"func _forward_canvas_gui_input(event):\n" +" if event is InputEventMouseMotion:\n" +" # Redraw viewport when cursor is moved.\n" +" update_overlays()\n" +" return true\n" +" return false\n" +"[/gdscript]\n" +"[csharp]\n" +"public override void _ForwardCanvasDrawOverViewport(Control " +"viewportControl)\n" +"{\n" +" // Draw a circle at cursor position.\n" +" viewportControl.DrawCircle(viewportControl.GetLocalMousePosition(), 64, " +"Colors.White);\n" +"}\n" +"\n" +"public override bool _ForwardCanvasGuiInput(InputEvent @event)\n" +"{\n" +" if (@event is InputEventMouseMotion)\n" +" {\n" +" // Redraw viewport when cursor is moved.\n" +" UpdateOverlays();\n" +" return true;\n" +" }\n" +" return false;\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"当 2D 编辑器的视口更新时由引擎调用。使用 [code]overlay[/code] [Control] 进行" +"绘制。您可以通过调用 [method update_overlays] 手动更新视口。\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _forward_canvas_draw_over_viewport(overlay):\n" +" # 在光标位置画一个圆。\n" +" overlay.draw_circle(overlay.get_local_mouse_position(), 64, Color." +"WHITE)\n" +"\n" +"func _forward_canvas_gui_input(event):\n" +" if event is InputEventMouseMotion:\n" +" # 当光标被移动时,重绘视口。\n" +" update_overlays()\n" +" return true\n" +" return false\n" +"[/gdscript]\n" +"[csharp]\n" +"public override void _ForwardCanvasDrawOverViewport(Control " +"viewportControl)\n" +"{\n" +" // 在光标位置画一个圆。\n" +" viewportControl.DrawCircle(viewportControl.GetLocalMousePosition(), 64, " +"Colors.White);\n" +"}\n" +"\n" +"public override bool _ForwardCanvasGuiInput(InputEvent @event)\n" +"{\n" +" if (@event is InputEventMouseMotion)\n" +" {\n" +" // 当光标被移动时,重绘视口。\n" +" UpdateOverlays();\n" +" return true;\n" +" }\n" +" return false;\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Called when there is a root node in the current edited scene, [method " +"_handles] is implemented and an [InputEvent] happens in the 2D viewport. " +"Intercepts the [InputEvent], if [code]return true[/code] [EditorPlugin] " +"consumes the [param event], otherwise forwards [param event] to other Editor " +"classes.\n" +"[b]Example:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"# Prevents the InputEvent from reaching other Editor classes.\n" +"func _forward_canvas_gui_input(event):\n" +" return true\n" +"[/gdscript]\n" +"[csharp]\n" +"// Prevents the InputEvent from reaching other Editor classes.\n" +"public override bool ForwardCanvasGuiInput(InputEvent @event)\n" +"{\n" +" return true;\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"Must [code]return false[/code] in order to forward the [InputEvent] to other " +"Editor classes.\n" +"[b]Example:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"# Consumes InputEventMouseMotion and forwards other InputEvent types.\n" +"func _forward_canvas_gui_input(event):\n" +" if (event is InputEventMouseMotion):\n" +" return true\n" +" return false\n" +"[/gdscript]\n" +"[csharp]\n" +"// Consumes InputEventMouseMotion and forwards other InputEvent types.\n" +"public override bool _ForwardCanvasGuiInput(InputEvent @event)\n" +"{\n" +" if (@event is InputEventMouseMotion)\n" +" {\n" +" return true;\n" +" }\n" +" return false;\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"在当前编辑的场景中有根节点时调用,实现 [method _handles] 并在2D视口中产生 " +"[InputEvent]。拦截 [InputEvent],如果 [code]return true[/code] " +"[EditorPlugin] 消耗 [param event],否则将 [param event] 转发给其他编辑器" +"类。\n" +"[b]示例:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"# 阻止 InputEvent 到达其他编辑类。\n" +"func _forward_canvas_gui_input(event):\n" +" return true\n" +"[/gdscript]\n" +"[csharp]\n" +"// 阻止 InputEvent 到达其他编辑类。\n" +"public override bool ForwardCanvasGuiInput(InputEvent @event)\n" +"{\n" +" return true;\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"必须 [code]return false[/code] 才能将 [InputEvent] 转发到其他编辑器类。\n" +"[b]示例:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"# 消耗 InputEventMouseMotion 并转发其他 InputEvent 类型。\n" +"func _forward_canvas_gui_input(event):\n" +" if (event is InputEventMouseMotion):\n" +" return true\n" +" return false\n" +"[/gdscript]\n" +"[csharp]\n" +"// 消耗 InputEventMouseMotion 并转发其他 InputEvent 类型。\n" +"public override bool _ForwardCanvasGuiInput(InputEvent @event)\n" +"{\n" +" if (@event is InputEventMouseMotion)\n" +" {\n" +" return true;\n" +" }\n" +" return false;\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" "This is for editors that edit script-based objects. You can return a list of " "breakpoints in the format ([code]script:line[/code]), for example: " "[code]res://path_to_script.gd:25[/code]." @@ -10081,6 +23800,61 @@ msgstr "" "line[/code]),例如:[code]res://path_to_script.gd:25[/code]。" msgid "" +"Override this method in your plugin to return a [Texture2D] in order to give " +"it an icon.\n" +"For main screen plugins, this appears at the top of the screen, to the right " +"of the \"2D\", \"3D\", \"Script\", and \"AssetLib\" buttons.\n" +"Ideally, the plugin icon should be white with a transparent background and " +"16x16 pixels in size.\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _get_plugin_icon():\n" +" # You can use a custom icon:\n" +" return preload(\"res://addons/my_plugin/my_plugin_icon.svg\")\n" +" # Or use a built-in icon:\n" +" return get_editor_interface().get_base_control()." +"get_theme_icon(\"Node\", \"EditorIcons\")\n" +"[/gdscript]\n" +"[csharp]\n" +"public override Texture2D _GetPluginIcon()\n" +"{\n" +" // You can use a custom icon:\n" +" return ResourceLoader.Load<Texture2D>(\"res://addons/my_plugin/" +"my_plugin_icon.svg\");\n" +" // Or use a built-in icon:\n" +" return GetEditorInterface().GetBaseControl().GetThemeIcon(\"Node\", " +"\"EditorIcons\");\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"在您的插件中覆盖该方法以返回一个 [Texture2D] 以便为插件提供一个图标。\n" +"对于主界面插件,它出现在屏幕顶部,“2D”、“3D”、“脚本”和 “AssetLib” 按钮的右" +"侧。\n" +"理想情况下,插件图标应为透明背景的白色,大小为 16x16 像素。\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _get_plugin_icon():\n" +" # 你可以使用一个自定义的图标:\n" +" return preload(\"res://addons/my_plugin/my_plugin_icon.svg\")\n" +" # 或者使用一个内置的图标:\n" +" return get_editor_interface().get_base_control()." +"get_theme_icon(\"Node\", \"EditorIcons\")\n" +"[/gdscript]\n" +"[csharp]\n" +"public override Texture2D _GetPluginIcon()\n" +"{\n" +" // 你可以使用一个自定义的图标:\n" +" return ResourceLoader.Load<Texture2D>(\"res://addons/my_plugin/" +"my_plugin_icon.svg\");\n" +" // 或者使用一个内置的图标:\n" +" return GetEditorInterface().GetBaseControl().GetThemeIcon(\"Node\", " +"\"EditorIcons\");\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" "Override this method in your plugin to provide the name of the plugin when " "displayed in the Godot editor.\n" "For main screen plugins, this appears at the top of the screen, to the right " @@ -10148,6 +23922,33 @@ msgstr "" "用[method Node.queue_free]释放它。" msgid "" +"Adds a custom type, which will appear in the list of nodes or resources. An " +"icon can be optionally passed.\n" +"When a given node or resource is selected, the base type will be " +"instantiated (e.g. \"Node3D\", \"Control\", \"Resource\"), then the script " +"will be loaded and set to this object.\n" +"[b]Note:[/b] The base type is the base engine class which this type's class " +"hierarchy inherits, not any custom type parent classes.\n" +"You can use the virtual method [method _handles] to check if your custom " +"object is being edited by checking the script or using the [code]is[/code] " +"keyword.\n" +"During run-time, this will be a simple object with a script so this function " +"does not need to be called then.\n" +"[b]Note:[/b] Custom types added this way are not true classes. They are just " +"a helper to create a node with specific script." +msgstr "" +"添加一个自定义类型,它将出现在节点或资源的列表中。可以选择传递一个图标。\n" +"选择给定的节点或资源时,将实例化基本类型(例" +"如“Node3D”、“Control”、“Resource”),然后脚本将被加载并将其设置为该对象。\n" +"[b]注意:[/b]基本类型是该类型的类层次继承的基本引擎类,而不是任何自定义类型的" +"父类。\n" +"您可以使用虚拟方法 [method _handles] 通过检查脚本或使用 [code]is[/code] 关键" +"字来检查您的自定义对象是否正在被编辑。\n" +"在运行时,这将是一个带有脚本的简单对象,因此不需要调用该函数。\n" +"[b]注意:[/b]以这种方式添加的自定义类型不是真正的类。它们只是使用特定脚本创建" +"节点的助手。" + +msgid "" "Registers a new [EditorExportPlugin]. Export plugins are used to perform " "tasks when the project is being exported.\n" "See [method add_inspector_plugin] for an example of how to register a plugin." @@ -10157,11 +23958,31 @@ msgstr "" "参见 [method add_inspector_plugin],了解如何注册一个插件的例子。" msgid "" +"Registers a new [EditorImportPlugin]. Import plugins are used to import " +"custom and unsupported assets as a custom [Resource] type.\n" +"If [param first_priority] is [code]true[/code], the new import plugin is " +"inserted first in the list and takes precedence over pre-existing plugins.\n" +"[b]Note:[/b] If you want to import custom 3D asset formats use [method " +"add_scene_format_importer_plugin] instead.\n" +"See [method add_inspector_plugin] for an example of how to register a plugin." +msgstr "" +"注册一个新的 [EditorImportPlugin]。导入插件用于将自定义的和不受支持的资产,作" +"为一种自定义 [Resource] 类型导入。\n" +"如果 [param first_priority] 是 [code]true[/code],则该新的导入插件被首先插入" +"列表中,并优先于预先存在的插件。\n" +"[b]注意:[/b]如果要导入自定义 3D 资产格式,请改用 [method " +"add_scene_format_importer_plugin]。\n" +"有关如何注册插件的示例,请参见 [method add_inspector_plugin]。" + +msgid "" "Returns the [EditorInterface] object that gives you control over Godot " "editor's window and its functionalities." msgstr "" "返回 [EditorInterface] 对象,该对象使您可以控制 Godot 编辑器的窗口及其功能。" +msgid "Returns the [PopupMenu] under [b]Scene > Export As...[/b]." +msgstr "返回[b]场景 > 另存为...[/b] 下的 [PopupMenu]。" + msgid "" "Gets the Editor's dialog used for making scripts.\n" "[b]Note:[/b] Users can configure it before use.\n" @@ -10188,6 +24009,9 @@ msgstr "使底部面板中的一个特定项目可见。" msgid "Queue save the project's editor layout." msgstr "排队保存项目的编辑器布局。" +msgid "Removes an Autoload [param name] from the list." +msgstr "从列表中删除自动加载 [param name]。" + msgid "" "Removes the control from the bottom panel. You have to manually [method Node." "queue_free] the control." @@ -10215,6 +24039,12 @@ msgstr "删除由 [method add_import_plugin] 注册的导入插件。" msgid "Removes an inspector plugin registered by [method add_import_plugin]" msgstr "删除由 [method add_import_plugin] 注册的检查器插件" +msgid "Removes a gizmo plugin registered by [method add_node_3d_gizmo_plugin]." +msgstr "删除由 [method add_node_3d_gizmo_plugin] 注册的小工具插件。" + +msgid "Removes a menu [param name] from [b]Project > Tools[/b]." +msgstr "从[b]项目 > 工具[/b]中移除菜单 [param name]。" + msgid "" "Emitted when user changes the workspace ([b]2D[/b], [b]3D[/b], [b]Script[/" "b], [b]AssetLib[/b]). Also works with custom screens defined by plugins." @@ -10235,8 +24065,74 @@ msgid "" "scene." msgstr "当用户关闭场景时触发。参数是关闭场景的文件路径。" +msgid "Main editor toolbar, next to play buttons." +msgstr "主编辑器的工具栏,旁边是运行按钮。" + +msgid "The toolbar that appears when 3D editor is active." +msgstr "3D 编辑器处于活动状态时出现的工具栏。" + +msgid "Left sidebar of the 3D editor." +msgstr "3D 编辑器的左侧边栏。" + +msgid "Right sidebar of the 3D editor." +msgstr "3D 编辑器的右侧边栏。" + +msgid "Bottom panel of the 3D editor." +msgstr "3D 编辑器的底部面板。" + +msgid "The toolbar that appears when 2D editor is active." +msgstr "2D 编辑器处于活动状态时出现的工具条。" + +msgid "Left sidebar of the 2D editor." +msgstr "2D 编辑器的左侧边栏。" + +msgid "Right sidebar of the 2D editor." +msgstr "2D 编辑器的右侧边栏。" + +msgid "Bottom panel of the 2D editor." +msgstr "2D 编辑器的底部面板。" + +msgid "Bottom section of the inspector." +msgstr "检查器的底部。" + +msgid "Tab of Project Settings dialog, to the left of other tabs." +msgstr "项目设置对话框中的选项卡,在其他选项卡的左侧。" + +msgid "Tab of Project Settings dialog, to the right of other tabs." +msgstr "项目设置对话框中的选项卡,在其他选项卡的右侧。" + +msgid "Dock slot, left side, upper-left (empty in default layout)." +msgstr "左侧停靠槽的左上(默认布局中为空)。" + +msgid "Dock slot, left side, bottom-left (empty in default layout)." +msgstr "左侧停靠槽的左下(默认布局中为空)。" + +msgid "" +"Dock slot, left side, upper-right (in default layout includes Scene and " +"Import docks)." +msgstr "左侧停靠槽的右上(默认布局中为“场景”和“导入”面板)。" + +msgid "" +"Dock slot, left side, bottom-right (in default layout includes FileSystem " +"dock)." +msgstr "左侧停靠槽的右下(默认布局中为“文件系统”面板)。" + +msgid "Dock slot, right side, upper-left (empty in default layout)." +msgstr "右侧停靠槽的左上(默认布局中为空)。" + +msgid "Dock slot, right side, bottom-left (empty in default layout)." +msgstr "右侧停靠槽的左下(默认布局中为空)。" + +msgid "" +"Dock slot, right side, upper-right (in default layout includes Inspector, " +"Node and History docks)." +msgstr "右侧停靠槽的右上(默认布局中为“检查器”“节点”以及“历史”面板)。" + +msgid "Dock slot, right side, bottom-right (empty in default layout)." +msgstr "右侧停靠槽的右下(默认布局中为空)。" + msgid "Represents the size of the [enum DockSlot] enum." -msgstr "表示 [enum DockSlot] 枚举的大小。" +msgstr "代表 [enum DockSlot] 枚举的大小。" msgid "Custom control to edit properties for adding into the inspector." msgstr "自定义控件属性添加到检查器中。" @@ -10423,6 +24319,115 @@ msgid "Post-processes scenes after import." msgstr "导入后对场景进行后处理。" msgid "" +"Imported scenes can be automatically modified right after import by setting " +"their [b]Custom Script[/b] Import property to a [code]tool[/code] script " +"that inherits from this class.\n" +"The [method _post_import] callback receives the imported scene's root node " +"and returns the modified version of the scene. Usage example:\n" +"[codeblocks]\n" +"[gdscript]\n" +"@tool # Needed so it runs in editor.\n" +"extends EditorScenePostImport\n" +"\n" +"# This sample changes all node names.\n" +"# Called right after the scene is imported and gets the root node.\n" +"func _post_import(scene):\n" +" # Change all node names to \"modified_[oldnodename]\"\n" +" iterate(scene)\n" +" return scene # Remember to return the imported scene\n" +"\n" +"func iterate(node):\n" +" if node != null:\n" +" node.name = \"modified_\" + node.name\n" +" for child in node.get_children():\n" +" iterate(child)\n" +"[/gdscript]\n" +"[csharp]\n" +"using Godot;\n" +"\n" +"// This sample changes all node names.\n" +"// Called right after the scene is imported and gets the root node.\n" +"[Tool]\n" +"public partial class NodeRenamer : EditorScenePostImport\n" +"{\n" +" public override GodotObject _PostImport(Node scene)\n" +" {\n" +" // Change all node names to \"modified_[oldnodename]\"\n" +" Iterate(scene);\n" +" return scene; // Remember to return the imported scene\n" +" }\n" +"\n" +" public void Iterate(Node node)\n" +" {\n" +" if (node != null)\n" +" {\n" +" node.Name = $\"modified_{node.Name}\";\n" +" foreach (Node child in node.GetChildren())\n" +" {\n" +" Iterate(child);\n" +" }\n" +" }\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"通过将[b]自定义脚本[/b]导入属性设置为从此类继承的 [code]tool[/code] 脚本,可" +"以在导入后立即自动修改导入的场景。\n" +"[method _post_import] 回调接收导入场景的根节点,并返回场景的修改版本。使用示" +"例:\n" +"[codeblocks]\n" +"[gdscript]\n" +"@tool # 需要它才能在编辑器中运行。\n" +"extends EditorScenePostImport\n" +"\n" +"# 该示例更改所有节点名称。\n" +"# 在导入场景并获取根节点后立即调用。\n" +"func _post_import(scene):\n" +" # 将所有节点名称更改为 “modified_[oldnodename]”\n" +" iterate(scene)\n" +" return scene # 记得返回导入的场景\n" +"\n" +"func iterate(node):\n" +" if node != null:\n" +" node.name = \"modified_\" + node.name\n" +" for child in node.get_children():\n" +" iterate(child)\n" +"[/gdscript]\n" +"[csharp]\n" +"using Godot;\n" +"\n" +"// 该示例更改所有节点名称。\n" +"// 在导入场景并获取根节点后立即调用。\n" +"[Tool]\n" +"public partial class NodeRenamer : EditorScenePostImport\n" +"{\n" +" public override GodotObject _PostImport(Node scene)\n" +" {\n" +" // 将所有节点名称更改为 “modified_[oldnodename]”\n" +" Iterate(scene);\n" +" return scene; // 记得返回导入的场景\n" +" }\n" +"\n" +" public void Iterate(Node node)\n" +" {\n" +" if (node != null)\n" +" {\n" +" node.Name = $\"modified_{node.Name}\";\n" +" foreach (Node child in node.GetChildren())\n" +" {\n" +" Iterate(child);\n" +" }\n" +" }\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "Importing 3D scenes: Custom script" +msgstr "导入 3D 场景:自定义脚本" + +msgid "" "Called after the scene was imported. This method must return the modified " "version of the scene." msgstr "在场景被导入后触发。本方法必须返回场景的修改版本。" @@ -10435,6 +24440,74 @@ msgstr "返回导入的源文件路径(如[code]res://scene.dae[/code])。" msgid "Base script that can be used to add extension functions to the editor." msgstr "可用于为编辑器添加扩展功能的基础脚本。" +msgid "" +"Scripts extending this class and implementing its [method _run] method can " +"be executed from the Script Editor's [b]File > Run[/b] menu option (or by " +"pressing [kbd]Ctrl + Shift + X[/kbd]) while the editor is running. This is " +"useful for adding custom in-editor functionality to Godot. For more complex " +"additions, consider using [EditorPlugin]s instead.\n" +"[b]Note:[/b] Extending scripts need to have [code]tool[/code] mode enabled.\n" +"[b]Example script:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"@tool\n" +"extends EditorScript\n" +"\n" +"func _run():\n" +" print(\"Hello from the Godot Editor!\")\n" +"[/gdscript]\n" +"[csharp]\n" +"using Godot;\n" +"\n" +"[Tool]\n" +"public partial class HelloEditor : EditorScript\n" +"{\n" +" public override void _Run()\n" +" {\n" +" GD.Print(\"Hello from the Godot Editor!\");\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Note:[/b] The script is run in the Editor context, which means the output " +"is visible in the console window started with the Editor (stdout) instead of " +"the usual Godot [b]Output[/b] dock.\n" +"[b]Note:[/b] EditorScript is [RefCounted], meaning it is destroyed when " +"nothing references it. This can cause errors during asynchronous operations " +"if there are no references to the script." +msgstr "" +"扩展该类并实现其 [method _run] 方法的脚本可以在编辑器运行时通过脚本编辑器的" +"[b]文件 > 运行[/b]菜单选项(或按 [kbd]Ctrl + Shift + X[/kbd])执行。这对于向 " +"Godot 添加自定义的编辑内功能很有用。对于更复杂的添加,请考虑改用 " +"[EditorPlugin]。\n" +"[b]注意:[/b]扩展脚本需要启用 [code]tool[/code] 工具模式。\n" +"[b]示例脚本:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"@tool\n" +"extends EditorScript\n" +"\n" +"func _run():\n" +" print(\"Hello from the Godot Editor!\")\n" +"[/gdscript]\n" +"[csharp]\n" +"using Godot;\n" +"\n" +"[Tool]\n" +"public partial class HelloEditor : EditorScript\n" +"{\n" +" public override void _Run()\n" +" {\n" +" GD.Print(\"Hello from the Godot Editor!\");\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]注意:[/b]脚本在编辑器上下文中运行,这意味着输出在使用编辑器(stdout)启动" +"的控制台窗口中可见,而不是通常的 Godot [b]输出[/b]停靠面板。\n" +"[b]注意:[/b]EditorScript 是 [RefCounted],这意味着它不再被引用时会被销毁。如" +"果没有对脚本的引用,这可能会在异步操作期间导致错误。" + msgid "This method is executed by the Editor when [b]File > Run[/b] is used." msgstr "当使用[b]文件 > 运行[/b]时,此方法由编辑器执行。" @@ -10562,6 +24635,141 @@ msgstr "" "2D 骨架编辑器中,用于未选中骨骼的轮廓颜色。另见 [member editors/2d/" "bone_selected_color]。" +msgid "" +"The font to use for the script editor. Must be a resource of a [Font] type " +"such as a [code].ttf[/code] or [code].otf[/code] font file." +msgstr "" +"脚本编辑器所使用的字体。必须是 [Font] 类型的资源,例如 [code].ttf[/code] 或 " +"[code].otf[/code] 字体文件。" + +msgid "" +"The font ligatures to enable for the currently configured code font. Not all " +"fonts include support for ligatures.\n" +"[b]Note:[/b] The default editor code font ([url=https://www.jetbrains.com/lp/" +"mono/]JetBrains Mono[/url]) has contextual ligatures in its font file." +msgstr "" +"要启用的字体连字,用于当前配置的代码字体。不是所有字体都支持连字。\n" +"[b]注意:[/b]默认的编辑器代码字体([url=https://www.jetbrains.com/lp/" +"mono/]JetBrains Mono[/url])的字体文件中有上下文连字。" + +msgid "" +"List of custom OpenType features to use, if supported by the currently " +"configured code font. Not all fonts include support for custom OpenType " +"features. The string should follow the OpenType specification.\n" +"[b]Note:[/b] The default editor code font ([url=https://www.jetbrains.com/lp/" +"mono/]JetBrains Mono[/url]) has custom OpenType features in its font file, " +"but there is no documented list yet." +msgstr "" +"要使用的自定义 OpenType 特性列表,需要当前配置的代码字体支持。不是所有字体都" +"支持自定义 OpenType 特定。该字符串应遵循 OpenType 规范。\n" +"[b]注意:[/b]默认的编辑器代码字体([url=https://www.jetbrains.com/lp/" +"mono/]JetBrains Mono[/url])的字体文件中有自定义 OpenType 特性,但还没有文档" +"进行列举。" + +msgid "" +"List of alternative characters to use, if supported by the currently " +"configured code font. Not all fonts include support for custom variations. " +"The string should follow the OpenType specification.\n" +"[b]Note:[/b] The default editor code font ([url=https://www.jetbrains.com/lp/" +"mono/]JetBrains Mono[/url]) has alternate characters in its font file, but " +"there is no documented list yet." +msgstr "" +"要使用的备选字符列表,需要当前配置的代码字体支持。不是所有字体都支持自定义变" +"体。该字符串应遵循 OpenType 规范。\n" +"[b]注意:[/b]默认的编辑器代码字体([url=https://www.jetbrains.com/lp/" +"mono/]JetBrains Mono[/url])的字体文件中有备选字符,但还没有文档进行列举。" + +msgid "" +"The language to use for the editor interface.\n" +"Translations are provided by the community. If you spot a mistake, " +"[url=$DOCS_URL/contributing/documentation/editor_and_docs_localization." +"html]contribute to editor translations on Weblate![/url]" +msgstr "" +"用于编辑器界面的语言。\n" +"翻译由社区提供。如果您发现错误,[url=$DOCS_URL/contributing/documentation/" +"editor_and_docs_localization.html]请在 Weblate 上为编辑器翻译作出贡献![/url]" + +msgid "" +"Expanding main editor window content to the title, if supported by " +"[DisplayServer]. See [constant DisplayServer.WINDOW_FLAG_EXTEND_TO_TITLE].\n" +"Specific to the macOS platform." +msgstr "" +"将主编辑窗口内容扩展到标题区域,需要 [DisplayServer] 支持。见 [constant " +"DisplayServer.WINDOW_FLAG_EXTEND_TO_TITLE]。\n" +"专用于 macOS 平台。" + +msgid "" +"FreeType's font anti-aliasing mode used to render the editor fonts. Most " +"fonts are not designed to look good with anti-aliasing disabled, so it's " +"recommended to leave this enabled unless you're using a pixel art font." +msgstr "" +"FreeType 的字体抗锯齿模式,用于渲染编辑器字体。大多数字体在禁用抗锯齿的情况下" +"并不好看,所以建议保持启用,除非你使用的是像素风字体。" + +msgid "" +"If [code]true[/code], editor main menu is using embedded [MenuBar] instead " +"of system global menu.\n" +"Specific to the macOS platform." +msgstr "" +"如果为 [code]true[/code],则编辑器的主菜单使用嵌入式 [MenuBar],不使用系统全" +"局菜单。\n" +"专用于 macOS 平台。" + +msgid "" +"The TLS certificate bundle to use for HTTP requests made within the editor " +"(e.g. from the AssetLib tab). If left empty, the [url=https://github.com/" +"godotengine/godot/blob/master/thirdparty/certs/ca-certificates.crt]included " +"Mozilla certificate bundle[/url] will be used." +msgstr "" +"用于在编辑器中发出的 HTTP 请求的 TLS 证书包(例如来自 AssetLib 选项卡)。如果" +"留空,将使用 [url=https://github.com/godotengine/godot/blob/master/" +"thirdparty/certs/ca-certificates.crt]包含的 Mozilla 证书包[/url]。" + +msgid "" +"If [code]true[/code], displays line length guidelines to help you keep line " +"lengths in check. See also [member text_editor/appearance/guidelines/" +"line_length_guideline_soft_column] and [member text_editor/appearance/" +"guidelines/line_length_guideline_hard_column]." +msgstr "" +"如果为 [code]true[/code],则显示行长度参考线,帮助你控制行长度。另请参阅 " +"[member text_editor/appearance/guidelines/line_length_guideline_soft_column] " +"和 [member text_editor/appearance/guidelines/" +"line_length_guideline_hard_column]。" + +msgid "The width of the minimap in the script editor (in pixels)." +msgstr "脚本编辑器中小地图的宽度(单位为像素)。" + +msgid "If [code]true[/code], allows scrolling past the end of the file." +msgstr "如果为 [code]true[/code],则允许滚动越过文件的末尾。" + +msgid "" +"If [code]true[/code], prevents automatically switching between the Script " +"and 2D/3D screens when selecting a node in the Scene tree dock." +msgstr "" +"如果为 [code]true[/code],可防止在场景树面板中选择节点时,自动在脚本和 2D/3D " +"屏幕之间切换。" + +msgid "The script editor's bookmark icon color (displayed in the gutter)." +msgstr "脚本编辑器的书签图标颜色(在边栏中显示)。" + +msgid "The script editor's breakpoint icon color (displayed in the gutter)." +msgstr "脚本编辑器的断点图标颜色(在边栏中显示)。" + +msgid "" +"The script editor's caret background color.\n" +"[b]Note:[/b] This setting has no effect as it's currently unused." +msgstr "" +"脚本编辑器的光标背景色。\n" +"[b]注意:[/b]此设置无效,因为当前未使用。" + +msgid "The script editor's caret color." +msgstr "脚本编辑器的光标颜色。" + +msgid "" +"The script editor's color for the code folding icon (displayed in the " +"gutter)." +msgstr "脚本编辑器的代码折叠图标颜色(在边栏中显示)。" + msgid "Emitted after any editor setting has changed." msgstr "在编辑器设置改变后触发。" @@ -10818,6 +25026,15 @@ msgstr "在未暂存区域遇到了文件。" msgid "Holds a reference to an [Object]'s instance ID." msgstr "保存对 [Object] 实例 ID 的引用。" +msgid "API documentation on the ENet website" +msgstr "ENet 网站上的 API 文档" + +msgid "Adjusts the bandwidth limits of a host." +msgstr "调整主机的带宽限制。" + +msgid "Destroys the host and all resources associated with it." +msgstr "销毁主机和与其关联的所有资源。" + msgid "" "No compression. This uses the most bandwidth, but has the upside of " "requiring the fewest CPU resources. This option may also be used to make " @@ -10833,6 +25050,27 @@ msgstr "" "ENet 的内置范围编码。适用于小数据包,但对于大于 4 KB 的数据包不是最有效的算" "法。" +msgid "" +"[url=https://facebook.github.io/zstd/]Zstandard[/url] compression. Note that " +"this algorithm is not very efficient on packets smaller than 4 KB. " +"Therefore, it's recommended to use other compression algorithms in most " +"cases." +msgstr "" +"[url=https://facebook.github.io/zstd/]Zstandard[/url]压缩。请注意,此算法对小" +"于 4 KB 的数据包效率不高。因此,建议在大多数情况下使用其他压缩算法。" + +msgid "Total data sent." +msgstr "发送数据的总数。" + +msgid "Total UDP packets sent." +msgstr "发送 UDP 数据包的总数。" + +msgid "Total data received." +msgstr "接收数据的总数。" + +msgid "Total UDP packets received." +msgstr "接收 UDP 数据包的总数。" + msgid "High-level multiplayer" msgstr "高级多人游戏" @@ -10919,6 +25157,24 @@ msgid "" msgstr "如果游戏在游戏循环的固定过程和物理阶段内,返回 [code]true[/code]。" msgid "" +"Controls the maximum number of physics steps that can be simulated each " +"rendered frame. The default value is tuned to avoid \"spiral of death\" " +"situations where expensive physics simulations trigger more expensive " +"simulations indefinitely. However, the game will appear to slow down if the " +"rendering FPS is less than [code]1 / max_physics_steps_per_frame[/code] of " +"[member physics_ticks_per_second]. This occurs even if [code]delta[/code] is " +"consistently used in physics calculations. To avoid this, increase [member " +"max_physics_steps_per_frame] if you have increased [member " +"physics_ticks_per_second] significantly above its default value." +msgstr "" +"控制每个渲染帧所能模拟的最大物理步骤数。默认值经过调试,可以避免“死亡螺旋”," +"防止开销较大的物理仿真无限触发开销更大的仿真。不过如果渲染 FPS 小于 [member " +"physics_ticks_per_second] 的 [code]1 / max_physics_steps_per_frame[/code],游" +"戏看上去会是降速的。即便在物理计算中始终使用 [code]delta[/code] 也一样会发" +"生。要避免这种情况,如果增大了 [member physics_ticks_per_second],而且远大于" +"默认值,那么建议将 [member 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 " @@ -10938,6 +25194,35 @@ msgstr "" "[member physics_jitter_fix] 设置为 [code]0[/code] 来禁用物理抖动修复。" msgid "" +"The number of fixed iterations per second. This controls how often physics " +"simulation and [method Node._physics_process] methods are run. This value " +"should generally always be set to [code]60[/code] or above, as Godot doesn't " +"interpolate the physics step. As a result, values lower than [code]60[/code] " +"will look stuttery. This value can be increased to make input more reactive " +"or work around collision tunneling issues, but keep in mind doing so will " +"increase CPU usage. See also [member max_fps] and [member ProjectSettings." +"physics/common/physics_ticks_per_second].\n" +"[b]Note:[/b] Only [member max_physics_steps_per_frame] physics ticks may be " +"simulated per rendered frame at most. If more physics ticks have to be " +"simulated per rendered frame to keep up with rendering, the project will " +"appear to slow down (even if [code]delta[/code] is used consistently in " +"physics calculations). Therefore, it is recommended to also increase [member " +"max_physics_steps_per_frame] if increasing [member physics_ticks_per_second] " +"significantly above its default value." +msgstr "" +"每秒执行的固定迭代次数。用于控制物理仿真和 [method Node._physics_process] 的" +"执行频率。因为 Godot 不会进行物理步骤的插值,所以通常应该总是将其设成大于等" +"于 [code]60[/code] 的值。因此,如果值小于 [code]60[/code] 就会看起来卡顿。提" +"高该值可以让输入变得更加灵敏、也可以绕过碰撞隧道问题,但请记得这么做也会提升 " +"CPU 的占用率。另请参阅 [member max_fps] 和 [member ProjectSettings.physics/" +"common/physics_ticks_per_second]。\n" +"[b]注意:[/b]每个渲染帧最多只能模拟 [member max_physics_steps_per_frame] 个物" +"理周期。如果为了追赶渲染,需要在每个渲染帧中模拟更多物理周期,游戏看上去会是" +"降速的(即便在物理计算中始终使用 [code]delta[/code])。因此,如果增大了 " +"[member physics_ticks_per_second],而且远大于默认值,那么建议将 [member " +"max_physics_steps_per_frame] 也调大。" + +msgid "" "Controls how fast or slow the in-game clock ticks versus the real life one. " "It defaults to 1.0. A value of 2.0 means the game moves twice as fast as " "real life, whilst a value of 0.5 means the game moves at half the regular " @@ -10975,16 +25260,6 @@ msgstr "" "[code]true[/code] 时才有效。" msgid "" -"If [code]true[/code], enables the [code]adjustment_*[/code] properties " -"provided by this resource. If [code]false[/code], modifications to the " -"[code]adjustment_*[/code] properties will have no effect on the rendered " -"scene." -msgstr "" -"如果为 [code]true[/code],则启用此资源提供的 [code]adjusting_*[/code] 属性。" -"如果为 [code]false[/code],对[code]adjustment_*[/code]属性的修改将不会对渲染" -"的场景产生影响。" - -msgid "" "The global color saturation value of the rendered scene (default value is " "1). Effective only if [code]adjustment_enabled[/code] is [code]true[/code]." msgstr "" @@ -11066,9 +25341,6 @@ msgstr "" "泛光的强度。如果设置为大于 [code]0[/code] 的值,则将在比 [member " "glow_hdr_threshold] 成员更暗的区域中显示辉光。" -msgid "If [code]true[/code], the glow effect is enabled." -msgstr "如果为 [code]true[/code],则启用辉光效果。" - msgid "" "The higher threshold of the HDR glow. Areas brighter than this threshold " "will be clamped for the purposes of the glow effect." @@ -11112,6 +25384,15 @@ msgstr "" "在AO纹理变暗的区域可见。" msgid "" +"The threshold for considering whether a given point on a surface is occluded " +"or not represented as an angle from the horizon mapped into the " +"[code]0.0-1.0[/code] range. A value of [code]1.0[/code] results in no " +"occlusion." +msgstr "" +"用于考虑表面上给定点是否被遮挡的阈值,表示为与地平线的角度,映射到 " +"[code]0.0-1.0[/code] 范围。[code]1.0[/code] 的值不会导致遮蔽。" + +msgid "" "The screen-space ambient occlusion intensity in direct light. In real life, " "ambient occlusion only applies to indirect light, which means its effects " "can't be seen in direct light. Values higher than [code]0[/code] will make " @@ -11142,7 +25423,7 @@ msgid "Displays a camera feed in the background." msgstr "在背景中显示相机源。" msgid "Represents the size of the [enum BGMode] enum." -msgstr "表示 [enum BGMode] 枚举的大小。" +msgstr "代表 [enum BGMode] 枚举的大小。" msgid "" "Linear tonemapper operator. Reads the linear data and passes it on " @@ -11357,6 +25638,9 @@ msgstr "" "打开文件进行读写操作。如果文件不存在,则创建该文件,如果存在则截断。光标位于" "文件的开头。" +msgid "Uses the [url=https://fastlz.org/]FastLZ[/url] compression method." +msgstr "使用 [url=https://fastlz.org/]FastLZ[/url] 压缩方法。" + msgid "" "Uses the [url=https://en.wikipedia.org/wiki/DEFLATE]DEFLATE[/url] " "compression method." @@ -11377,6 +25661,9 @@ msgstr "用于选择文件系统中的文件或目录的对话框。" msgid "Clear all the added filters in the dialog." msgstr "清除对话框中所有添加的过滤器。" +msgid "Clear all currently selected items in the dialog." +msgstr "清除对话框中所有当前选定的项目。" + msgid "" "Returns the LineEdit for the selected file.\n" "[b]Warning:[/b] This is a required internal node, removing and freeing it " @@ -11551,6 +25838,186 @@ msgid "" msgstr "" "将 [int] 值转换为浮点值,[code]float(1)[/code] 将等于 [code]1.0[/code]。" +msgid "Returns [code]true[/code] if two floats are different from each other." +msgstr "如果两个浮点数彼此不同,则返回 [code]true[/code]。" + +msgid "" +"Returns [code]true[/code] if the integer has different value than the float." +msgstr "如果整数的值与浮点数不同,则返回 [code]true[/code]。" + +msgid "" +"Multiplies each component of the [Color] by the given [float].\n" +"[codeblock]\n" +"print(1.5 * Color(0.5, 0.5, 0.5)) # Color(0.75, 0.75, 0.75)\n" +"[/codeblock]" +msgstr "" +"将该 [Color] 的每个分量乘以给定的 [float]。\n" +"[codeblock]\n" +"print(1.5 * Color(0.5, 0.5, 0.5)) # Color(0.75, 0.75, 0.75)\n" +"[/codeblock]" + +msgid "" +"Multiplies each component of the [Quaternion] by the given [float]. This " +"operation is not meaningful on its own, but it can be used as a part of a " +"larger expression." +msgstr "" +"将该 [Quaternion] 的每个分量乘以给定的 [float]。此操作本身没有意义,但可以用" +"作更大表达式的一部分。" + +msgid "" +"Multiplies each component of the [Vector2] by the given [float].\n" +"[codeblock]\n" +"print(2.5 * Vector2(1, 3)) # Prints \"(2.5, 7.5)\"\n" +"[/codeblock]" +msgstr "" +"将该 [Vector2] 的每个分量乘以给定的 [float]。\n" +"[codeblock]\n" +"print(2.5 * Vector2(1, 3)) # 输出 \"(2.5, 7.5)\"\n" +"[/codeblock]" + +msgid "" +"Multiplies each component of the [Vector2i] by the given [float]. Returns a " +"[Vector2].\n" +"[codeblock]\n" +"print(0.9 * Vector2i(10, 15)) # Prints \"(9, 13.5)\"\n" +"[/codeblock]" +msgstr "" +"将该 [Vector2i] 的每个分量乘以给定的 [float]。返回的是 [Vector2]。\n" +"[codeblock]\n" +"print(0.9 * Vector2i(10, 15)) # 输出 \"(9, 13.5)\"\n" +"[/codeblock]" + +msgid "Multiplies each component of the [Vector3] by the given [float]." +msgstr "将该 [Vector3] 的每个分量乘以给定的 [float]。" + +msgid "" +"Multiplies each component of the [Vector3i] by the given [float]. Returns a " +"[Vector3].\n" +"[codeblock]\n" +"print(0.9 * Vector3i(10, 15, 20)) # Prints \"(9, 13.5, 18)\"\n" +"[/codeblock]" +msgstr "" +"将该 [Vector3i] 的每个分量乘以给定的 [float]。返回的是 [Vector3]。\n" +"[codeblock]\n" +"print(0.9 * Vector3i(10, 15, 20)) # 输出 \"(9, 13.5, 18)\"\n" +"[/codeblock]" + +msgid "Multiplies each component of the [Vector4] by the given [float]." +msgstr "将该 [Vector4] 的每个分量乘以给定的 [float]。" + +msgid "" +"Multiplies each component of the [Vector4i] by the given [float]. Returns a " +"[Vector4].\n" +"[codeblock]\n" +"print(0.9 * Vector4i(10, 15, 20, -10)) # Prints \"(9, 13.5, 18, -9)\"\n" +"[/codeblock]" +msgstr "" +"将该 [Vector4i] 的每个分量乘以给定的 [float]。返回的是 [Vector4]。\n" +"[codeblock]\n" +"print(0.9 * Vector4i(10, 15, 20, -10))# 输出 \"(9, 13.5, 18, -9)\"\n" +"[/codeblock]" + +msgid "Multiplies two [float]s." +msgstr "将两个 [float] 相乘。" + +msgid "Multiplies a [float] and an [int]. The result is a [float]." +msgstr "将 [float] 和 [int] 相乘。结果是 [float]。" + +msgid "" +"Raises a [float] to a power of a [float].\n" +"[codeblock]\n" +"print(39.0625**0.25) # 2.5\n" +"[/codeblock]" +msgstr "" +"将 [float] 提升到 [float] 次幂。\n" +"[codeblock]\n" +"print(39.0625**0.25) # 2.5\n" +"[/codeblock]" + +msgid "" +"Raises a [float] to a power of an [int]. The result is a [float].\n" +"[codeblock]\n" +"print(0.9**3) # 0.729\n" +"[/codeblock]" +msgstr "" +"将 [float] 提升到 [int] 次幂。结果为 [float]。\n" +"[codeblock]\n" +"print(0.9**3) # 0.729\n" +"[/codeblock]" + +msgid "Adds two floats." +msgstr "将两个浮点数相加。" + +msgid "Adds a [float] and an [int]. The result is a [float]." +msgstr "将 [float] 加上 [int]。结果为 [float]。" + +msgid "Subtracts a float from a float." +msgstr "将一个浮点数减去另一个浮点数。" + +msgid "Subtracts an [int] from a [float]. The result is a [float]." +msgstr "将 [float] 减去 [int]。结果为 [float]。" + +msgid "Divides two floats." +msgstr "将两个浮点数相除。" + +msgid "Divides a [float] by an [int]. The result is a [float]." +msgstr "将 [float] 除以 [int]。结果是 [float]。" + +msgid "Returns [code]true[/code] if the left float is less than the right one." +msgstr "如果左侧的浮点数小于右侧,则返回 [code]true[/code]。" + +msgid "Returns [code]true[/code] if this [float] is less than the given [int]." +msgstr "如果该 [float] 小于给定的 [int],则返回 [code]true[/code]。" + +msgid "" +"Returns [code]true[/code] if the left float is less than or equal to the " +"right one." +msgstr "如果左侧的浮点数小于等于右侧,则返回 [code]true[/code]。" + +msgid "" +"Returns [code]true[/code] if this [float] is less than or equal to the given " +"[int]." +msgstr "如果该 [float] 小于等于给定的 [int],则返回 [code]true[/code]。" + +msgid "" +"Returns [code]true[/code] if both floats are exactly equal.\n" +"[b]Note:[/b] Due to floating-point precision errors, consider using [method " +"@GlobalScope.is_equal_approx] or [method @GlobalScope.is_zero_approx] " +"instead, which are more reliable." +msgstr "" +"如果两个浮点数完全相等,则返回 [code]true[/code]。\n" +"[b]注意:[/b]由于浮点精度误差,考虑改用更可靠的 [method @GlobalScope." +"is_equal_approx] 或 [method @GlobalScope.is_zero_approx]。" + +msgid "Returns [code]true[/code] if the [float] and the given [int] are equal." +msgstr "如果该 [float] 等于给定的 [int],则返回 [code]true[/code]。" + +msgid "" +"Returns [code]true[/code] if the left float is greater than the right one." +msgstr "如果左侧的浮点数大于右侧,则返回 [code]true[/code]。" + +msgid "" +"Returns [code]true[/code] if this [float] is greater than the given [int]." +msgstr "如果该 [float] 大于给定的 [int],则返回 [code]true[/code]。" + +msgid "" +"Returns [code]true[/code] if the left float is greater than or equal to the " +"right one." +msgstr "如果左侧的浮点数大于等于右侧,则返回 [code]true[/code]。" + +msgid "" +"Returns [code]true[/code] if this [float] is greater than or equal to the " +"given [int]." +msgstr "如果该 [float] 大于等于给定的 [int],则返回 [code]true[/code]。" + +msgid "" +"Returns the negative value of the [float]. If positive, turns the number " +"negative. If negative, turns the number positive. With floats, the number " +"zero can be either positive or negative." +msgstr "" +"返回该 [float] 的相反数。如果为正数,则将该数变为负数。如果为负数,则将该数变" +"为正数。对于浮点数,数字零既可以是正数,也可以是负数。" + msgid "Base class for flow containers." msgstr "流式容器的基类。" @@ -11567,6 +26034,15 @@ msgstr "" msgid "Returns the current line count." msgstr "返回当前的行数。" +msgid "" +"If [code]true[/code], the [FlowContainer] will arrange its children " +"vertically, rather than horizontally.\n" +"Can't be changed when using [HFlowContainer] and [VFlowContainer]." +msgstr "" +"如果为 [code]true[/code],则 [FlowContainer] 将垂直排列子节点,而不是水平排" +"列。\n" +"使用 [HFlowContainer] 和 [VFlowContainer] 时不能改变。" + msgid "The horizontal separation of children nodes." msgstr "子节点的水平分隔量。" @@ -11579,9 +26055,39 @@ msgstr "返回字体的上升幅度(超出基线的像素数)。" msgid "Returns the font descent (number of pixels below the baseline)." msgstr "返回字体的减少量(低于基线的像素数)。" +msgid "Returns glyph size." +msgstr "返回字形大小。" + +msgid "Sets glyph offset from the baseline." +msgstr "设置字形相对于基线的偏移量。" + +msgid "Sets glyph size." +msgstr "设置字形大小。" + +msgid "Sets index of the cache texture containing the glyph." +msgstr "设置包含该字形的缓存纹理的索引。" + +msgid "Sets rectangle in the cache texture containing the glyph." +msgstr "设置包含该字形的缓存纹理中,该字形的矩形区域。" + +msgid "Font OpenType feature set override." +msgstr "字体 OpenType 特性集覆盖。" + +msgid "Extra spacing at the bottom of the line in pixels." +msgstr "行底部的额外间距,单位为像素。" + +msgid "Extra width of the space glyphs." +msgstr "空格字形的额外宽度。" + +msgid "Extra spacing at the top of the line in pixels." +msgstr "行顶部的额外间距,单位为像素。" + msgid "A script implemented in the GDScript programming language." msgstr "用 GDScript 编程语言实现的脚本。" +msgid "GDScript documentation index" +msgstr "GDScript 文档索引" + msgid "" "Returns a new instance of the script.\n" "For example:\n" @@ -11931,7 +26437,7 @@ msgid "If enabled, there is a linear motor across these axes." msgstr "如果启用,则存在跨这些轴的线性马达。" msgid "Represents the size of the [enum Flag] enum." -msgstr "表示 [enum Flag] 枚举的大小。" +msgstr "代表 [enum Flag] 枚举的大小。" msgid "" "Given an array of [Vector2]s, returns the convex hull as a list of points in " @@ -12036,6 +26542,21 @@ msgstr "" "只显示从这个物体投射出来的阴影。\n" "换句话说,实际的网格将不可见,只有网格投影可见。" +msgid "Represents the size of the [enum LightmapScale] enum." +msgstr "代表 [enum LightmapScale] 枚举的大小。" + +msgid "Represents a GLTF camera." +msgstr "代表 GLTF 相机。" + +msgid "[GLTFDocument] extension class." +msgstr "[GLTFDocument] 扩展类。" + +msgid "Represents a GLTF light." +msgstr "代表 GLTF 灯。" + +msgid "KHR_lights_punctual GLTF extension spec" +msgstr "KHR_lights_punctual GLTF 扩展规格" + msgid "" "The [Color] of the light. Defaults to white. A black color causes the light " "to have no effect." @@ -12058,6 +26579,12 @@ msgstr "" "灯光的范围,超过这个范围灯光无效。没有定义范围的 GLTF 灯光的行为与无限范围的" "物理灯光一样。当创建 Godot 灯光时,范围限制在 4096。" +msgid "GLTF node class." +msgstr "GLTF 节点类。" + +msgid "Represents a GLTF texture sampler" +msgstr "代表 GLTF 纹理采样器" + msgid "Bridge between Godot and the Mono runtime (Mono-enabled builds only)." msgstr "Godot 和 Mono 运行时之间的桥梁(仅支持 Mono 的构建)。" @@ -12071,6 +26598,9 @@ msgstr "" "Mono 的 Godot 构建中可用。\n" "参阅 [CSharpScript] 。" +msgid "2D particle emitter." +msgstr "2D 粒子发射器。" + msgid "2D Particles Demo" msgstr "2D 粒子演示" @@ -12096,6 +26626,9 @@ msgstr "" "如果当节点进入/退出屏幕时粒子突然出现/消失,则增长矩形。[Rect2] 可以通过代码" "或使用 [b]Particles → Generate Visibility Rect[/b] 编辑器工具生成。" +msgid "3D particle emitter." +msgstr "3D 粒子发射器。" + msgid "Controlling thousands of fish with Particles" msgstr "用粒子控制数千条鱼" @@ -12107,6 +26640,9 @@ msgstr "返回包含当前帧中所有活动粒子的轴对齐包围盒。" msgid "Restarts the particle emission, clearing existing particles." msgstr "重新发射粒子,清除现有的粒子。" +msgid "Number of particles to emit." +msgstr "要发射的粒子数。" + msgid "[Mesh] that is drawn for the first draw pass." msgstr "第一绘制阶段所绘制的 [Mesh]。" @@ -12145,12 +26681,71 @@ msgstr "发出随机率。" msgid "" "Speed scaling ratio. A value of [code]0[/code] can be used to pause the " "particles." -msgstr "速度缩放比。值为 [code]0[/code] 时可暂停粒子。" +msgstr "速度缩放比例。[code]0[/code] 的值可被用于暂停粒子。" msgid "Maximum number of draw passes supported." msgstr "支持的最大绘制阶段数。" msgid "" +"Generate a 256×256 heightmap. Intended for small-scale scenes, or larger " +"scenes with no distant particles." +msgstr "生成 256×256 的高度图。适用于小规模场景,或没有远景粒子的较大场景。" + +msgid "" +"Generate a 512×512 heightmap. Intended for medium-scale scenes, or larger " +"scenes with no distant particles." +msgstr "" +"生成 512×512 的高度图。适用于中等规模的场景,或没有远景粒子的较大场景。" + +msgid "" +"Generate a 1024×1024 heightmap. Intended for large scenes with distant " +"particles." +msgstr "生成 1024×1024 的高度图。适用于具有远景粒子的大型场景。" + +msgid "" +"Generate a 2048×2048 heightmap. Intended for very large scenes with distant " +"particles." +msgstr "生成 2048×2048 的高度图。适用于具有远景粒子的非常大的场景。" + +msgid "" +"Generate a 4096×4096 heightmap. Intended for huge scenes with distant " +"particles." +msgstr "生成 4096×4096 的高度图。适用于具有远景粒子的巨大场景。" + +msgid "" +"Generate a 8192×8192 heightmap. Intended for gigantic scenes with distant " +"particles." +msgstr "生成 8192×8192 的高度图。适用于具有远景粒子的巨大场景。" + +msgid "Represents the size of the [enum Resolution] enum." +msgstr "代表 [enum Resolution] 枚举的大小。" + +msgid "" +"Bake a 16×16×16 signed distance field. This is the fastest option, but also " +"the least precise." +msgstr "烘焙 16×16×16 的有符号距离场。这是最快的选项,但也是最不精确的。" + +msgid "Bake a 32×32×32 signed distance field." +msgstr "烘焙 32×32×32 的有符号距离场。" + +msgid "Bake a 64×64×64 signed distance field." +msgstr "烘焙 64×64×64 的有符号距离场。" + +msgid "Bake a 128×128×128 signed distance field." +msgstr "烘焙 128×128×128 的有符号距离场。" + +msgid "Bake a 256×256×256 signed distance field." +msgstr "烘焙 256×256×256 的有符号距离场。" + +msgid "" +"Bake a 512×512×512 signed distance field. This is the slowest option, but " +"also the most precise." +msgstr "烘焙 512×512×512 的有符号距离场。这是最慢的选项,但也是最精确的。" + +msgid "The collision sphere's radius in 3D units." +msgstr "碰撞球的半径,以 3D 单位表示。" + +msgid "" "A color interpolator resource which can be used to generate colors between " "user-defined color points." msgstr "颜色插值器资源,可用于在用户定义的颜色点之间生成颜色。" @@ -12696,6 +27291,9 @@ msgstr "水平盒式容器。见 [BoxContainer]。" msgid "The horizontal space between the [HBoxContainer]'s elements." msgstr "[HBoxContainer] 的元素之间的水平间隙。" +msgid "Height map shape resource for 3D physics." +msgstr "高度图形状资源,用于 3D 物理。" + msgid "" "Height map data, pool array must be of [member map_width] * [member " "map_depth] size." @@ -12770,6 +27368,102 @@ msgid "Used to create an HMAC for a message using a key." msgstr "用来为一个使用密钥的信息创建 HMAC。" msgid "" +"The HMACContext class is useful for advanced HMAC use cases, such as " +"streaming the message as it supports creating the message over time rather " +"than providing it all at once.\n" +"[codeblocks]\n" +"[gdscript]\n" +"extends Node\n" +"var ctx = HMACContext.new()\n" +"\n" +"func _ready():\n" +" var key = \"supersecret\".to_utf8()\n" +" var err = ctx.start(HashingContext.HASH_SHA256, key)\n" +" assert(err == OK)\n" +" var msg1 = \"this is \".to_utf8()\n" +" var msg2 = \"super duper secret\".to_utf8()\n" +" err = ctx.update(msg1)\n" +" assert(err == OK)\n" +" err = ctx.update(msg2)\n" +" assert(err == OK)\n" +" var hmac = ctx.finish()\n" +" print(hmac.hex_encode())\n" +"\n" +"[/gdscript]\n" +"[csharp]\n" +"using Godot;\n" +"using System.Diagnostics;\n" +"\n" +"public partial class MyNode : Node\n" +"{\n" +" private HmacContext _ctx = new HmacContext();\n" +"\n" +" public override void _Ready()\n" +" {\n" +" byte[] key = \"supersecret\".ToUtf8();\n" +" Error err = _ctx.Start(HashingContext.HashType.Sha256, key);\n" +" Debug.Assert(err == Error.Ok);\n" +" byte[] msg1 = \"this is \".ToUtf8();\n" +" byte[] msg2 = \"super duper secret\".ToUtf8();\n" +" err = _ctx.Update(msg1);\n" +" Debug.Assert(err == Error.Ok);\n" +" err = _ctx.Update(msg2);\n" +" Debug.Assert(err == Error.Ok);\n" +" byte[] hmac = _ctx.Finish();\n" +" GD.Print(hmac.HexEncode());\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"HMACContext 类对于高级的 HMAC 用例非常有用,例如流式消息,因为它支持在一段时" +"间内创建消息,而非一次性提供。\n" +"[codeblocks]\n" +"[gdscript]\n" +"extends Node\n" +"var ctx = HMACContext.new()\n" +"\n" +"func _ready():\n" +" var key = \"supersecret\".to_utf8()\n" +" var err = ctx.start(HashingContext.HASH_SHA256, key)\n" +" assert(err == OK)\n" +" var msg1 = \"this is \".to_utf8()\n" +" var msg2 = \"super duper secret\".to_utf8()\n" +" err = ctx.update(msg1)\n" +" assert(err == OK)\n" +" err = ctx.update(msg2)\n" +" assert(err == OK)\n" +" var hmac = ctx.finish()\n" +" print(hmac.hex_encode())\n" +"\n" +"[/gdscript]\n" +"[csharp]\n" +"using Godot;\n" +"using System.Diagnostics;\n" +"\n" +"public partial class MyNode : Node\n" +"{\n" +" private HmacContext _ctx = new HmacContext();\n" +"\n" +" public override void _Ready()\n" +" {\n" +" byte[] key = \"supersecret\".ToUtf8();\n" +" Error err = _ctx.Start(HashingContext.HashType.Sha256, key);\n" +" Debug.Assert(err == Error.Ok);\n" +" byte[] msg1 = \"this is \".ToUtf8();\n" +" byte[] msg2 = \"super duper secret\".ToUtf8();\n" +" err = _ctx.Update(msg1);\n" +" Debug.Assert(err == Error.Ok);\n" +" err = _ctx.Update(msg2);\n" +" Debug.Assert(err == Error.Ok);\n" +" byte[] hmac = _ctx.Finish();\n" +" GD.Print(hmac.HexEncode());\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" "Initializes the HMACContext. This method cannot be called again on the same " "HMACContext until [method finish] has been called." msgstr "" @@ -12827,21 +27521,20 @@ msgid "Used as background when the [ScrollBar] has the GUI focus." msgstr "当 [ScrollBar] 具有 GUI 焦点时用作背景。" msgid "Horizontal separator." -msgstr "水平分隔符。" +msgstr "水平分隔器。" msgid "" "Horizontal separator. See [Separator]. Even though it looks horizontal, it " "is used to separate objects vertically." -msgstr "" -"水平分离器。见 [Separator]。尽管它看起来是水平的,但被用于垂直分隔对象。" +msgstr "水平分隔器。见 [Separator]。尽管外观是水平的,但作用是垂直分隔对象。" msgid "" "The height of the area covered by the separator. Effectively works like a " "minimum height." -msgstr "分隔符覆盖区域的高度。如同最小高度一样有效地工作。" +msgstr "分隔器覆盖区域的高度。效果上和最小高度一致。" msgid "The style for the separator line. Works best with [StyleBoxLine]." -msgstr "分隔符的样式。与 [StyleBoxLine] 配合使用效果更佳。" +msgstr "分隔器的线条样式。与 [StyleBoxLine] 配合使用效果更佳。" msgid "Horizontal slider." msgstr "水平滑动条。" @@ -12903,6 +27596,12 @@ msgstr "在中间区域绘制的抓取图标。" msgid "Low-level hyper-text transfer protocol client." msgstr "低级别的超文本传输协议客户端。" +msgid "HTTP client class" +msgstr "HTTP 客户端类" + +msgid "TLS certificates" +msgstr "TLS 证书" + msgid "Closes the current connection, allowing reuse of this [HTTPClient]." msgstr "关闭当前连接,允许重用此[HTTPClient]。" @@ -13044,7 +27743,7 @@ msgid "" msgstr "HTTP PATCH 方法。PATCH 方法用于对资源进行部分修改。" msgid "Represents the size of the [enum Method] enum." -msgstr "表示 [enum Method] 枚举的大小。" +msgstr "代表 [enum Method] 枚举的大小。" msgid "Status: Disconnected from the server." msgstr "状态:与服务器断开连接。" @@ -13073,6 +27772,9 @@ msgstr "状态:已获取 HTTP 响应体。" msgid "Status: Error in HTTP connection." msgstr "状态:HTTP 连接出错。" +msgid "Status: Error in TLS handshake." +msgstr "状态:TLS 握手出错。" + msgid "" "HTTP status code [code]100 Continue[/code]. Interim response that indicates " "everything so far is OK and that the client should continue with the request " @@ -13594,6 +28296,9 @@ msgstr "" msgid "A node with the ability to send HTTP(S) requests." msgstr "具有发送 HTTP(S) 请求能力的节点。" +msgid "Making HTTP requests" +msgstr "发出 HTTP 请求" + msgid "Cancels the current request." msgstr "取消当前请求。" @@ -13644,6 +28349,9 @@ msgstr "" "下载小文件时将其设置为较低的值,以降低内存使用量,但会降低下载速度,例如 " "4096 表示 4 KiB。" +msgid "Maximum number of allowed redirects." +msgstr "允许的最大重定向数。" + msgid "" "If set to a value greater than [code]0.0[/code] before the request starts, " "the HTTP request will time out after [code]timeout[/code] seconds have " @@ -13678,6 +28386,9 @@ msgstr "解析时请求失败。" msgid "Request failed due to connection (read/write) error." msgstr "因连接(读写)错误而失败。" +msgid "Request failed on TLS handshake." +msgstr "TLS 握手时请求失败。" + msgid "Request does not have a response (yet)." msgstr "请求(目前还)没有获得相应。" @@ -13724,6 +28435,12 @@ msgstr "" "都存储在一个位上,则返回 [constant ALPHA_BIT]。如果没有找到 Alpha 值的数据," "则返回 [constant ALPHA_NONE]。" +msgid "Fills the image with [param color]." +msgstr "使用颜色 [param color] 填充图像。" + +msgid "Fills [param rect] with [param color]." +msgstr "使用颜色 [param color] 填充矩形 [param rect]。" + msgid "Blends low-alpha pixels with nearby pixels." msgstr "将 Alpha 较低的像素与附近像素混合。" @@ -13822,6 +28539,11 @@ msgid "" msgstr "OpenGL 纹理格式,具有两个值,亮度和 Alpha,都以 8 位存储。" msgid "" +"OpenGL texture format [code]RED[/code] with a single component and a " +"bitdepth of 8." +msgstr "OpenGL 纹理格式 [code]RED[/code],具有单个分量和 8 位深度。" + +msgid "" "OpenGL texture format [code]RG[/code] with two components and a bitdepth of " "8 for each." msgstr "OpenGL 纹理格式 [code]RG[/code],具有两个部分,每个部分的位深度为 8。" @@ -14098,7 +28820,7 @@ msgstr "" "[b]注意:[/b]创建 [ImageTexture] 时,会执行 sRGB 到线性色彩空间的转换。" msgid "Represents the size of the [enum Format] enum." -msgstr "表示 [enum Format] 枚举的大小。" +msgstr "代表 [enum Format] 枚举的大小。" msgid "" "Performs nearest-neighbor interpolation. If the image is resized, it will be " @@ -14183,6 +28905,9 @@ msgid "" "compressed into two channels)." msgstr "原始纹理(在压缩前)是法线纹理(例如可以压缩为两个通道)。" +msgid "A [Texture2D] based on an [Image]." +msgstr "基于 [Image] 的 [Texture2D]。" + msgid "Returns the format of the texture, one of [enum Image.Format]." msgstr "返回纹理的格式,[enum Image.Format] 之一。" @@ -14192,6 +28917,9 @@ msgstr "将纹理的大小调整为指定的尺寸。" msgid "Texture with 3 dimensions." msgstr "具有 3 个维度的纹理。" +msgid "Clear all surfaces." +msgstr "清除所有表面。" + msgid "" "Returns a [Material] in a given surface. Surface is rendered using this " "material." @@ -14215,6 +28943,9 @@ msgstr "" "目 > 项目设置[/b]的[b]输入映射[/b]选项卡中或使用 [InputMap] 类设置操作及其事" "件。" +msgid "Inputs documentation index" +msgstr "输入文档索引" + msgid "" "This will simulate pressing the specified action.\n" "The strength can be used for non-boolean actions, it's ranged between 0 and " @@ -14523,13 +29254,6 @@ msgstr "" "如果这个输入事件的类型是可以分配给输入动作的类型,则返回 [code]true[/code]。" msgid "" -"Returns [code]true[/code] if this input event is an echo event (only for " -"events of type [InputEventKey])." -msgstr "" -"如果这个输入事件是回显事件(仅适用于 [InputEventKey] 类型的事件),则返回 " -"[code]true[/code]。" - -msgid "" "The event's device ID.\n" "[b]Note:[/b] This device ID will always be [code]-1[/code] for emulated " "mouse input from a touchscreen. This can be used to distinguish emulated " @@ -14613,6 +29337,9 @@ msgid "" msgstr "" "存储关于操纵杆运动的信息。一个 [InputEventJoypadMotion] 一次代表一个轴。" +msgid "Axis identifier. Use one of the [enum JoyAxis] axis constants." +msgstr "轴标识符。使用 [enum JoyAxis] 轴常量。" + msgid "" "Current position of the joystick on the given axis. The value ranges from " "[code]-1.0[/code] to [code]1.0[/code]. A value of [code]0[/code] means the " @@ -14625,6 +29352,21 @@ msgid "Input event type for keyboard events." msgstr "键盘事件的输入事件类型。" msgid "" +"Returns a [String] representation of the event's [member key_label] and " +"modifiers." +msgstr "返回该事件 [member key_label] 及修饰键的 [String] 字符串表示。" + +msgid "" +"Returns a [String] representation of the event's [member keycode] and " +"modifiers." +msgstr "返回该事件 [member key_keycode] 及修饰键的 [String] 字符串表示。" + +msgid "" +"Returns a [String] representation of the event's [member physical_keycode] " +"and modifiers." +msgstr "返回该事件 [member physical_keycode] 及修饰键的 [String] 字符串表示。" + +msgid "" "If [code]true[/code], the key was already pressed before this event. It " "means the user is holding the key down." msgstr "" @@ -14632,6 +29374,30 @@ msgstr "" "键。" msgid "" +"Latin label printed on the key in the current keyboard layout, which " +"corresponds to one of the [enum Key] constants.\n" +"To get a human-readable representation of the [InputEventKey], use [code]OS." +"get_keycode_string(event.keycode)[/code] where [code]event[/code] is the " +"[InputEventKey].\n" +"[codeblock]\n" +" +-----+ +-----+\n" +" | Q | | Q | - \"Q\" - keycode\n" +" | Й | | ض | - \"Й\" and \"ض\" - key_label\n" +" +-----+ +-----+\n" +"[/codeblock]" +msgstr "" +"当前键盘布局中键上打印的拉丁标签,对应于 [enum Key] 常量之一。\n" +"要获得 [InputEventKey] 的人类可读表示,请使用 [code]OS." +"get_keycode_string(event.keycode)[/code],其中 [code]event[/code] 是 " +"[InputEventKey]。\n" +"[codeblock]\n" +" +-----+ +-----+\n" +" | Q | | Q | - \"Q\" - 键码\n" +" | Й | | ض | - \"Й\" 和 \"ض\" - key_label\n" +" +-----+ +-----+\n" +"[/codeblock]" + +msgid "" "If [code]true[/code], the key's state is pressed. If [code]false[/code], the " "key's state is released." msgstr "" @@ -14777,6 +29543,9 @@ msgstr "" "代表笔的倾斜角度。正的 X 坐标值表示向右倾斜。正的Y坐标值表示向用户自身倾斜。" "两个轴的范围是 [code]-1.0[/code] 到 [code]1.0[/code]。" +msgid "The mouse velocity in pixels per second." +msgstr "鼠标速度,以像素每秒为单位。" + msgid "" "Input event type for screen drag events. Only available on mobile devices." msgstr "屏幕拖动事件的输入事件类型。仅适用于移动设备。" @@ -14795,6 +29564,9 @@ msgid "" "frame)." msgstr "相对于之前位置(上一帧时的位置)的拖拽位置。" +msgid "The drag velocity." +msgstr "拖拽的速度。" + msgid "" "Input event type for screen touch events.\n" "(only available on mobile devices)" @@ -14809,10 +29581,16 @@ msgstr "" "存储多点触摸的按压/释放信息。支持触摸按压、触摸释放和 [member index] 的多点触" "摸计数和顺序。" +msgid "If [code]true[/code], the touch's state is a double tap." +msgstr "如果为 [code]true[/code],则触摸状态为双击。" + msgid "" "The touch index in the case of a multi-touch event. One index = one finger." msgstr "在多点触摸事件中的触摸指数。一个索引 = 一个手指。" +msgid "The touch position, in screen (global) coordinates." +msgstr "触摸位置,使用屏幕(全局)坐标。" + msgid "" "If [code]true[/code], the touch's state is pressed. If [code]false[/code], " "the touch's state is released." @@ -14823,6 +29601,51 @@ msgstr "" msgid "Base class for keys events with modifiers." msgstr "带有修饰符的键事件的基类。" +msgid "" +"Contains keys events information with modifiers support like [kbd]Shift[/" +"kbd] or [kbd]Alt[/kbd]. See [method Node._input]." +msgstr "" +"包含带有修饰键支持的按键事件信息,如 [kbd]Shift[/kbd] 或 [kbd]Alt[/kbd]。见 " +"[method Node._input]。" + +msgid "Returns the keycode combination of modifier keys." +msgstr "返回修饰键的键码组合。" + +msgid "" +"On macOS, returns [code]true[/code] if [kbd]Meta[/kbd] ([kbd]Command[/kbd]) " +"is pressed.\n" +"On other platforms, returns [code]true[/code] if [kbd]Ctrl[/kbd] is pressed." +msgstr "" +"在 macOS 上,如果 [kbd]Meta[/kbd]([kbd]Command[/kbd])是按下状态,则返回 " +"[code]true[/code] 。\n" +"在其他平台上,如果 [kbd]Ctrl[/kbd] 是按下状态,则返回 [code]true[/code] 。" + +msgid "State of the [kbd]Alt[/kbd] modifier." +msgstr "[kbd]Alt[/kbd] 修饰键的状态。" + +msgid "" +"Automatically use [kbd]Meta[/kbd] ([kbd]Command[/kbd]) on macOS and " +"[kbd]Ctrl[/kbd] on other platforms. If [code]true[/code], [member " +"ctrl_pressed] and [member meta_pressed] cannot be set." +msgstr "" +"自动在 macOS 上使用 [kbd]Meta[/kbd]([kbd]Command[/kbd]),在其他平台上使用 " +"[kbd]Ctrl[/kbd]。如果为 [code]true[/code],则无法设置 [member ctrl_pressed] " +"和 [member meta_pressed]。" + +msgid "State of the [kbd]Ctrl[/kbd] modifier." +msgstr "[kbd]Ctrl[/kbd] 修饰键的状态。" + +msgid "" +"State of the [kbd]Meta[/kbd] modifier. On Windows and Linux, this represents " +"the Windows key (sometimes called \"meta\" or \"super\" on Linux). On macOS, " +"this represents the Command key." +msgstr "" +"[kbd]Meta[/kbd] 修饰键的状态。在 Windows 和 Linux 上代表 Windows 键(有时在 " +"Linux 上称为“meta”或“super”键)。在 macOS 上代表 Command 键。" + +msgid "State of the [kbd]Shift[/kbd] modifier." +msgstr "[kbd]Shift[/kbd] 修饰键的状态。" + msgid "Singleton that manages [InputEventAction]." msgstr "管理 [InputEventAction] 的单例。" @@ -14836,6 +29659,9 @@ msgstr "" "映射[/b]或在代码中用 [method add_action] 和 [method action_add_event] 创建/修" "改。请参阅 [method Node._input]。" +msgid "InputEvent: InputMap" +msgstr "InputEvent:InputMap" + msgid "" "Adds an [InputEvent] to an action. This [InputEvent] will trigger the action." msgstr "给某个动作添加一个 [InputEvent]。这个 [InputEvent] 将触发这个动作。" @@ -14906,16 +29732,399 @@ msgstr "" msgid "Integer built-in type." msgstr "整数内置类型。" +msgid "" +"Signed 64-bit integer type.\n" +"It can take values in the interval [code][-2^63, 2^63 - 1][/code], i.e. " +"[code][-9223372036854775808, 9223372036854775807][/code]. Exceeding those " +"bounds will wrap around.\n" +"[int] is a [Variant] type, and will thus be used when assigning an integer " +"value to a [Variant]. It can also be enforced with the [code]: int[/code] " +"type hint.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var my_variant = 0 # int, value 0.\n" +"my_variant += 4.2 # float, value 4.2.\n" +"var my_int: int = 1 # int, value 1.\n" +"my_int = 4.2 # int, value 4, the right value is implicitly cast to int.\n" +"my_int = int(\"6.7\") # int, value 6, the String is explicitly cast with " +"int.\n" +"var max_int = 9223372036854775807\n" +"print(max_int) # 9223372036854775807, OK.\n" +"max_int += 1\n" +"print(max_int) # -9223372036854775808, we overflowed and wrapped around.\n" +"[/gdscript]\n" +"[csharp]\n" +"int myInt = (int)\"6.7\".ToFloat(); // int, value 6, the String is " +"explicitly cast with int.\n" +"// We have to use `long` here, because GDSript's `int`\n" +"// is 64 bits long while C#'s `int` is only 32 bits.\n" +"long maxInt = 9223372036854775807;\n" +"GD.Print(maxInt); // 9223372036854775807, OK.\n" +"maxInt++;\n" +"GD.Print(maxInt); // -9223372036854775808, we overflowed and wrapped " +"around.\n" +"\n" +"// Alternatively, if we used C#'s 32-bit `int` type, the maximum value is " +"much smaller:\n" +"int halfInt = 2147483647;\n" +"GD.Print(halfInt); // 2147483647, OK.\n" +"halfInt++;\n" +"GD.Print(halfInt); // -2147483648, we overflowed and wrapped around.\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"有符号 64 位整数类型。\n" +"可以接受 [code][-2^63, 2^63 - 1][/code] 范围内的值,即 [code]" +"[-9223372036854775808, 9223372036854775807][/code]。超出这个界限后会环绕至另" +"一端。\n" +"[int] 是 [Variant] 类型,因此会在将整数值赋给 [Variant] 时使用。也可以用类型" +"提示 [code]: int[/code] 强制。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var my_variant = 0 # int,值为 0。\n" +"my_variant += 4.2 # float,值为 4.2。\n" +"var my_int: int = 1 # int,值为 1。\n" +"my_int = 4.2 # int,值为 4,右侧的值隐式转换为了 int。\n" +"my_int = int(\"6.7\") # int,值为 6,该 String 显式转换为了 int。\n" +"var max_int = 9223372036854775807\n" +"print(max_int) # 9223372036854775807,正确。\n" +"max_int += 1\n" +"print(max_int) # -9223372036854775808,溢出,环绕至另一端。\n" +"[/gdscript]\n" +"[csharp]\n" +"int myInt = (int)\"6.7\".ToFloat(); // int,值为 6,该 String 显式转换为了 " +"int。\n" +"// 这里我们需要用 `long`,因为 GDSript 的 `int`\n" +"// 为 64 位,而 C# 的 `int` 只有 32 位。\n" +"long maxInt = 9223372036854775807;\n" +"GD.Print(maxInt); // 9223372036854775807,正确。\n" +"maxInt++;\n" +"GD.Print(maxInt); // -9223372036854775808,溢出,环绕至另一端。\n" +"\n" +"// 或者,如果我们使用 C# 的 32 位 `int` 类型,则最大值相对要小很多:\n" +"int halfInt = 2147483647;\n" +"GD.Print(halfInt); // 2147483647,正确。\n" +"halfInt++;\n" +"GD.Print(halfInt); // -2147483648,溢出,环绕至另一端。\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "Constructs a default-initialized [int] set to [code]0[/code]." +msgstr "构造默认初始化为 [code]0[/code] 的 [int]。" + msgid "Constructs an [int] as a copy of the given [int]." msgstr "构造给定 [int] 的副本。" msgid "" +"Converts a [String] to an [int], following the same rules as [method String." +"to_int]." +msgstr "将 [String] 转换为 [int],遵循与 [method String.to_int] 相同的规则。" + +msgid "" "Cast a [bool] value to an integer value, [code]int(true)[/code] will be " "equals to 1 and [code]int(false)[/code] will be equals to 0." msgstr "" -"将 [bool] 值转换成整数值,[code]int(true)[/code] 将等于 1,[code]int(false)[/" +"将 [bool] 值转换为整数值,[code]int(true)[/code] 将等于 1,[code]int(false)[/" "code] 将等于 0。" +msgid "" +"Cast a float value to an integer value, this method simply removes the " +"number fractions (i.e. rounds [param from] towards zero), so for example " +"[code]int(2.7)[/code] will be equals to 2, [code]int(0.1)[/code] will be " +"equals to 0 and [code]int(-2.7)[/code] will be equals to -2. This operation " +"is also called truncation." +msgstr "" +"将浮点值转换为整数值,该方法只是删除数字的小数部分(即,将 [param from] 向零" +"舍入),因此例如 [code]int(2.7)[/code] 将等于 2,[code]int(0.1)[/code] 将等" +"于 0,而 [code]int(-2.7)[/code] 将等于 -2。这个操作也称为截断。" + +msgid "" +"Returns [code]true[/code] if this [int] is not equivalent to the given " +"[float]." +msgstr "如果该 [int] 与给定的 [float] 不等价,则返回 [code]true[/code]。" + +msgid "Returns [code]true[/code] if the integers are not equal." +msgstr "如果两个整数不相等,则返回 [code]true[/code]。" + +msgid "" +"Returns the remainder after dividing two integers. 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(5 % 2) # 1\n" +"print(12 % 4) # 0\n" +"print(-5 % 3) # -2\n" +"[/codeblock]" +msgstr "" +"返回两个整数相除后的余数。该操作使用截断除法,通常并不希望如此,因为它不适用" +"于负数。如果要处理负数,请考虑改用 [method @GlobalScope.posmod]。\n" +"[codeblock]\n" +"print(5 % 2) # 1\n" +"print(12 % 4) # 0\n" +"print(-5 % 3) # -2\n" +"[/codeblock]" + +msgid "" +"Returns the result of bitwise [code]AND[/code] operation for two integers.\n" +"[codeblock]\n" +"print(3 & 1) # 1\n" +"print(11 & 3) # 3\n" +"[/codeblock]\n" +"It's useful to retrieve binary flags from a variable.\n" +"[codeblock]\n" +"var flags = 5\n" +"# Do something if the first bit is enabled.\n" +"if flags & 1:\n" +" do_stuff()\n" +"[/codeblock]" +msgstr "" +"返回两个整数按位 [code]AND[/code] 运算的结果。\n" +"[codeblock]\n" +"print(3 & 1) # 1\n" +"print(11 & 3) # 3\n" +"[/codeblock]\n" +"从变量中检索二进制标志很有用。\n" +"[codeblock]\n" +"var flags = 5\n" +"# 如果启用了第一位,请执行某些操作。\n" +"if flags & 1:\n" +" do_stuff()\n" +"[/codeblock]" + +msgid "" +"Multiplies each component of the [Quaternion] by the given [int]. This " +"operation is not meaningful on its own, but it can be used as a part of a " +"larger expression." +msgstr "" +"将该 [Quaternion] 的每个分量乘以给定的 [float]。此操作本身没有意义,但可以用" +"作更大表达式的一部分。" + +msgid "" +"Multiplies each component of the [Vector2] by the given [int].\n" +"[codeblock]\n" +"print(2 * Vector2(1, 1)) # Vector2(2, 2)\n" +"[/codeblock]" +msgstr "" +"将该 [Vector2] 的每个分量乘以给定的 [int]。\n" +"[codeblock]\n" +"print(2 * Vector2(1, 1)) # Vector2(2, 2)\n" +"[/codeblock]" + +msgid "Multiplies each component of the [Vector2i] by the given [int]." +msgstr "将该 [Vector2i] 的每个分量乘以给定的 [int]。" + +msgid "Multiplies each component of the [Vector3] by the given [int]." +msgstr "将该 [Vector3] 的每个分量乘以给定的 [int]。" + +msgid "Multiplies each component of the [Vector3i] by the given [int]." +msgstr "将该 [Vector3i] 的每个分量乘以给定的 [int]。" + +msgid "Multiplies each component of the [Vector4] by the given [int]." +msgstr "将该 [Vector4] 的每个分量乘以给定的 [int]。" + +msgid "Multiplies each component of the [Vector4i] by the given [int]." +msgstr "将该 [Vector4i] 的每个分量乘以给定的 [int]。" + +msgid "Multiplies an [int] and a [float]. The result is a [float]." +msgstr "将 [int] 乘以 [float]。结果为 [float]。" + +msgid "Multiplies two [int]s." +msgstr "将两个 [int] 相乘。" + +msgid "" +"Raises an [int] to a power of a [float]. The result is a [float].\n" +"[codeblock]\n" +"print(8**0.25) # 1.68179283050743\n" +"[/codeblock]" +msgstr "" +"将 [int] 提升到 [float] 次幂。结果为 [float]。\n" +"[codeblock]\n" +"print(8**0.25) # 1.68179283050743\n" +"[/codeblock]" + +msgid "" +"Raises an [int] to a power of a [int].\n" +"[codeblock]\n" +"print(5**5) # 3125\n" +"[/codeblock]" +msgstr "" +"将 [int] 提升到 [int] 次幂。\n" +"[codeblock]\n" +"print(5**5) # 3125\n" +"[/codeblock]" + +msgid "Adds an [int] and a [float]. The result is a [float]." +msgstr "将 [int] 加上 [float]。结果为 [float]。" + +msgid "Adds two integers." +msgstr "将两个整数相加。" + +msgid "Subtracts a [float] from an [int]. The result is a [float]." +msgstr "将 [int] 减去 [float]。结果为 [float]。" + +msgid "Subtracts two integers." +msgstr "将两个整数相减。" + +msgid "" +"Divides an [int] by a [float]. The result is a [float].\n" +"[codeblock]\n" +"print(10 / 3.0) # 3.333...\n" +"[/codeblock]" +msgstr "" +"将 [int] 除以 [float]。结果为 [float]。\n" +"[codeblock]\n" +"print(10 / 3.0) # 3.333...\n" +"[/codeblock]" + +msgid "" +"Divides two integers. The decimal part of the result is discarded " +"(truncated).\n" +"[codeblock]\n" +"print(10 / 2) # 5\n" +"print(10 / 3) # 3\n" +"[/codeblock]" +msgstr "" +"将两个整数相除。结果的小数部分被(截断)。\n" +"[codeblock]\n" +"print(10 / 2) # 5\n" +"print(10 / 3) # 3\n" +"[/codeblock]" + +msgid "Returns [code]true[/code] if this [int] is less than the given [float]." +msgstr "如果该 [int] 小于给定的 [float],则返回 [code]true[/code]。" + +msgid "" +"Returns [code]true[/code] if the left integer is less than the right one." +msgstr "如果左侧的整数小于右侧,则返回 [code]true[/code]。" + +msgid "" +"Performs bitwise shift left operation on the integer. Effectively the same " +"as multiplying by a power of 2.\n" +"[codeblock]\n" +"print(10 << 1) # 20\n" +"print(10 << 4) # 160\n" +"[/codeblock]" +msgstr "" +"对该整数执行按位左移操作。效果上与乘以 2 的幂相同。\n" +"[codeblock]\n" +"print(10 << 1) # 20\n" +"print(10 << 4) # 160\n" +"[/codeblock]" + +msgid "" +"Returns [code]true[/code] if this [int] is less than or equal to the given " +"[float]." +msgstr "如果该 [int] 小于等于给定的 [float],则返回 [code]true[/code]。" + +msgid "" +"Returns [code]true[/code] if the left integer is less than or equal to the " +"right one." +msgstr "如果左侧的整数小于等于右侧,则返回 [code]true[/code]。" + +msgid "Returns [code]true[/code] if the integer is equal to the given [float]." +msgstr "如果该整数等于给定的 [float],则返回 [code]true[/code]。" + +msgid "Returns [code]true[/code] if both integers are equal." +msgstr "如果两个整数相等,则返回 [code]true[/code]。" + +msgid "" +"Returns [code]true[/code] if this [int] is greater than the given [float]." +msgstr "如果该 [int] 大于给定的 [float],则返回 [code]true[/code]。" + +msgid "" +"Returns [code]true[/code] if the left integer is greater than the right one." +msgstr "如果左侧的整数大于右侧,则返回 [code]true[/code]。" + +msgid "" +"Returns [code]true[/code] if this [int] is greater than or equal to the " +"given [float]." +msgstr "如果该 [int] 大于等于给定的 [float],则返回 [code]true[/code]。" + +msgid "" +"Returns [code]true[/code] if the left integer is greater than or equal to " +"the right one." +msgstr "如果左侧的整数大于等于右侧,则返回 [code]true[/code]。" + +msgid "" +"Performs bitwise shift right operation on the integer. Effectively the same " +"as dividing by a power of 2.\n" +"[codeblock]\n" +"print(10 >> 1) # 5\n" +"print(10 >> 2) # 2\n" +"[/codeblock]" +msgstr "" +"对该整数执行按位右移操作。效果上与除以 2 的幂相同。\n" +"[codeblock]\n" +"print(10 >> 1) # 5\n" +"print(10 >> 2) # 2\n" +"[/codeblock]" + +msgid "" +"Returns the result of bitwise [code]XOR[/code] operation for two integers.\n" +"[codeblock]\n" +"print(5 ^ 1) # 4\n" +"print(4 ^ 7) # 3\n" +"[/codeblock]" +msgstr "" +"返回两个整数按位 [code]XOR[/code](异或)运算的结果。\n" +"[codeblock]\n" +"print(5 ^ 1) # 4\n" +"print(4 ^ 7) # 3\n" +"[/codeblock]" + +msgid "" +"Returns the negated value of the [int]. If positive, turns the number " +"negative. If negative, turns the number positive. If zero, does nothing." +msgstr "" +"返回该 [int] 的相反值。如果为正数,则该将数变为负数。如果为负数,则将该数变为" +"正数。如果为零,则不执行任何操作。" + +msgid "" +"Returns the result of bitwise [code]OR[/code] operation for two integers.\n" +"[codeblock]\n" +"print(2 | 4) # 6\n" +"print(1 | 3) # 3\n" +"[/codeblock]\n" +"It's useful to store binary flags in a variable.\n" +"[codeblock]\n" +"var flags = 0\n" +"# Turn first and third bit on.\n" +"flags |= 1\n" +"flags |= 4\n" +"[/codeblock]" +msgstr "" +"返回两个整数按位 [code]OR[/code](或)运算的结果。\n" +"[codeblock]\n" +"print(2 | 4) # 6\n" +"print(1 | 3) # 3\n" +"[/codeblock]\n" +"可用于在变量中存储二进制标记。\n" +"[codeblock]\n" +"var flags = 0\n" +"# 置第一和第三位。\n" +"flags |= 1\n" +"flags |= 4\n" +"[/codeblock]" + +msgid "" +"Returns the result of bitwise [code]NOT[/code] operation for the integer. " +"It's effectively equal to [code]-int + 1[/code].\n" +"[codeblock]\n" +"print(~4) # -3\n" +"print(~7) # -6\n" +"[/codeblock]" +msgstr "" +"返回两个整数按位 [code]NOT[/code](反)运算的结果。效果上与 [code]-int + 1[/" +"code] 相同。\n" +"[codeblock]\n" +"print(~4) # -3\n" +"print(~7) # -6\n" +"[/codeblock]" + +msgid "Creates an idle interval in a [Tween] animation." +msgstr "在 [Tween] 动画中创建空闲间隔。" + msgid "Internet protocol (IP) support functions such as DNS resolution." msgstr "网际协议(IP)支持函数,如 DNS 解析。" @@ -15007,6 +30216,16 @@ msgid "" "necessary." msgstr "确保当前选择可见,根据需要调整滚动位置。" +msgid "" +"Returns the custom background color of the item specified by [param idx] " +"index." +msgstr "返回项目的自定义背景色,项目由索引 [param idx] 指定。" + +msgid "" +"Returns the custom foreground color of the item specified by [param idx] " +"index." +msgstr "返回项目的自定义前景色,项目由索引 [param idx] 指定。" + msgid "Returns the icon associated with the specified index." msgstr "返回与指定索引相关的图标。" @@ -15018,12 +30237,18 @@ msgid "" "region has no area." msgstr "返回项目图标的使用区域。如果该区域大小为 0,整个图标将被使用。" +msgid "Returns item's text language code." +msgstr "返回项目文本的语言代码。" + msgid "Returns the metadata value of the specified index." msgstr "返回指定索引的元数据值。" msgid "Returns the text associated with the specified index." msgstr "返回与指定索引关联的文本。" +msgid "Returns item's text base writing direction." +msgstr "返回项目文本的基础书写方向。" + msgid "Returns the tooltip hint associated with the specified index." msgstr "返回与指定索引关联的工具提示。" @@ -15065,6 +30290,12 @@ msgid "" "selected." msgstr "索引所对应的项目被选中时,返回 [code]true[/code]。" +msgid "Moves item from index [param from_idx] to [param to_idx]." +msgstr "将项目从索引 [param from_idx] 移到 [param to_idx]。" + +msgid "Removes the item specified by [param idx] index from the list." +msgstr "从列表中删除索引 [param idx] 指定的项目。" + msgid "" "Select the item at the specified index.\n" "[b]Note:[/b] This method does not trigger the item selection signal." @@ -15073,6 +30304,16 @@ msgstr "" "[b]注意:[/b]此方法不触发项目选择信号。" msgid "" +"Sets the background color of the item specified by [param idx] index to the " +"specified [Color]." +msgstr "将索引 [param idx] 指定的项目的背景色设置为指定的 [Color]。" + +msgid "" +"Sets the foreground color of the item specified by [param idx] index to the " +"specified [Color]." +msgstr "将索引 [param idx] 指定的项目的前景色设置为指定的 [Color]。" + +msgid "" "Sets a modulating [Color] of the item associated with the specified index." msgstr "设置与指定索引相关的项目的调制颜色 [Color]。" @@ -15085,6 +30326,12 @@ msgid "Sets whether the item icon will be drawn transposed." msgstr "设置项目图标是否将被转置绘制。" msgid "" +"Sets language code of item's text used for line-breaking and text shaping " +"algorithms, if left empty current locale is used instead." +msgstr "" +"设置项目文本的语言代码,用于断行和文本塑形算法,如果留空则使用当前区域设置。" + +msgid "" "Sets a value (of any type) to be stored with the item associated with the " "specified index." msgstr "设置与指定索引相关的项目存储的值(任何类型的值)。" @@ -15097,6 +30344,9 @@ msgstr "允许或禁止选择与指定索引关联的项目。" msgid "Sets text of the item associated with the specified index." msgstr "设置与指定索引相关的项目的文本。" +msgid "Sets item's text base writing direction." +msgstr "设置项目文本的基础书写方向。" + msgid "Sets the tooltip hint for the item associated with the specified index." msgstr "设置与指定索引相关的项目的工具提示。" @@ -15145,6 +30395,9 @@ msgid "" "takes effect." msgstr "在 [member fixed_icon_size] 和转置生效后应用的图标比例。" +msgid "The number of items currently in the list." +msgstr "当前列表中的项目数。" + msgid "" "Maximum columns the list will have.\n" "If greater than zero, the content will be split among the specified " @@ -15227,6 +30480,9 @@ msgstr "项目菜单之间的垂直间距。" msgid "[Font] of the item's text." msgstr "项目文本的字体 [Font] 。" +msgid "Font size of the item's text." +msgstr "项目文本的字体大小。" + msgid "[StyleBox] used for the cursor, when the [ItemList] is being focused." msgstr "当该 [ItemList] 获得焦点时,用作光标的样式盒 [StyleBox]。" @@ -15235,6 +30491,14 @@ msgid "" msgstr "当该 [ItemList] 未获得焦点时,用作光标的样式盒 [StyleBox]。" msgid "" +"The focused style for the [ItemList], drawn on top of the background, but " +"below everything else." +msgstr "该 [ItemList]的焦点样式,绘制在背景之上,但低于其他东西。" + +msgid "The background style for the [ItemList]." +msgstr "该 [ItemList] 的默认背景。" + +msgid "" "[StyleBox] for the selected items, used when the [ItemList] is not being " "focused." msgstr "所选项的样式盒 [StyleBox],当该 [ItemList] 未获得焦点时使用。" @@ -15243,6 +30507,9 @@ msgid "" "[StyleBox] for the selected items, used when the [ItemList] is being focused." msgstr "所选项的样式盒 [StyleBox],当该 [ItemList] 获得焦点时使用。" +msgid "Exporting for the Web: Calling JavaScript from script" +msgstr "为 Web 导出:从脚本调用 JavaScript" + msgid "" "Returns [code]true[/code] if a new version of the progressive web app is " "waiting to be activated.\n" @@ -15271,6 +30538,9 @@ msgstr "" "在检测到该渐进式网络应用程序的更新,但因为存在活动的较早版本而等待激活时触" "发。要强制立即执行更新,请参阅 [method pwa_update]。" +msgid "A wrapper class for web native JavaScript objects." +msgstr "Web 原生 JavaScript 对象的封装类。" + msgid "" "Singleton that connects the engine with Android plugins to interface with " "native Android code." @@ -15336,6 +30606,111 @@ msgid "" msgstr "" "用于定义哪个解算器在多个关节中被首先执行的优先级。数值越低,优先级越高。" +msgid "Helper class for creating and parsing JSON data." +msgstr "用于创建和解析 JSON 数据的辅助类。" + +msgid "" +"The [JSON] enables all data types to be converted to and from a JSON string. " +"This useful for serializing data to save to a file or send over the " +"network.\n" +"[method stringify] is used to convert any data type into a JSON string.\n" +"[method parse] is used to convert any existing JSON data into a [Variant] " +"that can be used within Godot. If successfully parsed, use [member data] to " +"retrieve the [Variant], and use [code]typeof[/code] to check if the " +"Variant's type is what you expect. JSON Objects are converted into a " +"[Dictionary], but JSON data can be used to store [Array]s, numbers, " +"[String]s and even just a boolean.\n" +"[b]Example[/b]\n" +"[codeblock]\n" +"var data_to_send = [\"a\", \"b\", \"c\"]\n" +"var json_string = JSON.stringify(data_to_send)\n" +"# Save data\n" +"# ...\n" +"# Retrieve data\n" +"var error = json.parse(json_string)\n" +"if error == OK:\n" +" var data_received = json.data\n" +" if typeof(data_received) == TYPE_ARRAY:\n" +" print(data_received) # Prints array\n" +" else:\n" +" print(\"Unexpected data\")\n" +"else:\n" +" print(\"JSON Parse Error: \", json.get_error_message(), \" in \", " +"json_string, \" at line \", json.get_error_line())\n" +"[/codeblock]\n" +"Alternatively, you can parse string using the static [method parse_string] " +"method, but it doesn't allow to handle errors.\n" +"[codeblock]\n" +"var data = JSON.parse_string(json_string) # Returns null if parsing failed.\n" +"[/codeblock]\n" +"[b]Note:[/b] Both parse methods do not fully comply with the JSON " +"specification:\n" +"- Trailing commas in arrays or objects are ignored, instead of causing a " +"parser error.\n" +"- New line and tab characters are accepted in string literals, and are " +"treated like their corresponding escape sequences [code]\\n[/code] and " +"[code]\\t[/code].\n" +"- Numbers are parsed using [method String.to_float] which is generally more " +"lax than the JSON specification.\n" +"- Certain errors, such as invalid Unicode sequences, do not cause a parser " +"error. Instead, the string is cleansed and an error is logged to the console." +msgstr "" +"[JSON] 允许所有数据类型与 JSON 字符串相互转换。 这对于序列化数据以保存到文件" +"或通过网络发送很有用。\n" +"[method stringify] 用于将任何数据类型转换为 JSON 字符串。\n" +"[method parse] 用于将任何现有的 JSON 数据转换为可以在 Godot 中使用的 " +"[Variant]。如果解析成功,使用 [member data] 检索 [Variant],并使用 " +"[code]typeof[/code] 检查 Variant 的类型是否符合您的预期。JSON 对象被转换为 " +"[Dictionary],但 JSON 数据可用于存储 [Array]、数字、[String],甚至只是一个布" +"尔值。\n" +"[b]示例[/b]\n" +"[codeblock]\n" +"var data_to_send = [\"a\", \"b\", \"c\"]\n" +"var json_string = JSON.stringify(data_to_send)\n" +"# 保存数据\n" +"# ...\n" +"# 检索数据\n" +"var error = json.parse(json_string)\n" +"if error == OK:\n" +" var data_received = json.data\n" +" if typeof(data_received) == TYPE_ARRAY:\n" +" print(data_received) # 输出 array\n" +" else:\n" +" print(\"Unexpected data\")\n" +"else:\n" +" print(\"JSON Parse Error: \", json.get_error_message(), \" in \", " +"json_string, \" at line \", json.get_error_line())\n" +"[/codeblock]\n" +"或者,您可以使用静态 [method parse_string] 方法解析字符串,但它不允许处理错" +"误。\n" +"[codeblock]\n" +"var data = JSON.parse_string(json_string) # 如果解析失败则返回 null。\n" +"[/codeblock]\n" +"[b]注意:[/b]两种解析方式都不完全符合 JSON 规范:\n" +"- 数组或对象中的尾随逗号将被忽略,而不是引起解析器错误。\n" +"- 换行符和制表符在字符串文字中被接受,并被视为它们相应的转义序列 [code]\\n[/" +"code] 和 [code]\\t[/code]。\n" +"- 使用 [method String.to_float] 解析数字,这通常比 JSON 规范更宽松。\n" +"- 某些错误,例如无效的 Unicode 序列,不会导致解析器错误。相反,该字符串会被清" +"理并将错误记录到控制台。" + +msgid "" +"Returns [code]0[/code] if the last call to [method parse] was successful, or " +"the line number where the parse failed." +msgstr "" +"如果上一次调用 [method parse] 成功,则返回 [code]0[/code],否则返回解析失败的" +"行号。" + +msgid "" +"Returns an empty string if the last call to [method parse] was successful, " +"or the error message if it failed." +msgstr "" +"如果上一次调用 [method parse] 成功,则返回空字符串,否则返回失败时的错误消" +"息。" + +msgid "Contains the parsed JSON data in [Variant] form." +msgstr "包含解析到的 JSON 数据,类型为 [Variant]。" + msgid "A helper to handle dictionaries which look like JSONRPC documents." msgstr "用于处理看起来像 JSONRPC 文档的字典的辅助类。" @@ -15357,6 +30732,24 @@ msgid "" "JSONRPC subclass." msgstr "请求了方法调用,但 JSONRPC 子类中不存在该名称的函数。" +msgid "Collision data for [method PhysicsBody2D.move_and_collide] collisions." +msgstr "[method PhysicsBody2D.move_and_collide] 碰撞的碰撞数据。" + +msgid "Returns the colliding body's attached [Object]." +msgstr "返回该碰撞物体所附加的 [Object]。" + +msgid "Returns the colliding body's shape." +msgstr "返回该碰撞物体的形状。" + +msgid "Returns the colliding body's shape index. See [CollisionObject2D]." +msgstr "返回该碰撞物体形状的索引。见 [CollisionObject2D]。" + +msgid "Returns the colliding body's velocity." +msgstr "返回该碰撞物体的速度。" + +msgid "Returns the point of collision in global coordinates." +msgstr "返回碰撞点,使用全局坐标。" + msgid "" "Displays plain text in a line or wrapped inside a rectangle. For formatted " "text, use [RichTextLabel]." @@ -15364,6 +30757,9 @@ msgstr "" "在一行中显示纯文本,或在一个矩形内包裹。对于格式化的文本,使用 " "[RichTextLabel]。" +msgid "Returns the number of lines of text the Label has." +msgstr "返回该 Label 的文本行数。" + msgid "" "Returns the total number of printable characters in the text (excluding " "spaces and newlines)." @@ -15389,6 +30785,12 @@ msgstr "该节点在开始显示文本之前会忽略前 [code]lines_skipped[/co msgid "Limits the lines of text the node shows on screen." msgstr "限制节点在屏幕上显示的文本行数。" +msgid "Set BiDi algorithm override for the structured text." +msgstr "为结构化文本设置 BiDi 算法覆盖。" + +msgid "Set additional options for BiDi override." +msgstr "设置 BiDi 覆盖的附加选项。" + msgid "The text to display on screen." msgstr "要在屏幕上显示的文本。" @@ -15398,11 +30800,14 @@ msgstr "如果为 [code]true[/code],所有文本都将显示为大写。" msgid "Default text [Color] of the [Label]." msgstr "[Label] 标签的默认文本颜色 [Color]。" +msgid "The color of text outline." +msgstr "文本轮廓的颜色。" + msgid "[Color] of the text's shadow effect." msgstr "文本阴影效果的颜色 [Color]。" msgid "Vertical space between lines in multiline [Label]." -msgstr "多行 [Label] 中各行之间的垂直空间。" +msgstr "多行 [Label] 中,行与行之间的垂直间距。" msgid "The horizontal offset of the text's shadow." msgstr "文本阴影的水平偏移。" @@ -15410,9 +30815,15 @@ msgstr "文本阴影的水平偏移。" msgid "The vertical offset of the text's shadow." msgstr "文本阴影的垂直偏移。" +msgid "The size of the shadow outline." +msgstr "阴影轮廓的大小。" + msgid "[Font] used for the [Label]'s text." msgstr "用于标签 [Label] 文本的字体 [Font]。" +msgid "Font size of the [Label]'s text." +msgstr "该 [Label] 文本的字体大小。" + msgid "Background [StyleBox] for the [Label]." msgstr "为 [Label] 设置背景样式盒 [StyleBox]。" @@ -15439,6 +30850,12 @@ msgstr "" "DrawFlags]。" msgid "" +"The type of alpha antialiasing to apply. See [enum BaseMaterial3D." +"AlphaAntiAliasing]." +msgstr "" +"要应用的 Alpha 抗锯齿类型。见 [enum BaseMaterial3D.AlphaAntiAliasing]。" + +msgid "" "The alpha cutting mode to use for the sprite. See [enum AlphaCutMode] for " "possible values." msgstr "该精灵的 Alpha 裁剪模式。可能的取值见 [enum AlphaCutMode]。" @@ -15458,8 +30875,11 @@ msgid "" "distance." msgstr "如果为 [code]true[/code],则无论距离远近,标签都以相同的尺寸呈现。" +msgid "Font configuration used to display text." +msgstr "用于显示文本的字体配置。" + msgid "Vertical space between lines in multiline [Label3D]." -msgstr "多行 [Label3D] 中各行之间的垂直空间。" +msgstr "多行 [Label3D] 中,行与行之间的垂直间距。" msgid "Text [Color] of the [Label3D]." msgstr "该 [Label3D] 的文本颜色 [Color]。" @@ -15483,6 +30903,9 @@ msgstr "" "[b]注意:[/b]仅适用于透明物体的排序。这不会影响透明物体相对于不透明物体的排序" "方式。这是因为不透明对象不被排序,而透明对象则从后往前排序(取决于优先级)。" +msgid "Text outline size." +msgstr "文本轮廓大小。" + msgid "" "Sets the render priority for the text. Higher priority objects will be " "sorted in front of lower priority objects.\n" @@ -15522,7 +30945,7 @@ msgid "" msgstr "标签会根据深度进行缩放,从而在屏幕上始终以相同的大小显示。" msgid "Represents the size of the [enum DrawFlags] enum." -msgstr "代表[enum DrawFlags]枚举的大小。" +msgstr "代表 [enum DrawFlags] 枚举的大小。" msgid "" "This mode draws fully opaque pixels in the depth prepass. This is slower " @@ -15539,8 +30962,48 @@ msgstr "" "[b]注意:[/b]文本中存在重叠的字形时(例如手写体),这个模式可能会造成主文本和" "轮廓的透明度排序问题。" +msgid "Collection of common settings to customize label text." +msgstr "用于自定义标签文本的常见设置合集。" + +msgid "[Font] used for the text." +msgstr "文本使用的字体。" + +msgid "Color of the text." +msgstr "文本的颜色。" + +msgid "Size of the text." +msgstr "文本的大小。" + +msgid "Vertical space between lines when the text is multiline." +msgstr "文本为多行时,行与行之间的垂直间距。" + +msgid "The color of the outline." +msgstr "轮廓的颜色。" + +msgid "" +"Color of the shadow effect. If alpha is [code]0[/code], no shadow will be " +"drawn." +msgstr "阴影效果的颜色。如果 Alpha 为 [code]0[/code] ,则不会绘制阴影。" + +msgid "Offset of the shadow effect, in pixels." +msgstr "阴影效果的偏移,单位为像素。" + +msgid "Size of the shadow effect." +msgstr "阴影效果的大小。" + msgid "Casts light in a 2D environment." -msgstr "在2D环境中投射光线。" +msgstr "在 2D 环境中投射光线。" + +msgid "" +"Casts light in a 2D environment. A light is defined as a color, an energy " +"value, a mode (see constants), and various other parameters (range and " +"shadows-related)." +msgstr "" +"在 2D 环境中投射光线。光线由颜色、能量值、模式(见常量)以及其他各种参数(与" +"范围和阴影有关)来定义。" + +msgid "The Light2D's blend mode. See [enum BlendMode] constants for values." +msgstr "该 Light2D 的混合模式。取值见 [enum BlendMode] 常量。" msgid "The Light2D's [Color]." msgstr "该 Light2D 的颜色 [Color]。" @@ -15555,11 +31018,6 @@ msgid "" "The Light2D's energy value. The larger the value, the stronger the light." msgstr "Light2D 的能量值。该值越大,光线就越强。" -msgid "" -"The layer mask. Only objects with a matching mask will be affected by the " -"Light2D." -msgstr "图层遮罩。只有具有匹配遮罩的对象才会受到Light2D的影响。" - msgid "Maximum layer value of objects that are affected by the Light2D." msgstr "受 Light2D 影响的对象的最大层数值。" @@ -15584,11 +31042,18 @@ msgid "Shadow filter type. See [enum ShadowFilter] for possible values." msgstr "阴影过滤器类型。可能的取值见 [enum ShadowFilter]。" msgid "" -"The shadow mask. Used with [LightOccluder2D] to cast shadows. Only occluders " -"with a matching light mask will cast shadows." +"No filter applies to the shadow map. This provides hard shadow edges and is " +"the fastest to render. See [member shadow_filter]." +msgstr "" +"不对阴影贴图应用过滤。提供较硬的阴影边缘,渲染速度最快。见 [member " +"shadow_filter]。" + +msgid "" +"Percentage closer filtering (5 samples) applies to the shadow map. This is " +"slower compared to hard shadow rendering. See [member shadow_filter]." msgstr "" -"阴影遮罩。与 [LightOccluder2D] 一起使用来投射阴影。只有具有匹配的光线遮罩的遮" -"挡物才会投射阴影。" +"对阴影贴图使用百分比接近过滤(5 个样本)。与硬阴影渲染相比较慢。见 [member " +"shadow_filter]。" msgid "" "Adds the value of pixels corresponding to the Light2D to the values of " @@ -15608,8 +31073,23 @@ msgstr "通过线性插值将 Light2D 对应的像素值与其下方的像素值 msgid "Provides a base class for different kinds of light nodes." msgstr "为不同类型的光节点提供基类。" +msgid "" +"Light3D is the [i]abstract[/i] base class for light nodes. As it can't be " +"instantiated, it shouldn't be used directly. Other types of light nodes " +"inherit from it. Light3D contains the common variables and parameters used " +"for lighting." +msgstr "" +"Light3D 是灯光节点的[i]抽象[/i]基类。由于无法实例化,所以不应直接使用。其他类" +"型的灯光节点继承自它。Light3D 包含用于照明的常见变量和参数。" + msgid "3D lights and shadows" -msgstr "3D 灯光和阴影" +msgstr "3D 灯光与阴影" + +msgid "Returns the value of the specified [enum Light3D.Param] parameter." +msgstr "返回指定的 [enum Light3D.Param] 参数的值。" + +msgid "Sets the value of the specified [enum Light3D.Param] parameter." +msgstr "设置指定的 [enum Light3D.Param] 参数的值。" msgid "" "If [code]true[/code], the light only appears in the editor and will not be " @@ -15655,15 +31135,181 @@ msgstr "用于访问 [member light_energy] 的常量。" msgid "Constant for accessing [member light_indirect_energy]." msgstr "用于访问 [member light_indirect_energy] 的常量。" +msgid "Constant for accessing [member light_volumetric_fog_energy]." +msgstr "用于访问 [member light_volumetric_fog_energy] 的常量。" + msgid "Constant for accessing [member light_specular]." msgstr "用于访问 [member light_specular] 的常量。" +msgid "" +"Constant for accessing [member OmniLight3D.omni_range] or [member " +"SpotLight3D.spot_range]." +msgstr "" +"用于访问 [member OmniLight3D.omni_range] 或 [member SpotLight3D.spot_range] " +"的常量。" + msgid "Constant for accessing [member light_size]." msgstr "用于访问 [member light_size] 的常量。" +msgid "" +"Constant for accessing [member OmniLight3D.omni_attenuation] or [member " +"SpotLight3D.spot_attenuation]." +msgstr "" +"用于访问 [member OmniLight3D.omni_attenuation] 或 [member SpotLight3D." +"spot_attenuation] 的常量。" + +msgid "Constant for accessing [member SpotLight3D.spot_angle]." +msgstr "用于访问 [member SpotLight3D.spot_angle] 的常量。" + +msgid "Constant for accessing [member SpotLight3D.spot_angle_attenuation]." +msgstr "用于访问 [member SpotLight3D.spot_angle_attenuation] 的常量。" + +msgid "" +"Constant for accessing [member DirectionalLight3D." +"directional_shadow_max_distance]." +msgstr "" +"用于访问 [member DirectionalLight3D.directional_shadow_max_distance] 的常量。" + +msgid "" +"Constant for accessing [member DirectionalLight3D." +"directional_shadow_split_1]." +msgstr "" +"用于访问 [member DirectionalLight3D.directional_shadow_split_1] 的常量。" + +msgid "" +"Constant for accessing [member DirectionalLight3D." +"directional_shadow_split_2]." +msgstr "" +"用于访问 [member DirectionalLight3D.directional_shadow_split_2] 的常量。" + +msgid "" +"Constant for accessing [member DirectionalLight3D." +"directional_shadow_split_3]." +msgstr "" +"用于访问 [member DirectionalLight3D.directional_shadow_split_3] 的常量。" + +msgid "" +"Constant for accessing [member DirectionalLight3D." +"directional_shadow_fade_start]." +msgstr "" +"用于访问 [member DirectionalLight3D.directional_shadow_fade_start] 的常量。" + +msgid "Constant for accessing [member shadow_normal_bias]." +msgstr "用于访问 [member shadow_normal_bias] 的常量。" + msgid "Constant for accessing [member shadow_bias]." msgstr "用于访问 [member shadow_bias] 的常量。" +msgid "" +"Constant for accessing [member DirectionalLight3D." +"directional_shadow_pancake_size]." +msgstr "" +"用于访问 [member DirectionalLight3D.directional_shadow_pancake_size] 的常量。" + +msgid "Constant for accessing [member shadow_opacity]." +msgstr "用于访问 [member shadow_opacity] 的常量。" + +msgid "Constant for accessing [member shadow_blur]." +msgstr "用于访问 [member shadow_blur] 的常量。" + +msgid "Constant for accessing [member shadow_transmittance_bias]." +msgstr "用于访问 [member shadow_transmittance_bias] 的常量。" + +msgid "" +"Constant for accessing [member light_intensity_lumens] and [member " +"light_intensity_lux]. Only used when [member ProjectSettings.rendering/" +"lights_and_shadows/use_physical_light_units] is [code]true[/code]." +msgstr "" +"用于访问 [member light_intensity_lumens] 和 [member light_intensity_lux] 的常" +"量。只在 [member ProjectSettings.rendering/lights_and_shadows/" +"use_physical_light_units] 为 [code]true[/code] 时使用。" + +msgid "" +"The color to use for environment lighting. Only effective if [member " +"environment_mode] is [constant ENVIRONMENT_MODE_CUSTOM_COLOR]." +msgstr "" +"用于环境照明的颜色。仅在 [member environment_mode] 为 [constant " +"ENVIRONMENT_MODE_CUSTOM_COLOR] 时有效。" + +msgid "" +"The color multiplier to use for environment lighting. Only effective if " +"[member environment_mode] is [constant ENVIRONMENT_MODE_CUSTOM_COLOR]." +msgstr "" +"用于环境照明的颜色倍数。仅在 [member environment_mode] 为 [constant " +"ENVIRONMENT_MODE_CUSTOM_COLOR] 时有效。" + +msgid "" +"The sky to use as a source of environment lighting. Only effective if " +"[member environment_mode] is [constant ENVIRONMENT_MODE_CUSTOM_SKY]." +msgstr "" +"用作环境照明光源的天空。仅在 [member environment_mode] 为 [constant " +"ENVIRONMENT_MODE_CUSTOM_SKY] 时有效。" + +msgid "The environment mode to use when baking lightmaps." +msgstr "烘焙光照贴图时使用的环境模式。" + +msgid "" +"If [code]true[/code], ignore environment lighting when baking lightmaps." +msgstr "如果为 [code]true[/code],则会在烘焙光照贴图时忽略环境光照。" + +msgid "Lowest level of subdivision (fastest bake times, smallest file sizes)." +msgstr "最低级别的细分(烘焙时间最快,文件大小最小)。" + +msgid "Low level of subdivision (fast bake times, small file sizes)." +msgstr "较低级别的细分(烘焙时间较快,文件大小较小)。" + +msgid "High level of subdivision (slow bake times, large file sizes)." +msgstr "较高级别的细分(烘焙时间较慢,文件大小较大)。" + +msgid "Highest level of subdivision (slowest bake times, largest file sizes)." +msgstr "最高级别的细分(烘焙时间最慢,文件大小最大)。" + +msgid "Lightmap baking was successful." +msgstr "光照贴图烘焙成功。" + +msgid "" +"Lightmap baking failed because the root node for the edited scene could not " +"be accessed." +msgstr "光照贴图烘焙失败,原因是无法访问所编辑场景的根节点。" + +msgid "" +"Lightmap baking failed as the lightmap data resource is embedded in a " +"foreign resource." +msgstr "光照贴图烘焙失败,原因是光照贴图数据嵌入在外部资源之中。" + +msgid "" +"Lightmap baking failed as there is no lightmapper available in this Godot " +"build." +msgstr "光照贴图烘焙失败,原因是这个 Godot 构建中没有可用的光照贴图器。" + +msgid "" +"Lightmap baking failed as the [LightmapGIData] save path isn't configured in " +"the resource." +msgstr "光照贴图烘焙失败,原因是资源中没有配置 [LightmapGIData] 保存路径。" + +msgid "" +"Lightmap baking failed as the resulting image couldn't be saved or imported " +"by Godot after it was saved." +msgstr "" +"光照贴图烘焙失败,原因是最终的图像无法保存,或保存后无法被 Godot 导入。" + +msgid "Ignore environment lighting when baking lightmaps." +msgstr "烘焙光照贴图时忽略环境光照。" + +msgid "" +"Use [member environment_custom_sky] as a source of environment lighting when " +"baking lightmaps." +msgstr "" +"烘焙光照贴图时,使用 [member environment_custom_sky] 作为环境光照来源。" + +msgid "" +"Use [member environment_custom_color] multiplied by [member " +"environment_custom_energy] as a constant source of environment lighting when " +"baking lightmaps." +msgstr "" +"烘焙光照贴图时,使用 [member environment_custom_color] 和 [member " +"environment_custom_energy] 相乘的结果作为环境光照的恒定来源。" + msgid "Occludes light cast by a Light2D, casting shadows." msgstr "遮挡由 Light2D 投射的光线,投射阴影。" @@ -15799,6 +31445,9 @@ msgstr "执行 [enum MenuItems] 枚举中定义的给定操作。" msgid "Selects the whole [String]." msgstr "选中整个 [String]。" +msgid "If [code]true[/code], the caret (text cursor) blinks." +msgstr "如果为 [code]true[/code],则插入符号(文本光标)会闪烁。" + msgid "Duration (in seconds) of a caret's blinking cycle." msgstr "插入符号闪烁周期的持续时间(秒)。" @@ -15817,6 +31466,9 @@ msgid "" "lost." msgstr "如果为 [code]true[/code],则在丢失焦点时会取消选中文本。" +msgid "If [code]true[/code], control characters are displayed." +msgstr "如果为 [code]true[/code],则会显示控制字符。" + msgid "" "If [code]false[/code], existing text cannot be modified and new text cannot " "be added." @@ -15830,6 +31482,9 @@ msgstr "" "如果为 [code]true[/code],则 [LineEdit] 宽度将增加到比 [member text] 长。如" "果 [member text] 被缩短,它将[b]不[/b]压缩。" +msgid "If [code]true[/code], the [LineEdit] don't display decoration." +msgstr "如果为 [code]true[/code],则 [LineEdit] 不显示装饰。" + msgid "" "If [code]false[/code], using middle mouse button to paste clipboard will be " "disabled.\n" @@ -15882,6 +31537,9 @@ msgid "" msgstr "" "如果为 [code]true[/code],则在获得焦点时会在支持的平台上显示原生虚拟键盘。" +msgid "Specifies the type of virtual keyboard to show." +msgstr "指定要显示的虚拟键盘的类型。" + msgid "" "Emitted when appending text that overflows the [member max_length]. The " "appended text is truncated to fit [member max_length], and the part that " @@ -15915,8 +31573,77 @@ msgstr "撤销之前的操作。" msgid "Reverse the last undo action." msgstr "反转最后一个撤销动作。" +msgid "ID of \"Text Writing Direction\" submenu." +msgstr "“文本书写方向”子菜单的 ID。" + +msgid "Sets text direction to inherited." +msgstr "将文本方向设置为继承。" + +msgid "Sets text direction to automatic." +msgstr "将文本方向设置为自动。" + +msgid "Sets text direction to left-to-right." +msgstr "将文本方向设置为从左至右。" + +msgid "Sets text direction to right-to-left." +msgstr "将文本方向设置为从右至左。" + +msgid "Toggles control character display." +msgstr "切换控制字符的显示。" + +msgid "ID of \"Insert Control Character\" submenu." +msgstr "“插入控制字符”子菜单的 ID。" + +msgid "Inserts left-to-right mark (LRM) character." +msgstr "插入从左至右标志(LRM)字符。" + +msgid "Inserts right-to-left mark (RLM) character." +msgstr "插入从右至左标志(LRM)字符。" + +msgid "Inserts start of left-to-right embedding (LRE) character." +msgstr "插入开始从左至右嵌入(LRE)字符。" + +msgid "Inserts start of right-to-left embedding (RLE) character." +msgstr "插入开始从右至左嵌入(RLE)字符。" + +msgid "Inserts start of left-to-right override (LRO) character." +msgstr "插入开始从左至右强制(LRO)字符。" + +msgid "Inserts start of right-to-left override (RLO) character." +msgstr "插入开始从右至左嵌入(RLE)字符。" + +msgid "Inserts pop direction formatting (PDF) character." +msgstr "插入退出方向格式化(PDF)字符。" + +msgid "Inserts Arabic letter mark (ALM) character." +msgstr "插入阿拉伯字母标记(ALM)字符。" + +msgid "Inserts left-to-right isolate (LRI) character." +msgstr "插入从左至右隔离(LRI)字符。" + +msgid "Inserts right-to-left isolate (RLI) character." +msgstr "插入从右至左隔离(RLI)字符。" + +msgid "Inserts first strong isolate (FSI) character." +msgstr "插入第一个强隔离(FSI)字符。" + +msgid "Inserts pop direction isolate (PDI) character." +msgstr "插入退出方向隔离(PDI)字符。" + +msgid "Inserts zero width joiner (ZWJ) character." +msgstr "插入零宽连接符(ZWJ)字符。" + +msgid "Inserts zero width non-joiner (ZWNJ) character." +msgstr "插入零宽非连接符(ZWNJ)字符。" + +msgid "Inserts word joiner (WJ) character." +msgstr "插入文字连接符(WJ)字符。" + +msgid "Inserts soft hyphen (SHY) character." +msgstr "插入软连字符(SHY)字符。" + msgid "Represents the size of the [enum MenuItems] enum." -msgstr "表示 [enum MenuItems] 枚举的大小。" +msgstr "代表 [enum MenuItems] 枚举的大小。" msgid "Color used as default tint for the clear button." msgstr "用作清除按钮默认色调的颜色。" @@ -15927,6 +31654,9 @@ msgstr "按下清除按钮时使用的颜色。" msgid "Default font color." msgstr "默认字体颜色。" +msgid "Font color for [member placeholder_text]." +msgstr "[member placeholder_text] 的字体颜色。" + msgid "Font color for selected text (inside the selection rectangle)." msgstr "选定文本的字体颜色(在选择矩形内)。" @@ -15939,17 +31669,36 @@ msgstr "选择矩形的颜色。" msgid "Font used for the text." msgstr "文本使用的字体。" +msgid "Font size of the [LineEdit]'s text." +msgstr "该 [LineEdit] 文本的字体大小。" + msgid "Texture for the clear button. See [member clear_button_enabled]." msgstr "“清除”按钮的纹理。见 [member clear_button_enabled]。" +msgid "" +"Background used when [LineEdit] has GUI focus. The [code]focus[/code] " +"[StyleBox] is displayed [i]over[/i] the base [StyleBox], so a partially " +"transparent [StyleBox] should be used to ensure the base [StyleBox] remains " +"visible. A [StyleBox] that represents an outline or an underline works well " +"for this purpose. To disable the focus visual effect, assign a " +"[StyleBoxEmpty] resource. Note that disabling the focus visual effect will " +"harm keyboard/controller navigation usability, so this is not recommended " +"for accessibility reasons." +msgstr "" +"该 [LineEdit] 处于聚焦状态时使用的背景。[code]focus[/code] [StyleBox] 显示在" +"基础 [StyleBox] [i]之上[/i],所以应该使用部分透明的 [StyleBox],确保基础 " +"[StyleBox] 仍然可见。代表轮廓或下划线的 [StyleBox] 可以很好地实现这个目的。要" +"禁用聚焦的视觉效果,请指定 [StyleBoxEmpty] 资源。请注意,禁用聚焦的视觉效果会" +"影响使用键盘/手柄进行导航的可用性,所以出于可访问性的原因,不建议这样做。" + msgid "Default background for the [LineEdit]." -msgstr "[LineEdit] 的默认背景。" +msgstr "该 [LineEdit] 的默认背景。" msgid "" "Background used when [LineEdit] is in read-only mode ([member editable] is " "set to [code]false[/code])." msgstr "" -"[LineEdit] 处于只读模式时使用的背景([member editable] 设置为 [code]false[/" +"该 [LineEdit] 处于只读模式时使用的背景([member editable] 为 [code]false[/" "code])。" msgid "Simple button used to represent a link to some resource." @@ -15996,7 +31745,27 @@ msgid "The vertical space between the baseline of text and the underline." msgstr "文本基线和下划线之间的垂直空间。" msgid "[Font] of the [LinkButton]'s text." -msgstr "[LinkButton] 文本的字体 [Font]。" +msgstr "该 [LinkButton] 文本的字体 [Font]。" + +msgid "Font size of the [LinkButton]'s text." +msgstr "该 [LinkButton] 文本的字体大小。" + +msgid "" +"[StyleBox] used when the [LinkButton] is focused. The [code]focus[/code] " +"[StyleBox] is displayed [i]over[/i] the base [StyleBox], so a partially " +"transparent [StyleBox] should be used to ensure the base [StyleBox] remains " +"visible. A [StyleBox] that represents an outline or an underline works well " +"for this purpose. To disable the focus visual effect, assign a " +"[StyleBoxEmpty] resource. Note that disabling the focus visual effect will " +"harm keyboard/controller navigation usability, so this is not recommended " +"for accessibility reasons." +msgstr "" +"该 [LinkButton] 处于聚焦状态时使用的 [StyleBox]。[code]focus[/code] " +"[StyleBox] 显示在基础 [StyleBox] [i]之上[/i],所以应该使用部分透明的 " +"[StyleBox],确保基础 [StyleBox] 仍然可见。代表轮廓或下划线的 [StyleBox] 可以" +"很好地实现这个目的。要禁用聚焦的视觉效果,请指定 [StyleBoxEmpty] 资源。请注" +"意,禁用聚焦的视觉效果会影响使用键盘/手柄进行导航的可用性,所以出于可访问性的" +"原因,不建议这样做。" msgid "Abstract base class for the game's main loop." msgstr "游戏主循环的抽象基类。" @@ -16053,6 +31822,23 @@ msgstr "" "的变化)。\n" "仅限 macOS 平台。" +msgid "" +"Notification received from the OS when the application is resumed.\n" +"Specific to the Android platform." +msgstr "" +"当应用程序恢复时,从操作系统收到的通知。\n" +"仅限 Android 平台。" + +msgid "" +"Notification received from the OS when the application is paused.\n" +"Specific to the Android platform." +msgstr "" +"当应用程序暂停时,从操作系统收到的通知。\n" +"仅限 Android 平台。" + +msgid "Notification received when text server is changed." +msgstr "文本服务器被更改时,收到的通知。" + msgid "Simple margin container." msgstr "简单的边距容器。" @@ -16085,26 +31871,45 @@ msgstr "" "距。" msgid "Generic 2D position hint for editing." -msgstr "用于编辑的通用 2D 位置提示。" +msgstr "通用 2D 位置提示,用于编辑。" msgid "" "Generic 2D position hint for editing. It's just like a plain [Node2D], but " "it displays as a cross in the 2D editor at all times. You can set cross' " "visual size by using the gizmo in the 2D editor while the node is selected." msgstr "" -"用于编辑的通用 2D 位置提示。它就像一个普通的 [Node2D],但它在 2D 编辑器中始终" -"显示为一个十字。选中节点时,可以使用 2D 编辑器中的小工具来设置十字的视觉大" +"用于编辑的通用 2D 位置提示。类似于普通的 [Node2D],但它始终在 2D 编辑器中显示" +"十字。该节点处于选中状态时,可以使用 2D 编辑器中的小工具来设置十字的视觉大" "小。" +msgid "Size of the gizmo cross that appears in the editor." +msgstr "出现在编辑器中的小工具十字的大小。" + msgid "Generic 3D position hint for editing." -msgstr "用于编辑的通用 3D 位置提示。" +msgstr "通用 3D 位置提示,用于编辑。" + +msgid "" +"Generic 3D position hint for editing. It's just like a plain [Node3D], but " +"it displays as a cross in the 3D editor at all times." +msgstr "" +"用于编辑的通用 3D 位置提示。类似于普通的 [Node3D],但它始终在 3D 编辑器中显示" +"十字。" msgid "Provides data transformation and encoding utility functions." msgstr "提供进行数据转换和编码的实用函数。" +msgid "Returns a Base64-encoded string of a given [PackedByteArray]." +msgstr "返回将给定 [PackedByteArray] 按照 Base64 编码的字符串。" + +msgid "Returns a Base64-encoded string of the UTF-8 string [param utf8_str]." +msgstr "返回将给定 UTF-8 字符串 [param utf8_str] 按照 Base64 编码的字符串。" + msgid "Abstract base [Resource] for coloring and shading geometry." msgstr "用于为几何体上色(Coloring)和着色(Shading)的 [Resource] 抽象基类。" +msgid "Creates a placeholder version of this resource ([PlaceholderMaterial])." +msgstr "创建该资源的占位符版本([PlaceholderMaterial])。" + msgid "Maximum value for the [member render_priority] parameter." msgstr "[member render_priority] 参数的最大值。" @@ -16112,10 +31917,120 @@ msgid "Minimum value for the [member render_priority] parameter." msgstr "[member render_priority] 参数的最小值。" msgid "" +"A horizontal menu bar, which displays [PopupMenu]s or system global menu." +msgstr "水平菜单栏,显示 [PopupMenu] 或系统全局菜单。" + +msgid "Returns number of menu items." +msgstr "返回菜单项的数量。" + +msgid "Returns [PopupMenu] associated with menu item." +msgstr "返回与菜单项关联的 [PopupMenu]。" + +msgid "Returns menu item title." +msgstr "返回菜单项的标题。" + +msgid "Returns menu item tooltip." +msgstr "返回菜单项的工具提示。" + +msgid "Returns [code]true[/code], if menu item is disabled." +msgstr "如果菜单项为禁用状态,则返回 [code]true[/code]。" + +msgid "Returns [code]true[/code], if menu item is hidden." +msgstr "如果菜单项为隐藏状态,则返回 [code]true[/code]。" + +msgid "" +"Returns [code]true[/code], if system global menu is supported and used by " +"this [MenuBar]." +msgstr "" +"如果支持系统全局菜单,而且该 [MenuBar] 使用全局菜单,则返回 [code]true[/" +"code]。" + +msgid "" "If [code]true[/code], shortcuts are disabled and cannot be used to trigger " "the button." msgstr "如果为 [code]true[/code],快捷方式将被禁用,无法用于触发按钮。" +msgid "If [code]true[/code], menu item is disabled." +msgstr "为 [code]true[/code] 时,菜单项为禁用状态。" + +msgid "If [code]true[/code], menu item is hidden." +msgstr "为 [code]true[/code] 时,菜单项为隐藏状态。" + +msgid "Sets menu item title." +msgstr "设置菜单项的标题。" + +msgid "Sets menu item tooltip." +msgstr "设置菜单项的工具提示。" + +msgid "Flat [MenuBar] don't display item decoration." +msgstr "扁平的 [MenuBar],不显示项目装饰。" + +msgid "" +"If [code]true[/code], [MenuBar] will use system global menu when supported." +msgstr "" +"如果为 [code]true[/code],则 [MenuBar] 会在支持系统全局菜单时使用系统全局菜" +"单。" + +msgid "Default text [Color] of the menu item." +msgstr "菜单项的默认文字 [Color]。" + +msgid "Text [Color] used when the menu item is disabled." +msgstr "菜单项处于禁用状态时使用的文字 [Color]。" + +msgid "" +"Text [Color] used when the menu item is focused. Only replaces the normal " +"text color of the menu item. Disabled, hovered, and pressed states take " +"precedence over this color." +msgstr "" +"菜单项处于聚焦状态时使用的文字 [Color]。只替换按钮的正常文本颜色。禁用、悬停" +"和按下状态优先于这个颜色。" + +msgid "Text [Color] used when the menu item is being hovered." +msgstr "菜单项处于悬停状态时使用的文字 [Color]。" + +msgid "Text [Color] used when the menu item is being hovered and pressed." +msgstr "菜单项处于悬停且按下状态时使用的文字 [Color]。" + +msgid "Text [Color] used when the menu item is being pressed." +msgstr "菜单项处于按下状态时使用的文字 [Color]。" + +msgid "The horizontal space between menu items." +msgstr "菜单项之间的水平距离。" + +msgid "[Font] of the menu item's text." +msgstr "菜单项文本的字体 [Font]。" + +msgid "Font size of the menu item's text." +msgstr "菜单项文本的字体大小。" + +msgid "[StyleBox] used when the menu item is disabled." +msgstr "菜单项处于禁用状态时使用的 [StyleBox]。" + +msgid "" +"[StyleBox] used when the menu item is focused. The [code]focus[/code] " +"[StyleBox] is displayed [i]over[/i] the base [StyleBox], so a partially " +"transparent [StyleBox] should be used to ensure the base [StyleBox] remains " +"visible. A [StyleBox] that represents an outline or an underline works well " +"for this purpose. To disable the focus visual effect, assign a " +"[StyleBoxEmpty] resource. Note that disabling the focus visual effect will " +"harm keyboard/controller navigation usability, so this is not recommended " +"for accessibility reasons." +msgstr "" +"菜单项处于聚焦状态时使用的 [StyleBox]。[code]focus[/code] [StyleBox] 显示在基" +"础 [StyleBox] [i]之上[/i],所以应该使用部分透明的 [StyleBox],确保基础 " +"[StyleBox] 仍然可见。代表轮廓或下划线的 [StyleBox] 可以很好地实现这个目的。要" +"禁用聚焦的视觉效果,请指定 [StyleBoxEmpty] 资源。请注意,禁用聚焦的视觉效果会" +"影响使用键盘/手柄进行导航的可用性,所以出于可访问性的原因,不建议这样做。" + +msgid "[StyleBox] used when the menu item is being hovered." +msgstr "菜单项处于悬停状态时使用的 [StyleBox]。" + +msgid "Default [StyleBox] for the menu item." +msgstr "菜单项的默认 [StyleBox]。" + +msgid "[StyleBox] used when the menu item is being pressed." +msgstr "菜单项处于按下状态时使用的 [StyleBox]。" + msgid "Special button that brings up a [PopupMenu] when clicked." msgstr "点击后会弹出 [PopupMenu] 的特殊按钮。" @@ -16168,17 +32083,37 @@ msgstr "当 [MenuButton] 被按下时使用的字体 [Color] 颜色。" msgid "[Font] of the [MenuButton]'s text." msgstr "[MenuButton] 文本的 [Font]。" +msgid "Font size of the [MenuButton]'s text." +msgstr "该 [MenuButton] 文本的字体大小。" + msgid "[StyleBox] used when the [MenuButton] is disabled." -msgstr "当 [MenuButton] 被禁用时使用的 [StyleBox]。" +msgstr "该 [MenuButton] 处于禁用状态时使用的 [StyleBox]。" + +msgid "" +"[StyleBox] used when the [MenuButton] is focused. The [code]focus[/code] " +"[StyleBox] is displayed [i]over[/i] the base [StyleBox], so a partially " +"transparent [StyleBox] should be used to ensure the base [StyleBox] remains " +"visible. A [StyleBox] that represents an outline or an underline works well " +"for this purpose. To disable the focus visual effect, assign a " +"[StyleBoxEmpty] resource. Note that disabling the focus visual effect will " +"harm keyboard/controller navigation usability, so this is not recommended " +"for accessibility reasons." +msgstr "" +"该 [MenuButton] 处于聚焦状态时使用的 [StyleBox]。[code]focus[/code] " +"[StyleBox] 显示在基础 [StyleBox] [i]之上[/i],所以应该使用部分透明的 " +"[StyleBox],确保基础 [StyleBox] 仍然可见。代表轮廓或下划线的 [StyleBox] 可以" +"很好地实现这个目的。要禁用聚焦的视觉效果,请指定 [StyleBoxEmpty] 资源。请注" +"意,禁用聚焦的视觉效果会影响使用键盘/手柄进行导航的可用性,所以出于可访问性的" +"原因,不建议这样做。" msgid "[StyleBox] used when the [MenuButton] is being hovered." -msgstr "当鼠标在 [MenuButton] 上悬停时使用的 [StyleBox] 样式盒。" +msgstr "该 [MenuButton] 处于悬停状态时使用的 [StyleBox]。" msgid "Default [StyleBox] for the [MenuButton]." -msgstr "[MenuButton] 的默认 [StyleBox] 样式盒。" +msgstr "该 [MenuButton] 的默认 [StyleBox]。" msgid "[StyleBox] used when the [MenuButton] is being pressed." -msgstr "[MenuButton] 被按下时的 [StyleBox] 样式盒。" +msgstr "该 [MenuButton] 处于按下状态时使用的 [StyleBox]。" msgid "A [Resource] that contains vertex array-based geometry." msgstr "一种包含基于顶点数组的几何资源。" @@ -16234,7 +32169,10 @@ msgid "Render array as triangle strips." msgstr "将数组渲染为三角形条。" msgid "Represents the size of the [enum ArrayType] enum." -msgstr "表示 [enum ArrayType] 枚举的大小。" +msgstr "代表 [enum ArrayType] 枚举的大小。" + +msgid "Represents the size of the [enum ArrayCustomFormat] enum." +msgstr "代表 [enum ArrayCustomFormat] 枚举的大小。" msgid "" "Mesh array contains vertices. All meshes require a vertex array so this " @@ -16409,6 +32347,9 @@ msgstr "设置给定顶点的骨骼权重。" msgid "Node used for displaying a [Mesh] in 2D." msgstr "用于在 2D 中显示 [Mesh] 的节点。" +msgid "2D meshes" +msgstr "2D 网格" + msgid "The [Mesh] that will be drawn by the [MeshInstance2D]." msgstr "该 [MeshInstance2D] 绘制的 [Mesh]。" @@ -16466,6 +32407,18 @@ msgstr "返回该项的导航网格。" msgid "Returns the transform applied to the item's navigation mesh." msgstr "返回应用于该项导航网格的变换。" +msgid "" +"When running in the editor, returns a generated item preview (a 3D rendering " +"in isometric perspective). When used in a running project, returns the " +"manually-defined item preview which can be set using [method " +"set_item_preview]. Returns an empty [Texture2D] if no preview was manually " +"set in a running project." +msgstr "" +"在编辑器中运行时,返回生成的项目预览(等轴透视中的 3D 渲染)。在一个运行的项" +"目中使用时,返回手动定义的项目预览,该项目预览可以使用 [method " +"set_item_preview] 设置。如果在一个运行的项目中,没有手动设置预览,则返回一个" +"空的 [Texture2D]。" + msgid "Gets an unused ID for a new item." msgstr "获取新项未使用的 ID。" @@ -16483,8 +32436,12 @@ msgid "" "This name is shown in the editor. It can also be used to look up the item " "later using [method find_item_by_name]." msgstr "" -"设置项的名称。\n" -"该名称显示在编辑器中。稍后还可以使用 [method find_item_by_name] 来查找该项。" +"设置该项的名称。\n" +"这个名称会显示在编辑器中。稍后还可以使用 [method find_item_by_name] 来查找该" +"项。" + +msgid "Sets the item's navigation layers bitmask." +msgstr "设置该项的导航层位掩码。" msgid "Sets the item's navigation mesh." msgstr "设置该项的导航网格。" @@ -16523,6 +32480,36 @@ msgid "" "interpolating. By default there's no delay." msgstr "设置该 [MethodTweener] 开始插值的时间,单位为秒。默认无延迟。" +msgid "" +"This is an internal editor class intended for keeping data of nodes of " +"unknown type." +msgstr "这是编辑器内部类,用于保存未知类型节点的数据。" + +msgid "" +"This is an internal editor class intended for keeping data of nodes of " +"unknown type (most likely this type was supplied by an extension that is no " +"longer loaded). It can't be manually instantiated or placed in the scene. " +"Ignore it if you don't know what it is." +msgstr "" +"这是编辑器内部类,用于保存未知类型节点的数据(该类型很有可能是由扩展提供的," +"而该扩展未加载)。无法手动实例化或放置在场景中。如果你不知道这是什么,请忽略" +"它。" + +msgid "" +"This is an internal editor class intended for keeping data of resources of " +"unknown type." +msgstr "这是编辑器内部类,用于保存未知类型资源的数据。" + +msgid "" +"This is an internal editor class intended for keeping data of resources of " +"unknown type (most likely this type was supplied by an extension that is no " +"longer loaded). It can't be manually instantiated or placed in the scene. " +"Ignore it if you don't know what it is." +msgstr "" +"这是编辑器内部类,用于保存未知类型资源的数据(该类型很有可能是由扩展提供的," +"而该扩展未加载)。无法手动实例化或放置在场景中。如果你不知道这是什么,请忽略" +"它。" + msgid "Generic mobile VR implementation." msgstr "通用移动 VR 实现。" @@ -16557,14 +32544,41 @@ msgstr "" "过采样设置。由于镜头失真,我们必须以比屏幕自然分辨率更高的质量渲染我们的缓冲" "区。介于 1.5 和 2.0 之间的值通常可以提供良好的结果,但会牺牲性能。" +msgid "Animating thousands of fish with MultiMeshInstance" +msgstr "使用 MultiMeshInstance 动画化数千条鱼" + +msgid "Optimization using MultiMeshes" +msgstr "使用 MultiMesh 进行优化" + +msgid "Gets a specific instance's color multiplier." +msgstr "获取特定实例的颜色倍数。" + msgid "Returns the custom data that has been set for a specific instance." msgstr "返回已经为特定实例设置的自定义数据。" +msgid "Returns the [Transform3D] of a specific instance." +msgstr "返回指定实例的 [Transform3D]。" + msgid "Returns the [Transform2D] of a specific instance." -msgstr "返回特定实例的 [Transform2D]。" +msgstr "返回指定实例的 [Transform2D]。" + +msgid "Sets the [Transform3D] for a specific instance." +msgstr "为指定实例设置 [Transform3D]。" msgid "Sets the [Transform2D] for a specific instance." -msgstr "为特定实例设置 [Transform2D]。" +msgstr "为指定实例设置 [Transform2D]。" + +msgid "See [method set_instance_color]." +msgstr "见 [method set_instance_color]。" + +msgid "See [method set_instance_custom_data]." +msgstr "见 [method set_instance_custom_data]。" + +msgid "See [method set_instance_transform_2d]." +msgstr "见 [method set_instance_transform_2d]。" + +msgid "See [method set_instance_transform]." +msgstr "见 [method set_instance_transform]。" msgid "Format of transform used to transform mesh, either 2D or 3D." msgstr "用于变换网格的变换格式,可以是 2D 或 3D。" @@ -16590,6 +32604,9 @@ msgstr "将由 [MultiMeshInstance2D] 绘制的 [MultiMesh]。" msgid "Node that instances a [MultiMesh]." msgstr "实例化 [MultiMesh] 的节点。" +msgid "Using MultiMeshInstance" +msgstr "使用 MultiMeshInstance" + msgid "" "Returns the sender's peer ID for the RPC currently being executed.\n" "[b]Note:[/b] If not inside an RPC this method will return 0." @@ -16597,6 +32614,34 @@ msgstr "" "返回当前正在执行的 RPC 的发送方的对等体 ID。\n" "[b]注意:[/b]如果不在 RPC 内,这个方法将返回 0。" +msgid "Base class used for extending the [MultiplayerAPI]." +msgstr "用于扩展 [MultiplayerAPI] 的基类。" + +msgid "Callback for [method MultiplayerAPI.get_peers]." +msgstr "[method MultiplayerAPI.get_peers] 的回调。" + +msgid "Callback for [method MultiplayerAPI.get_remote_sender_id]." +msgstr "[method MultiplayerAPI.get_remote_sender_id] 的回调。" + +msgid "Callback for [method MultiplayerAPI.get_unique_id]." +msgstr "[method MultiplayerAPI.get_unique_id] 的回调。" + +msgid "Callback for [method MultiplayerAPI.object_configuration_add]." +msgstr "[method MultiplayerAPI.object_configuration_add] 的回调。" + +msgid "Callback for [method MultiplayerAPI.object_configuration_remove]." +msgstr "[method MultiplayerAPI.object_configuration_remove] 的回调。" + +msgid "Callback for [method MultiplayerAPI.poll]." +msgstr "[method MultiplayerAPI.poll] 的回调。" + +msgid "Callback for [method MultiplayerAPI.rpc]." +msgstr "[method MultiplayerAPI.rpc] 的回调。" + +msgid "" +"Abstract class for specialized [PacketPeer]s used by the [MultiplayerAPI]." +msgstr "特化 [PacketPeer] 的抽象类,[MultiplayerAPI] 会用到。" + msgid "WebRTC Signaling Demo" msgstr "WebRTC 信号演示" @@ -16604,9 +32649,21 @@ msgid "" "Returns the current state of the connection. See [enum ConnectionStatus]." msgstr "返回连接的当前状态。见 [enum ConnectionStatus]。" +msgid "Returns the ID of this [MultiplayerPeer]." +msgstr "返回该 [MultiplayerPeer] 的 ID。" + msgid "Waits up to 1 second to receive a new network event." msgstr "等待最多 1 秒以接收一个新的网络事件。" +msgid "The MultiplayerPeer is disconnected." +msgstr "该 MultiplayerPeer 已断开连接。" + +msgid "The MultiplayerPeer is currently connecting to a server." +msgstr "该 MultiplayerPeer 正在连接到服务器。" + +msgid "This MultiplayerPeer is connected." +msgstr "该 MultiplayerPeer 已连接。" + msgid "" "Packets are not acknowledged, no resend attempts are made for lost packets. " "Packets may arrive in any order. Potentially faster than [constant " @@ -16675,6 +32732,30 @@ msgstr "" "[b]注意:[/b]如果一个线程在已经拥有互斥锁的情况下多次调用 [method lock] 或 " "[method try_lock],它也必须调用相同次数的 [method unlock] 才能正确解锁." +msgid "2D Agent used in navigation for collision avoidance." +msgstr "在导航中用来避免碰撞的 2D 代理。" + +msgid "" +"2D Agent that is used in navigation to reach a position while avoiding " +"static and dynamic obstacles. The dynamic obstacles are avoided using RVO " +"collision avoidance. The agent needs navigation data to work correctly. " +"[NavigationAgent2D] is physics safe.\n" +"[b]Note:[/b] After setting [member target_position] it is required to use " +"the [method get_next_path_position] function once every physics frame to " +"update the internal path logic of the NavigationAgent. The returned vector " +"position from this function should be used as the next movement position for " +"the agent's parent Node." +msgstr "" +"导航中使用的 2D 代理,可以在前往某个位置时躲避静态和动态障碍物。躲避动态障碍" +"物使用的是 RVO(Reciprocal Velocity Obstacles,相对速度障碍物)防撞算法。代理" +"需要导航数据才能正确工作。[NavigationAgent2D] 是物理安全的。\n" +"[b]注意:[/b]设置 [member target_position] 之后,必须在每个物理帧使用一次 " +"[method get_next_location] 函数来更新 NavigationAgent 的内部路径逻辑。这个函" +"数返回的向量位置应该用作该代理的父节点的下一次移动位置。" + +msgid "Using NavigationAgents" +msgstr "使用 NavigationAgent" + msgid "" "Returns the [RID] of the navigation map for this NavigationAgent node. This " "function returns always the map set on the NavigationAgent node and not the " @@ -16740,6 +32821,27 @@ msgstr "" "终的目标,到达该区域内即可。如果这个值设得太小,该 NavigationAgent 将陷入重新" "寻路的死循环,因为它在每次物理帧更新后都会超过或者到不了最终的目标点。" +msgid "3D Agent used in navigation for collision avoidance." +msgstr "在导航中用来避免碰撞的 3D 代理。" + +msgid "" +"3D Agent that is used in navigation to reach a position while avoiding " +"static and dynamic obstacles. The dynamic obstacles are avoided using RVO " +"collision avoidance. The agent needs navigation data to work correctly. " +"[NavigationAgent3D] is physics safe.\n" +"[b]Note:[/b] After setting [member target_position] it is required to use " +"the [method get_next_path_position] function once every physics frame to " +"update the internal path logic of the NavigationAgent. The returned vector " +"position from this function should be used as the next movement position for " +"the agent's parent Node." +msgstr "" +"导航中使用的 3D 代理,可以在前往某个位置时躲避静态和动态障碍物。躲避动态障碍" +"物使用的是 RVO(Reciprocal Velocity Obstacles,相对速度障碍物)防撞算法。代理" +"需要导航数据才能正确工作。[NavigationAgent3D] 是物理安全的。\n" +"[b]注意:[/b]设置 [member target_position] 之后,必须在每个物理帧使用一次 " +"[method get_next_location] 函数来更新 NavigationAgent 的内部路径逻辑。这个函" +"数返回的向量位置应该用作该代理的父节点的下一次移动位置。" + msgid "" "The NavigationAgent height offset is subtracted from the y-axis value of any " "vector path position for this NavigationAgent. The NavigationAgent height " @@ -16753,6 +32855,9 @@ msgstr "" "果。如果其他导航地图使用了带有导航网格的地区,开发者使用合适的代理半径或高度" "对其进行了烘焙,那么就必须支持不同大小的代理。" +msgid "Using NavigationLinks" +msgstr "使用 NavigationLink" + msgid "A mesh to approximate the walkable areas and obstacles." msgstr "用于模拟可步行区域和障碍物的网格。" @@ -16767,6 +32872,9 @@ msgstr "" msgid "3D Navmesh Demo" msgstr "3D 导航网格演示" +msgid "Using NavigationMeshes" +msgstr "使用 NavigationMesh" + msgid "" "Adds a polygon using the indices of the vertices you get when calling " "[method get_vertices]." @@ -16946,7 +33054,7 @@ msgid "" msgstr "层分区。用于具有中小型图块的平铺导航网格的不错选择。" msgid "Represents the size of the [enum SamplePartitionType] enum." -msgstr "表示 [enum SamplePartitionType] 枚举的大小。" +msgstr "代表 [enum SamplePartitionType] 枚举的大小。" msgid "" "Both [constant PARSED_GEOMETRY_MESH_INSTANCES] and [constant " @@ -16956,7 +33064,7 @@ msgstr "" "PARSED_GEOMETRY_STATIC_COLLIDERS]." msgid "Represents the size of the [enum ParsedGeometryType] enum." -msgstr "表示 [enum ParsedGeometryType] 枚举的大小。" +msgstr "代表 [enum ParsedGeometryType] 枚举的大小。" msgid "" "Scans nodes in a group and their child nodes recursively for geometry. The " @@ -16973,17 +33081,82 @@ msgstr "" "定。" msgid "Represents the size of the [enum SourceGeometryMode] enum." -msgstr "表示 [enum SourceGeometryMode] 枚举的大小。" +msgstr "代表 [enum SourceGeometryMode] 枚举的大小。" msgid "Helper class for creating and clearing navigation meshes." msgstr "对导航网格进行创建和清理的辅助类。" +msgid "2D Obstacle used in navigation for collision avoidance." +msgstr "在导航中用来避免碰撞的 2D 障碍物。" + +msgid "" +"2D Obstacle used in navigation for collision avoidance. The obstacle needs " +"navigation data to work correctly. [NavigationObstacle2D] is physics safe.\n" +"Obstacles [b]don't[/b] change the resulting path from the pathfinding, they " +"only affect the navigation agent movement in a radius. Therefore, using " +"obstacles for the static walls in your level won't work because those walls " +"don't exist in the pathfinding. The navigation agent will be pushed in a " +"semi-random direction away while moving inside that radius. Obstacles are " +"intended as a last resort option for constantly moving objects that cannot " +"be (re)baked to a navigation mesh efficiently." +msgstr "" +"在导航中用来避免碰撞的 2D 障碍物。障碍物需要导航数据才能正确工作。" +"[NavigationObstacle2D] 是物理安全的。\n" +"障碍物[b]不会[/b]改变寻路的结果,只会影响半径范围内导航代理的移动。因此,如果" +"将障碍物用于关卡中的墙体是无法正常工作的,因为这些墙体在寻路时不存在。导航代" +"理在半径范围内移动时,会被推向半随机的方向。持续移动的物体如果无法进行高效的" +"(重新)烘焙,障碍物应作为不得已的手段。" + +msgid "Using NavigationObstacles" +msgstr "使用 NavigationObstacle" + msgid "" "Enables radius estimation algorithm which uses parent's collision shapes to " "determine the obstacle radius." msgstr "启用半径估算算法,使用父项的碰撞形状确定障碍物的半径。" msgid "" +"The radius of the agent. Used only if [member estimate_radius] is set to " +"false." +msgstr "代理的半径。仅在 [member estimate_radius] 被设置为 false 时使用。" + +msgid "3D Obstacle used in navigation for collision avoidance." +msgstr "在导航中用来避免碰撞的 3D 障碍物。" + +msgid "" +"3D Obstacle used in navigation for collision avoidance. The obstacle needs " +"navigation data to work correctly. [NavigationObstacle3D] is physics safe.\n" +"Obstacles [b]don't[/b] change the resulting path from the pathfinding, they " +"only affect the navigation agent movement in a radius. Therefore, using " +"obstacles for the static walls in your level won't work because those walls " +"don't exist in the pathfinding. The navigation agent will be pushed in a " +"semi-random direction away while moving inside that radius. Obstacles are " +"intended as a last resort option for constantly moving objects that cannot " +"be (re)baked to a navigation mesh efficiently." +msgstr "" +"在导航中用来避免碰撞的 3D 障碍物。障碍物需要导航数据才能正确工作。" +"[NavigationObstacle3D] 是物理安全的。\n" +"障碍物[b]不会[/b]改变寻路的结果,只会影响半径范围内导航代理的移动。因此,如果" +"将障碍物用于关卡中的墙体是无法正常工作的,因为这些墙体在寻路时不存在。导航代" +"理在半径范围内移动时,会被推向半随机的方向。持续移动的物体如果无法进行高效的" +"(重新)烘焙,障碍物应作为不得已的手段。" + +msgid "Using NavigationPathQueryObjects" +msgstr "使用 NavigationPathQueryObject" + +msgid "The navigation layers the query will use (as a bitmask)." +msgstr "查询所使用的导航层(形式为位掩码)。" + +msgid "The pathfinding algorithm used in the path query." +msgstr "路径查询中使用的寻路算法。" + +msgid "The pathfinding start position in global coordinates." +msgstr "寻路起始点,使用全局坐标。" + +msgid "The pathfinding target position in global coordinates." +msgstr "寻路目标点,使用全局坐标。" + +msgid "" "A node that has methods to draw outlines or use indices of vertices to " "create navigation polygons." msgstr "具有绘制轮廓或使用顶点索引来创建导航多边形的方法的节点。" @@ -17028,9 +33201,15 @@ msgstr "" msgid "A region of the 2D navigation map." msgstr "2D 导航地图上的一个地区。" +msgid "Using NavigationRegions" +msgstr "使用 NavigationRegion" + msgid "The [NavigationPolygon] resource to use." msgstr "使用的 [NavigationPolygon] 资源。" +msgid "A region of the navigation map." +msgstr "导航地图上的地区。" + msgid "The [NavigationMesh] resource to use." msgstr "使用的 [NavigationMesh] 资源。" @@ -17040,6 +33219,9 @@ msgstr "导航网格烘焙操作完成时发出通知。" msgid "Notifies when the [NavigationMesh] has changed." msgstr "[NavigationMesh] 发生变化时发出通知。" +msgid "Using NavigationServer" +msgstr "使用 NavigationServer" + msgid "Creates the agent." msgstr "创建代理。" @@ -17099,6 +33281,24 @@ msgstr "" "返回该 NavigationServer 上所有已创建的导航地图的 [RID]。会同时返回已创建的 " "2D 和 3D 导航地图,因为理论上它们之间是没有区别的。" +msgid "Create a new link between two positions on a map." +msgstr "在地图上新建两个地点之间的链接。" + +msgid "Returns the ending position of this [code]link[/code]." +msgstr "返回该 [code]link[/code] 的结束位置。" + +msgid "Returns the starting position of this [code]link[/code]." +msgstr "返回该 [code]link[/code] 的起始位置。" + +msgid "Sets the exit position for the [code]link[/code]." +msgstr "设置 [code]link[/code] 的出口位置。" + +msgid "Sets the navigation map [RID] for the link." +msgstr "设置该链接的导航地图 [RID]。" + +msgid "Sets the entry position for this [code]link[/code]." +msgstr "设置 [code]link[/code] 的入口位置。" + msgid "Create a new map." msgstr "创建一张新地图。" @@ -17134,6 +33334,16 @@ msgstr "返回该地区的导航层。" msgid "Sets the map for the region." msgstr "设置该地区的地图。" +msgid "" +"Set the region's navigation layers. This allows selecting regions from a " +"path request (when using [method NavigationServer2D.map_get_path])." +msgstr "" +"设置地区的导航层。能够在路径请求中选择地区(使用 [method NavigationServer2D." +"map_get_path] 时)。" + +msgid "Sets the [param navigation_polygon] for the region." +msgstr "设置该地区的导航多边形 [param navigation_polygon]。" + msgid "Sets the global transformation for the region." msgstr "设置该地区的全局变换。" @@ -17162,14 +33372,11 @@ msgid "Sets the map up direction." msgstr "设置地图的上方向。" msgid "" -"Process the collision avoidance agents.\n" -"The result of this process is needed by the physics server, so this must be " -"called in the main thread.\n" -"[b]Note:[/b] This function is not thread safe." +"Set the region's navigation layers. This allows selecting regions from a " +"path request (when using [method NavigationServer3D.map_get_path])." msgstr "" -"处理防撞代理。\n" -"物理服务器需要这个处理的结果,所以必须在主线程中调用。\n" -"[b]注意:[/b]这个函数不是线程安全的。" +"设置地区的导航层。能够在路径请求中选择地区(使用 [method NavigationServer3D." +"map_get_path])。" msgid "Sets the navigation mesh for the region." msgstr "设置该地图的导航网格。" @@ -17177,6 +33384,25 @@ msgstr "设置该地图的导航网格。" msgid "Control activation of this server." msgstr "控制这个服务器是否激活。" +msgid "Constant to get the number of active navigation maps." +msgstr "常量,用于获取活动导航地图的数量。" + +msgid "Constant to get the number of active navigation regions." +msgstr "常量,用于获取活动导航地区的数量。" + +msgid "" +"Constant to get the number of active navigation agents processing avoidance." +msgstr "常量,用于获取正在进行避障的活动导航代理的数量。" + +msgid "Constant to get the number of active navigation links." +msgstr "常量,用于获取活动导航链接的数量。" + +msgid "Constant to get the number of navigation mesh polygons." +msgstr "常量,用于获取导航网格多边形的数量。" + +msgid "Constant to get the number of navigation mesh polygon edges." +msgstr "常量,用于获取导航网格多边形边的数量。" + msgid "" "Scalable texture-based frame that tiles the texture's centers and sides, but " "keeps the corners' original size. Perfect for panels and dialog boxes." @@ -17269,6 +33495,116 @@ msgstr "在 NinePatchRect 上拉伸中心纹理。这可能会导致纹理失真 msgid "Base class for all [i]scene[/i] objects." msgstr "所有[i]场景[/i]对象的基类。" +msgid "" +"Nodes are Godot's building blocks. They can be assigned as the child of " +"another node, resulting in a tree arrangement. A given node can contain any " +"number of nodes as children with the requirement that all siblings (direct " +"children of a node) should have unique names.\n" +"A tree of nodes is called a [i]scene[/i]. Scenes can be saved to the disk " +"and then instantiated into other scenes. This allows for very high " +"flexibility in the architecture and data model of Godot projects.\n" +"[b]Scene tree:[/b] The [SceneTree] contains the active tree of nodes. When a " +"node is added to the scene tree, it receives the [constant " +"NOTIFICATION_ENTER_TREE] notification and its [method _enter_tree] callback " +"is triggered. Child nodes are always added [i]after[/i] their parent node, i." +"e. the [method _enter_tree] callback of a parent node will be triggered " +"before its child's.\n" +"Once all nodes have been added in the scene tree, they receive the [constant " +"NOTIFICATION_READY] notification and their respective [method _ready] " +"callbacks are triggered. For groups of nodes, the [method _ready] callback " +"is called in reverse order, starting with the children and moving up to the " +"parent nodes.\n" +"This means that when adding a node to the scene tree, the following order " +"will be used for the callbacks: [method _enter_tree] of the parent, [method " +"_enter_tree] of the children, [method _ready] of the children and finally " +"[method _ready] of the parent (recursively for the entire scene tree).\n" +"[b]Processing:[/b] Nodes can override the \"process\" state, so that they " +"receive a callback on each frame requesting them to process (do something). " +"Normal processing (callback [method _process], toggled with [method " +"set_process]) happens as fast as possible and is dependent on the frame " +"rate, so the processing time [i]delta[/i] (in seconds) is passed as an " +"argument. Physics processing (callback [method _physics_process], toggled " +"with [method set_physics_process]) happens a fixed number of times per " +"second (60 by default) and is useful for code related to the physics " +"engine.\n" +"Nodes can also process input events. When present, the [method _input] " +"function will be called for each input that the program receives. In many " +"cases, this can be overkill (unless used for simple projects), and the " +"[method _unhandled_input] function might be preferred; it is called when the " +"input event was not handled by anyone else (typically, GUI [Control] nodes), " +"ensuring that the node only receives the events that were meant for it.\n" +"To keep track of the scene hierarchy (especially when instancing scenes into " +"other scenes), an \"owner\" can be set for the node with the [member owner] " +"property. This keeps track of who instantiated what. This is mostly useful " +"when writing editors and tools, though.\n" +"Finally, when a node is freed with [method Object.free] or [method " +"queue_free], it will also free all its children.\n" +"[b]Groups:[/b] Nodes can be added to as many groups as you want to be easy " +"to manage, you could create groups like \"enemies\" or \"collectables\" for " +"example, depending on your game. See [method add_to_group], [method " +"is_in_group] and [method remove_from_group]. You can then retrieve all nodes " +"in these groups, iterate them and even call methods on groups via the " +"methods on [SceneTree].\n" +"[b]Networking with nodes:[/b] After connecting to a server (or making one, " +"see [ENetMultiplayerPeer]), it is possible to use the built-in RPC (remote " +"procedure call) system to communicate over the network. By calling [method " +"rpc] with a method name, it will be called locally and in all connected " +"peers (peers = clients and the server that accepts connections). To identify " +"which node receives the RPC call, Godot will use its [NodePath] (make sure " +"node names are the same on all peers). Also, take a look at the high-level " +"networking tutorial and corresponding demos.\n" +"[b]Note:[/b] The [code]script[/code] property is part of the [Object] class, " +"not [Node]. It isn't exposed like most properties but does have a setter and " +"getter ([code]set_script()[/code] and [code]get_script()[/code])." +msgstr "" +"节点是 Godot 的构建模块。它们可以被指定为另一个节点的子节点,从而形成树状排" +"列。一个给定的节点可以包含任意数量的节点作为子节点,要求所有的兄弟节点(即该" +"节点的直接子节点)的名字唯一。\n" +"节点树被称为[i]场景[/i]。场景可以被保存到磁盘上,然后被实例化到其他场景中。这" +"使得 Godot 项目的架构和数据模型具有非常高的灵活性。\n" +"[b]场景树:[/b][SceneTree] 包含活动的节点树。当一个节点被添加到场景树中时,它" +"将收到 [constant NOTIFICATION_ENTER_TREE] 通知,并触发其 [method " +"_enter_tree] 回调。子节点总是在其父节点[i]之后[/i]被添加,即父节点的 [method " +"_enter_tree] 回调将在其子节点的之前被触发。\n" +"一旦所有的节点被添加到场景树中,它们就会收到 [constant NOTIFICATION_READY] 通" +"知,其各自的 [method _ready] 回调被触发。对于一组节点,[method _ready] 回调是" +"按相反的顺序调用的,从子节点开始,向上移动到父节点。\n" +"这意味着,当把一个节点添加到场景树中时,将使用下面的顺序进行回调:父节点的 " +"[method _enter_tree]、子节点的 [method _enter_tree]、子节点的 [method " +"_ready],最后是父节点的 [method _ready](对整个场景树进行递归)。\n" +"[b]处理:[/b]节点可以覆盖“处理”状态,以便它们在每一帧上都收到回调,要求它们进" +"行处理(做一些事情)。普通处理(回调 [method _process],可以使用 [method " +"set_process] 开关)会尽可能快地发生,并且取决于帧率,所以处理时间 [i]delta[/" +"i](单位为秒)会作为参数传入。物理处理(回调 [method _physics_process],可以" +"使用 [method set_physics_process] 开关)每秒发生固定次数(默认为 60),对物理" +"引擎相关的代码很有用。\n" +"节点也可以处理输入事件。存在 [method _input] 函数时,程序每收到一次输入都会去" +"调用它。在许多情况下,这么做是大材小用了(除非是用于简单的项目),用 [method " +"_unhandled_input] 函数可能更合适;当输入事件没有被其他节点(通常是 GUI " +"[Control] 节点)处理时,才会调用这个函数,可以确保节点只接收到它该收到的事" +"件。\n" +"为了记录场景的层次结构(尤其是在将场景实例化到其他场景时)可以用 [member " +"owner] 属性为节点设置一个“所有者”。它记录的是谁实例化了什么。这在编写编辑器和" +"工具时非常有用。\n" +"最后,当一个节点被 [method Object.free] 或 [method queue_free] 释放时,它也将" +"释放它的所有子节点。\n" +"[b]分组:[/b]节点可以被添加到很多的组中,以方便管理,你可以根据自己游戏的需要" +"来创建类似“敌人”或“收集品”这样的组。见 [method add_to_group]、[method " +"is_in_group] 和 [method remove_from_group]。加入组后,你可以检索这些组中的所" +"有节点,对它们进行迭代,甚至通过 [SceneTree] 中的方法调用组内方法。\n" +"[b]节点的网络编程:[/b]在连接到服务器(或制作服务器,见 " +"[ENetMultiplayerPeer])之后,可以使用内置的 RPC(远程过程调用)系统在网络上进" +"行通信。在调用 [method rpc] 时传入方法名,将在本地和所有已连接的对等体中调用" +"对应的方法(对等体=客户端和接受连接的服务器)。为了识别哪个节点收到 RPC 调" +"用,Godot 将使用它的 [NodePath](请确保所有对等体上的节点名称相同)。另外,请" +"参阅高级网络教程和相应的演示。\n" +"[b]注意:[/b][code]script[/code] 属性是 [Object] 类的一部分,不属于 [Node]。" +"这个属性暴露的方式和其他属性不同,但提供了 setter 和 getter" +"([code]set_script()[/code] 和 [code]get_script()[/code])。" + +msgid "Nodes and scenes" +msgstr "节点与场景" + msgid "All Demos" msgstr "所有演示" @@ -17304,6 +33640,67 @@ msgstr "" "到 [signal tree_exited]。" 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 " +"automatically if this method is overridden, and can be toggled with [method " +"set_process_input].\n" +"To consume the input event and stop it propagating further to other nodes, " +"[method Viewport.set_input_as_handled] can be called.\n" +"For gameplay input, [method _unhandled_input] and [method " +"_unhandled_key_input] are usually a better fit as they allow the GUI to " +"intercept the events first.\n" +"[b]Note:[/b] This method is only called if the node is present in the scene " +"tree (i.e. if it's not an orphan)." +msgstr "" +"有输入事件时会被调用。输入事件会沿节点树向上传播,直到有节点将其消耗。\n" +"只有在启用输入处理时才会被调用,如果该方法被重写则会自动启用,可以使用 " +"[method set_process_input] 进行切换。\n" +"要消耗输入事件,阻止它进一步传播到其他节点,可以调用 [method Viewport." +"set_input_as_handled]。\n" +"对于游戏输入,[method _unhandled_input] 和 [method _unhandled_key_input] 通常" +"更适合,因为它们允许 GUI 首先拦截事件。\n" +"[b]注意:[/b]仅当该节点存在于场景树中时(即不是孤立节点),此方法才会被调用。" + +msgid "" +"Creates a new [Tween] and binds it to this node. This is equivalent of " +"doing:\n" +"[codeblocks]\n" +"[gdscript]\n" +"get_tree().create_tween().bind_node(self)\n" +"[/gdscript]\n" +"[csharp]\n" +"GetTree().CreateTween().BindNode(this);\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"新建 [Tween] 并将其绑定到这个节点。与如下操作等价:\n" +"[codeblocks]\n" +"[gdscript]\n" +"get_tree().create_tween().bind_node(self)\n" +"[/gdscript]\n" +"[csharp]\n" +"GetTree().CreateTween().BindNode(this);\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Returns the number of child nodes.\n" +"If [param include_internal] is [code]false[/code], internal children aren't " +"counted (see [code]internal[/code] parameter in [method add_child])." +msgstr "" +"返回子节点的数量。\n" +"如果 [param include_internal] 为 [code]false[/code] ,则不计算内部子节点(见 " +"[method add_child] 的 [code]internal[/code] 参数)。" + +msgid "" +"Similar to [method get_node], but does not log an error if [param path] does " +"not point to a valid [Node]." +msgstr "" +"类似于 [method get_node],但在 [code]path[/code] 没有指向有效的 [Node] 时不会" +"记录错误。" + +msgid "" "Returns the parent node of the current node, or [code]null[/code] if the " "node lacks a parent." msgstr "返回当前节点的父节点,如果节点缺少父节点,则返回 [code]null[/code]。" @@ -17334,6 +33731,14 @@ msgid "Returns the node's [Viewport]." msgstr "返回节点的 [Viewport]。" msgid "" +"Returns the [Window] that contains this node. If the node is in the main " +"window, this is equivalent to getting the root node ([code]get_tree()." +"get_root()[/code])." +msgstr "" +"返回包含该节点的 [Window]。如果该节点在主窗口中,则相当于获取根节点" +"([code]get_tree().get_root()[/code])。" + +msgid "" "Returns [code]true[/code] if the node that the [NodePath] points to exists." msgstr "如果 [NodePath] 指向的节点存在,则返回 [code]true[/code]。" @@ -17556,6 +33961,13 @@ msgid "" msgstr "设置这是否是实例加载占位符。见 [InstancePlaceholder]。" msgid "" +"Add a custom description to a node. It will be displayed in a tooltip when " +"hovered in editor's scene tree." +msgstr "" +"为该节点添加自定义描述。该节点在编辑器的场景树中处于悬停状态时,该描述将显示" +"在工具提示中。" + +msgid "" "The name of the node. This name is unique among the siblings (other child " "nodes from the same parent). When set to an existing name, the node will be " "automatically renamed.\n" @@ -17596,6 +34008,14 @@ msgstr "" "中不可见,但在 2D/3D 视图中可见。" msgid "" +"Can be used to pause or unpause the node, or make the node paused based on " +"the [SceneTree], or make it inherit the process mode from its parent " +"(default)." +msgstr "" +"可用于暂停或取消暂停该节点,也可以让该节点根据 [SceneTree] 来暂停,还可以让它" +"继承父级的处理模式(默认)。" + +msgid "" "The node's priority in the execution order of the enabled processing " "callbacks (i.e. [constant NOTIFICATION_PROCESS], [constant " "NOTIFICATION_PHYSICS_PROCESS] and their internal counterparts). Nodes whose " @@ -17791,9 +34211,29 @@ msgstr "" msgid "All 2D Demos" msgstr "所有 2D 演示" +msgid "Multiplies the current scale by the [param ratio] vector." +msgstr "将当前缩放乘以比例向量 [param ratio]。" + +msgid "" +"Returns the angle between the node and the [param point] in radians.\n" +"[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/" +"node2d_get_angle_to.png]Illustration of the returned angle.[/url]" +msgstr "" +"返回该节点和 [param point] 之间的夹角,单位为弧度。\n" +"[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/" +"node2d_get_angle_to.png]返回夹角的示意图。[/url]" + msgid "Returns the [Transform2D] relative to this node's parent." msgstr "返回相对于此节点的父节点的 [Transform2D]。" +msgid "Adds the [param offset] vector to the node's global position." +msgstr "将偏移向量 [param offset] 添加到该节点的全局位置。" + +msgid "" +"Rotates the node so it points towards the [param point], which is expected " +"to use global coordinates." +msgstr "旋转该节点,使其指向 [param point],该点应使用全局坐标。" + msgid "" "Applies a rotation to the node, in radians, starting from its current " "rotation." @@ -17820,15 +34260,26 @@ msgstr "" "将提供的全局位置转换为本地坐标空间的位置。例如,它适合于确定子节点的位置,但" "不适合于确定其自身相对于父节点的位置。" +msgid "Translates the node by the given [param offset] in local coordinates." +msgstr "在局部坐标系中,将该节点按给定的偏移量 [param offset] 进行平移。" + msgid "Global position." msgstr "全局位置。" msgid "Global rotation in radians." -msgstr "全局旋转弧度。" +msgstr "全局旋转,单位为弧度。" + +msgid "" +"Helper property to access [member global_rotation] in degrees instead of " +"radians." +msgstr "辅助属性,用于按度数访问 [member global_rotation] 而不是弧度数。" msgid "Global scale." msgstr "全局缩放。" +msgid "Global skew in radians." +msgstr "全局偏斜,单位为弧度。" + msgid "Global [Transform2D]." msgstr "全局 [Transform2D]。" @@ -17851,11 +34302,18 @@ msgstr "" "换矩阵来表示缩放,X 轴上的负数缩放在分解后会变为 Y 轴的负数缩放和一次 180 度" "的旋转。" +msgid "" +"Slants the node.\n" +"[b]Note:[/b] Skew is X axis only." +msgstr "" +"使该节点发生倾斜。\n" +"[b]注意:[/b]偏斜仅适用于 X 轴。" + msgid "Local [Transform2D]." msgstr "局部 [Transform2D]。" msgid "Most basic 3D game object, parent of all 3D-related nodes." -msgstr "最基本的 3D 游戏对象,是所有与 3D 相关的节点的父节点。" +msgstr "最基本的 3D 游戏对象,所有 3D 相关节点的父类。" msgid "Introduction to 3D" msgstr "3D 简介" @@ -17863,6 +34321,12 @@ msgstr "3D 简介" msgid "All 3D Demos" msgstr "所有 3D 演示" +msgid "Attach a gizmo to this [code]Node3D[/code]." +msgstr "将小工具附加到该 [code]Node3D[/code] 上。" + +msgid "Clear all gizmos attached to this [code]Node3D[/code]." +msgstr "清除附加于该 [code]Node3D[/code] 的所有小工具。" + msgid "" "Rotates the global (world) transformation around axis, a unit [Vector3], by " "specified angle in radians. The rotation axis is in global coordinate system." @@ -17949,6 +34413,9 @@ msgid "" "Changes the node's position by the given offset [Vector3] in local space." msgstr "通过给定的局部空间偏移量 [Vector3] 改变该节点的位置。" +msgid "Updates all the [Node3DGizmo]s attached to this node." +msgstr "更新附加于该节点的所有 [Node3DGizmo]。" + msgid "" "Global position of this node. This is equivalent to [code]global_transform." "origin[/code]." @@ -17972,6 +34439,9 @@ msgstr "" "矢量,而是因为 [Vector3] 是一种方便存储 3 个浮点数的数据结构。因此,对旋转“向" "量”应用仿射操作是没有意义的。" +msgid "World3D space (global) [Transform3D] of this node." +msgstr "该节点在 World3D 空间的(全局)[Transform3D]。" + msgid "" "If [code]true[/code], this node is drawn. The node is only visible if all of " "its antecedents are visible as well (in other words, [method " @@ -18014,7 +34484,29 @@ msgstr "" "动加载项)。" msgid "Returns [code]true[/code] if the node path is empty." -msgstr "节点路径为空时返回 [code]true[/code]。" +msgstr "如果节点路径为空,则返回 [code]true[/code]。" + +msgid "Returns [code]true[/code] if two node paths are not equal." +msgstr "如果两个节点路径不相等,则返回 [code]true[/code]。" + +msgid "" +"Returns [code]true[/code] if two node paths are equal, i.e. all node names " +"in the path are the same and in the same order." +msgstr "" +"如果两个节点路径相等,即路径中的所有节点名称都相同且顺序一致,则返回 " +"[code]true[/code]。" + +msgid "Abstract base class for noise generators." +msgstr "噪声生成器的抽象基类。" + +msgid "Returns the 1D noise value at the given (x) coordinate." +msgstr "返回给定 (x) 坐标处的 1D 噪声值。" + +msgid "Returns the 2D noise value at the given position." +msgstr "返回给定位置处的 2D 噪声值。" + +msgid "Returns the 3D noise value at the given position." +msgstr "返回给定位置处的 3D 噪声值。" msgid "" "If [code]true[/code], the resulting texture contains a normal map created " @@ -18036,9 +34528,18 @@ msgstr "生成的纹理的高度。" msgid "Width of the generated texture." msgstr "生成的纹理的宽度。" +msgid "Base class for all other classes in the engine." +msgstr "引擎中所有其他类的基类。" + +msgid "Object class introduction" +msgstr "Object 类介绍" + msgid "When and how to avoid using nodes for everything" msgstr "何时以及如何避免为任何事情使用节点" +msgid "Object notifications" +msgstr "对象通知" + msgid "" "Returns [code]true[/code] if the [method Node.queue_free] method was called " "for the object." @@ -18087,21 +34588,69 @@ msgid "" "cull_mode]." msgstr "按逆时针方向进行剔除。见 [member cull_mode]。" +msgid "A sequence of Ogg packets." +msgstr "Ogg 数据包序列。" + +msgid "The length of this stream, in seconds." +msgstr "该流的长度,以秒为单位。" + msgid "Omnidirectional light, such as a light bulb or a candle." msgstr "全向光,如灯泡或蜡烛。" msgid "" -"The light's attenuation (drop-off) curve. A number of presets are available " -"in the [b]Inspector[/b] by right-clicking the curve." -msgstr "" -"光的衰减(下降)曲线。在[b]检查器[/b]中,通过右键点击曲线,可以获得许多预设。" - -msgid "" "Shadows are rendered to a dual-paraboloid texture. Faster than [constant " "SHADOW_CUBE], but lower-quality." msgstr "" "阴影被渲染到一个双抛物面纹理。比 [constant SHADOW_CUBE] 更快,但质量较差。" +msgid "An OpenXR action." +msgstr "OpenXR 动作。" + +msgid "The type of action." +msgstr "动作的类型。" + +msgid "Add an action set." +msgstr "添加动作集。" + +msgid "Add an interaction profile." +msgstr "添加交互配置。" + +msgid "Retrieve the action set at this index." +msgstr "获取位于该索引的动作集。" + +msgid "Retrieve the number of actions sets in our action map." +msgstr "获取动作映射中动作集的数量。" + +msgid "Get the interaction profile at this index." +msgstr "获取位于该索引的交互配置。" + +msgid "Retrieve the number of interaction profiles in our action map." +msgstr "获取动作映射中交互配置的数量。" + +msgid "Remove an action set." +msgstr "移除动作集。" + +msgid "Remove an interaction profile." +msgstr "移除交互配置。" + +msgid "Add an action to this action set." +msgstr "向该动作集中添加某个动作。" + +msgid "Retrieve the number of actions in our action set." +msgstr "获取该动作集中动作的数量。" + +msgid "Remove an action from this action set." +msgstr "从该动作集中移除某个动作。" + +msgid "Collection of actions for this action set." +msgstr "该动作集中动作的合集。" + +msgid "The localized name of this action set." +msgstr "该动作集的本地化名称。" + +msgid "The priority for this action set." +msgstr "该动作集的优先级。" + msgid "Optimized translation." msgstr "优化的翻译。" @@ -18165,7 +34714,7 @@ msgid "" msgstr "当用户更改当前项时触发。所选项目的索引作为参数传递。" msgid "Default text [Color] of the [OptionButton]." -msgstr "[OptionButton] 的默认文本 [Color]。" +msgstr "该 [OptionButton] 的默认文本 [Color]。" msgid "Text [Color] used when the [OptionButton] is disabled." msgstr "当 [OptionButton] 被禁用时使用的文本 [Color]。" @@ -18189,11 +34738,76 @@ msgid "" msgstr "箭头图标和按钮的右边缘之间的水平空间。" msgid "[Font] of the [OptionButton]'s text." -msgstr "[OptionButton] 的文本的 [Font]。" +msgstr "该 [OptionButton] 文本的 [Font]。" + +msgid "Font size of the [OptionButton]'s text." +msgstr "该 [OptionButton] 文本的字体大小。" msgid "The arrow icon to be drawn on the right end of the button." msgstr "要绘制在按钮右侧的箭头图标。" +msgid "" +"[StyleBox] used when the [OptionButton] is disabled (for left-to-right " +"layouts)." +msgstr "" +"该 [OptionButton] 处于禁用状态时使用的 [StyleBox](用于从左至右布局)。" + +msgid "" +"[StyleBox] used when the [OptionButton] is disabled (for right-to-left " +"layouts)." +msgstr "" +"该 [OptionButton] 处于禁用状态时使用的 [StyleBox](用于从右至左布局)。" + +msgid "" +"[StyleBox] used when the [OptionButton] is focused. The [code]focus[/code] " +"[StyleBox] is displayed [i]over[/i] the base [StyleBox], so a partially " +"transparent [StyleBox] should be used to ensure the base [StyleBox] remains " +"visible. A [StyleBox] that represents an outline or an underline works well " +"for this purpose. To disable the focus visual effect, assign a " +"[StyleBoxEmpty] resource. Note that disabling the focus visual effect will " +"harm keyboard/controller navigation usability, so this is not recommended " +"for accessibility reasons." +msgstr "" +"该 [OptionButton] 处于聚焦状态时使用的 [StyleBox]。[code]focus[/code] " +"[StyleBox] 显示在基础 [StyleBox] [i]之上[/i],所以应该使用部分透明的 " +"[StyleBox],确保基础 [StyleBox] 仍然可见。代表轮廓或下划线的 [StyleBox] 可以" +"很好地实现这个目的。要禁用聚焦的视觉效果,请指定 [StyleBoxEmpty] 资源。请注" +"意,禁用聚焦的视觉效果会影响使用键盘/手柄进行导航的可用性,所以出于可访问性的" +"原因,不建议这样做。" + +msgid "" +"[StyleBox] used when the [OptionButton] is being hovered (for left-to-right " +"layouts)." +msgstr "" +"该 [OptionButton] 处于悬停状态时使用的 [StyleBox](用于从左至右布局)。" + +msgid "" +"[StyleBox] used when the [OptionButton] is being hovered (for right-to-left " +"layouts)." +msgstr "" +"该 [OptionButton] 处于悬停状态时使用的 [StyleBox](用于从右至左布局)。" + +msgid "Default [StyleBox] for the [OptionButton] (for left-to-right layouts)." +msgstr "该 [OptionButton] 的默认 [StyleBox](用于从左至右布局)。" + +msgid "Default [StyleBox] for the [OptionButton] (for right-to-left layouts)." +msgstr "该 [OptionButton] 的默认 [StyleBox](用于从右至左布局)。" + +msgid "" +"[StyleBox] used when the [OptionButton] is being pressed (for left-to-right " +"layouts)." +msgstr "" +"该 [OptionButton] 处于按下状态时使用的 [StyleBox](用于从左至右布局)。" + +msgid "" +"[StyleBox] used when the [OptionButton] is being pressed (for right-to-left " +"layouts)." +msgstr "" +"该 [OptionButton] 处于按下状态时使用的 [StyleBox](用于从右至左布局)。" + +msgid "Standard Material 3D and ORM Material 3D" +msgstr "标准 3D 材质与 ORM 3D 材质" + msgid "Operating System functions." msgstr "操作系统功能。" @@ -18388,6 +35002,9 @@ msgstr "图片目录路径。" msgid "Ringtones directory path." msgstr "铃声目录路径。" +msgid "A packed array of bytes." +msgstr "字节紧缩数组。" + msgid "Constructs an empty [PackedByteArray]." msgstr "构造空的 [PackedByteArray]。" @@ -18396,6 +35013,244 @@ msgid "" msgstr "构造给定 [PackedByteArray] 的副本。" msgid "" +"Constructs a new [PackedByteArray]. Optionally, you can pass in a generic " +"[Array] that will be converted." +msgstr "构造新 [PackedByteArray]。你还可以传入通用 [Array] 进行转换。" + +msgid "Appends a [PackedByteArray] at the end of this array." +msgstr "在该数组的末尾追加一个 [PackedByteArray]。" + +msgid "" +"Returns a new [PackedByteArray] with the data compressed. Set the " +"compression mode using one of [enum FileAccess.CompressionMode]'s constants." +msgstr "" +"返回新的 [PackedByteArray],其中的数据已压缩。请将压缩模式设置为 [enum " +"FileAccess.CompressionMode] 常量。" + +msgid "" +"Decodes a 64-bit floating point number from the bytes starting at [param " +"byte_offset]. Fails if the byte count is insufficient. Returns [code]0.0[/" +"code] if a valid number can't be decoded." +msgstr "" +"将字节序列解码为 64 位浮点数,起始位置字节偏移量为 [param byte_offset]。字节" +"数不足时会失败。如果无法解码有效的数字,则返回 [code]0.0[/code]。" + +msgid "" +"Decodes a 32-bit floating point number from the bytes starting at [param " +"byte_offset]. Fails if the byte count is insufficient. Returns [code]0.0[/" +"code] if a valid number can't be decoded." +msgstr "" +"将字节序列解码为 32 位浮点数,起始位置字节偏移量为 [param byte_offset]。字节" +"数不足时会失败。如果无法解码有效的数字,则返回 [code]0.0[/code]。" + +msgid "" +"Decodes a 16-bit floating point number from the bytes starting at [param " +"byte_offset]. Fails if the byte count is insufficient. Returns [code]0.0[/" +"code] if a valid number can't be decoded." +msgstr "" +"将字节序列解码为 16 位浮点数,起始位置字节偏移量为 [param byte_offset]。字节" +"数不足时会失败。如果无法解码有效的数字,则返回 [code]0.0[/code]。" + +msgid "" +"Decodes a 16-bit signed integer number from the bytes starting at [param " +"byte_offset]. Fails if the byte count is insufficient. Returns [code]0[/" +"code] if a valid number can't be decoded." +msgstr "" +"将字节序列解码为 16 位有符号整数,起始位置字节偏移量为 [param byte_offset]。" +"字节数不足时会失败。如果无法解码有效的数字,则返回 [code]0.0[/code]。" + +msgid "" +"Decodes a 32-bit signed integer number from the bytes starting at [param " +"byte_offset]. Fails if the byte count is insufficient. Returns [code]0[/" +"code] if a valid number can't be decoded." +msgstr "" +"将字节序列解码为 32 位有符号整数,起始位置字节偏移量为 [param byte_offset]。" +"字节数不足时会失败。如果无法解码有效的数字,则返回 [code]0.0[/code]。" + +msgid "" +"Decodes a 64-bit signed integer number from the bytes starting at [param " +"byte_offset]. Fails if the byte count is insufficient. Returns [code]0[/" +"code] if a valid number can't be decoded." +msgstr "" +"将字节序列解码为 64 位有符号整数,起始位置字节偏移量为 [param byte_offset]。" +"字节数不足时会失败。如果无法解码有效的数字,则返回 [code]0.0[/code]。" + +msgid "" +"Decodes a 8-bit signed integer number from the bytes starting at [param " +"byte_offset]. Fails if the byte count is insufficient. Returns [code]0[/" +"code] if a valid number can't be decoded." +msgstr "" +"将字节序列解码为 8 位有符号整数,起始位置字节偏移量为 [param byte_offset]。字" +"节数不足时会失败。如果无法解码有效的数字,则返回 [code]0.0[/code]。" + +msgid "" +"Decodes a 16-bit unsigned integer number from the bytes starting at [param " +"byte_offset]. Fails if the byte count is insufficient. Returns [code]0[/" +"code] if a valid number can't be decoded." +msgstr "" +"将字节序列解码为 16 位无符号整数,起始位置字节偏移量为 [param byte_offset]。" +"字节数不足时会失败。如果无法解码有效的数字,则返回 [code]0.0[/code]。" + +msgid "" +"Decodes a 32-bit unsigned integer number from the bytes starting at [param " +"byte_offset]. Fails if the byte count is insufficient. Returns [code]0[/" +"code] if a valid number can't be decoded." +msgstr "" +"将字节序列解码为 32 位无符号整数,起始位置字节偏移量为 [param byte_offset]。" +"字节数不足时会失败。如果无法解码有效的数字,则返回 [code]0.0[/code]。" + +msgid "" +"Decodes a 64-bit unsigned integer number from the bytes starting at [param " +"byte_offset]. Fails if the byte count is insufficient. Returns [code]0[/" +"code] if a valid number can't be decoded." +msgstr "" +"将字节序列解码为 64 位无符号整数,起始位置字节偏移量为 [param byte_offset]。" +"字节数不足时会失败。如果无法解码有效的数字,则返回 [code]0.0[/code]。" + +msgid "" +"Decodes a 8-bit unsigned integer number from the bytes starting at [param " +"byte_offset]. Fails if the byte count is insufficient. Returns [code]0[/" +"code] if a valid number can't be decoded." +msgstr "" +"将字节序列解码为 8 位无符号整数,起始位置字节偏移量为 [param byte_offset]。字" +"节数不足时会失败。如果无法解码有效的数字,则返回 [code]0.0[/code]。" + +msgid "" +"Decodes a [Variant] from the bytes starting at [param byte_offset]. Returns " +"[code]null[/code] if a valid variant can't be decoded or the value is " +"[Object]-derived and [param allow_objects] is [code]false[/code]." +msgstr "" +"将字节序列解码为 [Variant],起始位置字节偏移量为 [param byte_offset]。如果无" +"法解码有效的变体,或者其值派生自 [Object] 而 [param allow_objects] 为 " +"[code]false[/code],则返回 [code]null[/code]。" + +msgid "" +"Decodes a size of a [Variant] from the bytes starting at [param " +"byte_offset]. Requires at least 4 bytes of data starting at the offset, " +"otherwise fails." +msgstr "" +"将字节序列解码为 [Variant] 的大小,起始位置字节偏移量为 [param byte_offset]。" +"要求起始位置后至少有 4 个字节的数据,否则返回 [code]null[/code]。" + +msgid "" +"Returns a new [PackedByteArray] with the data decompressed. Set [param " +"buffer_size] to the size of the uncompressed data. Set the compression mode " +"using one of [enum FileAccess.CompressionMode]'s constants." +msgstr "" +"返回新的 [PackedByteArray],其中的数据已解压。请将 [param buffer_size] 设置为" +"数据解压后的大小。请将压缩模式设置为 [enum FileAccess.CompressionMode] 常量。" + +msgid "" +"Returns a new [PackedByteArray] with the data decompressed. Set the " +"compression mode using one of [enum FileAccess.CompressionMode]'s constants. " +"[b]This method only accepts gzip and deflate compression modes.[/b]\n" +"This method is potentially slower than [code]decompress[/code], as it may " +"have to re-allocate its output buffer multiple times while decompressing, " +"whereas [code]decompress[/code] knows it's output buffer size from the " +"beginning.\n" +"GZIP has a maximal compression ratio of 1032:1, meaning it's very possible " +"for a small compressed payload to decompress to a potentially very large " +"output. To guard against this, you may provide a maximum size this function " +"is allowed to allocate in bytes via [param max_output_size]. Passing -1 will " +"allow for unbounded output. If any positive value is passed, and the " +"decompression exceeds that amount in bytes, then an error will be returned." +msgstr "" +"返回新的 [PackedByteArray],其中的数据已解压。请将压缩模式设置为 [enum " +"FileAccess.CompressionMode] 常量。[b]这个方法只接受 gzip 和 deflate 压缩模" +"式。[/b]\n" +"这个方法可能比 [code]decompress[/code] 慢,因为在解压时可能需要多次重新分配输" +"出缓冲区,而 [code]decompress[/code] 则在一开始就知道输出缓冲区的大小。\n" +"GZIP 的最大压缩率为 1032:1,这意味着较小的压缩后负载很有可能解压出非常巨大的" +"输出。为了防止这种情况,你可以通过 [param max_output_size] 提供允许这个函数分" +"配的最大字节数。传入 -1 则不限制输出。传入正数且解压超过该字节数时,会返回错" +"误。" + +msgid "Creates a copy of the array, and returns it." +msgstr "创建该数组的副本,并将该副本返回。" + +msgid "" +"Encodes a 64-bit floating point number as bytes at the index of [param " +"byte_offset] bytes. The array must have at least 8 bytes of allocated space, " +"starting at the offset." +msgstr "" +"将 64 位浮点数编码为字节序列,起始位置字节偏移量为 [param byte_offset]。从偏" +"移量位置开始,该数组必须还分配有至少 8 个字节的空间。" + +msgid "" +"Encodes a 32-bit floating point number as bytes at the index of [param " +"byte_offset] bytes. The array must have at least 4 bytes of space, starting " +"at the offset." +msgstr "" +"将 32 位浮点数编码为字节序列,起始位置字节偏移量为 [param byte_offset]。从偏" +"移量位置开始,该数组必须还分配有至少 4 个字节的空间。" + +msgid "" +"Encodes a 16-bit floating point number as bytes at the index of [param " +"byte_offset] bytes. The array must have at least 2 bytes of space, starting " +"at the offset." +msgstr "" +"将 16 位浮点数编码为字节序列,起始位置字节偏移量为 [param byte_offset]。从偏" +"移量位置开始,该数组必须还分配有至少 2 个字节的空间。" + +msgid "" +"Encodes a 16-bit signed integer number as bytes at the index of [param " +"byte_offset] bytes. The array must have at least 2 bytes of space, starting " +"at the offset." +msgstr "" +"将 16 位有符号整数编码为字节序列,起始位置字节偏移量为 [param byte_offset]。" +"从偏移量位置开始,该数组必须还分配有至少 2 个字节的空间。" + +msgid "" +"Encodes a 8-bit signed integer number (signed byte) at the index of [param " +"byte_offset] bytes. The array must have at least 1 byte of space, starting " +"at the offset." +msgstr "" +"将 8 位有符号整数编码为字节序列,起始位置字节偏移量为 [param byte_offset]。从" +"偏移量位置开始,该数组必须还分配有至少 1 个字节的空间。" + +msgid "" +"Encodes a 16-bit unsigned integer number as bytes at the index of [param " +"byte_offset] bytes. The array must have at least 2 bytes of space, starting " +"at the offset." +msgstr "" +"将 16 位无符号整数编码为字节序列,起始位置字节偏移量为 [param byte_offset]。" +"从偏移量位置开始,该数组必须还分配有至少 2 个字节的空间。" + +msgid "" +"Encodes a 32-bit unsigned integer number as bytes at the index of [param " +"byte_offset] bytes. The array must have at least 4 bytes of space, starting " +"at the offset." +msgstr "" +"将 32 位无符号整数编码为字节序列,起始位置字节偏移量为 [param byte_offset]。" +"从偏移量位置开始,该数组必须还分配有至少 4 个字节的空间。" + +msgid "" +"Encodes a 64-bit unsigned integer number as bytes at the index of [param " +"byte_offset] bytes. The array must have at least 8 bytes of space, starting " +"at the offset." +msgstr "" +"将 64 位无符号整数编码为字节序列,起始位置字节偏移量为 [param byte_offset]。" +"从偏移量位置开始,该数组必须还分配有至少 8 个字节的空间。" + +msgid "" +"Encodes a 8-bit unsigned integer number (byte) at the index of [param " +"byte_offset] bytes. The array must have at least 1 byte of space, starting " +"at the offset." +msgstr "" +"将 8 位无符号整数编码为字节序列,起始位置字节偏移量为 [param byte_offset]。从" +"偏移量位置开始,该数组必须还分配有至少 1 个字节的空间。" + +msgid "" +"Encodes a [Variant] at the index of [param byte_offset] bytes. A sufficient " +"space must be allocated, depending on the encoded variant's size. If [param " +"allow_objects] is [code]false[/code], [Object]-derived values are not " +"permitted and will instead be serialized as ID-only." +msgstr "" +"将 [Variant] 编码为字节序列,起始位置字节偏移量为 [param byte_offset]。必须分" +"配有足够的空间,空间大小取决于编码后变体的大小。如果 [param allow_objects] " +"为 [code]false[/code],则不允许派生自 [Object] 的值,只会将其 ID 进行序列化。" + +msgid "" "Assigns the given value to all elements in the array. This can typically be " "used together with [method resize] to create an array with a given size and " "initialized elements." @@ -18404,6 +35259,81 @@ msgstr "" "小的数组并初始化元素。" msgid "" +"Converts ASCII/Latin-1 encoded array to [String]. Fast alternative to " +"[method get_string_from_utf8] if the content is ASCII/Latin-1 only. Unlike " +"the UTF-8 function this function maps every byte to a character in the " +"array. Multibyte sequences will not be interpreted correctly. For parsing " +"user input always use [method get_string_from_utf8]." +msgstr "" +"将 ASCII/Latin-1 编码的数组转换为 [String]。如果内容仅为 ASCII/Latin-1,则是" +"比 [method get_string_from_utf8] 更快的选择。与 UTF-8 函数不同,这个函数会将" +"数组中的每个字节都映射到一个字符。多字节序列无法正确解析。要解析用户的输入内" +"容,请始终使用 [method get_string_from_utf8]。" + +msgid "" +"Converts UTF-16 encoded array to [String]. If the BOM is missing, system " +"endianness is assumed. Returns empty string if source array is not valid " +"UTF-16 string." +msgstr "" +"将 UTF-16 编码的数组转换为 [String]。如果缺少 BOM,则假定为系统字节序。如果源" +"数组不是有效的 UTF-16 字符串,则返回空字符串。" + +msgid "" +"Converts UTF-32 encoded array to [String]. System endianness is assumed. " +"Returns empty string if source array is not valid UTF-32 string." +msgstr "" +"将 UTF-32 编码的数组转换为 [String]。假定为系统字节序。如果源数组不是有效的 " +"UTF-32 字符串,则返回空字符串。" + +msgid "" +"Converts UTF-8 encoded array to [String]. Slower than [method " +"get_string_from_ascii] but supports UTF-8 encoded data. Use this function if " +"you are unsure about the source of the data. For user input this function " +"should always be preferred. Returns empty string if source array is not " +"valid UTF-8 string." +msgstr "" +"将 UTF-8 编码的数组转换为 [String]。比 [method get_string_from_ascii] 慢,但" +"支持 UTF-8 编码的数据。不确定数据来源时请使用此函数。对于用户的输入内容,应始" +"终首选此函数。如果源数组不是有效的 UTF-8 字符串,则返回空字符串。" + +msgid "Returns [code]true[/code] if the array contains [param value]." +msgstr "如果该数组包含 [param value],则返回 [code]true[/code]。" + +msgid "" +"Returns [code]true[/code] if a valid [Variant] value can be decoded at the " +"[param byte_offset]. Returns [code]false[/code] othewrise or when the value " +"is [Object]-derived and [param allow_objects] is [code]false[/code]." +msgstr "" +"如果可以从字节偏移量 [param byte_offset] 处解码出有效的 [Variant],则返回 " +"[code]true[/code]。其他情况,或者当该值派生自 [Object] 而 [param " +"allow_objects] 为 [code]false[/code] 时,则返回 [code]false[/code]。" + +msgid "" +"Returns a hexadecimal representation of this array as a [String].\n" +"[codeblocks]\n" +"[gdscript]\n" +"var array = PackedByteArray([11, 46, 255])\n" +"print(array.hex_encode()) # Prints: 0b2eff\n" +"[/gdscript]\n" +"[csharp]\n" +"var array = new byte[] {11, 46, 255};\n" +"GD.Print(array.HexEncode()); // Prints: 0b2eff\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回该数组的十六进制表示,类型为 [String]。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var array = PackedByteArray([11, 46, 255])\n" +"print(array.hex_encode()) # 输出:0b2eff\n" +"[/gdscript]\n" +"[csharp]\n" +"var array = new byte[] {11, 46, 255};\n" +"GD.Print(array.HexEncode()); // 输出:0b2eff\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" "Inserts a new element at a given position in the array. The position must be " "valid, or at the end of the array ([code]idx == size()[/code])." msgstr "" @@ -18430,6 +35360,12 @@ msgstr "改变给定索引处的字节。" msgid "Sorts the elements of the array in ascending order." msgstr "将该数组中的元素按升序排列。" +msgid "Returns [code]true[/code] if contents of the arrays differ." +msgstr "如果数组内容不同,则返回 [code]true[/code]。" + +msgid "A packed array of [Color]s." +msgstr "[Color] 紧缩数组。" + msgid "Constructs an empty [PackedColorArray]." msgstr "构造空的 [PackedColorArray]。" @@ -18437,12 +35373,26 @@ msgid "" "Constructs a [PackedColorArray] as a copy of the given [PackedColorArray]." msgstr "构造给定 [PackedColorArray] 的副本。" +msgid "" +"Constructs a new [PackedColorArray]. Optionally, you can pass in a generic " +"[Array] that will be converted." +msgstr "构造新 [PackedColorArray]。你还可以传入通用 [Array] 进行转换。" + +msgid "Appends a [PackedColorArray] at the end of this array." +msgstr "在该数组的末尾追加一个 [PackedColorArray]。" + msgid "Appends a value to the array." msgstr "将一个值添加到数组中。" msgid "Changes the [Color] at the given index." msgstr "更改给定索引处的 [Color]。" +msgid "Reference-counted version of [PackedDataContainer]." +msgstr "[PackedDataContainer] 的引用计数版本。" + +msgid "A packed array of 32-bit floating-point values." +msgstr "32 位浮点数紧缩数组。" + msgid "Constructs an empty [PackedFloat32Array]." msgstr "构造空的 [PackedFloat32Array]。" @@ -18451,9 +35401,20 @@ msgid "" "[PackedFloat32Array]." msgstr "构造给定 [PackedFloat32Array] 的副本。" +msgid "" +"Constructs a new [PackedFloat32Array]. Optionally, you can pass in a generic " +"[Array] that will be converted." +msgstr "构造新 [PackedFloat32Array]。你还可以传入通用 [Array] 进行转换。" + +msgid "Appends a [PackedFloat32Array] at the end of this array." +msgstr "在该数组的末尾追加一个 [PackedFloat32Array]。" + msgid "Changes the float at the given index." msgstr "更改给定索引处的浮点数。" +msgid "A packed array of 64-bit floating-point values." +msgstr "64 位浮点数紧缩数组。" + msgid "Constructs an empty [PackedFloat64Array]." msgstr "构造空的 [PackedFloat64Array]。" @@ -18462,6 +35423,17 @@ msgid "" "[PackedFloat64Array]." msgstr "构造给定 [PackedFloat64Array] 的副本。" +msgid "" +"Constructs a new [PackedFloat64Array]. Optionally, you can pass in a generic " +"[Array] that will be converted." +msgstr "构造新 [PackedFloat64Array]。你还可以传入通用 [Array] 进行转换。" + +msgid "Appends a [PackedFloat64Array] at the end of this array." +msgstr "在该数组的末尾追加一个 [PackedFloat64Array]。" + +msgid "A packed array of 32-bit integers." +msgstr "32 位整数紧缩数组。" + msgid "Constructs an empty [PackedInt32Array]." msgstr "构造空的 [PackedInt32Array]。" @@ -18469,6 +35441,17 @@ msgid "" "Constructs a [PackedInt32Array] as a copy of the given [PackedInt32Array]." msgstr "构造给定 [PackedInt32Array] 的副本。" +msgid "" +"Constructs a new [PackedInt32Array]. Optionally, you can pass in a generic " +"[Array] that will be converted." +msgstr "构造新 [PackedInt32Array]。你还可以传入通用 [Array] 进行转换。" + +msgid "Appends a [PackedInt32Array] at the end of this array." +msgstr "在该数组的末尾追加一个 [PackedInt32Array]。" + +msgid "A packed array of 64-bit integers." +msgstr "64 位整数紧缩数组。" + msgid "Constructs an empty [PackedInt64Array]." msgstr "构造空的 [PackedInt64Array]。" @@ -18476,6 +35459,14 @@ msgid "" "Constructs a [PackedInt64Array] as a copy of the given [PackedInt64Array]." msgstr "构造给定 [PackedInt64Array] 的副本。" +msgid "" +"Constructs a new [PackedInt64Array]. Optionally, you can pass in a generic " +"[Array] that will be converted." +msgstr "构造新 [PackedInt64Array]。你还可以传入通用 [Array] 进行转换。" + +msgid "Appends a [PackedInt64Array] at the end of this array." +msgstr "在该数组的末尾追加一个 [PackedInt64Array]。" + msgid "An abstraction of a serialized scene." msgstr "对序列化场景的抽象。" @@ -18513,6 +35504,9 @@ msgstr "" "化的情况。\n" "[b]注意:[/b]仅在编辑器构建中可用。" +msgid "A packed array of [String]s." +msgstr "[String] 紧缩数组。" + msgid "Constructs an empty [PackedStringArray]." msgstr "构造空的 [PackedStringArray]。" @@ -18520,14 +35514,25 @@ msgid "" "Constructs a [PackedStringArray] as a copy of the given [PackedStringArray]." msgstr "构造给定 [PackedStringArray] 的副本。" +msgid "" +"Constructs a new [PackedStringArray]. Optionally, you can pass in a generic " +"[Array] that will be converted." +msgstr "构造新 [PackedStringArray]。你还可以传入通用 [Array] 进行转换。" + +msgid "Appends a [PackedStringArray] at the end of this array." +msgstr "在该数组的末尾追加一个 [PackedStringArray]。" + msgid "Appends a string element at end of the array." msgstr "在数组的末尾追加字符串元素。" msgid "Changes the [String] at the given index." msgstr "更改给定索引处的 [String]。" +msgid "A packed array of [Vector2]s." +msgstr "[Vector2] 紧缩数组。" + msgid "2D Navigation Astar Demo" -msgstr "2D A 星导航演示" +msgstr "2D 导航 Astar 演示" msgid "Constructs an empty [PackedVector2Array]." msgstr "构造空的 [PackedVector2Array]。" @@ -18537,12 +35542,23 @@ msgid "" "[PackedVector2Array]." msgstr "构造给定 [PackedVector2Array] 的副本。" +msgid "" +"Constructs a new [PackedVector2Array]. Optionally, you can pass in a generic " +"[Array] that will be converted." +msgstr "构造新 [PackedVector2Array]。你还可以传入通用 [Array] 进行转换。" + +msgid "Appends a [PackedVector2Array] at the end of this array." +msgstr "在该数组的末尾追加一个 [PackedVector2Array]。" + msgid "Inserts a [Vector2] at the end." msgstr "在末尾插入一个 [Vector2]。" msgid "Changes the [Vector2] at the given index." msgstr "更改给定索引处的 [Vector2]。" +msgid "A packed array of [Vector3]s." +msgstr "[Vector3] 紧缩数组。" + msgid "Constructs an empty [PackedVector3Array]." msgstr "构造空的 [PackedVector3Array]。" @@ -18551,6 +35567,14 @@ msgid "" "[PackedVector3Array]." msgstr "构造给定 [PackedVector3Array] 的副本。" +msgid "" +"Constructs a new [PackedVector3Array]. Optionally, you can pass in a generic " +"[Array] that will be converted." +msgstr "构造新 [PackedVector3Array]。你还可以传入通用 [Array] 进行转换。" + +msgid "Appends a [PackedVector3Array] at the end of this array." +msgstr "在该数组的末尾追加一个 [PackedVector3Array]。" + msgid "Inserts a [Vector3] at the end." msgstr "在末尾插入一个 [Vector3]。" @@ -18789,6 +35813,12 @@ msgid "" "it will not scroll." msgstr "复制视差图层的运动。如果一个轴被设置为 [code]0[/code],它将不会滚动。" +msgid "Sets the maximum value range for the given parameter." +msgstr "设置给定参数的最大值范围。" + +msgid "Sets the minimum value range for the given parameter." +msgstr "设置给定参数的最小值范围。" + msgid "Each particle's rotation will be animated along this [CurveTexture]." msgstr "每个粒子的旋转将沿着这个 [CurveTexture] 动画。" @@ -18798,6 +35828,9 @@ msgstr "每个粒子的动画偏移将沿着这个 [CurveTexture] 变化。" msgid "Each particle's animation speed will vary along this [CurveTexture]." msgstr "每个粒子的动画速度将沿着这个 [CurveTexture] 变化。" +msgid "Should collision take scale into account." +msgstr "碰撞是否应该考虑缩放。" + msgid "Damping will vary along this [CurveTexture]." msgstr "阻尼将沿着这个 [CurveTexture] 变化。" @@ -18876,6 +35909,90 @@ msgid "" msgstr "每个粒子的切向加速度将沿着这个 [CurveTexture] 变化。" msgid "" +"Use with [method set_param_min], [method set_param_max], and [method " +"set_param_texture] to set initial velocity properties." +msgstr "" +"与 [method set_param_min]、[method set_param_max] 和 [method " +"set_param_texture] 一起使用,设置初始速度属性。" + +msgid "" +"Use with [method set_param_min], [method set_param_max], and [method " +"set_param_texture] to set angular velocity properties." +msgstr "" +"与 [method set_param_min]、[method set_param_max] 和 [method " +"set_param_texture] 一起使用,设置角速度属性。" + +msgid "" +"Use with [method set_param_min], [method set_param_max], and [method " +"set_param_texture] to set orbital velocity properties." +msgstr "" +"与 [method set_param_min]、[method set_param_max] 和 [method " +"set_param_texture] 一起使用,设置轨道速度属性。" + +msgid "" +"Use with [method set_param_min], [method set_param_max], and [method " +"set_param_texture] to set linear acceleration properties." +msgstr "" +"与 [method set_param_min]、[method set_param_max] 和 [method " +"set_param_texture] 一起使用,设置线速度属性。" + +msgid "" +"Use with [method set_param_min], [method set_param_max], and [method " +"set_param_texture] to set radial acceleration properties." +msgstr "" +"与 [method set_param_min]、[method set_param_max] 和 [method " +"set_param_texture] 一起使用,设置径向加速度属性。" + +msgid "" +"Use with [method set_param_min], [method set_param_max], and [method " +"set_param_texture] to set tangential acceleration properties." +msgstr "" +"与 [method set_param_min]、[method set_param_max] 和 [method " +"set_param_texture] 一起使用,设置切向加速度属性。" + +msgid "" +"Use with [method set_param_min], [method set_param_max], and [method " +"set_param_texture] to set damping properties." +msgstr "" +"与 [method set_param_min]、[method set_param_max] 和 [method " +"set_param_texture] 一起使用,设置阻尼属性。" + +msgid "" +"Use with [method set_param_min], [method set_param_max], and [method " +"set_param_texture] to set angle properties." +msgstr "" +"与 [method set_param_min]、[method set_param_max] 和 [method " +"set_param_texture] 一起使用,设置角度属性。" + +msgid "" +"Use with [method set_param_min], [method set_param_max], and [method " +"set_param_texture] to set scale properties." +msgstr "" +"与 [method set_param_min]、[method set_param_max] 和 [method " +"set_param_texture] 一起使用,设置缩放属性。" + +msgid "" +"Use with [method set_param_min], [method set_param_max], and [method " +"set_param_texture] to set hue variation properties." +msgstr "" +"与 [method set_param_min]、[method set_param_max] 和 [method " +"set_param_texture] 一起使用,设置色相变化属性。" + +msgid "" +"Use with [method set_param_min], [method set_param_max], and [method " +"set_param_texture] to set animation speed properties." +msgstr "" +"与 [method set_param_min]、[method set_param_max] 和 [method " +"set_param_texture] 一起使用,设置动画速度属性。" + +msgid "" +"Use with [method set_param_min], [method set_param_max], and [method " +"set_param_texture] to set animation offset properties." +msgstr "" +"与 [method set_param_min]、[method set_param_max] 和 [method " +"set_param_texture] 一起使用,设置动画偏移属性。" + +msgid "" "Particles will be emitted at a position determined by sampling a random " "point on the [member emission_point_texture]. Particle color will be " "modulated by [member emission_color_texture]." @@ -18893,6 +36010,17 @@ msgstr "" "度和旋转将基于 [member emission_normal_texture] 进行设置。粒子颜色将由 " "[member emission_color_texture] 调节。" +msgid "Represents the size of the [enum SubEmitterMode] enum." +msgstr "代表 [enum SubEmitterMode] 枚举的大小。" + +msgid "" +"No collision for particles. Particles will go through " +"[GPUParticlesCollision3D] nodes." +msgstr "粒子没有碰撞。粒子会穿过 [GPUParticlesCollision3D] 节点。" + +msgid "Represents the size of the [enum CollisionMode] enum." +msgstr "代表 [enum CollisionMode] 枚举的大小。" + msgid "Contains a [Curve2D] path for [PathFollow2D] nodes to follow." msgstr "包含一个 [Curve2D] 路径,供 [PathFollow2D] 节点遵循。" @@ -18960,20 +36088,143 @@ msgstr "" msgid "The node's offset perpendicular to the curve." msgstr "节点垂直于曲线的偏移量。" +msgid "Point sampler for a [Path3D]." +msgstr "[Path3D] 的点采样器。" + msgid "" "Allows or forbids rotation on one or more axes, depending on the [enum " "RotationMode] constants being used." msgstr "" "允许或禁止在一个或多个轴上旋转,这取决于使用的 [enum RotationMode] 常量。" +msgid "Forbids the PathFollow3D to rotate." +msgstr "禁止该 PathFollow3D 旋转。" + +msgid "Allows the PathFollow3D to rotate in the Y axis only." +msgstr "允许该 PathFollow3D 仅在 Y 轴上旋转。" + +msgid "Allows the PathFollow3D to rotate in both the X, and Y axes." +msgstr "允许该 PathFollow3D 同时在 X 和 Y 轴上旋转。" + +msgid "Allows the PathFollow3D to rotate in any axis." +msgstr "允许该 PathFollow3D 在任意轴上旋转。" + msgid "Creates packages that can be loaded into a running project." msgstr "创建可以加载到正在运行的项目中的包。" msgid "Exposes performance-related data." msgstr "公开与性能相关的数据。" +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 "" +"上一秒渲染的帧数。该指标每秒仅更新一次,与查询频率无关。[i]越高越好。[/i]" + +msgid "Time it took to complete one frame, in seconds. [i]Lower is better.[/i]" +msgstr "完成一帧所需的时间,单位为秒。[i]越低越好。[/i]" + +msgid "" +"Time it took to complete one physics frame, in seconds. [i]Lower is better.[/" +"i]" +msgstr "完成一个物理帧所需的时间,单位为秒。[i]越低越好。[/i]" + +msgid "" +"Time it took to complete one navigation step, in seconds. This includes " +"navigation map updates as well as agent avoidance calculations. [i]Lower is " +"better.[/i]" +msgstr "" +"完成一个导航步骤的时间,单位为秒。包括导航地图的更新以及代理避障的计算。[i]越" +"低越好。[/i]" + +msgid "" +"Static memory currently used, in bytes. Not available in release builds. " +"[i]Lower is better.[/i]" +msgstr "当前使用的静态内存,单位为字节。在发布版本中不可用。[i]越低越好。[/i]" + +msgid "" +"Available static memory. Not available in release builds. [i]Lower is better." +"[/i]" +msgstr "可用的静态内存。在发布版本中不可用。[i]越低越好。[/i]" + +msgid "" +"Largest amount of memory the message queue buffer has used, in bytes. The " +"message queue is used for deferred functions calls and notifications. " +"[i]Lower is better.[/i]" +msgstr "" +"消息队列缓冲区已使用的最大内存量,单位为字节。消息队列用于延迟函数调用和通" +"知。[i]越低越好。[/i]" + +msgid "" +"Number of objects currently instantiated (including nodes). [i]Lower is " +"better.[/i]" +msgstr "当前实例化的对象数(包括节点)。[i]越低越好。[/i]" + +msgid "Number of resources currently used. [i]Lower is better.[/i]" +msgstr "当前使用的资源数。[i]越低越好。[/i]" + +msgid "" +"Number of nodes currently instantiated in the scene tree. This also includes " +"the root node. [i]Lower is better.[/i]" +msgstr "当前在场景树中实例化的节点数。也包括根节点。[i]越低越好。[/i]" + +msgid "" +"Number of orphan nodes, i.e. nodes which are not parented to a node of the " +"scene tree. [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] " +"and [constant RENDER_BUFFER_MEM_USED]. [i]Lower is better.[/i]" +msgstr "" +"显存的使用量(纹理和顶点内存之和,单位为字节)。由于该指标还包括其他杂项分" +"配,因此该值始终大于 [constant RENDER_TEXTURE_MEM_USED] 和 [constant " +"RENDER_BUFFER_MEM_USED] 的总和。[i]越低越好。[/i]" + +msgid "The amount of texture memory used (in bytes). [i]Lower is better.[/i]" +msgstr "纹理内存的使用量(单位为字节)。[i]越低越好。[/i]" + +msgid "" +"The amount of render buffer memory used (in bytes). [i]Lower is better.[/i]" +msgstr "渲染缓冲区内存的使用量(单位为字节)。[i]越低越好。[/i]" + +msgid "" +"Number of active [RigidBody2D] nodes in the game. [i]Lower is better.[/i]" +msgstr "游戏中活跃的 [RigidBody2D] 节点数。[i]越低越好。[/i]" + +msgid "" +"Number of collision pairs in the 2D physics engine. [i]Lower is better.[/i]" +msgstr "2D 物理引擎中碰撞对的数量。[i]越低越好。[/i]" + +msgid "Number of islands in the 2D physics engine. [i]Lower is better.[/i]" +msgstr "2D 物理引擎中孤岛的数量。[i]越低越好。[/i]" + +msgid "" +"Number of active [RigidBody3D] and [VehicleBody3D] nodes in the game. " +"[i]Lower is better.[/i]" +msgstr "" +"游戏中活跃的 [RigidBody3D] 和 [VehicleBody3D] 节点数。[i]越低越好。[/i]" + +msgid "" +"Number of collision pairs in the 3D physics engine. [i]Lower is better.[/i]" +msgstr "3D 物理引擎中碰撞对的数量。[i]越低越好。[/i]" + +msgid "Number of islands in the 3D physics engine. [i]Lower is better.[/i]" +msgstr "3D 物理引擎中孤岛的数量。[i]越低越好。[/i]" + +msgid "Output latency of the [AudioServer]. [i]Lower is better.[/i]" +msgstr "[AudioServer] 的输出延迟。[i]越低越好。[/i]" + +msgid "Number of navigation mesh polygons in the [NavigationServer3D]." +msgstr "[NavigationServer3D] 中导航网格多边形的数量。" + +msgid "Number of navigation mesh polygon edges in the [NavigationServer3D]." +msgstr "[NavigationServer3D] 中导航网格多边形边缘的数量。" + msgid "Represents the size of the [enum Monitor] enum." -msgstr "表示 [enum Monitor] 枚举的大小。" +msgstr "代表 [enum Monitor] 枚举的大小。" msgid "" "Called during physics processing, allowing you to read and safely modify the " @@ -18986,6 +36237,9 @@ msgstr "" "会和通常的物理行为一起生效,但是你可以通过 [member custom_integrator] 属性禁" "用默认行为,为物体施加完全自定义的合力。" +msgid "Sets the body's transform." +msgstr "设置该物体的变换。" + msgid "" "The body's bounciness. Values range from [code]0[/code] (no bounce) to " "[code]1[/code] (full bounciness)." @@ -19003,6 +36257,15 @@ msgstr "" "了碰撞响应之外,物体将仅根据 [method _integrate_forces] 函数确定的方式移动" "(如果已定义)。" +msgid "Sets the joint's transform." +msgstr "设置该关节的变换。" + +msgid "Sets the joint's rotation in radians." +msgstr "设置该关节的旋转,单位为弧度。" + +msgid "Sets the joint type. See [enum JointType] for possible values." +msgstr "设置关节的类型。可能的值见 [enum JointType]。" + 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 " @@ -19100,13 +36363,22 @@ msgid "Base class for all objects affected by physics in 3D space." msgstr "在 3D 空间中受物理影响的所有对象的基类。" msgid "Lock the body's rotation in the X axis." -msgstr "锁定实体在 X 轴上的旋转。" +msgstr "锁定物体在 X 轴上的旋转。" msgid "Lock the body's rotation in the Y axis." -msgstr "锁定实体在 Y 轴上的旋转。" +msgstr "锁定物体在 Y 轴上的旋转。" msgid "Lock the body's rotation in the Z axis." -msgstr "锁定实体在 Z 轴上的旋转。" +msgstr "锁定物体在 Z 轴上的旋转。" + +msgid "Lock the body's linear movement in the X axis." +msgstr "锁定物体在 X 轴上的线性运动。" + +msgid "Lock the body's linear movement in the Y axis." +msgstr "锁定物体在 Y 轴上的线性运动。" + +msgid "Lock the body's linear movement in the Z axis." +msgstr "锁定物体在 Z 轴上的线性运动。" msgid "Ray-casting" msgstr "发射射线" @@ -19236,10 +36508,159 @@ msgid "" "If [code]true[/code], the query will take [PhysicsBody2D]s into account." msgstr "如果为 [code]true[/code],查询将考虑 [PhysicsBody2D]。" +msgid "" +"If [code]true[/code], the query will detect a hit when starting inside " +"shapes. In this case the collision normal will be [code]Vector2(0, 0)[/" +"code]. Does not affect concave polygon shapes." +msgstr "" +"如果为 [code]true[/code],查询会在从形状内部开始时检测到命中。在此情况下,碰" +"撞法线将为 [code]Vector2(0, 0)[/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." +msgstr "" +"如果为 [code]true[/code],查询会在从形状内部开始时检测到命中。在此情况下,碰" +"撞法线将为 [code]Vector3(0, 0, 0)[/code]。不会影响凹多边形形状和高度图形状。" + msgid "Server interface for low-level 2D physics access." msgstr "用于底层 2D 物理访问服务的接口。" 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 "" +"这是创建圆形的常量。一个圆的形状只有一个半径。它可以用于交点和内/外侧检查。" + +msgid "" +"This is the constant for creating rectangle shapes. A rectangle shape is " +"defined by a width and a height. It can be used for intersections and inside/" +"outside checks." +msgstr "" +"这是用于创建矩形形状的常量。矩形形状是由宽度和高度定义的。它可以用于交点和内/" +"外侧检查。" + +msgid "" +"This is the constant for creating capsule shapes. A capsule shape is defined " +"by a radius and a length. 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." +msgstr "" +"这是创建凹形多边形的常量。一个多边形是由一个点的列表定义的。它可以用于交叉点" +"检查,但不能用于内/外侧检查。" + +msgid "" +"This constant is used internally by the engine. Any attempt to create this " +"kind of shape results in an error." +msgstr "引擎内部会使用这个常量。任何试图创建这种形状的行为都会导致错误。" + +msgid "" +"This area does not affect gravity/damp. These are generally areas that exist " +"only to detect collisions, and objects entering or exiting them." +msgstr "" +"这个区域不影响重力/阻尼。这些一般都是只存在于检测碰撞的区域,以及进入或离开它" +"们的物体。" + +msgid "" +"This area adds its gravity/damp values to whatever has been calculated so " +"far. This way, many overlapping areas can combine their physics to make " +"interesting effects." +msgstr "" +"此区域把它的重力/阻尼加到目前已经计算过的对象上。这样一来,许多重叠的区域可以" +"结合它们的物理运算来产生有趣的效果。" + +msgid "" +"This area adds its gravity/damp values to whatever has been calculated so " +"far. Then stops taking into account the rest of the areas, even the default " +"one." +msgstr "" +"这个区域把它的重力/阻尼加到迄今为止已经计算出来的任何东西上。然后停止考虑其余" +"的区域,甚至默认的区域。" + +msgid "" +"This area replaces any gravity/damp, even the default one, and stops taking " +"into account the rest of the areas." +msgstr "这个区域取代了任何重力/阻尼,甚至是默认的,并停止考虑其余的区域。" + +msgid "" +"This area replaces any gravity/damp calculated so far, but keeps calculating " +"the rest of the areas, down to the default one." +msgstr "" +"这个区域取代了到目前为止计算的任何重力/阻尼,但继续计算其余的区域,直到默认的" +"区域。" + +msgid "Represents the size of the [enum BodyParameter] enum." +msgstr "代表 [enum BodyParameter] 枚举的大小。" + +msgid "Constant to set/get the current transform matrix of the body." +msgstr "常量,用于设置/获取物体的当前变换矩阵。" + +msgid "Constant to set/get the current linear velocity of the body." +msgstr "常量,用于设置/获取物体的当前线速度。" + +msgid "Constant to set/get the current angular velocity of the body." +msgstr "常量,用于设置/获取物体的当前角速度。" + +msgid "Constant to sleep/wake up a body, or to get whether it is sleeping." +msgstr "常量,用于使物体沉睡/唤醒,或得到它是否在沉睡。" + +msgid "Constant to set/get whether the body can sleep." +msgstr "常量,用于设置/获取物体是否可以休眠。" + +msgid "Constant to create pin joints." +msgstr "常量,用于创造钉关节。" + +msgid "Constant to create groove joints." +msgstr "常量,用于创造槽关节。" + +msgid "Constant to create damped spring joints." +msgstr "常量,用于创造有阻尼的弹簧关节。" + +msgid "Represents the size of the [enum JointType] enum." +msgstr "代表 [enum JointType] 枚举的大小。" + +msgid "" +"Enables continuous collision detection by raycasting. It is faster than " +"shapecasting, but less precise." +msgstr "通过射线投射实现连续的碰撞检测。它比形状投射更快,但不够精确。" + +msgid "" +"Enables continuous collision detection by shapecasting. It is the slowest " +"CCD method, and the most precise." +msgstr "通过形变实现连续的碰撞检测。它是最慢的 CCD 方法,也是最精确的。" + +msgid "" +"The value of the first parameter and area callback function receives, when " +"an object enters one of its shapes." +msgstr "当对象进入其形状之一时,第一个参数和区域回调函数接收的值。" + +msgid "" +"The value of the first parameter and area callback function receives, when " +"an object exits one of its shapes." +msgstr "当对象退出其形状之一时,第一个参数和区域回调函数接收的值。" + +msgid "Constant to get the number of objects that are not sleeping." +msgstr "常量,用以获取未处于睡眠状态的对象的数量。" + +msgid "Constant to get the number of possible collisions." +msgstr "常量,用以获取可能的碰撞数。" + +msgid "" +"Constant to get the number of space regions where a collision could occur." +msgstr "常量,用以获取可能发生碰撞的空间区域数。" + +msgid "Server interface for low-level physics access." +msgstr "用于低级物理访问的服务器接口。" + +msgid "" "Adds a shape to the area, along with a transform matrix. Shapes are usually " "referenced by their index, so you should track which shape has a given index." msgstr "" @@ -19256,21 +36677,16 @@ msgid "" "be reassigned later." msgstr "从一个区域移除所有形状。它不会删除形状,因此它们可以稍后重新分配。" -msgid "" -"Creates an [Area2D]. After creating an [Area2D] with this method, assign it " -"to a space using [method area_set_space] to use the created [Area2D] in the " -"physics world." -msgstr "" -"创建一个 [Area2D]。用这个方法创建了一个[Area2D]后,使用[method " -"area_set_space]将其分配给一个空间,以便在物理世界中使用创建的[Area2D]。" +msgid "Creates an [Area3D]." +msgstr "创建 [Area3D]。" msgid "Gets the instance ID of the object the area is assigned to." msgstr "获取区域分配给的对象的实例 ID。" msgid "" -"Returns an area parameter value. See [enum AreaParameter] for a list of " -"available parameters." -msgstr "返回区域参数值。有关可用参数的列表,请参阅 [enum AreaParameter]。" +"Returns an area parameter value. A list of available parameters is on the " +"[enum AreaParameter] constants." +msgstr "返回区域参数值。可用参数列表位于 [enum AreaParameter] 常量上。" msgid "Returns the [RID] of the nth shape of an area." msgstr "返回区域的第 n 个形状的 [RID]。" @@ -19319,9 +36735,12 @@ msgstr "" "5:物体进入/离开区域的形状指数。" msgid "" -"Sets the value for an area parameter. See [enum AreaParameter] for a list of " -"available parameters." -msgstr "设置区域参数的值。有关可用参数的列表,请参阅 [enum AreaParameter]。" +"Sets the value for an area parameter. A list of available parameters is on " +"the [enum AreaParameter] constants." +msgstr "设置面积参数的值。可用参数列表位于 [enum AreaParameter] 常量上。" + +msgid "Sets object pickable with rays." +msgstr "设置可使用光线拾取的对象。" msgid "" "Substitutes a given area shape by another. The old shape is selected by its " @@ -19329,9 +36748,6 @@ msgid "" msgstr "" "用另一种形状代替一种形状。旧的形状由它的索引选择,新的形状由它的[RID]选择。" -msgid "Disables a given shape in an area." -msgstr "在区域中禁用一个给定的形状。" - msgid "Sets the transform matrix for an area shape." msgstr "设置区域形状的变换矩阵。" @@ -19354,17 +36770,14 @@ msgstr "" msgid "Removes all shapes from a body." msgstr "从物体上移除所有碰撞形状。" -msgid "Creates a physics body." -msgstr "创建一个物理体。" - msgid "Returns the physics layer or layers a body belongs to." msgstr "返回物体所属的物理层或层。" msgid "Returns the physics layer or layers a body can collide with." msgstr "返回物体可以碰撞的物理层或层。" -msgid "Returns the continuous collision detection mode." -msgstr "返回连续碰撞检测模式。" +msgid "Returns the body's collision priority." +msgstr "返回该物体的碰撞优先级。" msgid "" "Returns the maximum contacts that can be reported. See [method " @@ -19375,9 +36788,9 @@ msgid "Returns the body mode." msgstr "返回物体模式。" msgid "" -"Returns the value of a body parameter. See [enum BodyParameter] for a list " -"of available parameters." -msgstr "返回物体参数的值。请参阅 [enum BodyParameter] 获取可用参数列表。" +"Returns the value of a body parameter. A list of available parameters is on " +"the [enum BodyParameter] constants." +msgstr "返回物体参数的值。可用参数列表位于 [enum BodyParameter] 常量上。" msgid "Returns the [RID] of the nth shape of a body." msgstr "返回物体的第 n 个碰撞形状的 [RID]。" @@ -19395,14 +36808,23 @@ msgid "Returns a body state." msgstr "返回物体的状态。" msgid "" +"If [code]true[/code], the continuous collision detection mode is enabled." +msgstr "如果为 [code]true[/code],则启用连续碰撞检测模式。" + +msgid "" "Returns whether a 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 "Removes a body from the list of bodies exempt from collisions." -msgstr "从免于碰撞的物体列表中移除一个物体。" +msgid "" +"Removes a body from the list of bodies exempt from collisions.\n" +"Continuous collision detection tries to predict where a moving body will " +"collide, instead of moving it and correcting its movement if it collided." +msgstr "" +"从免于碰撞的实体列表中删除实体。\n" +"连续碰撞检测尝试预测运动物体碰撞的位置,而不是在碰撞时移动物体并纠正其运动。" msgid "" "Removes a shape from a body. The shape is not deleted, so it can be reused " @@ -19423,18 +36845,19 @@ msgstr "设置物体所属的物理层或层。" msgid "Sets the physics layer or layers a body can collide with." msgstr "设置物理层或身体可以碰撞的层。" +msgid "Sets the body's collision priority." +msgstr "设置该物体的碰撞优先级。" + msgid "" -"Sets the continuous collision detection mode using one of the [enum CCDMode] " -"constants.\n" +"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." msgstr "" -"设置使用 [enum CCDMode] 常量之一的连续碰撞检测模式。\n" -"连续碰撞检测试图预测一个运动体将在哪里发生碰撞,而不是移动它并在它发生碰撞时" -"纠正其运动。" +"如果为 [code]true[/code],则启用连续碰撞检测模式。\n" +"连续碰撞检测尝试预测运动物体碰撞的位置,而不是在碰撞时移动物体并纠正其运动。" -msgid "Sets the body mode using one of the [enum BodyMode] constants." -msgstr "使用 [enum BodyMode] 常量之一设置 body 模式。" +msgid "Sets the body mode, from one of the [enum BodyMode] constants." +msgstr "从 [enum BodyMode] 常量之一设置主体模式。" msgid "" "Sets whether a body uses a callback function to calculate its own physics " @@ -19444,9 +36867,9 @@ msgstr "" "body_set_force_integration_callback])。" msgid "" -"Sets a body parameter. See [enum BodyParameter] for a list of available " -"parameters." -msgstr "设置主体参数。请参阅 [enum BodyParameter] 获取可用参数列表。" +"Sets a body parameter. A list of available parameters is on the [enum " +"BodyParameter] constants." +msgstr "设置物体参数。可用参数列表位于 [enum BodyParameter] 常量上。" msgid "" "Substitutes a given body shape by another. The old shape is selected by its " @@ -19461,357 +36884,6 @@ msgstr "设置物体形状的变换矩阵。" msgid "Assigns a space to the body (see [method space_create])." msgstr "给物体分配一个空间(见 [method space_create])。" -msgid "" -"Sets a body state using one of the [enum BodyState] constants.\n" -"Note that the method doesn't take effect immediately. The state will change " -"on the next physics frame." -msgstr "" -"使用 [enum BodyState] 常量之一设置物体状态。\n" -"请注意,该方法不会立即生效。状态将在下一个物理帧发生变化。" - -msgid "" -"Returns information about the current state of the 2D physics engine. See " -"[enum ProcessInfo] for a list of available states." -msgstr "" -"返回关于 2D 物理引擎当前状态的信息。有关可用状态列表,请参阅 [enum " -"ProcessInfo]。" - -msgid "Returns the value of a joint parameter." -msgstr "返回关节参数的值。" - -msgid "Returns a joint's type (see [enum JointType])." -msgstr "返回一个关节的类型(见 [enum JointType])。" - -msgid "" -"Sets a joint parameter. See [enum JointParam] for a list of available " -"parameters." -msgstr "设置关节参数。有关可用参数的列表,请参阅 [enum JointParam]。" - -msgid "Activates or deactivates the 2D physics engine." -msgstr "激活或停用2D物理引擎。" - -msgid "Returns the shape data." -msgstr "返回形状数据。" - -msgid "Returns a shape's type (see [enum ShapeType])." -msgstr "返回一个形状的类型(见 [enum ShapeType])。" - -msgid "" -"Sets the shape data that defines its shape and size. The data to be passed " -"depends on the kind of shape created [method shape_get_type]." -msgstr "" -"设置定义形状和大小的形状数据。要传递的数据取决于创建的形状的类型 [method " -"shape_get_type]。" - -msgid "" -"Creates a space. A space is a collection of parameters for the physics " -"engine that can be assigned to an area or a body. It can be assigned to an " -"area with [method area_set_space], or to a body with [method body_set_space]." -msgstr "" -"创建一个空间。空间是物理引擎的参数集合,可以分配给区域或主体。它可以通过 " -"[method area_set_space] 分配给一个区域,或者通过 [method body_set_space] 分配" -"给一个主体。" - -msgid "Returns the value of a space parameter." -msgstr "返回空间参数的值。" - -msgid "Returns whether the space is active." -msgstr "返回该空间是否是活动的。" - -msgid "" -"Marks a space as active. It will not have an effect, unless it is assigned " -"to an area or body." -msgstr "将空间标记为活动空间。它不会有效果,除非它被分配到一个区域或物体。" - -msgid "" -"Sets the value for a space parameter. See [enum SpaceParameter] for a list " -"of available parameters." -msgstr "设置空间参数的值。参阅 [enum SpaceParameter] 获取可用参数列表。" - -msgid "" -"Constant to set/get the maximum distance a pair of bodies has to move before " -"their collision status has to be recalculated." -msgstr "常量,用于设置/获取一对物体在其碰撞状态被重新计算之前的最大移动距离。" - -msgid "" -"Constant to set/get the maximum distance a shape can penetrate another shape " -"before it is considered a collision." -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." -msgstr "" -"常量,用于设置/获取活跃的阈值线速度。一个被标记为线性速度和角速度都可能不活跃" -"的物体将在给定的时间后进入睡眠状态。" - -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." -msgstr "" -"常量,用于设置/获取活动的阈值角速度。一个被标记为线性和角速度都可能不活跃的物" -"体,在给定的时间后将会进入睡眠状态。" - -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." -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." -msgstr "" -"常量,用于设置/获取所有物理约束的默认求解器偏置。解算器偏置是一个控制两个物体" -"在违反约束后“反弹”程度的因素,以避免由于数值不精确而使它们处于这种状态。" - -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 "" -"这是创建圆形的常量。一个圆的形状只有一个半径。它可以用于交点和内/外侧检查。" - -msgid "" -"This is the constant for creating rectangle shapes. A rectangle shape is " -"defined by a width and a height. It can be used for intersections and inside/" -"outside checks." -msgstr "" -"这是用于创建矩形形状的常量。矩形形状是由宽度和高度定义的。它可以用于交点和内/" -"外侧检查。" - -msgid "" -"This is the constant for creating capsule shapes. A capsule shape is defined " -"by a radius and a length. It can be used for intersections and inside/" -"outside checks." -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. Unlike the [member CollisionPolygon2D.polygon] property, " -"polygons modified with [method shape_set_data] do not verify that the points " -"supplied form is a convex polygon." -msgstr "" -"这是用于创建凸多边形的常量。一个多边形是由一个点的列表定义的。它可以用于交点" -"和内/外侧检查。与 [member CollisionPolygon2D.polygon] 属性不同,用 [method " -"shape_set_data] 修改的多边形并不验证所提供的点的形式是一个凸形多边形。" - -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." -msgstr "" -"这是创建凹形多边形的常量。一个多边形是由一个点的列表定义的。它可以用于交叉点" -"检查,但不能用于内/外侧检查。" - -msgid "" -"This constant is used internally by the engine. Any attempt to create this " -"kind of shape results in an error." -msgstr "引擎内部会使用这个常量。任何试图创建这种形状的行为都会导致错误。" - -msgid "Constant to set/get gravity strength in an area." -msgstr "常量,用于设置/获取区域中的重力强度。" - -msgid "Constant to set/get gravity vector/center in an area." -msgstr "常量,用于设置/获取区域中的重力向量/中心。" - -msgid "" -"Constant to set/get whether the gravity vector of an area is a direction, or " -"a center point." -msgstr "常量,用于设置/获取区域中的重力向量是方向,还是中心点。" - -msgid "Constant to set/get the priority (order of processing) of an area." -msgstr "常量,用于设置/获取区域的优先级(处理顺序)。" - -msgid "" -"This area does not affect gravity/damp. These are generally areas that exist " -"only to detect collisions, and objects entering or exiting them." -msgstr "" -"这个区域不影响重力/阻尼。这些一般都是只存在于检测碰撞的区域,以及进入或离开它" -"们的物体。" - -msgid "" -"This area adds its gravity/damp values to whatever has been calculated so " -"far. This way, many overlapping areas can combine their physics to make " -"interesting effects." -msgstr "" -"此区域把它的重力/阻尼加到目前已经计算过的对象上。这样一来,许多重叠的区域可以" -"结合它们的物理运算来产生有趣的效果。" - -msgid "" -"This area adds its gravity/damp values to whatever has been calculated so " -"far. Then stops taking into account the rest of the areas, even the default " -"one." -msgstr "" -"这个区域把它的重力/阻尼加到迄今为止已经计算出来的任何东西上。然后停止考虑其余" -"的区域,甚至默认的区域。" - -msgid "" -"This area replaces any gravity/damp, even the default one, and stops taking " -"into account the rest of the areas." -msgstr "这个区域取代了任何重力/阻尼,甚至是默认的,并停止考虑其余的区域。" - -msgid "" -"This area replaces any gravity/damp calculated so far, but keeps calculating " -"the rest of the areas, down to the default one." -msgstr "" -"这个区域取代了到目前为止计算的任何重力/阻尼,但继续计算其余的区域,直到默认的" -"区域。" - -msgid "Constant to set/get a body's bounce factor." -msgstr "常量,用于设置/获取物体的反弹系数。" - -msgid "Constant to set/get a body's friction." -msgstr "常量,用于设置/获取物体的摩擦力。" - -msgid "Constant to set/get a body's mass." -msgstr "常量,用于设置/获取物体的质量。" - -msgid "Constant to set/get a body's inertia." -msgstr "常量,用于设置/获取物体的惯性。" - -msgid "Constant to set/get a body's gravity multiplier." -msgstr "常量,用于设置/获取物体的重力倍数。" - -msgid "Represents the size of the [enum BodyParameter] enum." -msgstr "表示 [enum BodyParameter] 枚举的大小。" - -msgid "Constant to set/get the current transform matrix of the body." -msgstr "常量,用于设置/获取物体的当前变换矩阵。" - -msgid "Constant to set/get the current linear velocity of the body." -msgstr "常量,用于设置/获取物体的当前线速度。" - -msgid "Constant to set/get the current angular velocity of the body." -msgstr "常量,用于设置/获取物体的当前角速度。" - -msgid "Constant to sleep/wake up a body, or to get whether it is sleeping." -msgstr "常量,用于使物体沉睡/唤醒,或得到它是否在沉睡。" - -msgid "Constant to set/get whether the body can sleep." -msgstr "常量,用于设置/获取物体是否可以休眠。" - -msgid "Constant to create pin joints." -msgstr "常量,用于创造钉关节。" - -msgid "Constant to create groove joints." -msgstr "常量,用于创造槽关节。" - -msgid "Constant to create damped spring joints." -msgstr "常量,用于创造有阻尼的弹簧关节。" - -msgid "" -"Sets the resting length of the spring joint. The joint will always try to go " -"to back this length when pulled apart." -msgstr "设定弹簧关节的静止长度。当拉开时,关节将总是试图回到这个长度。" - -msgid "" -"Sets the stiffness of the spring joint. The joint applies a force equal to " -"the stiffness times the distance from its resting length." -msgstr "设置弹簧接头的刚度。该关节施加的力等于刚度乘以离其静止长度的距离。" - -msgid "" -"Sets the damping ratio of the spring joint. A value of 0 indicates an " -"undamped spring, while 1 causes the system to reach equilibrium as fast as " -"possible (critical damping)." -msgstr "" -"设置弹簧接头的阻尼比率。值为 0 表示无阻尼弹簧,而 1 导致系统尽可能快地达到平" -"衡(临界阻尼)。" - -msgid "" -"Disables continuous collision detection. This is the fastest way to detect " -"body collisions, but can miss small, fast-moving objects." -msgstr "" -"禁用连续碰撞检测。这是检测物体碰撞的最快方法,但可能会错过小的、快速移动的物" -"体。" - -msgid "" -"Enables continuous collision detection by raycasting. It is faster than " -"shapecasting, but less precise." -msgstr "通过射线投射实现连续的碰撞检测。它比形状投射更快,但不够精确。" - -msgid "" -"Enables continuous collision detection by shapecasting. It is the slowest " -"CCD method, and the most precise." -msgstr "通过形变实现连续的碰撞检测。它是最慢的 CCD 方法,也是最精确的。" - -msgid "" -"The value of the first parameter and area callback function receives, when " -"an object enters one of its shapes." -msgstr "当对象进入其形状之一时,第一个参数和区域回调函数接收的值。" - -msgid "" -"The value of the first parameter and area callback function receives, when " -"an object exits one of its shapes." -msgstr "当对象退出其形状之一时,第一个参数和区域回调函数接收的值。" - -msgid "Constant to get the number of objects that are not sleeping." -msgstr "常量,用以获取未处于睡眠状态的对象的数量。" - -msgid "Constant to get the number of possible collisions." -msgstr "常量,用以获取可能的碰撞数。" - -msgid "" -"Constant to get the number of space regions where a collision could occur." -msgstr "常量,用以获取可能发生碰撞的空间区域数。" - -msgid "Server interface for low-level physics access." -msgstr "用于低级物理访问的服务器接口。" - -msgid "" -"Returns an area parameter value. A list of available parameters is on the " -"[enum AreaParameter] constants." -msgstr "返回区域参数值。可用参数列表位于 [enum AreaParameter] 常量上。" - -msgid "" -"Sets the value for an area parameter. A list of available parameters is on " -"the [enum AreaParameter] constants." -msgstr "设置面积参数的值。可用参数列表位于 [enum AreaParameter] 常量上。" - -msgid "Sets object pickable with rays." -msgstr "设置可使用光线拾取的对象。" - -msgid "" -"Returns the value of a body parameter. A list of available parameters is on " -"the [enum BodyParameter] constants." -msgstr "返回物体参数的值。可用参数列表位于 [enum BodyParameter] 常量上。" - -msgid "" -"If [code]true[/code], the continuous collision detection mode is enabled." -msgstr "如果为 [code]true[/code],则启用连续碰撞检测模式。" - -msgid "" -"Removes a body from the list of bodies exempt from collisions.\n" -"Continuous collision detection tries to predict where a moving body will " -"collide, instead of moving it and correcting its movement if it collided." -msgstr "" -"从免于碰撞的实体列表中删除实体。\n" -"连续碰撞检测尝试预测运动物体碰撞的位置,而不是在碰撞时移动物体并纠正其运动。" - -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." -msgstr "" -"如果为 [code]true[/code],则启用连续碰撞检测模式。\n" -"连续碰撞检测尝试预测运动物体碰撞的位置,而不是在碰撞时移动物体并纠正其运动。" - -msgid "Sets the body mode, from one of the [enum BodyMode] constants." -msgstr "从 [enum BodyMode] 常量之一设置主体模式。" - -msgid "" -"Sets a body parameter. A list of available parameters is on the [enum " -"BodyParameter] constants." -msgstr "设置物体参数。可用参数列表位于 [enum BodyParameter] 常量上。" - msgid "Sets a body state (see [enum BodyState] constants)." msgstr "设置主体状态(见 [enum BodyState] 常量)。" @@ -19854,6 +36926,25 @@ msgid "Sets a hinge_joint parameter (see [enum HingeJointParam] constants)." msgstr "设置 hinge_joint 参数(见 [enum HingeJointParam] 常量)。" msgid "" +"Sets whether the bodies attached to the [Joint3D] will collide with each " +"other." +msgstr "设置附加至该 [Joint3D] 的物体能否互相碰撞。" + +msgid "Gets the priority value of the Joint3D." +msgstr "获取该 Joint3D 的优先级。" + +msgid "Returns the type of the Joint3D." +msgstr "返回该 Joint3D 的类型。" + +msgid "" +"Returns whether the bodies attached to the [Joint3D] will collide with each " +"other." +msgstr "返回附加至该 [Joint3D] 的物体能否互相碰撞。" + +msgid "Sets the priority value of the Joint3D." +msgstr "设置该 Joint3D 的优先级。" + +msgid "" "Returns position of the joint in the local space of body a of the joint." msgstr "返回关节在关节物体 A 的局部空间中的位置。" @@ -19876,17 +36967,62 @@ msgstr "设置 pin_joint 参数(见 [enum PinJointParam] 常量)。" msgid "Activates or deactivates the 3D physics engine." msgstr "激活或停用 3D 物理引擎。" +msgid "Returns the shape data." +msgstr "返回形状数据。" + msgid "Returns the type of shape (see [enum ShapeType] constants)." msgstr "返回形状的类型(见 [enum ShapeType] 常量)。" +msgid "" +"Sets the shape data that defines its shape and size. The data to be passed " +"depends on the kind of shape created [method shape_get_type]." +msgstr "" +"设置定义形状和大小的形状数据。要传递的数据取决于创建的形状的类型 [method " +"shape_get_type]。" + msgid "Gets a slider_joint parameter (see [enum SliderJointParam] constants)." msgstr "获取 slider_joint 参数(见 [enum SliderJointParam] 常量)。" msgid "" +"Creates a space. A space is a collection of parameters for the physics " +"engine that can be assigned to an area or a body. It can be assigned to an " +"area with [method area_set_space], or to a body with [method body_set_space]." +msgstr "" +"创建一个空间。空间是物理引擎的参数集合,可以分配给区域或主体。它可以通过 " +"[method area_set_space] 分配给一个区域,或者通过 [method body_set_space] 分配" +"给一个主体。" + +msgid "Returns the value of a space parameter." +msgstr "返回空间参数的值。" + +msgid "Returns whether the space is active." +msgstr "返回该空间是否是活动的。" + +msgid "" +"Marks a space as active. It will not have an effect, unless it is assigned " +"to an area or body." +msgstr "将空间标记为活动空间。它不会有效果,除非它被分配到一个区域或物体。" + +msgid "" "Sets the value for a space parameter. A list of available parameters is on " "the [enum SpaceParameter] constants." msgstr "设置空间参数的值。可用参数列表位于 [enum SpaceParameter] 常量上。" +msgid "The [Joint3D] is a [PinJoint3D]." +msgstr "该 [Joint3D] 为 [PinJoint3D]。" + +msgid "The [Joint3D] is a [HingeJoint3D]." +msgstr "该 [Joint3D] 为 [HingeJoint3D]。" + +msgid "The [Joint3D] is a [SliderJoint3D]." +msgstr "该 [Joint3D] 为 [SliderJoint3D]。" + +msgid "The [Joint3D] is a [ConeTwistJoint3D]." +msgstr "该 [Joint3D] 为 [ConeTwistJoint3D]。" + +msgid "The [Joint3D] is a [Generic6DOFJoint3D]." +msgstr "该 [Joint3D] 为 [Generic6DOFJoint3D]。" + msgid "" "The strength with which the pinned objects try to stay in positional " "relation to each other.\n" @@ -20000,7 +37136,7 @@ msgid "" msgstr "垂直于滑块的轴上的旋转阻尼量。" msgid "Represents the size of the [enum SliderJointParam] enum." -msgstr "表示 [enum SliderJointParam] 枚举的大小。" +msgstr "代表 [enum SliderJointParam] 枚举的大小。" msgid "" "A factor that gets applied to the movement across the axes. The lower, the " @@ -20044,6 +37180,116 @@ msgid "" "velocity." msgstr "设置时,存在跨这些轴的线性马达,以指定的速度为目标。" +msgid "The [Shape3D] is a [WorldBoundaryShape3D]." +msgstr "该 [Shape3D] 为 [WorldBoundaryShape3D]。" + +msgid "The [Shape3D] is a [SeparationRayShape3D]." +msgstr "该 [Shape3D] 为 [SeparationRayShape3D]。" + +msgid "The [Shape3D] is a [SphereShape3D]." +msgstr "该 [Shape3D] 为 [SphereShape3D]。" + +msgid "The [Shape3D] is a [BoxShape3D]." +msgstr "该 [Shape3D] 为 [BoxShape3D]。" + +msgid "The [Shape3D] is a [CapsuleShape3D]." +msgstr "该 [Shape3D] 为 [CapsuleShape3D]。" + +msgid "The [Shape3D] is a [CylinderShape3D]." +msgstr "该 [Shape3D] 为 [CylinderShape3D]。" + +msgid "The [Shape3D] is a [ConvexPolygonShape3D]." +msgstr "该 [Shape3D] 为 [ConvexPolygonShape3D]。" + +msgid "The [Shape3D] is a [ConcavePolygonShape3D]." +msgstr "该 [Shape3D] 为 [ConcavePolygonShape3D]。" + +msgid "The [Shape3D] is a [HeightMapShape3D]." +msgstr "该 [Shape3D] 为 [HeightMapShape3D]。" + +msgid "Constant to set/get gravity strength in an area." +msgstr "常量,用于设置/获取区域中的重力强度。" + +msgid "Constant to set/get gravity vector/center in an area." +msgstr "常量,用于设置/获取区域中的重力向量/中心。" + +msgid "" +"Constant to set/get whether the gravity vector of an area is a direction, or " +"a center point." +msgstr "常量,用于设置/获取区域中的重力向量是方向,还是中心点。" + +msgid "Constant to set/get the linear damping factor of an area." +msgstr "常数,用于设置/获取区域的线性阻尼系数。" + +msgid "Constant to set/get the angular damping factor of an area." +msgstr "常数,用于设置/获取区域的角度阻尼系数。" + +msgid "Constant to set/get the priority (order of processing) of an area." +msgstr "常量,用于设置/获取区域的优先级(处理顺序)。" + +msgid "Constant to set/get a body's bounce factor." +msgstr "常量,用于设置/获取物体的反弹系数。" + +msgid "Constant to set/get a body's friction." +msgstr "常量,用于设置/获取物体的摩擦力。" + +msgid "Constant to set/get a body's mass." +msgstr "常量,用于设置/获取物体的质量。" + +msgid "Constant to set/get a body's inertia." +msgstr "常量,用于设置/获取物体的惯性。" + +msgid "Constant to set/get a body's gravity multiplier." +msgstr "常量,用于设置/获取物体的重力倍数。" + +msgid "Constant to set/get a body's linear damping factor." +msgstr "常数,用于设置/获取物体的线性阻尼系数。" + +msgid "Constant to set/get a body's angular damping factor." +msgstr "常数,用于设置/获取物体的角度阻尼系数。" + +msgid "" +"Constant to set/get the maximum distance a pair of bodies has to move before " +"their collision status has to be recalculated." +msgstr "常量,用于设置/获取一对物体在其碰撞状态被重新计算之前的最大移动距离。" + +msgid "" +"Constant to set/get the maximum distance a shape can be from another before " +"they are considered separated and the contact is discarded." +msgstr "" +"常量,用于设置/获取两个形状间的最大距离,超过该距离后它们将被视为分离,接触将" +"被弃置。" + +msgid "" +"Constant to set/get the maximum distance a shape can penetrate another shape " +"before it is considered a collision." +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." +msgstr "" +"常量,用于设置/获取活跃的阈值线速度。一个被标记为线性速度和角速度都可能不活跃" +"的物体将在给定的时间后进入睡眠状态。" + +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." +msgstr "" +"常量,用于设置/获取活动的阈值角速度。一个被标记为线性和角速度都可能不活跃的物" +"体,在给定的时间后将会进入睡眠状态。" + +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." +msgstr "" +"常量,用于设置/获得最大的活动时间。一个被标记为线速度和角速度都可能不活动的物" +"体,在这个时间之后将被置入睡眠状态。" + msgid "Parameters to be sent to a 2D shape physics query." msgstr "要发送到 2D 形状物理查询的参数。" @@ -20059,6 +37305,9 @@ msgstr "被查询形状的变换矩阵。" msgid "Parameters to be sent to a 3D shape physics query." msgstr "要发送到 3D 形状物理查询的参数。" +msgid "Returns the colliding body's velocity, if a collision occurred." +msgstr "如果发生碰撞,则返回碰撞到的物体的速度。" + msgid "" "The higher this value, the more the bond to the pinned partner can flex." msgstr "这个值越高,与被牵制的两个物体之间的的联系就越灵活。" @@ -20143,6 +37392,26 @@ msgstr "沿 Z 轴细分的次数。" msgid "Number of subdivision along the X axis." msgstr "沿 X 轴细分的次数。" +msgid "[PlaneMesh] will face the positive X-axis." +msgstr "[PlaneMesh] 将面向 X 轴正方向。" + +msgid "" +"[PlaneMesh] will face the positive Y-axis. This matches the behavior of the " +"[PlaneMesh] in Godot 3.x." +msgstr "" +"[PlaneMesh] 将面向 Y 轴正方向。与 Godot 3.x 中 [PlaneMesh] 的行为一致。" + +msgid "" +"[PlaneMesh] will face the positive Z-axis. This matches the behavior of the " +"QuadMesh in Godot 3.x." +msgstr "[PlaneMesh] 将面向 Z 轴正方向。与 Godot 3.x 中 QuadMesh 的行为一致。" + +msgid "[Texture2D] used for the light's appearance." +msgstr "用于该灯光外观的 [Texture2D]。" + +msgid "The [member texture]'s scale factor." +msgstr "[member texture] 的缩放系数。" + msgid "Mesh with a single Point primitive." msgstr "使用单个点图元的网格。" @@ -20327,6 +37596,42 @@ msgstr "用于菜单项的 [Font] 字体。" msgid "[Font] used for the labeled separator." msgstr "用于带文字分隔线的 [Font] 字体。" +msgid "Font size of the menu items." +msgstr "菜单项的字体大小。" + +msgid "[Texture2D] icon for the checked checkbox items." +msgstr "[Texture2D] 图标,用于处于选中状态的复选项。" + +msgid "[Texture2D] icon for the checked checkbox items when they are disabled." +msgstr "[Texture2D] 图标,用于处于选中状态的已禁用复选项。" + +msgid "[Texture2D] icon for the checked radio button items." +msgstr "[Texture2D] 图标,用于处于选中状态的单选项。" + +msgid "" +"[Texture2D] icon for the checked radio button items when they are disabled." +msgstr "[Texture2D] 图标,用于处于选中状态的已禁用单选项。" + +msgid "[Texture2D] icon for the unchecked radio button items." +msgstr "[Texture2D] 图标,用于处于未选状态的单选项。" + +msgid "" +"[Texture2D] icon for the unchecked radio button items when they are disabled." +msgstr "[Texture2D] 图标,用于处于未选状态的已禁用单选项。" + +msgid "[Texture2D] icon for the submenu arrow (for left-to-right layouts)." +msgstr "[Texture2D] 图标,用于子菜单箭头(用于从左至右布局)。" + +msgid "[Texture2D] icon for the submenu arrow (for right-to-left layouts)." +msgstr "[Texture2D] 图标,用于子菜单箭头(用于从右至左布局)。" + +msgid "[Texture2D] icon for the unchecked checkbox items." +msgstr "[Texture2D] 图标,用于处于未选状态的复选项。" + +msgid "" +"[Texture2D] icon for the unchecked checkbox items when they are disabled." +msgstr "[Texture2D] 图标,用于处于未选状态的已禁用复选项。" + msgid "[StyleBox] displayed when the [PopupMenu] item is hovered." msgstr "当 [PopupMenu] 菜单项被悬停时显示的 [StyleBox]。" @@ -20394,6 +37699,15 @@ msgid "" "sky_top_color]." msgstr "从 [member sky_horizon_color] 渐变到 [member sky_top_color] 的速度。" +msgid "Multiplier for sky color. A higher value will make the sky brighter." +msgstr "天空颜色的倍数。值越高天空越亮。" + +msgid "Color of the sky at the horizon. Blends with [member sky_top_color]." +msgstr "天空在地平线处的颜色。会与 [member sky_top_color] 混合。" + +msgid "Color of the sky at the top. Blends with [member sky_horizon_color]." +msgstr "天空在顶部的颜色。会与 [member sky_horizon_color] 混合。" + msgid "Distance from center of sun where it fades out completely." msgstr "太阳完全淡出消失的位置与太阳中心的距离。" @@ -20409,6 +37723,12 @@ msgstr "填充方向。可能的取值见 [enum FillMode]。" msgid "If [code]true[/code], the fill percentage is displayed on the bar." msgstr "为 [code]true[/code] 时,将在进度条上显示百分比。" +msgid "The progress fills from top to bottom." +msgstr "进度从上到下填充。" + +msgid "The progress fills from bottom to top." +msgstr "进度从下到上填充。" + msgid "The color of the text." msgstr "文本的颜色。" @@ -20424,9 +37744,51 @@ msgstr "进度的样式(即填充进度条的部分)。" msgid "3D projection (4x4 matrix)." msgstr "3D 投影(4×4 矩阵)。" +msgid "" +"Constructs a default-initialized [Projection] set to [constant IDENTITY]." +msgstr "构造默认初始化为 [constant IDENTITY] 的 [Projection]。" + msgid "Constructs a [Projection] as a copy of the given [Projection]." msgstr "构造给定 [Projection] 的副本。" +msgid "" +"The projection matrix's W vector (column 3). Equivalent to array index " +"[code]3[/code]." +msgstr "投影矩阵的 W 向量(第 3 列)。相当于数组索引 [code]3[/code]。" + +msgid "" +"The projection matrix's X vector (column 0). Equivalent to array index " +"[code]0[/code]." +msgstr "投影矩阵的 X 向量(第 0 列)。相当于数组索引 [code]0[/code]。" + +msgid "" +"The projection matrix's Y vector (column 1). Equivalent to array index " +"[code]1[/code]." +msgstr "投影矩阵的 Y 向量(第 1 列)。相当于数组索引 [code]1[/code]。" + +msgid "" +"The projection matrix's Z vector (column 2). Equivalent to array index " +"[code]2[/code]." +msgstr "投影矩阵的 Z 向量(第 2 列)。相当于数组索引 [code]2[/code]。" + +msgid "The index value of the projection's near clipping plane." +msgstr "该投影的近裁剪平面的索引值。" + +msgid "The index value of the projection's far clipping plane." +msgstr "该投影的远裁剪平面的索引值。" + +msgid "The index value of the projection's left clipping plane." +msgstr "该投影的左裁剪平面的索引值。" + +msgid "The index value of the projection's top clipping plane." +msgstr "该投影的上裁剪平面的索引值。" + +msgid "The index value of the projection's right clipping plane." +msgstr "该投影的右裁剪平面的索引值。" + +msgid "The index value of the projection bottom clipping plane." +msgstr "该投影的下裁剪平面的索引值。" + msgid "Contains global variables accessible from everywhere." msgstr "包含全局变量,可以从任何地方访问。" @@ -20520,8 +37882,8 @@ msgid "" "(preserving the aspect ratio) when the engine starts. If [code]false[/code], " "the engine will leave it at the default pixel size." msgstr "" -"如果为 [code]true[/code],引擎启动时会将启动图片缩放到整个窗口的大小(保持长" -"宽比)。如果为 [code]false[/code],引擎将保持其默认像素大小。" +"如果为 [code]true[/code],引擎启动时会将启动界面图像缩放到整个窗口的大小(保" +"持长宽比)。如果为 [code]false[/code],引擎将保持其默认像素大小。" msgid "" "Path to an image used as the boot splash. If left empty, the default Godot " @@ -20529,18 +37891,23 @@ msgid "" "[b]Note:[/b] Only effective if [member application/boot_splash/show_image] " "is [code]true[/code]." msgstr "" -"用作启动画面的图片的路径。留空时将使用默认的 Godot 引擎启动画面。\n" +"图像的路径,会作为启动画面使用。留空时将使用默认的 Godot 引擎启动画面。\n" "[b]注意:[/b]仅在 [member application/boot_splash/show_image] 为 [code]true[/" "code] 时有效。" msgid "" +"Minimum boot splash display time (in milliseconds). It is not recommended to " +"set too high values for this setting." +msgstr "启动画面的最小显示时间(单位为毫秒)。不建议设置为过高的值。" + +msgid "" "If [code]true[/code], displays the image specified in [member application/" "boot_splash/image] when the engine starts. If [code]false[/code], only " "displays the plain color specified in [member application/boot_splash/" "bg_color]." msgstr "" -"为 [code]true[/code] 时,将在引擎启动时显示 [member application/boot_splash/" -"image] 所指定的图片。为 [code]false[/code] 时,仅显示 [member application/" +"如果为 [code]true[/code],将在引擎启动时显示 [member application/boot_splash/" +"image] 所指定的图像。为 [code]false[/code] 时,仅显示 [member application/" "boot_splash/bg_color] 所指定的纯色。" msgid "" @@ -20548,8 +37915,8 @@ msgid "" "(recommended for high-resolution artwork). If [code]false[/code], uses " "nearest-neighbor interpolation (recommended for pixel art)." msgstr "" -"如果为 [code]true[/code],缩放图像时会应用线性过滤(推荐用于高分辨率图稿)。" -"如果为 [code]false[/code],则使用最近邻插值(推荐用于像素画)。" +"如果为 [code]true[/code],则在缩放图像时会应用线性过滤(推荐用于高分辨率图" +"稿)。如果为 [code]false[/code],则使用最近邻插值(推荐用于像素画)。" msgid "" "The project's description, displayed as a tooltip in the Project Manager " @@ -20562,6 +37929,14 @@ msgid "" msgstr "项目所使用的图标,在项目加载时设置。导出时也将尽可能使用此图标。" msgid "" +"Icon set in [code].icns[/code] format used on macOS to set the game's icon. " +"This is done automatically on start by calling [method DisplayServer." +"set_native_icon]." +msgstr "" +"设置 macOS 上游戏的图标,使用 [code].icns[/code] 图标集格式。启动时会通过调" +"用 [method DisplayServer.set_native_icon] 自动完成。" + +msgid "" "The project's name. It is used both by the Project Manager and by exporters. " "The project name can be translated by translating its value in localization " "files. The window title will be set to match the project name automatically " @@ -20582,6 +37957,13 @@ msgstr "" "html]《数据路径》[/url]。" msgid "" +"Translations of the project's name. This setting is used by OS tools to " +"translate application name on Android, iOS and macOS." +msgstr "" +"项目名称的翻译。操作系统工具会使用此设置来翻译 Android、iOS 和 macOS 上的应用" +"程序名称。" + +msgid "" "Specifies a file to override project settings. For example: [code]user://" "custom_settings.cfg[/code]. See \"Overriding\" in the [ProjectSettings] " "class description at the top for more information.\n" @@ -20594,6 +37976,14 @@ msgstr "" "取来覆盖项目设置。" msgid "" +"Icon set in [code].ico[/code] format used on Windows to set the game's icon. " +"This is done automatically on start by calling [method DisplayServer." +"set_native_icon]." +msgstr "" +"设置 Windows 上游戏的图标,使用 [code].ico[/code] 图标集格式。启动时会通过调" +"用 [method DisplayServer.set_native_icon] 自动完成。" + +msgid "" "If [code]true[/code], flushes the standard output stream every time a line " "is printed. This affects both terminal logging and file logging.\n" "When running a project, this setting must be enabled if you want logs to be " @@ -20730,8 +38120,8 @@ msgid "" "Enables [url=https://github.com/facebook/zstd/releases/tag/v1.3.2]long-" "distance matching[/url] in Zstandard." msgstr "" -"在 Zstandard 中启用[url=https://github.com/facebook/zstd/releases/tag/v1.3.2]" -"长距离匹配[/url] 。" +"启用 Zstandard 的[url=https://github.com/facebook/zstd/releases/tag/v1.3.2]长" +"距离匹配[/url]。" msgid "" "Largest size limit (in power of 2) allowed when compressing using long-" @@ -20745,6 +38135,21 @@ msgid "If [code]true[/code], logs all output to files." msgstr "如果为 [code]true[/code],将所有输出记录到文件中。" msgid "" +"Desktop override for [member debug/file_logging/enable_file_logging], as log " +"files are not readily accessible on mobile/Web platforms." +msgstr "" +"[member debug/file_logging/enable_file_logging] 在桌面平台的覆盖项,因为在移" +"动/Web 平台上不容易访问日志文件。" + +msgid "" +"Path at which to store log files for the project. Using a path under " +"[code]user://[/code] is recommended." +msgstr "项目日志的存储路径。建议使用 [code]user://[/code] 下的路径。" + +msgid "Specifies the maximum number of log files allowed (used for rotation)." +msgstr "指定允许的最大日志文件数量(用于轮换)。" + +msgid "" "If [code]true[/code], enables specific GDScript warnings (see [code]debug/" "gdscript/warnings/*[/code] settings). If [code]false[/code], disables all " "GDScript warnings." @@ -20802,6 +38207,45 @@ msgid "" "enabled in the Debug menu." msgstr "碰撞形状的颜色,当在调试菜单中启用“显示碰撞形状”时可见。" +msgid "" +"Rasterized size (pixel) used to render navigation agent path points when an " +"agent has debug enabled." +msgstr "栅格大小(像素),如果导航代理启用了调试,则会用于渲染该代理的路径点。" + +msgid "" +"Color to display enabled navigation mesh polygon edges, visible when " +"\"Visible Navigation\" is enabled in the Debug menu." +msgstr "" +"用于显示已启用导航网格多边形边缘的颜色,在“调试”菜单中启用“显示导航”时可见。" + +msgid "" +"Color to display disabled navigation mesh polygon edges, visible when " +"\"Visible Navigation\" is enabled in the Debug menu." +msgstr "" +"用于显示已禁用导航网格多边形边缘的颜色,在“调试”菜单中启用“显示导航”时可见。" + +msgid "" +"Color to display enabled navigation mesh polygon faces, visible when " +"\"Visible Navigation\" is enabled in the Debug menu." +msgstr "" +"用于显示已启用导航网格多边形面的颜色,在“调试”菜单中启用“显示导航”时可见。" + +msgid "" +"Color to display disabled navigation mesh polygon faces, visible when " +"\"Visible Navigation\" is enabled in the Debug menu." +msgstr "" +"用于显示已禁用导航网格多边形面的颜色,在“调试”菜单中启用“显示导航”时可见。" + +msgid "" +"Color to use to display navigation link connections, visible when \"Visible " +"Navigation\" is enabled in the Debug menu." +msgstr "导航链接连接的颜色,在调试菜单中启用“显示导航”时可见。" + +msgid "" +"Color to use to display disabled navigation link connections, visible when " +"\"Visible Navigation\" is enabled in the Debug menu." +msgstr "被禁用的导航链接连接的颜色,在调试菜单中启用“显示导航”时可见。" + msgid "Custom image for the mouse cursor (limited to 256×256)." msgstr "鼠标光标的自定义图像(最大 256×256)。" @@ -20812,6 +38256,24 @@ msgid "Position offset for tooltips, relative to the mouse cursor's hotspot." msgstr "工具提示相对于鼠标光标热点的位置偏移量。" msgid "" +"If [code]true[/code], allows HiDPI display on Windows, macOS, Android, iOS " +"and Web. If [code]false[/code], the platform's low-DPI fallback will be used " +"on HiDPI displays, which causes the window to be displayed in a blurry or " +"pixelated manner (and can cause various window management bugs). Therefore, " +"it is recommended to make your project scale to [url=$DOCS_URL/tutorials/" +"rendering/multiple_resolutions.html]multiple resolutions[/url] instead of " +"disabling this setting.\n" +"[b]Note:[/b] This setting has no effect on Linux as DPI-awareness fallbacks " +"are not supported there." +msgstr "" +"如果为 [code]true[/code] ,则允许在 Windows、macOS、Android、iOS 和 Web 上使" +"用 HiDPI 显示器。如果为 [code]false[/code] ,则在 HiDPI 显示器上将使用该平台" +"的低 DPI 回退,这样会导致窗口模糊或像素化的方式显示(并且可能导致各种窗口管理" +"问题)。因此,建议你让项目支持[url=$DOCS_URL/tutorials/rendering/" +"multiple_resolutions.html]多个分辨率[/url],而不是禁用此设置。\n" +"[b]注意:[/b]这个设置在 Linux 上无效,因为 Linux 不支持 DPI 感知回退。" + +msgid "" "If [code]true[/code], keeps the screen on (even in case of inactivity), so " "the screensaver does not take over. Works on desktop and mobile platforms." msgstr "" @@ -20819,6 +38281,20 @@ msgstr "" "护程序不会接管。适用于桌面和移动平台。" msgid "" +"The default screen orientation to use on mobile devices. See [enum " +"DisplayServer.ScreenOrientation] for possible values.\n" +"[b]Note:[/b] When set to a portrait orientation, this project setting does " +"not flip the project resolution's width and height automatically. Instead, " +"you have to set [member display/window/size/viewport_width] and [member " +"display/window/size/viewport_height] accordingly." +msgstr "" +"在移动设备上使用的默认屏幕朝向。可能的取值见 [enum DisplayServer." +"ScreenOrientation]。\n" +"[b]注意:[/b]设为竖屏时,该项目设置不会自动翻转项目分辨率的宽度和高度。你必须" +"设置与之相对应的 [member display/window/size/viewport_width] 和 [member " +"display/window/size/viewport_height]。" + +msgid "" "If [code]true[/code], the home indicator is hidden automatically. This only " "affects iOS devices without a physical home button." msgstr "" @@ -20826,6 +38302,69 @@ msgstr "" "iOS 设备。" msgid "" +"If [code]true[/code], allows per-pixel transparency for the window " +"background. This affects performance, so leave it on [code]false[/code] " +"unless you need it. See also [member display/window/size/transparent] and " +"[member rendering/viewport/transparent_background]." +msgstr "" +"如果为 [code]true[/code],则允许窗口背景的逐像素透明度。这样会影响性能,因此" +"除非需要,否则请将其保留为 [code]false[/code]。另见 [member display/window/" +"size/transparent] 和 [member rendering/viewport/transparent_background]。" + +msgid "" +"Forces the main window to be always on top.\n" +"[b]Note:[/b] This setting is ignored on iOS, Android, and Web." +msgstr "" +"强制主窗口始终置顶。\n" +"[b]注意:[/b]该设置在 iOS、Android 和 Web 上被忽略。" + +msgid "" +"Forces the main window to be borderless.\n" +"[b]Note:[/b] This setting is ignored on iOS, Android, and Web." +msgstr "" +"强制主窗口无边框。\n" +"[b]注意:[/b]该设置在 iOS、Android 和 Web 上被忽略。" + +msgid "" +"Main window content is expanded to the full size of the window. Unlike a " +"borderless window, the frame is left intact and can be used to resize the " +"window, and the title bar is transparent, but has minimize/maximize/close " +"buttons.\n" +"[b]Note:[/b] This setting is implemented only on macOS." +msgstr "" +"主窗口的内容会扩展到整个窗口的大小。与无边框窗口不同的是,窗口的框架仍是完整" +"的,可以用来调整窗口的大小,标题栏是透明的,但有最小/最大/关闭按钮。\n" +"[b]注意:[/b]该设置只在 macOS 上实现。" + +msgid "" +"Main window initial position (in virtual desktop coordinates), this settings " +"is used only if [member display/window/size/initial_position_type] is set to " +"\"Absolute\" ([code]0[/code])." +msgstr "" +"主窗口的初始位置(使用虚拟桌面坐标),该设置仅在 [member display/window/size/" +"initial_position_type] 设置为“Absolute”([code]2[/code] )时使用。" + +msgid "" +"Main window initial screen, this settings is used only if [member display/" +"window/size/initial_position_type] is set to \"Other Screen " +"Center\" ([code]2[/code])." +msgstr "" +"主窗口的初始屏幕,该设置仅在 [member display/window/size/" +"initial_position_type] 设置为“Other Screen Center”([code]2[/code] )时使用。" + +msgid "" +"Main window mode. See [enum DisplayServer.WindowMode] for possible values " +"and how each mode behaves." +msgstr "" +"主窗口的模式。可能的取值以及各个模式的行为请参阅 [enum DisplayServer." +"WindowMode]。" + +msgid "" +"Main window can't be focused. No-focus window will ignore all input, except " +"mouse clicks." +msgstr "主窗口无法成为焦点。无焦点的窗口将忽略除鼠标点击之外的所有输入。" + +msgid "" "Allows the window to be resizable by default.\n" "[b]Note:[/b] This setting is ignored on iOS." msgstr "" @@ -20833,6 +38372,146 @@ msgstr "" "[b]注意:[/b]这个设置在 iOS 上将忽略。" 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 " +"[code]canvas_items[/code] or [code]viewport[/code] stretch modes. See also " +"[member display/window/size/viewport_width], [member display/window/size/" +"window_width_override] and [member display/window/size/" +"window_height_override]." +msgstr "" +"设置游戏的主视口高度。在桌面平台上,这也是初始窗口高度,在 2D 编辑器中使用靛" +"蓝色的矩形表示。使用 [code]canvas_items[/code] 和 [code]viewport[/code] 拉伸" +"模式时也会以此作为参考。另见 [member display/window/size/viewport_width]、" +"[member display/window/size/window_width_override] 和 [member display/window/" +"size/window_height_override]。" + +msgid "" +"Sets the game's main viewport width. On desktop platforms, this is also the " +"initial window width, represented by an indigo-colored rectangle in the 2D " +"editor. Stretch mode settings also use this as a reference when using the " +"[code]canvas_items[/code] or [code]viewport[/code] stretch modes. See also " +"[member display/window/size/viewport_height], [member display/window/size/" +"window_width_override] and [member display/window/size/" +"window_height_override]." +msgstr "" +"设置游戏的主视口宽度。在桌面平台上,这也是初始窗口宽度,在 2D 编辑器中使用靛" +"蓝色的矩形表示。使用 [code]canvas_items[/code] 和 [code]viewport[/code] 拉伸" +"模式时也会以此作为参考。另见 [member display/window/size/viewport_height]、" +"[member display/window/size/window_width_override] 和 [member display/window/" +"size/window_height_override]。" + +msgid "" +"On desktop platforms, overrides the game's initial window height. See also " +"[member display/window/size/window_width_override], [member display/window/" +"size/viewport_width] and [member display/window/size/viewport_height].\n" +"[b]Note:[/b] By default, or when set to [code]0[/code], the initial window " +"height is the [member display/window/size/viewport_height]. This setting is " +"ignored on iOS, Android, and Web." +msgstr "" +"在桌面平台上,覆盖游戏的初始窗口高度。另见 [member display/window/size/" +"window_width_override]、[member display/window/size/viewport_width] 和 " +"[member display/window/size/viewport_height]。\n" +"[b]注意:[/b]默认情况下,或者当设置为[code]0[/code] 时,初始窗口高度为 " +"[member display/window/size/viewport_height]。在 iOS、Android 和 Web 上会忽略" +"这个设置。" + +msgid "" +"On desktop platforms, overrides the game's initial window width. See also " +"[member display/window/size/window_height_override], [member display/window/" +"size/viewport_width] and [member display/window/size/viewport_height].\n" +"[b]Note:[/b] By default, or when set to [code]0[/code], the initial window " +"width is the viewport [member display/window/size/viewport_width]. This " +"setting is ignored on iOS, Android, and Web." +msgstr "" +"在桌面平台上,覆盖游戏的初始窗口宽度。另见 [member display/window/size/" +"window_height_override]、[member display/window/size/viewport_width] 和 " +"[member display/window/size/viewport_height]。\n" +"[b]注意:[/b]默认情况下,或者当设置为[code]0[/code] 时,初始窗口宽度为 " +"[member display/window/size/viewport_width]。在 iOS、Android 和 Web 上会忽略" +"这个设置。" + +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 " +"render, encode and save the video at a framerate higher than the monitor's " +"refresh rate.\n" +"[b]Note:[/b] [member editor/movie_writer/disable_vsync] has no effect if the " +"operating system or graphics driver forces V-Sync with no way for " +"applications to disable it." +msgstr "" +"如果为 [code]true[/code],则在写入电影时会请求禁用垂直同步(类似于将 [member " +"display/window/vsync/vsync_mode] 设置为 [b]Disabled[/b])。如果硬件的渲染速度" +"足够快,那么就可以加速视频的写入,以高于显示器刷新率的帧速率渲染、编码和保存" +"视频。\n" +"[b]注意:[/b]如果操作系统或图形驱动程序强制垂直同步,则应用程序无法禁用," +"[member editor/movie_writer/disable_vsync] 无效。" + +msgid "" +"The number of frames per second to record in the video when writing a movie. " +"Simulation speed will adjust to always match the specified framerate, which " +"means the engine will appear to run slower at higher [member editor/" +"movie_writer/fps] values. Certain FPS values will require you to adjust " +"[member editor/movie_writer/mix_rate] to prevent audio from desynchronizing " +"over time.\n" +"This can be specified manually on the command line using the [code]--fixed-" +"fps <fps>[/code] [url=$DOCS_URL/tutorials/editor/command_line_tutorial." +"html]command line argument[/url]." +msgstr "" +"输出电影时,在视频中每秒记录的帧数。仿真速度将调整为始终与指定的帧数相匹配," +"这意味着引擎在较高的 [member editor/movie_writer/fps] 值下会显得运行较慢。部" +"分 FPS 值将需要你调整 [member editor/movie_writer/mix_rate],防止音频随着时间" +"的推移而出现不同步。\n" +"可以在命令行中使用 [code]--fixed-fps <fps>[/code] [url=$DOCS_URL/tutorials/" +"editor/command_line_tutorial.html]命令行参数[/url]手动指定。" + +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 " +"sizes. Recommended [code]quality[/code] values are between [code]0.75[/code] " +"and [code]0.9[/code]. Even at quality [code]1.0[/code], JPEG compression " +"remains lossy.\n" +"[b]Note:[/b] This does not affect the audio quality or writing PNG image " +"sequences." +msgstr "" +"JPEG 质量,将视频写入 AVI 文件时使用,介于 [code]0.01[/code] 和 [code]1.0[/" +"code](含)之间。[code]quality[/code] 值越高,输出效果越好看,但文件大小也越" +"大。[code]quality[/code] 的推荐值为 [code]0.75[/code] 和 [code]0.9[/code] 之" +"间。即使质量为 [code]1.0[/code],JPEG 压缩仍然有损。\n" +"[b]注意:[/b]这不会影响音频质量和 PNG 图像序列的写入。" + +msgid "" +"The speaker mode to use in the recorded audio when writing a movie. See " +"[enum AudioServer.SpeakerMode] for possible values." +msgstr "" +"保存电影时,录制的音频中所使用的扬声器模式。可能的值见 [enum AudioServer." +"SpeakerMode]。" + +msgid "" +"The format of the default signal callback name (in the Signal Connection " +"Dialog). The following substitutions are available: [code]{NodeName}[/code], " +"[code]{nodeName}[/code], [code]{node_name}[/code], [code]{SignalName}[/" +"code], [code]{signalName}[/code], and [code]{signal_name}[/code]." +msgstr "" +"信号回调名称的默认格式(在信号连接对话框中使用)。可以使用以下替换:[code]" +"{NodeName}[/code]、[code]{nodeName}[/code]、[code]{node_name}[/code]、[code]" +"{SignalName}[/code]、[code]{signalName}[/code]、[code]{signal_name}[/code]。" + +msgid "" +"The format of the default signal callback name when a signal connects to the " +"same node that emits it (in the Signal Connection Dialog). The following " +"substitutions are available: [code]{NodeName}[/code], [code]{nodeName}[/" +"code], [code]{node_name}[/code], [code]{SignalName}[/code], [code]" +"{signalName}[/code], and [code]{signal_name}[/code]." +msgstr "" +"信号回调名称的默认格式,用于连接到与发出信号相同节点的情况(在信号连接对话框" +"中使用)。可以使用以下替换:[code]{NodeName}[/code]、[code]{nodeName}[/" +"code]、[code]{node_name}[/code]、[code]{SignalName}[/code]、[code]" +"{signalName}[/code]、[code]{signal_name}[/code]。" + +msgid "" "When creating node names automatically, set the type of casing in this " "project. This is mostly an editor setting." msgstr "" @@ -20886,6 +38565,29 @@ msgstr "" "搜索。" msgid "" +"If [code]true[/code], Blender 3D scene files with the [code].blend[/code] " +"extension will be imported by converting them to glTF 2.0.\n" +"This requires configuring a path to a Blender executable in the editor " +"settings at [code]filesystem/import/blender/blender3_path[/code]. Blender " +"3.0 or later is required." +msgstr "" +"如果为 [code]true[/code],扩展名为 [code].blend[/code] 的 Blender 3D 场景文件" +"会通过转换为 glTF 2.0 来导入。\n" +"需要在编辑器设置 [code]filesystem/import/blender/blender3_path[/code] 中,配" +"置 Blender 可执行文件的路径。需要 Blender 3.0 或更高版本。" + +msgid "" +"If [code]true[/code], Autodesk FBX 3D scene files with the [code].fbx[/code] " +"extension will be imported by converting them to glTF 2.0.\n" +"This requires configuring a path to a FBX2glTF executable in the editor " +"settings at [code]filesystem/import/fbx/fbx2gltf_path[/code]." +msgstr "" +"如果为 [code]true[/code],扩展名为 [code].fbx[/code] 的 Autodesk FBX 3D 场景" +"文件会通过转换为 glTF 2.0 来导入。\n" +"需要在编辑器设置 [code]filesystem/import/blender/fbx2gltf_path[/code] 中,配" +"置 FBX2glTF 可执行文件的路径。" + +msgid "" "Default value for [member ScrollContainer.scroll_deadzone], which will be " "used for all [ScrollContainer]s unless overridden." msgstr "" @@ -20893,9 +38595,36 @@ msgstr "" "非fug。" msgid "" +"Path to a custom [Theme] resource file to use for the project ([code].theme[/" +"code] or generic [code].tres[/code]/[code].res[/code] extension)." +msgstr "" +"[Theme] 资源文件的路径,用于自定义项目主题(扩展名为 [code].theme[/code] 或通" +"用的 [code].tres[/code]/[code].res[/code])。" + +msgid "" "Path to a custom [Font] resource to use as default for all GUI elements of " "the project." -msgstr "自定义 [Font] 资源的路径,用于项目的所有 GUI 元素的默认字体。" +msgstr "自定义 [Font] 资源的路径,用作项目中所有 GUI 元素的默认字体。" + +msgid "Default font hinting mode. See [member FontFile.hinting]." +msgstr "默认字体微调模式。见 [member FontFile.hinting]。" + +msgid "" +"The default scale factor for [Control]s, when not overridden by a [Theme].\n" +"[b]Note:[/b] This property is only read when the project starts. To change " +"the default scale at runtime, set [member ThemeDB.fallback_base_scale] " +"instead." +msgstr "" +"[Theme] 中没有覆盖缩放系数时,[Control] 的默认缩放系数。\n" +"[b]注意:[/b]这个属性只在项目启动时读取。要在运行时改变默认缩放,请改为设置 " +"[member ThemeDB.fallback_base_scale]。" + +msgid "" +"When [member BaseButton.shortcut_feedback] is enabled, this is the time the " +"[BaseButton] will remain highlighted after a shortcut." +msgstr "" +"启用 [member BaseButton.shortcut_feedback] 时,按下快捷键后 [BaseButton] 保持" +"高亮的时间。" msgid "" "Timer setting for incremental search in [Tree], [ItemList], etc. controls " @@ -21068,9 +38797,6 @@ msgid "" "mouse." msgstr "如果为 [code]true[/code],则在点击或拖动鼠标时发送触摸输入事件。" -msgid "Default delay for touch events. This only affects iOS devices." -msgstr "触摸事件的默认延迟(单位为秒)。仅影响 iOS 设备。" - msgid "" "The locale to fall back to if a translation isn't available in a given " "language. If left empty, [code]en[/code] (English) will be used." @@ -21083,6 +38809,12 @@ msgid "" "editor." msgstr "如果不为空,那么当从编辑器中运行项目时,将使用该区域设置。" +msgid "Prefix that will be prepended to the pseudolocalized string." +msgstr "将被前置到伪本地化字符串的前缀。" + +msgid "Suffix that will be appended to the pseudolocalized string." +msgstr "将被追加到伪本地化字符串的后缀。" + msgid "" "Optional name for the 2D navigation layer 1. If left empty, the layer will " "display as \"Layer 1\"." @@ -21244,6 +38976,266 @@ msgid "" msgstr "2D 导航层 9 的可选名称。留空则会显示为“层 9”。" msgid "" +"Optional name for the 2D physics layer 1. If left empty, the layer will " +"display as \"Layer 1\"." +msgstr "2D 物理层 1 的可选名称。留空则会显示为“层 1”。" + +msgid "" +"Optional name for the 2D physics layer 10. If left empty, the layer will " +"display as \"Layer 10\"." +msgstr "2D 物理层 10 的可选名称。留空则会显示为“层 10”。" + +msgid "" +"Optional name for the 2D physics layer 11. If left empty, the layer will " +"display as \"Layer 11\"." +msgstr "2D 物理层 11 的可选名称。留空则会显示为“层 11”。" + +msgid "" +"Optional name for the 2D physics layer 12. If left empty, the layer will " +"display as \"Layer 12\"." +msgstr "2D 物理层 12 的可选名称。留空则会显示为“层 12”。" + +msgid "" +"Optional name for the 2D physics layer 13. If left empty, the layer will " +"display as \"Layer 13\"." +msgstr "2D 物理层 13 的可选名称。留空则会显示为“层 13”。" + +msgid "" +"Optional name for the 2D physics layer 14. If left empty, the layer will " +"display as \"Layer 14\"." +msgstr "2D 物理层 14 的可选名称。留空则会显示为“层 14”。" + +msgid "" +"Optional name for the 2D physics layer 15. If left empty, the layer will " +"display as \"Layer 15\"." +msgstr "2D 物理层 15 的可选名称。留空则会显示为“层 15”。" + +msgid "" +"Optional name for the 2D physics layer 16. If left empty, the layer will " +"display as \"Layer 16\"." +msgstr "2D 物理层 16 的可选名称。留空则会显示为“层 16”。" + +msgid "" +"Optional name for the 2D physics layer 17. If left empty, the layer will " +"display as \"Layer 17\"." +msgstr "2D 物理层 17 的可选名称。留空则会显示为“层 17”。" + +msgid "" +"Optional name for the 2D physics layer 18. If left empty, the layer will " +"display as \"Layer 18\"." +msgstr "2D 物理层 18 的可选名称。留空则会显示为“层 18”。" + +msgid "" +"Optional name for the 2D physics layer 19. If left empty, the layer will " +"display as \"Layer 19\"." +msgstr "2D 物理层 19 的可选名称。留空则会显示为“层 19”。" + +msgid "" +"Optional name for the 2D physics layer 2. If left empty, the layer will " +"display as \"Layer 2\"." +msgstr "2D 物理层 2 的可选名称。留空则会显示为“层 2”。" + +msgid "" +"Optional name for the 2D physics layer 20. If left empty, the layer will " +"display as \"Layer 20\"." +msgstr "2D 物理层 20 的可选名称。留空则会显示为“层 20”。" + +msgid "" +"Optional name for the 2D physics layer 21. If left empty, the layer will " +"display as \"Layer 21\"." +msgstr "2D 物理层 21 的可选名称。留空则会显示为“层 21”。" + +msgid "" +"Optional name for the 2D physics layer 22. If left empty, the layer will " +"display as \"Layer 22\"." +msgstr "2D 物理层 22 的可选名称。留空则会显示为“层 22”。" + +msgid "" +"Optional name for the 2D physics layer 23. If left empty, the layer will " +"display as \"Layer 23\"." +msgstr "2D 物理层 23 的可选名称。留空则会显示为“层 23”。" + +msgid "" +"Optional name for the 2D physics layer 24. If left empty, the layer will " +"display as \"Layer 24\"." +msgstr "2D 物理层 24 的可选名称。留空则会显示为“层 24”。" + +msgid "" +"Optional name for the 2D physics layer 25. If left empty, the layer will " +"display as \"Layer 25\"." +msgstr "2D 物理层 25 的可选名称。留空则会显示为“层 25”。" + +msgid "" +"Optional name for the 2D physics layer 26. If left empty, the layer will " +"display as \"Layer 26\"." +msgstr "2D 物理层 26 的可选名称。留空则会显示为“层 26”。" + +msgid "" +"Optional name for the 2D physics layer 27. If left empty, the layer will " +"display as \"Layer 27\"." +msgstr "2D 物理层 27 的可选名称。留空则会显示为“层 27”。" + +msgid "" +"Optional name for the 2D physics layer 28. If left empty, the layer will " +"display as \"Layer 28\"." +msgstr "2D 物理层 28 的可选名称。留空则会显示为“层 28”。" + +msgid "" +"Optional name for the 2D physics layer 29. If left empty, the layer will " +"display as \"Layer 29\"." +msgstr "2D 物理层 29 的可选名称。留空则会显示为“层 29”。" + +msgid "" +"Optional name for the 2D physics layer 3. If left empty, the layer will " +"display as \"Layer 3\"." +msgstr "2D 物理层 3 的可选名称。留空则会显示为“层 3”。" + +msgid "" +"Optional name for the 2D physics layer 30. If left empty, the layer will " +"display as \"Layer 30\"." +msgstr "2D 物理层 30 的可选名称。留空则会显示为“层 30”。" + +msgid "" +"Optional name for the 2D physics layer 31. If left empty, the layer will " +"display as \"Layer 31\"." +msgstr "2D 物理层 31 的可选名称。留空则会显示为“层 31”。" + +msgid "" +"Optional name for the 2D physics layer 32. If left empty, the layer will " +"display as \"Layer 32\"." +msgstr "2D 物理层 32 的可选名称。留空则会显示为“层 32”。" + +msgid "" +"Optional name for the 2D physics layer 4. If left empty, the layer will " +"display as \"Layer 4\"." +msgstr "2D 物理层 4 的可选名称。留空则会显示为“层 4”。" + +msgid "" +"Optional name for the 2D physics layer 5. If left empty, the layer will " +"display as \"Layer 5\"." +msgstr "2D 物理层 5 的可选名称。留空则会显示为“层 5”。" + +msgid "" +"Optional name for the 2D physics layer 6. If left empty, the layer will " +"display as \"Layer 6\"." +msgstr "2D 物理层 6 的可选名称。留空则会显示为“层 6”。" + +msgid "" +"Optional name for the 2D physics layer 7. If left empty, the layer will " +"display as \"Layer 7\"." +msgstr "2D 物理层 7 的可选名称。留空则会显示为“层 7”。" + +msgid "" +"Optional name for the 2D physics layer 8. If left empty, the layer will " +"display as \"Layer 8\"." +msgstr "2D 物理层 8 的可选名称。留空则会显示为“层 8”。" + +msgid "" +"Optional name for the 2D physics layer 9. If left empty, the layer will " +"display as \"Layer 9\"." +msgstr "2D 物理层 9 的可选名称。留空则会显示为“层 9”。" + +msgid "" +"Optional name for the 2D render layer 1. If left empty, the layer will " +"display as \"Layer 1\"." +msgstr "2D 渲染层 1 的可选名称。留空则会显示为“层 1”。" + +msgid "" +"Optional name for the 2D render layer 10. If left empty, the layer will " +"display as \"Layer 10\"." +msgstr "2D 渲染层 10 的可选名称。留空则会显示为“层 10”。" + +msgid "" +"Optional name for the 2D render layer 11. If left empty, the layer will " +"display as \"Layer 11\"." +msgstr "2D 渲染层 11 的可选名称。留空则会显示为“层 11”。" + +msgid "" +"Optional name for the 2D render layer 12. If left empty, the layer will " +"display as \"Layer 12\"." +msgstr "2D 渲染层 12 的可选名称。留空则会显示为“层 12”。" + +msgid "" +"Optional name for the 2D render layer 13. If left empty, the layer will " +"display as \"Layer 13\"." +msgstr "2D 渲染层 13 的可选名称。留空则会显示为“层 13”。" + +msgid "" +"Optional name for the 2D render layer 14. If left empty, the layer will " +"display as \"Layer 14\"." +msgstr "2D 渲染层 14 的可选名称。留空则会显示为“层 14”。" + +msgid "" +"Optional name for the 2D render layer 15. If left empty, the layer will " +"display as \"Layer 15\"." +msgstr "2D 渲染层 15 的可选名称。留空则会显示为“层 15”。" + +msgid "" +"Optional name for the 2D render layer 16. If left empty, the layer will " +"display as \"Layer 16\"." +msgstr "2D 渲染层 16 的可选名称。留空则会显示为“层 16”。" + +msgid "" +"Optional name for the 2D render layer 17. If left empty, the layer will " +"display as \"Layer 17\"." +msgstr "2D 渲染层 17 的可选名称。留空则会显示为“层 17”。" + +msgid "" +"Optional name for the 2D render layer 18. If left empty, the layer will " +"display as \"Layer 18\"." +msgstr "2D 渲染层 18 的可选名称。留空则会显示为“层 18”。" + +msgid "" +"Optional name for the 2D render layer 19. If left empty, the layer will " +"display as \"Layer 19\"." +msgstr "2D 渲染层 19 的可选名称。留空则会显示为“层 19”。" + +msgid "" +"Optional name for the 2D render layer 2. If left empty, the layer will " +"display as \"Layer 2\"." +msgstr "2D 渲染层 2 的可选名称。留空则会显示为“层 2”。" + +msgid "" +"Optional name for the 2D render layer 20. If left empty, the layer will " +"display as \"Layer 20\"." +msgstr "2D 渲染层 20 的可选名称。留空则会显示为“层 20”。" + +msgid "" +"Optional name for the 2D render layer 3. If left empty, the layer will " +"display as \"Layer 3\"." +msgstr "2D 渲染层 3 的可选名称。留空则会显示为“层 3”。" + +msgid "" +"Optional name for the 2D render layer 4. If left empty, the layer will " +"display as \"Layer 4\"." +msgstr "2D 渲染层 4 的可选名称。留空则会显示为“层 4”。" + +msgid "" +"Optional name for the 2D render layer 5. If left empty, the layer will " +"display as \"Layer 5\"." +msgstr "2D 渲染层 5 的可选名称。留空则会显示为“层 5”。" + +msgid "" +"Optional name for the 2D render layer 6. If left empty, the layer will " +"display as \"Layer 6\"." +msgstr "2D 渲染层 6 的可选名称。留空则会显示为“层 6”。" + +msgid "" +"Optional name for the 2D render layer 7. If left empty, the layer will " +"display as \"Layer 7\"." +msgstr "2D 渲染层 7 的可选名称。留空则会显示为“层 7”。" + +msgid "" +"Optional name for the 2D render layer 8. If left empty, the layer will " +"display as \"Layer 8\"." +msgstr "2D 渲染层 8 的可选名称。留空则会显示为“层 8”。" + +msgid "" +"Optional name for the 2D render layer 9. If left empty, the layer will " +"display as \"Layer 9\"." +msgstr "2D 渲染层 9 的可选名称。留空则会显示为“层 9”。" + +msgid "" "Optional name for the 3D navigation layer 1. If left empty, the layer will " "display as \"Layer 1\"." msgstr "3D 导航层 1 的可选名称。留空则会显示为“层 1”。" @@ -21404,6 +39396,261 @@ msgid "" msgstr "3D 导航层 9 的可选名称。留空则会显示为“层 9”。" msgid "" +"Optional name for the 3D physics layer 1. If left empty, the layer will " +"display as \"Layer 1\"." +msgstr "3D 物理层 1 的可选名称。留空则会显示为“层 1”。" + +msgid "" +"Optional name for the 3D physics layer 10. If left empty, the layer will " +"display as \"Layer 10\"." +msgstr "3D 物理层 10 的可选名称。留空则会显示为“层 10”。" + +msgid "" +"Optional name for the 3D physics layer 11. If left empty, the layer will " +"display as \"Layer 11\"." +msgstr "3D 物理层 11 的可选名称。留空则会显示为“层 11”。" + +msgid "" +"Optional name for the 3D physics layer 12. If left empty, the layer will " +"display as \"Layer 12\"." +msgstr "3D 物理层 12 的可选名称。留空则会显示为“层 12”。" + +msgid "" +"Optional name for the 3D physics layer 13. If left empty, the layer will " +"display as \"Layer 13\"." +msgstr "3D 物理层 13 的可选名称。留空则会显示为“层 13”。" + +msgid "" +"Optional name for the 3D physics layer 14. If left empty, the layer will " +"display as \"Layer 14\"." +msgstr "3D 物理层 14 的可选名称。留空则会显示为“层 14”。" + +msgid "" +"Optional name for the 3D physics layer 15. If left empty, the layer will " +"display as \"Layer 15\"." +msgstr "3D 物理层 15 的可选名称。留空则会显示为“层 15”。" + +msgid "" +"Optional name for the 3D physics layer 16. If left empty, the layer will " +"display as \"Layer 16\"." +msgstr "3D 物理层 16 的可选名称。留空则会显示为“层 16”。" + +msgid "" +"Optional name for the 3D physics layer 17. If left empty, the layer will " +"display as \"Layer 17\"." +msgstr "3D 物理层 17 的可选名称。留空则会显示为“层 17”。" + +msgid "" +"Optional name for the 3D physics layer 18. If left empty, the layer will " +"display as \"Layer 18\"." +msgstr "3D 物理层 18 的可选名称。留空则会显示为“层 18”。" + +msgid "" +"Optional name for the 3D physics layer 19. If left empty, the layer will " +"display as \"Layer 19\"." +msgstr "3D 物理层 19 的可选名称。留空则会显示为“层 19”。" + +msgid "" +"Optional name for the 3D physics layer 2. If left empty, the layer will " +"display as \"Layer 2\"." +msgstr "3D 物理层 2 的可选名称。留空则会显示为“层 2”。" + +msgid "" +"Optional name for the 3D physics layer 20. If left empty, the layer will " +"display as \"Layer 20\"." +msgstr "3D 物理层 20 的可选名称。留空则会显示为“层 20”。" + +msgid "" +"Optional name for the 3D physics layer 21. If left empty, the layer will " +"display as \"Layer 21\"." +msgstr "3D 物理层 21 的可选名称。留空则会显示为“层 21”。" + +msgid "" +"Optional name for the 3D physics layer 22. If left empty, the layer will " +"display as \"Layer 22\"." +msgstr "3D 物理层 22 的可选名称。留空则会显示为“层 22”。" + +msgid "" +"Optional name for the 3D physics layer 23. If left empty, the layer will " +"display as \"Layer 23\"." +msgstr "3D 物理层 23 的可选名称。留空则会显示为“层 23”。" + +msgid "" +"Optional name for the 3D physics layer 24. If left empty, the layer will " +"display as \"Layer 24\"." +msgstr "3D 物理层 24 的可选名称。留空则会显示为“层 24”。" + +msgid "" +"Optional name for the 3D physics layer 25. If left empty, the layer will " +"display as \"Layer 25\"." +msgstr "3D 物理层 25 的可选名称。留空则会显示为“层 25”。" + +msgid "" +"Optional name for the 3D physics layer 26. If left empty, the layer will " +"display as \"Layer 26\"." +msgstr "3D 物理层 26 的可选名称。留空则会显示为“层 26”。" + +msgid "" +"Optional name for the 3D physics layer 27. If left empty, the layer will " +"display as \"Layer 27\"." +msgstr "3D 物理层 27 的可选名称。留空则会显示为“层 27”。" + +msgid "" +"Optional name for the 3D physics layer 28. If left empty, the layer will " +"display as \"Layer 28\"." +msgstr "3D 物理层 28 的可选名称。留空则会显示为“层 28”。" + +msgid "" +"Optional name for the 3D physics layer 29. If left empty, the layer will " +"display as \"Layer 29\"." +msgstr "3D 物理层 29 的可选名称。留空则会显示为“层 29”。" + +msgid "" +"Optional name for the 3D physics layer 3. If left empty, the layer will " +"display as \"Layer 3\"." +msgstr "3D 物理层 3 的可选名称。留空则会显示为“层 3”。" + +msgid "" +"Optional name for the 3D physics layer 30. If left empty, the layer will " +"display as \"Layer 30\"." +msgstr "3D 物理层 30 的可选名称。留空则会显示为“层 30”。" + +msgid "" +"Optional name for the 3D physics layer 31. If left empty, the layer will " +"display as \"Layer 31\"." +msgstr "3D 物理层 31 的可选名称。留空则会显示为“层 31”。" + +msgid "" +"Optional name for the 3D physics layer 32. If left empty, the layer will " +"display as \"Layer 32\"." +msgstr "3D 物理层 32 的可选名称。留空则会显示为“层 32”。" + +msgid "" +"Optional name for the 3D physics layer 4. If left empty, the layer will " +"display as \"Layer 4\"." +msgstr "3D 物理层 4 的可选名称。留空则会显示为“层 4”。" + +msgid "" +"Optional name for the 3D physics layer 5. If left empty, the layer will " +"display as \"Layer 5\"." +msgstr "3D 物理层 5 的可选名称。留空则会显示为“层 5”。" + +msgid "" +"Optional name for the 3D physics layer 6. If left empty, the layer will " +"display as \"Layer 6\"." +msgstr "3D 物理层 6 的可选名称。留空则会显示为“层 6”。" + +msgid "" +"Optional name for the 3D physics layer 7. If left empty, the layer will " +"display as \"Layer 7\"." +msgstr "3D 物理层 7 的可选名称。留空则会显示为“层 7”。" + +msgid "" +"Optional name for the 3D physics layer 8. If left empty, the layer will " +"display as \"Layer 8\"." +msgstr "3D 物理层 8 的可选名称。留空则会显示为“层 8”。" + +msgid "" +"Optional name for the 3D physics layer 9. If left empty, the layer will " +"display as \"Layer 9\"." +msgstr "3D 物理层 9 的可选名称。留空则会显示为“层 9”。" + +msgid "" +"Optional name for the 3D render layer 1. If left empty, the layer will " +"display as \"Layer 1\"." +msgstr "3D 渲染层 1 的可选名称。留空则会显示为“层 1”。" + +msgid "" +"Optional name for the 3D render layer 10. If left empty, the layer will " +"display as \"Layer 10\"." +msgstr "3D 渲染层 10 的可选名称。留空则会显示为“层 10”。" + +msgid "" +"Optional name for the 3D render layer 11. If left empty, the layer will " +"display as \"Layer 11\"." +msgstr "3D 渲染层 11 的可选名称。留空则会显示为“层 11”。" + +msgid "" +"Optional name for the 3D render layer 12. If left empty, the layer will " +"display as \"Layer 12\"." +msgstr "3D 渲染层 12 的可选名称。留空则会显示为“层 12”。" + +msgid "" +"Optional name for the 3D render layer 13. If left empty, the layer will " +"display as \"Layer 13\"." +msgstr "3D 渲染层 13 的可选名称。留空则会显示为“层 13”。" + +msgid "" +"Optional name for the 3D render layer 15. If left empty, the layer will " +"display as \"Layer 15\"." +msgstr "3D 渲染层 15 的可选名称。留空则会显示为“层 15”。" + +msgid "" +"Optional name for the 3D render layer 16. If left empty, the layer will " +"display as \"Layer 16\"." +msgstr "3D 渲染层 16 的可选名称。留空则会显示为“层 16”。" + +msgid "" +"Optional name for the 3D render layer 17. If left empty, the layer will " +"display as \"Layer 17\"." +msgstr "3D 渲染层 17 的可选名称。留空则会显示为“层 17”。" + +msgid "" +"Optional name for the 3D render layer 18. If left empty, the layer will " +"display as \"Layer 18\"." +msgstr "3D 渲染层 18 的可选名称。留空则会显示为“层 18”。" + +msgid "" +"Optional name for the 3D render layer 19. If left empty, the layer will " +"display as \"Layer 19\"." +msgstr "3D 渲染层 19 的可选名称。留空则会显示为“层 19”。" + +msgid "" +"Optional name for the 3D render layer 2. If left empty, the layer will " +"display as \"Layer 2\"." +msgstr "3D 渲染层 2 的可选名称。留空则会显示为“层 2”。" + +msgid "" +"Optional name for the 3D render layer 20. If left empty, the layer will " +"display as \"Layer 20\"." +msgstr "3D 渲染层 20 的可选名称。留空则会显示为“层 20”。" + +msgid "" +"Optional name for the 3D render layer 3. If left empty, the layer will " +"display as \"Layer 3\"." +msgstr "3D 渲染层 3 的可选名称。留空则会显示为“层 3”。" + +msgid "" +"Optional name for the 3D render layer 4. If left empty, the layer will " +"display as \"Layer 4\"." +msgstr "3D 渲染层 4 的可选名称。留空则会显示为“层 4”。" + +msgid "" +"Optional name for the 3D render layer 5. If left empty, the layer will " +"display as \"Layer 5\"." +msgstr "3D 渲染层 5 的可选名称。留空则会显示为“层 5”。" + +msgid "" +"Optional name for the 3D render layer 6. If left empty, the layer will " +"display as \"Layer 6\"." +msgstr "3D 渲染层 6 的可选名称。留空则会显示为“层 6”。" + +msgid "" +"Optional name for the 3D render layer 7. If left empty, the layer will " +"display as \"Layer 7\"." +msgstr "3D 渲染层 7 的可选名称。留空则会显示为“层 7”。" + +msgid "" +"Optional name for the 3D render layer 8. If left empty, the layer will " +"display as \"Layer 8\"." +msgstr "3D 渲染层 8 的可选名称。留空则会显示为“层 8”。" + +msgid "" +"Optional name for the 3D render layer 9. If left empty, the layer will " +"display as \"Layer 9\"." +msgstr "3D 渲染层 9 的可选名称。留空则会显示为“层 9”。" + +msgid "" "Godot uses a message queue to defer some function calls. If you run out of " "space on it (you will see an error), you can increase the size here." msgstr "" @@ -21421,6 +39668,48 @@ msgstr "" "增加此数字。" msgid "" +"Default cell size for 2D navigation maps. See [method NavigationServer2D." +"map_set_cell_size]." +msgstr "" +"2D 导航地图的默认单元格大小。见 [method NavigationServer2D." +"map_set_cell_size]。" + +msgid "" +"Default edge connection margin for 2D navigation maps. See [method " +"NavigationServer2D.map_set_edge_connection_margin]." +msgstr "" +"2D 导航地图的默认边界链接边距。见 [method NavigationServer2D." +"map_set_edge_connection_margin]。" + +msgid "" +"Default link connection radius for 2D navigation maps. See [method " +"NavigationServer2D.map_set_link_connection_radius]." +msgstr "" +"2D 导航地图的默认链接连接半径。见 [method NavigationServer2D." +"map_set_link_connection_radius]。" + +msgid "" +"Default cell size for 3D navigation maps. See [method NavigationServer3D." +"map_set_cell_size]." +msgstr "" +"3D 导航地图的默认单元格大小。见 [method NavigationServer3D." +"map_set_cell_size]。" + +msgid "" +"Default edge connection margin for 3D navigation maps. See [method " +"NavigationServer3D.map_set_edge_connection_margin]." +msgstr "" +"3D 导航地图的默认边界链接边距。见 [method NavigationServer3D." +"map_set_edge_connection_margin]。" + +msgid "" +"Default link connection radius for 3D navigation maps. See [method " +"NavigationServer3D.map_set_link_connection_radius]." +msgstr "" +"3D 导航地图的默认链接连接半径。见 [method NavigationServer3D." +"map_set_link_connection_radius]。" + +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." @@ -21445,10 +39734,336 @@ msgstr "" msgid "Page size used by remote filesystem (in bytes)." msgstr "远程文件系统使用的页面大小(字节)。" +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" +"[codeblocks]\n" +"[gdscript]\n" +"# Set the default gravity strength to 980.\n" +"PhysicsServer2D.area_set_param(get_viewport().find_world_2d().space, " +"PhysicsServer2D.AREA_PARAM_GRAVITY, 980)\n" +"[/gdscript]\n" +"[csharp]\n" +"// Set the default gravity strength to 980.\n" +"PhysicsServer2D.AreaSetParam(GetViewport().FindWorld2D().Space, " +"PhysicsServer2D.AreaParameter.Gravity, 980);\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"2D 默认重力强度(单位为像素每平方秒)。\n" +"[b]注意:[/b]这个属性只在项目启动时读取。要在运行时改变默认重力,请使用以下代" +"码示例:\n" +"[codeblocks]\n" +"[gdscript]\n" +"# 将默认重力强度设置为 980。\n" +"PhysicsServer2D.area_set_param(get_viewport().find_world_2d().space, " +"PhysicsServer2D.AREA_PARAM_GRAVITY, 980)\n" +"[/gdscript]\n" +"[csharp]\n" +"// 将默认重力强度设置为 980。\n" +"PhysicsServer2D.AreaSetParam(GetViewport().FindWorld2D().Space, " +"PhysicsServer2D.AreaParameter.Gravity, 980);\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"The default gravity direction in 2D.\n" +"[b]Note:[/b] This property is only read when the project starts. To change " +"the default gravity vector at runtime, use the following code sample:\n" +"[codeblocks]\n" +"[gdscript]\n" +"# Set the default gravity direction to `Vector2(0, 1)`.\n" +"PhysicsServer2D.area_set_param(get_viewport().find_world_2d().space, " +"PhysicsServer2D.AREA_PARAM_GRAVITY_VECTOR, Vector2.DOWN)\n" +"[/gdscript]\n" +"[csharp]\n" +"// Set the default gravity direction to `Vector2(0, 1)`.\n" +"PhysicsServer2D.AreaSetParam(GetViewport().FindWorld2D().Space, " +"PhysicsServer2D.AreaParameter.GravityVector, Vector2.Down)\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"2D 默认重力方向。\n" +"[b]注意:[/b]这个属性只在项目启动时读取。要在运行时改变默认重力向量,请使用以" +"下代码示例:\n" +"[codeblocks]\n" +"[gdscript]\n" +"# 将默认整理方向设置为 `Vector2(0, 1)`。\n" +"PhysicsServer2D.area_set_param(get_viewport().find_world_2d().space, " +"PhysicsServer2D.AREA_PARAM_GRAVITY_VECTOR, Vector2.DOWN)\n" +"[/gdscript]\n" +"[csharp]\n" +"// 将默认整理方向设置为 `Vector2(0, 1)`。\n" +"PhysicsServer2D.AreaSetParam(GetViewport().FindWorld2D().Space, " +"PhysicsServer2D.AreaParameter.GravityVector, Vector2.Down)\n" +"[/csharp]\n" +"[/codeblocks]" + +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." +msgstr "" +"设置 2D 物理使用哪个物理引擎。\n" +"“DEFAULT”和“GodotPhysics2D”是相同的,因为目前尚未实现备选 2D 物理服务器。" + +msgid "" +"If [code]true[/code], the 2D physics server runs on a separate thread, " +"making better use of multi-core CPUs. If [code]false[/code], the 2D physics " +"server runs on the main thread. Running the physics server on a separate " +"thread can increase performance, but restricts API access to only physics " +"process." +msgstr "" +"如果为 [code]true[/code],则 2D 物理服务器会在单独的线程上运行,能够更好地利" +"用多核 CPU。如果为 [code]false[/code],则 2D 物理服务器会在主线程上运行。在单" +"独的线程上运行物理服务器能够提高性能,但会把对 API 的访问限制在物理处理中。" + +msgid "" +"Threshold angular velocity under which a 2D physics body will be considered " +"inactive. See [constant PhysicsServer2D." +"SPACE_PARAM_BODY_ANGULAR_VELOCITY_SLEEP_THRESHOLD]." +msgstr "" +"角速度的阈值,在该阈值以下的 2D 物理体将被视为不活动。见 [constant " +"PhysicsServer2D.SPACE_PARAM_BODY_ANGULAR_VELOCITY_SLEEP_THRESHOLD]。" + +msgid "" +"Threshold linear velocity under which a 2D physics body will be considered " +"inactive. See [constant PhysicsServer2D." +"SPACE_PARAM_BODY_LINEAR_VELOCITY_SLEEP_THRESHOLD]." +msgstr "" +"线速度的阈值,在该阈值以下的 2D 物理体将被视为不活动。见 [constant " +"PhysicsServer2D.SPACE_PARAM_BODY_LINEAR_VELOCITY_SLEEP_THRESHOLD]。" + +msgid "" +"Maximum distance a shape can penetrate another shape before it is considered " +"a collision. See [constant PhysicsServer2D." +"SPACE_PARAM_CONTACT_MAX_ALLOWED_PENETRATION]." +msgstr "" +"两个形状互相穿透的最大距离,超过该距离后将视为碰撞。见 [constant " +"PhysicsServer2D.SPACE_PARAM_CONTACT_MAX_ALLOWED_PENETRATION]。" + +msgid "" +"Maximum distance a shape can be from another before they are considered " +"separated and the contact is discarded. See [constant PhysicsServer2D." +"SPACE_PARAM_CONTACT_MAX_SEPARATION]." +msgstr "" +"两个形状间的最大距离,超过该距离后它们将被视为分离,接触将被弃置。见 " +"[constant PhysicsServer2D.SPACE_PARAM_CONTACT_MAX_SEPARATION]。" + +msgid "" +"Maximum distance a pair of bodies has to move before their collision status " +"has to be recalculated. See [constant PhysicsServer2D." +"SPACE_PARAM_CONTACT_RECYCLE_RADIUS]." +msgstr "" +"一对物体在其碰撞状态被重新计算之前的最大移动距离。见 [constant " +"PhysicsServer2D.SPACE_PARAM_CONTACT_RECYCLE_RADIUS]。" + +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 "" +"2D 物理物体进入睡眠状态之前,所需的不活动时间(以秒为单位)。请参阅 " +"[constant PhysicsServer2D.SPACE_PARAM_BODY_TIME_TO_SLEEP]。" + +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" +"[codeblocks]\n" +"[gdscript]\n" +"# Set the default gravity strength to 9.8.\n" +"PhysicsServer3D.area_set_param(get_viewport().find_world().space, " +"PhysicsServer3D.AREA_PARAM_GRAVITY, 9.8)\n" +"[/gdscript]\n" +"[csharp]\n" +"// Set the default gravity strength to 9.8.\n" +"PhysicsServer3D.AreaSetParam(GetViewport().FindWorld().Space, " +"PhysicsServer3D.AreaParameter.Gravity, 9.8);\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"3D 默认重力强度(单位为米每平方秒)。\n" +"[b]注意:[/b]这个属性只在项目启动时读取。要在运行时改变默认重力,请使用以下代" +"码示例:\n" +"[codeblocks]\n" +"[gdscript]\n" +"# 将默认重力强度设置为 980。\n" +"PhysicsServer3D.area_set_param(get_viewport().find_world().space, " +"PhysicsServer3D.AREA_PARAM_GRAVITY, 9.8)\n" +"[/gdscript]\n" +"[csharp]\n" +"// 将默认重力强度设置为 980。\n" +"PhysicsServer3D.AreaSetParam(GetViewport().FindWorld().Space, " +"PhysicsServer3D.AreaParameter.Gravity, 9.8);\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"The default gravity direction in 3D.\n" +"[b]Note:[/b] This property is only read when the project starts. To change " +"the default gravity vector at runtime, use the following code sample:\n" +"[codeblocks]\n" +"[gdscript]\n" +"# Set the default gravity direction to `Vector3(0, -1, 0)`.\n" +"PhysicsServer3D.area_set_param(get_viewport().find_world().get_space(), " +"PhysicsServer3D.AREA_PARAM_GRAVITY_VECTOR, Vector3.DOWN)\n" +"[/gdscript]\n" +"[csharp]\n" +"// Set the default gravity direction to `Vector3(0, -1, 0)`.\n" +"PhysicsServer3D.AreaSetParam(GetViewport().FindWorld().Space, " +"PhysicsServer3D.AreaParameter.GravityVector, Vector3.Down)\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"3D 默认重力方向。\n" +"[b]注意:[/b]这个属性只在项目启动时读取。要在运行时改变默认重力向量,请使用以" +"下代码示例:\n" +"[codeblocks]\n" +"[gdscript]\n" +"# 将默认整理方向设置为 `Vector3(0, -1, 0)`。\n" +"PhysicsServer3D.area_set_param(get_viewport().find_world().get_space(), " +"PhysicsServer3D.AREA_PARAM_GRAVITY_VECTOR, Vector3.DOWN)\n" +"[/gdscript]\n" +"[csharp]\n" +"// 将默认整理方向设置为 `Vector3(0, -1, 0)`。\n" +"PhysicsServer3D.AreaSetParam(GetViewport().FindWorld().Space, " +"PhysicsServer3D.AreaParameter.GravityVector, Vector3.Down)\n" +"[/csharp]\n" +"[/codeblocks]" + +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." +msgstr "" +"设置 3D 物理使用哪个物理引擎。\n" +"“DEFAULT”和“GodotPhysics3D”是相同的,因为目前尚未实现备选 3D 物理服务器。" + +msgid "" +"If [code]true[/code], the 3D physics server runs on a separate thread, " +"making better use of multi-core CPUs. If [code]false[/code], the 3D physics " +"server runs on the main thread. Running the physics server on a separate " +"thread can increase performance, but restricts API access to only physics " +"process." +msgstr "" +"如果为 [code]true[/code],则 3D 物理服务器会在单独的线程上运行,能够更好地利" +"用多核 CPU。如果为 [code]false[/code],则 3D 物理服务器会在主线程上运行。在单" +"独的线程上运行物理服务器能够提高性能,但会把对 API 的访问限制在物理处理中。" + +msgid "" +"Threshold angular velocity under which a 3D physics body will be considered " +"inactive. See [constant PhysicsServer3D." +"SPACE_PARAM_BODY_ANGULAR_VELOCITY_SLEEP_THRESHOLD]." +msgstr "" +"角速度的阈值,在该阈值以下的 3D 物理体将被视为不活动。见 [constant " +"PhysicsServer3D.SPACE_PARAM_BODY_ANGULAR_VELOCITY_SLEEP_THRESHOLD]。" + +msgid "" +"Threshold linear velocity under which a 3D physics body will be considered " +"inactive. See [constant PhysicsServer3D." +"SPACE_PARAM_BODY_LINEAR_VELOCITY_SLEEP_THRESHOLD]." +msgstr "" +"线速度的阈值,在该阈值以下的 3D 物理体将被视为不活动。见 [constant " +"PhysicsServer3D.SPACE_PARAM_BODY_LINEAR_VELOCITY_SLEEP_THRESHOLD]。" + +msgid "" +"Maximum distance a shape can penetrate another shape before it is considered " +"a collision. See [constant PhysicsServer3D." +"SPACE_PARAM_CONTACT_MAX_ALLOWED_PENETRATION]." +msgstr "" +"两个形状互相穿透的最大距离,超过该距离后将视为碰撞。见 [constant " +"PhysicsServer2D.SPACE_PARAM_CONTACT_MAX_ALLOWED_PENETRATION]。 [constant " +"PhysicsServer3D.SPACE_PARAM_CONTACT_MAX_ALLOWED_PENETRATION]。" + +msgid "" +"Maximum distance a shape can be from another before they are considered " +"separated and the contact is discarded. See [constant PhysicsServer3D." +"SPACE_PARAM_CONTACT_MAX_SEPARATION]." +msgstr "" +"两个形状间的最大距离,超过该距离后它们将被视为分离,接触将被弃置。见 " +"[constant PhysicsServer3D.SPACE_PARAM_CONTACT_MAX_SEPARATION]。" + +msgid "" +"Maximum distance a pair of bodies has to move before their collision status " +"has to be recalculated. See [constant PhysicsServer3D." +"SPACE_PARAM_CONTACT_RECYCLE_RADIUS]." +msgstr "" +"一对物体在其碰撞状态被重新计算之前的最大移动距离。见 [constant " +"PhysicsServer3D.SPACE_PARAM_CONTACT_RECYCLE_RADIUS]。" + +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 PhysicsServer3D.SPACE_PARAM_SOLVER_ITERATIONS]." +msgstr "" +"所有接触与约束的求解器迭代数。迭代次数越多,碰撞越准确。但是,大量的迭代会需" +"要更多的 CPU 能力,会降低性能。见 [constant PhysicsServer3D." +"SPACE_PARAM_SOLVER_ITERATIONS]。" + +msgid "" +"Time (in seconds) of inactivity before which a 3D physics body will put to " +"sleep. See [constant PhysicsServer3D.SPACE_PARAM_BODY_TIME_TO_SLEEP]." +msgstr "" +"3D 物理物体进入睡眠状态之前,所需的不活动时间(以秒为单位)。请参阅 " +"[constant PhysicsServer3D.SPACE_PARAM_BODY_TIME_TO_SLEEP]。" + msgid "Enables [member Viewport.physics_object_picking] on the root viewport." msgstr "在根视图上启用 [member Viewport.physics_object_picking]。" msgid "" +"Controls the maximum number of physics steps that can be simulated each " +"rendered frame. The default value is tuned to avoid \"spiral of death\" " +"situations where expensive physics simulations trigger more expensive " +"simulations indefinitely. However, the game will appear to slow down if the " +"rendering FPS is less than [code]1 / max_physics_steps_per_frame[/code] of " +"[member physics/common/physics_ticks_per_second]. This occurs even if " +"[code]delta[/code] is consistently used in physics calculations. To avoid " +"this, increase [member physics/common/max_physics_steps_per_frame] if you " +"have increased [member physics/common/physics_ticks_per_second] " +"significantly above its default value.\n" +"[b]Note:[/b] This property is only read when the project starts. To change " +"the maximum number of simulated physics steps per frame at runtime, set " +"[member Engine.max_physics_steps_per_frame] instead." +msgstr "" +"控制每个渲染帧所能模拟的最大物理步骤数。默认值经过调试,可以避免“死亡螺旋”," +"防止开销较大的物理仿真无限触发开销更大的仿真。不过如果渲染 FPS 小于 [member " +"physics/common/physics_ticks_per_second] 的 [code]1 / " +"max_physics_steps_per_frame[/code],游戏看上去会是降速的。即便在物理计算中始" +"终使用 [code]delta[/code] 也一样会发生。要避免这种情况,如果增大了 [member " +"physics/common/physics_ticks_per_second],而且远大于默认值,那么建议将 " +"[member physics/common/max_physics_steps_per_frame] 也调大。\n" +"[b]注意:[/b]这个属性只在项目启动时读取。要在运行时改变每帧模拟的最大物理步骤" +"数,请改为设置 [member Engine.max_physics_steps_per_frame]。" + +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" +"[b]Note:[/b] This property is only read when the project starts. To change " +"the physics FPS at runtime, set [member Engine.physics_ticks_per_second] " +"instead.\n" +"[b]Note:[/b] Only [member physics/common/max_physics_steps_per_frame] " +"physics ticks may be simulated per rendered frame at most. If more physics " +"ticks have to be simulated per rendered frame to keep up with rendering, the " +"project will appear to slow down (even if [code]delta[/code] is used " +"consistently in physics calculations). Therefore, it is recommended to also " +"increase [member physics/common/max_physics_steps_per_frame] if increasing " +"[member physics/common/physics_ticks_per_second] significantly above its " +"default value." +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] 也调大。" + +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." @@ -21457,11 +40072,197 @@ msgstr "" "多的抖动。" msgid "" +"Default background clear color. Overridable per [Viewport] using its " +"[Environment]. See [member Environment.background_mode] and [member " +"Environment.background_color] in particular. To change this default color " +"programmatically, use [method RenderingServer.set_default_clear_color]." +msgstr "" +"默认清屏颜色。[Viewport] 可使用其 [Environment] 进行覆盖。具体见 [member " +"Environment.background_mode] 和 [member Environment.background_color]。要通过" +"代码更改此默认颜色,请使用 [method RenderingServer.set_default_clear_color]。" + +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] " +"provides much higher quality than any of the other settings at the cost of " +"performance." +msgstr "" +"当 [member rendering/environment/ssao/quality] 被设置为 [code]Ultra[/code] 时" +"所使用的质量目标。值为 [code]0.0[/code] 时的质量和速度与 [code]Medium[/code] " +"相似,而值为 [code]1.0[/code] 时的质量比其他任何设置都要高得多,代价是牺牲性" +"能。" + +msgid "" +"Number of blur passes to use when computing screen-space ambient occlusion. " +"A higher number will result in a smoother look, but will be slower to " +"compute and will have less high-frequency detail." +msgstr "" +"模糊通道数,在计算屏幕空间环境光遮蔽时使用。数值越大,外观越平滑,但计算速度" +"会变慢,高频细节也会变少。" + +msgid "" +"Distance at which the screen-space ambient occlusion effect starts to fade " +"out. Use this hide ambient occlusion at great distances." +msgstr "" +"屏幕空间环境光遮蔽效果开始淡出的距离。使用该属性可以在远距离处隐藏环境光遮" +"蔽。" + +msgid "" +"Distance at which the screen-space ambient occlusion is fully faded out. Use " +"this hide ambient occlusion at great distances." +msgstr "" +"屏幕空间环境光遮蔽效果完全淡出的距离。使用该属性可以在远距离处隐藏环境光遮" +"蔽。" + +msgid "" +"If [code]true[/code], screen-space ambient occlusion will be rendered at " +"half size and then upscaled before being added to the scene. This is " +"significantly faster but may miss small details. If [code]false[/code], " +"screen-space ambient occlusion will be rendered at full size." +msgstr "" +"如果为 [code]true[/code],屏幕空间环境光遮蔽将以一半大小渲染,然后在被添加到" +"场景之前放大。这明显更快,但可能会遗漏一些小细节。如果为 [code]false[/code]," +"屏幕空间环境光遮蔽将以全尺寸渲染。" + +msgid "" +"Quality target to use when [member rendering/environment/ssil/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] " +"provides much higher quality than any of the other settings at the cost of " +"performance. When using the adaptive target, the performance cost scales " +"with the complexity of the scene." +msgstr "" +"当 [member rendering/environment/ssil/quality] 被设置为 [code]Ultra[/code] 时" +"所使用的质量目标。值为 [code]0.0[/code] 时的质量和速度与 [code]Medium[/code] " +"相似,而值为 [code]1.0[/code] 时的质量比其他任何设置都要高得多,代价是牺牲性" +"能。使用适应目标时,性能损耗与场景复杂度成正比。" + +msgid "" +"Number of blur passes to use when computing screen-space indirect lighting. " +"A higher number will result in a smoother look, but will be slower to " +"compute and will have less high-frequency detail." +msgstr "" +"模糊通道数,在计算屏幕空间间接光照时使用。数值越大,外观越平滑,但计算速度会" +"变慢,高频细节也会变少。" + +msgid "" +"Distance at which the screen-space indirect lighting effect starts to fade " +"out. Use this hide screen-space indirect lighting at great distances." +msgstr "" +"屏幕空间间接光照效果开始淡出的距离。使用该属性可以在远距离处隐藏屏幕空间间接" +"光照。" + +msgid "" +"Distance at which the screen-space indirect lighting is fully faded out. Use " +"this hide screen-space indirect lighting at great distances." +msgstr "" +"屏幕空间间接光照效果完全淡出的距离。使用该属性可以在远距离处隐藏屏幕空间间接" +"光照。" + +msgid "" +"If [code]true[/code], screen-space indirect lighting will be rendered at " +"half size and then upscaled before being added to the scene. This is " +"significantly faster but may miss small details and may result in some " +"objects appearing to glow at their edges." +msgstr "" +"如果为 [code]true[/code],屏幕空间间接光照将以一半大小渲染,然后在被添加到场" +"景之前放大。这明显更快,但可能会遗漏一些小细节,部分对象的边缘也会出现发光的" +"情况。" + +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." +msgstr "" +"设置渲染器驱动程序,在使用 Compatibility(兼容性)渲染器时使用。这个属性不能" +"直接编辑,请改用特定平台的覆盖项来设置驱动程序。" + +msgid "Android override for [member rendering/gl_compatibility/driver]." +msgstr "[member rendering/gl_compatibility/driver] 在 Android 的覆盖项。" + +msgid "iOS override for [member rendering/gl_compatibility/driver]." +msgstr "[member rendering/gl_compatibility/driver] 在 iOS 的覆盖项。" + +msgid "LinuxBSD override for [member rendering/gl_compatibility/driver]." +msgstr "[member rendering/gl_compatibility/driver] 在 LinuxBSD 的覆盖项。" + +msgid "macOS override for [member rendering/gl_compatibility/driver]." +msgstr "[member rendering/gl_compatibility/driver] 在 macOS 的覆盖项。" + +msgid "Web override for [member rendering/gl_compatibility/driver]." +msgstr "[member rendering/gl_compatibility/driver] 在 Web 的覆盖项。" + +msgid "Windows override for [member rendering/gl_compatibility/driver]." +msgstr "[member rendering/gl_compatibility/driver] 在 Windows 的覆盖项。" + +msgid "" +"Maximum number of canvas items commands that can be drawn in a single " +"viewport update. If more render commands are issued they will be ignored. " +"Decreasing this limit may improve performance on bandwidth limited devices. " +"Increase this limit if you find that not all objects are being drawn in a " +"frame." +msgstr "" +"单次视口更新中能够绘制的画布项目命令的最大数量。如果发出了更多的渲染命令,就" +"会被忽略。降低这个限制可以在带宽有限的设备上提高性能。如果你发现不是所有的对" +"象都在同一帧中被绘制,请提高这个限制。" + +msgid "" "Subdivision quadrant size for shadow mapping. See shadow mapping " "documentation." msgstr "阴影贴图的细分象限大小。请参阅阴影映射文档。" 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 " +"older devices or mobile.\n" +"[b]Mobile[/b]: Modern renderer designed for mobile devices. Has a lower base " +"overhead than Forward Plus, but does not scale as well to large scenes with " +"many elements.\n" +"[b]GL Compatibility[/b]: Low-end renderer designed for older devices. Based " +"on the limitations of the OpenGL 3.3/ OpenGL ES 3.0 / WebGL 2 APIs." +msgstr "" +"设置项目将使用的渲染器。选项有:\n" +"[b]Forward Plus[/b]:为桌面设备设计的高端渲染器。有较高的基础开销,但能够很好" +"地扩展到复杂的场景。不适合老旧设备和移动设备。\n" +"[b]Mobile[/b]:为移动设备设计的现代渲染器。基础开销比 Forward Plus 低,但在处" +"理有许多元素的大型场景时,扩展性并不理想。\n" +"[b]GL Compatibility[/b]:为老旧设备设计的低端渲染器。基于 OpenGL 3.3/ OpenGL " +"ES 3.0 / WebGL 2 API 的限制。" + +msgid "" +"Override for [member rendering/renderer/rendering_method] on mobile devices." +msgstr "移动设备的 [member rendering/renderer/rendering_method] 覆盖项。" + +msgid "Override for [member rendering/renderer/rendering_method] on web." +msgstr "Web 平台的 [member rendering/renderer/rendering_method] 覆盖项。" + +msgid "" +"Sets the driver to be used by the renderer when using a RenderingDevice-" +"based renderer like the clustered renderer or the mobile renderer. This " +"property can not be edited directly, instead, set the driver using the " +"platform-specific overrides." +msgstr "" +"设置渲染器驱动程序,在使用集群渲染器、移动渲染器等基于 RenderingDevice 的渲染" +"器时使用。这个属性不能直接编辑,请改用特定平台的覆盖项来设置驱动程序。" + +msgid "Android override for [member rendering/rendering_device/driver]." +msgstr "[member rendering/rendering_device/driver] 在 Android 的覆盖项。" + +msgid "iOS override for [member rendering/rendering_device/driver]." +msgstr "[member rendering/rendering_device/driver] 在 iOS 的覆盖项。" + +msgid "LinuxBSD override for [member rendering/rendering_device/driver]." +msgstr "[member rendering/rendering_device/driver] 在 LinuxBSD 的覆盖项。" + +msgid "macOS override for [member rendering/rendering_device/driver]." +msgstr "[member rendering/rendering_device/driver] 在 macOS 的覆盖项。" + +msgid "Windows override for [member rendering/rendering_device/driver]." +msgstr "[member rendering/rendering_device/driver] 在 Windows 的覆盖项。" + +msgid "" "If [code]true[/code], uses faster but lower-quality Lambert material " "lighting model instead of Burley." msgstr "" @@ -21469,12 +40270,62 @@ msgstr "" "使用 Burley 模型。" msgid "" +"The filtering quality to use for [Decal] nodes. When using one of the " +"anisotropic filtering modes, the anisotropic filtering level is controlled " +"by [member rendering/textures/default_filters/anisotropic_filtering_level]." +msgstr "" +"[Decal] 节点的过滤质量。使用 Anisotropic(各向异性)过滤模式时,各向异性过滤" +"级别由 [member rendering/textures/default_filters/" +"anisotropic_filtering_level] 控制。" + +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/" +"anisotropic_filtering_level]." +msgstr "" +"[OmniLight3D] 和 [SpotLight3D] 投影器的过滤质量。使用 Anisotropic(各向异性)" +"过滤模式时,各向异性过滤级别由 [member rendering/textures/default_filters/" +"anisotropic_filtering_level] 控制。" + +msgid "" "If [code]true[/code], the texture importer will import lossless textures " "using the PNG format. Otherwise, it will default to using WebP." msgstr "" "如果为 [code]true[/code],纹理导入器将使用 PNG 格式导入无损纹理。否则默认使" "用 WebP。" +msgid "Action map configuration to load by default." +msgstr "默认加载的动作映射配置。" + +msgid "If [code]true[/code] Godot will setup and initialize OpenXR on startup." +msgstr "如果为 [code]true[/code],Godot 将在启动时初始化 OpenXR。" + +msgid "" +"Specify whether OpenXR should be configured for an HMD or a hand held device." +msgstr "指定是否应为 HMD 或手持设备配置 OpenXR。" + +msgid "Specify the default reference space." +msgstr "指定默认参照空间。" + +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 " +"feature." +msgstr "" +"如果为 [code]true[/code],则 OpenXR 会管理深度缓冲区,使用深度缓冲区进行高级" +"再投影,前提是 XR 运行时支持。请注意,Godot 中的部分渲染特性无法与该特性一同" +"使用。" + +msgid "" +"Specify the view configuration with which to configure OpenXR setting up " +"either Mono or Stereo rendering." +msgstr "指定视图配置,用于配置 OpenXR 设置单视场或立体渲染。" + +msgid "If [code]true[/code], Godot will compile shaders required for XR." +msgstr "如果为 [code]true[/code],Godot 将编译 XR 所需的着色器。" + msgid "Interpolates an [Object]'s property over time." msgstr "随时间对 [Object] 的属性进行插值。" @@ -21504,12 +40355,23 @@ msgid "" "interpolating. By default there's no delay." msgstr "设置该 [PropertyTweener] 开始插值的时间,单位为秒。默认无延迟。" +msgid "Class representing a square mesh facing the camera." +msgstr "表示面向相机的正方形网格的类。" + msgid "2D in 3D Demo" msgstr "3D 中的 2D 演示" +msgid "The quad's size in 3D units." +msgstr "该四边形的大小,使用 3D 单位。" + msgid "Quaternion." msgstr "四元数." +msgid "" +"Constructs a default-initialized quaternion with all components set to " +"[code]0[/code]." +msgstr "构造默认初始化的四元数,所有分量都被设置为 [code]0[/code]。" + msgid "Constructs a [Quaternion] as a copy of the given [Quaternion]." msgstr "构造给定 [Quaternion] 的副本。" @@ -21579,6 +40441,22 @@ msgstr "" "单位四元数,代表无旋转。相当于单位 [Basis] 矩阵。如果一个向量被一个单位四元数" "变换,它不会改变。" +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." +msgstr "" +"将该 [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." +msgstr "" +"将该 [Quaternion] 的每个分量除以给定的值。此操作本身没有意义,但可以用作更大" +"表达式的一部分。" + msgid "A class for generating pseudo-random numbers." msgstr "用于生成伪随机数的类。" @@ -21744,10 +40622,10 @@ msgid "" msgstr "移除碰撞例外,这样射线就会报告与指定的 [RID] 的碰撞。" msgid "If [code]true[/code], collision with [Area2D]s will be reported." -msgstr "如果为 [code]true[/code],将报告与 [Area2D] 的碰撞。" +msgstr "如果为 [code]true[/code],则会报告与 [Area2D] 的碰撞。" msgid "If [code]true[/code], collision with [PhysicsBody2D]s will be reported." -msgstr "如果为 [code]true[/code],将报告与 [PhysicsBody2D] 的碰撞。" +msgstr "如果为 [code]true[/code],则会报告与 [PhysicsBody2D] 的碰撞。" msgid "" "The ray's collision mask. Only objects in at least one collision layer " @@ -21768,17 +40646,43 @@ msgid "" msgstr "如果为 [code]true[/code],父节点将被排除在碰撞检测之外。" msgid "" +"If [code]true[/code], the ray will detect a hit when starting inside shapes. " +"In this case the collision normal will be [code]Vector2(0, 0)[/code]. Does " +"not affect concave polygon shapes." +msgstr "" +"如果为 [code]true[/code],射线会在从形状内部开始时检测到命中。在此情况下,碰" +"撞法线将为 [code]Vector2(0, 0)[/code]。不会影响凹多边形形状。" + +msgid "" "The ray's destination point, relative to the RayCast's [code]position[/code]." msgstr "光线的目标点,相对于该 RayCast 的 [code]position[/code]。" +msgid "If [code]true[/code], collision with [Area3D]s will be reported." +msgstr "如果为 [code]true[/code],则会报告与 [Area3D] 的碰撞。" + +msgid "If [code]true[/code], collision with [PhysicsBody3D]s will be reported." +msgstr "如果为 [code]true[/code],则会报告与 [PhysicsBody3D] 的碰撞。" + +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." +msgstr "" +"如果为 [code]true[/code],射线会在从形状内部开始时检测到命中。在此情况下,碰" +"撞法线将为 [code]Vector3(0, 0, 0)[/code]。不会影响无体积的形状,如凹多边形和" +"高度图。" + msgid "Constructs a [Rect2] as a copy of the given [Rect2]." msgstr "构造给定 [Rect2] 的副本。" +msgid "Constructs a [Rect2] from a [Rect2i]." +msgstr "从 [Rect2i] 构造 [Rect2]。" + msgid "Constructs a [Rect2] by position and size." -msgstr "按位置和大小构造一个 [Rect2]。" +msgstr "按位置和大小构造 [Rect2]。" msgid "Constructs a [Rect2] by x, y, width, and height." -msgstr "通过 x、y、宽度和高度构造一个 [Rect2]。" +msgstr "按 x、y、宽度和高度构造 [Rect2]。" msgid "" "Returns a [Rect2] with equivalent position and area, modified so that the " @@ -21792,6 +40696,9 @@ msgid "" "Returns [code]true[/code] if this [Rect2] completely encloses another one." msgstr "如果此 [Rect2] 完全包含另一个,则返回 [code]true[/code]。" +msgid "Returns the area of the [Rect2]. See also [method has_area]." +msgstr "返回该 [Rect2] 的面积。另请参阅 [method has_area]。" + msgid "" "Returns the center of the [Rect2], which is equal to [member position] + " "([member size] / 2)." @@ -21823,6 +40730,20 @@ msgid "Constructs a [Rect2i] as a copy of the given [Rect2i]." msgstr "构造给定 [Rect2i] 的副本。" msgid "" +"Constructs a new [Rect2i] from [Rect2]. The floating point coordinates will " +"be truncated." +msgstr "从 [Rect2] 构造新的 [Rect2i]。浮点数坐标将被截断。" + +msgid "Constructs a [Rect2i] by position and size." +msgstr "按位置和大小构造 [Rect2i]。" + +msgid "Constructs a [Rect2i] by x, y, width, and height." +msgstr "按 x、y、宽度和高度构造 [Rect2i]。" + +msgid "Returns the area of the [Rect2i]. See also [method has_area]." +msgstr "返回该 [Rect2i] 的面积。另请参阅 [method has_area]。" + +msgid "" "Returns [code]true[/code] if the [Rect2i] has area, and [code]false[/code] " "if the [Rect2i] is linear, empty, or has a negative [member size]. See also " "[method get_area]." @@ -21831,9 +40752,24 @@ msgstr "" "空的或有负的 [member size],则返回 [code]false[/code] 。另请参阅 [member " "get_area]。" +msgid "Returns [code]true[/code] if the rectangles are not equal." +msgstr "如果矩形不相等,则返回 [code]true[/code]。" + +msgid "Returns [code]true[/code] if the rectangles are equal." +msgstr "如果矩形相等,则返回 [code]true[/code]。" + +msgid "Rectangle shape resource for 2D physics." +msgstr "矩形形状资源,用于 2D 物理。" + +msgid "The rectangle's width and height." +msgstr "该矩形的宽度和高度。" + msgid "Base class for reference-counted objects." msgstr "引用计数对象的基类。" +msgid "Returns the current reference count." +msgstr "返回当前的引用计数。" + msgid "" "Initializes the internal reference counter. Use this only if you really know " "what you are doing.\n" @@ -21961,6 +40897,9 @@ msgstr "" "编译并指定要使用的搜索模式。如果编译成功,返回 [constant OK]。如果遇到错误," "细节将被打印到标准输出,并返回一个错误。" +msgid "Creates and compiles a new [RegEx] object." +msgstr "创建并编译新 [RegEx] 对象。" + msgid "Returns the number of capturing groups in compiled pattern." msgstr "返回编译模式中捕获组的数量。" @@ -22070,9 +41009,112 @@ msgstr "" "如果为 [code]true[/code],则使用全局坐标。如果 [code]false[/code],则使用本地" "坐标。" +msgid "Abstraction for working with modern low-level graphics APIs." +msgstr "用于处理现代低阶图形 API 的抽象。" + +msgid "Represents the size of the [enum DeviceType] enum." +msgstr "代表 [enum DeviceType] 枚举的大小。" + +msgid "1-dimensional texture." +msgstr "一维纹理。" + +msgid "2-dimensional texture." +msgstr "二维纹理。" + +msgid "3-dimensional texture." +msgstr "三维纹理。" + +msgid "[Cubemap] texture." +msgstr "[Cubemap] 纹理。" + +msgid "Array of 1-dimensional textures." +msgstr "一维纹理数组。" + +msgid "Array of 2-dimensional textures." +msgstr "二维纹理数组。" + +msgid "Array of [Cubemap] textures." +msgstr "[Cubemap] 纹理数组。" + +msgid "Represents the size of the [enum TextureType] enum." +msgstr "代表 [enum TextureType] 枚举的大小。" + +msgid "Represents the size of the [enum TextureSamples] enum." +msgstr "代表 [enum TextureSamples] 枚举的大小。" + +msgid "" +"Nearest-neighbor sampler filtering. Sampling at higher resolutions than the " +"source will result in a pixelated look." +msgstr "最近邻采样器过滤。按照比源更高分辨率采样时,会产生像素化的效果。" + +msgid "" +"Bilinear sampler filtering. Sampling at higher resolutions than the source " +"will result in a blurry look." +msgstr "双线性采样器过滤。按照比源更高分辨率采样时,会产生模糊的效果。" + +msgid "" +"Point rendering primitive (with constant size, regardless of distance from " +"camera)." +msgstr "渲染点的图元(大小为常量,和与相机之间的距离无关)。" + +msgid "Line rendering primitive." +msgstr "绘制直线的图元。" + +msgid "Exclusive or (XOR) logic operation." +msgstr "逻辑异或(XOR)运算。" + +msgid "Minimum blending operation (keep the lowest value of the two)." +msgstr "最小混合运算(保留两者之间的较小值)。" + +msgid "Maximum blending operation (keep the highest value of the two)." +msgstr "最大混合运算(保留两者之间的较大值)。" + +msgid "Represents the size of the [enum BlendOperation] enum." +msgstr "代表 [enum BlendOperation] 枚举的大小。" + +msgid "" +"Maximum supported 1-dimensional texture size (in pixels on a single axis)." +msgstr "支持的一维纹理的最大尺寸(单轴像素数)。" + +msgid "" +"Maximum supported 2-dimensional texture size (in pixels on a single axis)." +msgstr "支持的二维纹理的最大尺寸(单轴像素数)。" + +msgid "" +"Maximum supported 3-dimensional texture size (in pixels on a single axis)." +msgstr "支持的三维纹理的最大尺寸(单轴像素数)。" + +msgid "" +"Maximum supported cubemap texture size (in pixels on a single axis of a " +"single face)." +msgstr "支持的立方体贴图纹理的最大尺寸(单轴像素数)。" + +msgid "Memory taken by textures." +msgstr "纹理占用的内存。" + +msgid "Memory taken by buffers." +msgstr "缓冲区占用的内存。" + +msgid "" +"Total memory taken. This is greater than the sum of [constant " +"MEMORY_TEXTURES] and [constant MEMORY_BUFFERS], as it also includes " +"miscellaneous memory usage." +msgstr "" +"内存中占用。比 [constant MEMORY_TEXTURES] 和 [constant MEMORY_BUFFERS] 的总和" +"要大,因为还会包含其他杂项内存占用。" + +msgid "Returned by functions that return an ID if a value is invalid." +msgstr "返回 ID 的函数会在值无效时返回此值。" + +msgid "Returned by functions that return a format ID if a value is invalid." +msgstr "返回格式 ID 的函数会在值无效时返回此值。" + msgid "Server for anything visible." msgstr "任何可见的东西的服务器。" +msgid "Optimization using Servers" +msgstr "使用服务器进行优化" + msgid "" "Sets camera to use orthogonal projection, also known as orthographic " "projection. Objects remain the same size on the screen no matter how far " @@ -22086,9 +41128,18 @@ msgid "" "smaller when they are far away." msgstr "将相机设置为使用透视投影。屏幕上的物体在远处时变得更小。" +msgid "Sets [Transform3D] of camera." +msgstr "设置相机的 [Transform3D]。" + +msgid "See also [method CanvasItem.draw_lcd_texture_rect_region]." +msgstr "另见 [method CanvasItem.draw_lcd_texture_rect_region]。" + msgid "Clears the [CanvasItem] and removes all commands in it." msgstr "清除[CanvasItem]并删除其中的所有命令。" +msgid "Creates a new [CanvasItem] instance and returns its [RID]." +msgstr "新建 [CanvasItem] 实例并返回其 [RID]。" + msgid "Sets the [CanvasItem] to copy a rect to the backbuffer." msgstr "设置 [CanvasItem] 以将矩形复制到后台缓冲区。" @@ -22172,6 +41223,25 @@ msgstr "设置画布灯的阴影过滤器,详见 [enum CanvasLightShadowFilter msgid "Smoothens the shadow. The lower, the smoother." msgstr "使阴影变得平滑。数值越低越光滑。" +msgid "" +"Sets the texture to be used by a [PointLight2D]. Equivalent to [member " +"PointLight2D.texture]." +msgstr "" +"设置 [PointLight2D] 所使用的纹理。相当于 [member PointLight2D.texture]。" + +msgid "" +"Sets the offset of a [PointLight2D]'s texture. Equivalent to [member " +"PointLight2D.offset]." +msgstr "" +"设置 [PointLight2D] 纹理的偏移量。相当于 [member PointLight2D.offset]。" + +msgid "" +"Sets the scale factor of a [PointLight2D]'s texture. Equivalent to [member " +"PointLight2D.texture_scale]." +msgstr "" +"设置 [PointLight2D] 纹理的缩放系数。相当于 [member PointLight2D." +"texture_scale]。" + msgid "Sets the canvas light's [Transform2D]." msgstr "设置画布灯的 [Transform2D]。" @@ -22233,6 +41303,12 @@ msgstr "设置用于“色调映射”后处理效果的变量。详情请参阅 msgid "Returns the parameters of a shader." msgstr "返回着色器的参数。" +msgid "Returns the ID of the test cube. Creates one if none exists." +msgstr "返回测试立方体的 ID。如果不存在,则会创建一个。" + +msgid "Returns the ID of the test texture. Creates one if none exists." +msgstr "返回测试纹理的 ID。如果不存在,则会创建一个。" + msgid "" "Returns the name of the video adapter (e.g. \"GeForce GTX 1080/PCIe/" "SSE2\").\n" @@ -22250,6 +41326,9 @@ msgstr "" "返回视频适配器的供应商(例如 \"NVIDIA Corporation\")。\n" "[b]注意:[/b]当运行精简或服务器可执行文件时,该函数返回一个空字符串。" +msgid "Returns the ID of a white texture. Creates one if none exists." +msgstr "返回白色纹理的 ID。如果不存在,则创建一个。" + msgid "Not yet implemented. Always returns [code]false[/code]." msgstr "还没有实现。总是返回 [code]false[/code]。" @@ -22281,9 +41360,21 @@ msgid "" "the objects will be displayed in." msgstr "设置实例所在的场景。场景是对象将在其中显示的 3D 世界。" +msgid "" +"Sets whether an instance is drawn or not. Equivalent to [member Node3D." +"visible]." +msgstr "设置是否绘制实例。相当于 [member Node3D.visible]。" + +msgid "" +"Sets the color of the light. Equivalent to [member Light3D.light_color]." +msgstr "设置灯光的颜色。相当于 [member Light3D.light_color]。" + msgid "Not implemented in Godot 3.x." msgstr "在 Godot 3.x 中没有实现。" +msgid "Creates a new [LightmapGI] instance." +msgstr "创建新的 [LightmapGI] 实例。" + msgid "Returns the value of a certain material's parameter." msgstr "返回特定材质的参数值。" @@ -22353,6 +41444,9 @@ msgstr "返回指定实例将被调制的颜色。" msgid "Returns the custom data associated with the specified instance." msgstr "返回与指定实例相关的自定义数据。" +msgid "Returns the [Transform3D] of the specified instance." +msgstr "返回指定实例的 [Transform3D]。" + msgid "" "Returns the [Transform2D] of the specified instance. For use when the " "multimesh is set to use 2D transforms." @@ -22373,6 +41467,13 @@ msgstr "" "释为 [code]vec4[/code]。相当于 [method MultiMesh.set_instance_custom_data]。" msgid "" +"Sets the [Transform3D] for this instance. Equivalent to [method MultiMesh." +"set_instance_transform]." +msgstr "" +"为此实例设置 [Transform3D]。相当于 [method MultiMesh." +"set_instance_transform]。" + +msgid "" "Sets the [Transform2D] for this instance. For use when multimesh is used in " "2D. Equivalent to [method MultiMesh.set_instance_transform_2d]." msgstr "" @@ -22486,11 +41587,17 @@ msgstr "设置未选择特定透明色时使用的默认透明色。" msgid "Returns a shader's code." msgstr "返回着色器的代码。" +msgid "Returns the [Transform3D] set for a specific bone of this skeleton." +msgstr "返回该骨架中指定骨骼的 [Transform3D]。" + msgid "Returns the [Transform2D] set for a specific bone of this skeleton." -msgstr "返回这个骨架的特定骨骼的 [Transform2D]。" +msgstr "返回该骨架中指定骨骼的 [Transform2D]。" + +msgid "Sets the [Transform3D] for a specific bone of this skeleton." +msgstr "设置该骨架中指定骨骼的 [Transform3D]。" msgid "Sets the [Transform2D] for a specific bone of this skeleton." -msgstr "设置这个骨架的特定骨骼的 [Transform2D]。" +msgstr "设置该骨架中指定骨骼的 [Transform2D]。" msgid "Returns the number of bones allocated for this skeleton." msgstr "返回分配给这个骨架的骨骼数量。" @@ -22583,6 +41690,12 @@ msgstr "着色器是 2D 着色器。" msgid "Shader is a particle shader." msgstr "着色器是粒子着色器。" +msgid "Shader is a sky shader." +msgstr "着色器是天空着色器。" + +msgid "Shader is a fog shader." +msgstr "着色器是雾着色器。" + msgid "Represents the size of the [enum ShaderMode] enum." msgstr "代表 [enum ShaderMode] 枚举的大小。" @@ -22665,11 +41778,14 @@ msgid "" msgstr "绘制的图元由单条三角形带组成(最后 3 个顶点总是会构成三角形)。" msgid "Represents the size of the [enum PrimitiveType] enum." -msgstr "表示 [enum PrimitiveType] 枚举的大小。" +msgstr "代表 [enum PrimitiveType] 枚举的大小。" msgid "Use [Transform2D] to store MultiMesh transform." msgstr "使用 [Transform2D] 存储 MultiMesh 变换。" +msgid "Use [Transform3D] to store MultiMesh transform." +msgstr "使用 [Transform3D] 存储 MultiMesh 变换。" + msgid "Is a directional (sun) light." msgstr "是平行光(日光)。" @@ -22679,6 +41795,24 @@ msgstr "是全向光。" msgid "Is a spot light." msgstr "是聚光。" +msgid "The light's energy multiplier." +msgstr "该灯光的能量倍数。" + +msgid "" +"The light's indirect energy multiplier (final indirect energy is [constant " +"LIGHT_PARAM_ENERGY] * [constant LIGHT_PARAM_INDIRECT_ENERGY])." +msgstr "" +"该灯光的间接能量倍数(最终的间接能量为 [constant LIGHT_PARAM_ENERGY] * " +"[constant LIGHT_PARAM_INDIRECT_ENERGY])。" + +msgid "" +"The light's volumetric fog energy multiplier (final volumetric fog energy is " +"[constant LIGHT_PARAM_ENERGY] * [constant " +"LIGHT_PARAM_VOLUMETRIC_FOG_ENERGY])." +msgstr "" +"该灯光的体积雾能量倍数(最终的体积雾能量为 [constant LIGHT_PARAM_ENERGY] * " +"[constant LIGHT_PARAM_VOLUMETRIC_FOG_ENERGY])。" + msgid "The light's influence on specularity." msgstr "灯光对镜面反射的影响。" @@ -22717,7 +41851,7 @@ msgid "Bias the shadow lookup to fix self-shadowing artifacts." msgstr "对阴影查找进行偏置,以修复自我阴影的假象。" msgid "Represents the size of the [enum LightParam] enum." -msgstr "代表[enum LightParam]枚举的大小。" +msgstr "代表 [enum LightParam] 枚举的大小。" msgid "Use a dual paraboloid shadow map for omni lights." msgstr "对全向光使用双抛物面阴影贴图。" @@ -22736,6 +41870,15 @@ msgstr "使用平行光时,使用 2 个分割进行阴影投影。" msgid "Use 4 splits for shadow projection when using directional light." msgstr "使用平行光时,使用 4 个分割进行阴影投影。" +msgid "Use DirectionalLight3D in both sky rendering and scene lighting." +msgstr "在天空渲染和场景照明中都使用 DirectionalLight3D。" + +msgid "Only use DirectionalLight3D in scene lighting." +msgstr "仅在场景照明中使用 DirectionalLight3D。" + +msgid "Only use DirectionalLight3D in sky rendering." +msgstr "仅在天空渲染中使用 DirectionalLight3D。" + msgid "Reflection probe will update reflections once and then stop." msgstr "反射探针将更新一次反射,然后停止。" @@ -22776,6 +41919,15 @@ msgid "" "VIEWPORT_CLEAR_NEVER]." msgstr "视口被清除一次,然后清除模式设置为 [constant VIEWPORT_CLEAR_NEVER]。" +msgid "Disable rendering of 3D environment over 2D canvas." +msgstr "禁用在 2D 画布上渲染 3D 环境。" + +msgid "Enable rendering of 3D environment over 2D canvas." +msgstr "启用在 2D 画布上渲染 3D 环境。" + +msgid "Max value of [enum ViewportEnvironmentMode] enum." +msgstr "[enum ViewportEnvironmentMode] 枚举的最大值。" + msgid "Number of objects drawn in a single frame." msgstr "在单帧中绘制的对象的数量。" @@ -22797,6 +41949,9 @@ msgstr "显示的对象没有光照信息。" msgid "Debug draw draws objects in wireframe." msgstr "调试绘制,将对象用线框形式绘制。" +msgid "Represents the size of the [enum ViewportVRSMode] enum." +msgstr "代表 [enum ViewportVRSMode] 枚举的大小。" + msgid "Use the clear color as background." msgstr "用透明的颜色作为背景。" @@ -22820,6 +41975,15 @@ msgstr "不要清除背景,使用上一帧渲染的东西作为背景。" msgid "Represents the size of the [enum EnvironmentBG] enum." msgstr "代表 [enum EnvironmentBG] 枚举的大小。" +msgid "Disable ambient light." +msgstr "禁用环境光。" + +msgid "Specify a specific [Color] for ambient light." +msgstr "为环境光指定特定的 [Color]。" + +msgid "Disable reflections." +msgstr "禁用反射。" + msgid "" "Output color as they came in. This can cause bright lighting to look blown " "out, with noticeable clipping in the output colors." @@ -22843,23 +42007,87 @@ msgstr "" "使用电影级色调映射器。可以避免对高光的截断,最终的图像一般比 [constant " "ENV_TONE_MAPPER_REINHARD] 看上去更鲜艳。" +msgid "Lowest quality of screen-space ambient occlusion." +msgstr "最低质量的屏幕空间环境光遮蔽。" + +msgid "Low quality screen-space ambient occlusion." +msgstr "低质量的屏幕空间环境光遮蔽。" + +msgid "Medium quality screen-space ambient occlusion." +msgstr "中等质量的屏幕空间环境光遮蔽。" + +msgid "High quality screen-space ambient occlusion." +msgstr "高质量的屏幕空间环境光遮蔽。" + +msgid "" +"Highest quality screen-space ambient occlusion. Uses the adaptive target " +"setting which can be dynamically adjusted to smoothly balance performance " +"and visual quality." +msgstr "" +"最高质量的屏幕空间环境光遮蔽。使用可动态调整的自适应目标设置,以平滑地平衡性" +"能和视觉质量。" + +msgid "Lowest quality of screen-space indirect lighting." +msgstr "最低质量的屏幕空间间接光照。" + +msgid "Low quality screen-space indirect lighting." +msgstr "较低质量的屏幕空间间接光照。" + +msgid "High quality screen-space indirect lighting." +msgstr "较高质量的屏幕空间间接光照。" + +msgid "" +"Highest quality screen-space indirect lighting. Uses the adaptive target " +"setting which can be dynamically adjusted to smoothly balance performance " +"and visual quality." +msgstr "" +"最高质量的屏幕空间间接光照。使用可动态调整的自适应目标设置,以平滑地平衡性能" +"和视觉质量。" + +msgid "" +"Lowest quality DOF blur. This is the fastest setting, but you may be able to " +"see filtering artifacts." +msgstr "最低质量的 DOF 模糊。这是最快的设置,但你可能会看到不自然的过滤。" + +msgid "Low quality DOF blur." +msgstr "较低质量的 DOF 模糊。" + +msgid "Medium quality DOF blur." +msgstr "中等质量的 DOF 模糊。" + +msgid "" +"Highest quality DOF blur. Results in the smoothest looking blur by taking " +"the most samples, but is also significantly slower." +msgstr "" +"最高质量的 DOF 模糊。通过采集最多的样本,产生最平滑的模糊效果,但速度也明显变" +"慢。" + msgid "The instance does not have a type." msgstr "实例没有类型。" msgid "The instance is a mesh." -msgstr "该实例是一个网格。" +msgstr "该实例是网格。" msgid "The instance is a multimesh." -msgstr "该实例是一个多网格。" +msgstr "该实例是一个 multimesh。" msgid "The instance is a particle emitter." -msgstr "该实例是一个粒子发射器。" +msgstr "该实例是粒子发射器。" msgid "The instance is a light." -msgstr "该实例是一个灯。" +msgstr "该实例是灯。" msgid "The instance is a reflection probe." -msgstr "该实例是一个反射探针。" +msgstr "该实例是反射探针。" + +msgid "The instance is a decal." +msgstr "该实例是贴花。" + +msgid "The instance is a VoxelGI." +msgstr "该实例是 VoxelGI。" + +msgid "The instance is a lightmap." +msgstr "该实例是光照贴图。" msgid "Represents the size of the [enum InstanceType] enum." msgstr "代表 [enum InstanceType] 枚举的大小。" @@ -22872,6 +42100,9 @@ msgstr "几何体实例(网格、多网格、即时和粒子)的标志的组 msgid "Allows the instance to be used in baked lighting." msgstr "允许在烘焙照明中使用实例。" +msgid "Allows the instance to be used with dynamic global illumination." +msgstr "允许在动态全局光照中使用该实例。" + msgid "When set, manually requests to draw geometry on next frame." msgstr "当设置时,手动请求在下一帧绘制几何图形。" @@ -22905,6 +42136,18 @@ msgid "" "if needed." msgstr "九宫格在需要的地方填充图块,并在需要时将它们拉伸一点。" +msgid "Uses the default filter mode for this [Viewport]." +msgstr "为 [Viewport] 使用默认过滤模式。" + +msgid "Max value for [enum CanvasItemTextureFilter] enum." +msgstr "[enum CanvasItemTextureFilter] 枚举的最大值。" + +msgid "Uses the default repeat mode for this [Viewport]." +msgstr "为 [Viewport] 使用默认重复模式。" + +msgid "Max value for [enum CanvasItemTextureRepeat] enum." +msgstr "[enum CanvasItemTextureRepeat] 枚举的最大值。" + msgid "Adds light color additive to the canvas." msgstr "向画布添加浅色。" @@ -22923,6 +42166,9 @@ msgstr "使用 PCF5 过滤法来过滤画布的光影。" msgid "Use PCF13 filtering to filter canvas light shadows." msgstr "使用 PCF13 过滤法来过滤画布的光影。" +msgid "Max value of the [enum CanvasLightShadowFilter] enum." +msgstr "[enum CanvasLightShadowFilter] 枚举的最大值。" + msgid "Culling of the canvas occluder is disabled." msgstr "禁用画布遮挡物的剔除。" @@ -23028,6 +42274,9 @@ msgstr "用于加载资源文件的单例。" msgid "Returns the list of recognized extensions for a resource type." msgstr "返回资源类型的已识别扩展名列表。" +msgid "Unregisters the given [ResourceFormatLoader]." +msgstr "取消注册给定的 [ResourceFormatLoader]。" + msgid "" "Changes the behavior on missing sub-resources. The default behavior is to " "abort loading." @@ -23089,6 +42338,104 @@ msgstr "GUI 富文本/BBcode 演示" msgid "Adds raw non-BBCode-parsed text to the tag stack." msgstr "将非 BBCode 解析的原始文本添加到标签栈中。" +msgid "Clears the tag stack and sets [member text] to an empty string." +msgstr "清空标签堆栈,并将 [member text] 设置为空字符串。" + +msgid "" +"Returns the [PopupMenu] of this [RichTextLabel]. By default, this menu is " +"displayed when right-clicking on the [RichTextLabel].\n" +"You can add custom menu items or remove standard ones. Make sure your IDs " +"don't conflict with the standard ones (see [enum MenuItems]). For example:\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _ready():\n" +" var menu = get_menu()\n" +" # Remove \"Select All\" item.\n" +" menu.remove_item(MENU_SELECT_ALL)\n" +" # Add custom items.\n" +" menu.add_separator()\n" +" menu.add_item(\"Duplicate Text\", MENU_MAX + 1)\n" +" # Connect callback.\n" +" menu.id_pressed.connect(_on_item_pressed)\n" +"\n" +"func _on_item_pressed(id):\n" +" if id == MENU_MAX + 1:\n" +" add_text(\"\\n\" + get_parsed_text())\n" +"[/gdscript]\n" +"[csharp]\n" +"public override void _Ready()\n" +"{\n" +" var menu = GetMenu();\n" +" // Remove \"Select All\" item.\n" +" menu.RemoveItem(RichTextLabel.MenuItems.SelectAll);\n" +" // Add custom items.\n" +" menu.AddSeparator();\n" +" menu.AddItem(\"Duplicate Text\", RichTextLabel.MenuItems.Max + 1);\n" +" // Add event handler.\n" +" menu.IdPressed += OnItemPressed;\n" +"}\n" +"\n" +"public void OnItemPressed(int id)\n" +"{\n" +" if (id == TextEdit.MenuItems.Max + 1)\n" +" {\n" +" AddText(\"\\n\" + GetParsedText());\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\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 "" +"返回该 [RichTextLabel] 的 [PopupMenu]。默认情况下,这个菜单会在右键单击 " +"[RichTextLabel] 时显示。\n" +"你可以加入自定义的菜单项,或者移除标准菜单项。请确保你的 ID 与标准 ID 不冲突" +"(见 [enum MenuItems])。例如:\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _ready():\n" +" var menu = get_menu()\n" +" # 移除“全选”菜单项。\n" +" menu.remove_item(MENU_SELECT_ALL)\n" +" # 添加自定义菜单项。\n" +" menu.add_separator()\n" +" menu.add_item(\"制作文本副本\", MENU_MAX + 1)\n" +" # 连接回调。\n" +" menu.id_pressed.connect(_on_item_pressed)\n" +"\n" +"func _on_item_pressed(id):\n" +" if id == MENU_MAX + 1:\n" +" add_text(\"\\n\" + get_parsed_text())\n" +"[/gdscript]\n" +"[csharp]\n" +"public override void _Ready()\n" +"{\n" +" var menu = GetMenu();\n" +" // 移除“全选”菜单项。\n" +" menu.RemoveItem(RichTextLabel.MenuItems.SelectAll);\n" +" // 添加自定义菜单项。\n" +" menu.AddSeparator();\n" +" menu.AddItem(\"制作文本副本\", RichTextLabel.MenuItems.Max + 1);\n" +" // 添加事件处理器。\n" +" menu.IdPressed += OnItemPressed;\n" +"}\n" +"\n" +"public void OnItemPressed(int id)\n" +"{\n" +" if (id == TextEdit.MenuItems.Max + 1)\n" +" {\n" +" AddText(\"\\n\" + GetParsedText());\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]警告:[/b]这是必要的内部节点,将其移除或释放可能导致崩溃。如果你想要将其隐" +"藏,或者隐藏其子节点,请使用其 [member Window.visible] 属性。" + +msgid "Returns the text without BBCode mark-up." +msgstr "返回没有 BBCode 标记的文本。" + msgid "Returns the current selection text. Does not include BBCodes." msgstr "返回当前选中的文本。不包括 BBCode。" @@ -23107,6 +42454,9 @@ msgstr "" "终止当前标签。使用 [code]push_*[/code] 方法之后手动关闭 BBCodes。不需要遵循 " "[code]add_*[/code] 方法。" +msgid "Adds a [code][bgcolor][/code] tag to the tag stack." +msgstr "向标签栈中添加 [code][bgcolor][/code] 标签。" + msgid "" "Adds a [code][font][/code] tag with a bold font to the tag stack. This is " "the same as adding a [code][b][/code] tag if not currently in a [code][i][/" @@ -23129,6 +42479,9 @@ msgstr "" msgid "Adds a [code][color][/code] tag to the tag stack." msgstr "在标签栈中添加一个 [code][color][/code] 标签。" +msgid "Adds a [code][fgcolor][/code] tag to the tag stack." +msgstr "向标签栈中添加 [code][fgcolor][/code] 标签。" + msgid "" "Adds a [code][font][/code] tag to the tag stack. Overrides default fonts for " "its duration." @@ -23143,24 +42496,46 @@ msgstr "" "在标签栈中添加一个 [code][font][/code] 标签,字体为斜体。如果当前没有 [code]" "[b][/code] 标签,这与添加 [code][i][/code] 标签相同。" -msgid "" -"Adds a [code][meta][/code] tag to the tag stack. Similar to the BBCode [code]" -"[url=something]{text}[/url][/code], but supports non-[String] metadata types." -msgstr "" -"在标签栈中添加一个 [code][meta][/code] 标签。类似于BBCode 的 [code]" -"[url=something]{text}[/url][/code],但支持非 [String] 元数据类型。" - msgid "Adds a [code][font][/code] tag with a monospace font to the tag stack." msgstr "在标签栈中添加一个 [code][font][/code] 标签,该标签为等宽字体。" msgid "Adds a [code][font][/code] tag with a normal font to the tag stack." msgstr "在标签栈中添加一个具有正常字体的 [code][font][/code] 标签。" +msgid "Adds a [code][p][/code] tag to the tag stack." +msgstr "向标签栈中添加 [code][p][/code] 标签。" + msgid "Adds a [code][s][/code] tag to the tag stack." -msgstr "在标签栈中添加一个 [code][s][/code] 标签。" +msgstr "向标签栈中添加 [code][s][/code] 标签。" + +msgid "Adds a [code][table=columns,inline_align][/code] tag to the tag stack." +msgstr "向标签栈中添加 [code][table=columns,inline_align][/code] 标签。" msgid "Adds a [code][u][/code] tag to the tag stack." -msgstr "在标签栈中添加一个 [code][u][/code] 标签。" +msgstr "向标签栈中添加 [code][u][/code] 标签。" + +msgid "Scrolls the window's top line to match [param line]." +msgstr "滚动窗口,让第一行与 [param line] 匹配。" + +msgid "" +"Scrolls the window's top line to match first line of the [param paragraph]." +msgstr "滚动窗口,让第一行与 [param paragraph] 的第一行匹配。" + +msgid "Scrolls to the beginning of the current selection." +msgstr "滚动到当前选区的开头。" + +msgid "" +"Select all the text.\n" +"If [member selection_enabled] is [code]false[/code], no selection will occur." +msgstr "" +"全选文本。\n" +"如果 [member selection_enabled] 为 [code]false[/code],则不会进行选择。" + +msgid "Sets color of a table cell border." +msgstr "设置表格的单元格边框颜色。" + +msgid "Sets inner padding of a table cell." +msgstr "设置表格的单元格内边距。" msgid "If [code]true[/code], a right-click displays the context menu." msgstr "为 [code]true[/code] 时右键单击会显示上下文菜单。" @@ -23209,6 +42584,12 @@ msgstr "" "与单个制表符长度关联的空格数。不影响文本标签中的 [code]\\t[/code],只影响缩进" "标签。" +msgid "If [code]true[/code], text processing is done in a background thread." +msgstr "如果为 [code]true[/code],则文本处理在后台线程中完成。" + +msgid "Triggered when the document is fully loaded." +msgstr "当文档完全加载时触发。" + msgid "" "Triggered when the user clicks on content between meta tags. If the meta is " "defined in text, e.g. [code][url={\"data\"=\"hi\"}]hi[/url][/code], then the " @@ -23227,13 +42608,16 @@ msgid "Triggers when the mouse enters a meta tag." msgstr "当鼠标进入元标签时触发。" msgid "Each list item has a number marker." -msgstr "每个列表项都有一个数字标记。" +msgstr "每个列表项都有数字标记。" msgid "Each list item has a letter marker." -msgstr "每个列表项都有一个字母标记。" +msgstr "每个列表项都有字母标记。" + +msgid "Each list item has a roman number marker." +msgstr "每个列表项都有罗马数字标记。" msgid "Each list item has a filled circle marker." -msgstr "每个列表项都有一个实心圆圈标记。" +msgstr "每个列表项都有实心圆标记。" msgid "The default text color." msgstr "默认文本颜色。" @@ -23244,6 +42628,15 @@ msgstr "字体阴影的颜色。" msgid "The color of the selection box." msgstr "选择框的颜色。" +msgid "The default cell border color." +msgstr "默认单元格边框颜色。" + +msgid "The default background color for even rows." +msgstr "偶数行的默认背景色。" + +msgid "The default background color for odd rows." +msgstr "奇数行的默认背景色。" + msgid "The vertical space between lines." msgstr "行之间的垂直空间。" @@ -23274,6 +42667,37 @@ msgstr "用于等宽文本的字体。" msgid "The default text font." msgstr "默认的文本字体。" +msgid "The font size used for bold text." +msgstr "用于粗体文本的字体大小。" + +msgid "The font size used for bold italics text." +msgstr "用于粗斜体文本的字体大小。" + +msgid "The font size used for italics text." +msgstr "用于斜体文本的字体大小。" + +msgid "The font size used for monospace text." +msgstr "用于等宽文本的字体大小。" + +msgid "The default text font size." +msgstr "默认文本字体大小。" + +msgid "" +"The background used when the [RichTextLabel] is focused. The [code]focus[/" +"code] [StyleBox] is displayed [i]over[/i] the base [StyleBox], so a " +"partially transparent [StyleBox] should be used to ensure the base " +"[StyleBox] remains visible. A [StyleBox] that represents an outline or an " +"underline works well for this purpose. To disable the focus visual effect, " +"assign a [StyleBoxEmpty] resource. Note that disabling the focus visual " +"effect will harm keyboard/controller navigation usability, so this is not " +"recommended for accessibility reasons." +msgstr "" +"该 [RichTextLabel] 处于聚焦状态时使用的背景。[code]focus[/code] [StyleBox] 显" +"示在基础 [StyleBox] [i]之上[/i],所以应该使用部分透明的 [StyleBox],确保基础 " +"[StyleBox] 仍然可见。代表轮廓或下划线的 [StyleBox] 可以很好地实现这个目的。要" +"禁用聚焦的视觉效果,请指定 [StyleBoxEmpty] 资源。请注意,禁用聚焦的视觉效果会" +"影响使用键盘/手柄进行导航的可用性,所以出于可访问性的原因,不建议这样做。" + msgid "The normal background for the [RichTextLabel]." msgstr "[RichTextLabel] 的正常背景。" @@ -23286,6 +42710,51 @@ msgstr "构造空的 [RID],内容为无效的 ID [code]0[/code]。" msgid "Constructs a [RID] as a copy of the given [RID]." msgstr "构造给定 [RID] 的副本。" +msgid "Returns the ID of the referenced low-level resource." +msgstr "返回引用的底层资源的 ID。" + +msgid "Returns [code]true[/code] if the [RID] is not [code]0[/code]." +msgstr "如果该 [RID] 非 [code]0[/code],则返回 [code]true[/code]。" + +msgid "Returns [code]true[/code] if the [RID]s are not equal." +msgstr "如果 [RID] 不相等,则返回 [code]true[/code]。" + +msgid "" +"Returns [code]true[/code] if the [RID]'s ID is less than [param right]'s ID." +msgstr "" +"如果该 [RID] 的 ID 小于右侧 [param right] 的 ID,则返回 [code]true[/code]。" + +msgid "" +"Returns [code]true[/code] if the [RID]'s ID is less than or equal to [param " +"right]'s ID." +msgstr "" +"如果该 [RID] 的 ID 小于等于右侧 [param right] 的 ID,则返回 [code]true[/" +"code]。" + +msgid "" +"Returns [code]true[/code] if both [RID]s are equal, which means they both " +"refer to the same low-level resource." +msgstr "" +"如果 [RID] 相等,则返回 [code]true[/code],表示它们引用的是同一个底层资源。" + +msgid "" +"Returns [code]true[/code] if the [RID]'s ID is greater than [param right]'s " +"ID." +msgstr "" +"如果该 [RID] 的 ID 大于右侧 [param right] 的 ID,则返回 [code]true[/code]。" + +msgid "" +"Returns [code]true[/code] if the [RID]'s ID is greater than or equal to " +"[param right]'s ID." +msgstr "" +"如果该 [RID] 的 ID 大于等于右侧 [param right] 的 ID,则返回 [code]true[/" +"code]。" + +msgid "" +"Physics Body which is moved by 2D physics simulation. Useful for objects " +"that have gravity and can be pushed by other objects." +msgstr "能够被 2D 物理仿真移动的物理物体。可用于具有重力并且可以被推动的对象。" + msgid "2D Physics Platformer Demo" msgstr "2D 物理平台跳跃演示" @@ -23390,6 +42859,14 @@ msgid "" msgstr "使用形状投射启用连续碰撞检测。这是最慢的 CCD 方法,也是最精确的。" msgid "" +"Physics Body which is moved by 3D physics simulation. Useful for objects " +"that have gravity and can be pushed by other objects." +msgstr "能够被 3D 物理仿真移动的物理物体。可用于具有重力并且可以被推动的对象。" + +msgid "The RigidBody3D's rotational velocity in [i]radians[/i] per second." +msgstr "该 RigidBody3D 的旋转速度,单位为[i]弧度[/i]每秒。" + +msgid "" "If [code]true[/code], continuous collision detection is used.\n" "Continuous collision detection tries to predict where a moving body will " "collide, instead of moving it and correcting its movement if it collided. " @@ -23455,6 +42932,9 @@ msgstr "" "用于查询其他 [code]get_connection_*[/code] 方法中的连接元数据的 [code]idx[/" "code] 参数,范围是 [code][0, get_connection_count() - 1][/code]。" +msgid "Returns the name of the signal at [param idx]." +msgstr "返回索引为 [param idx] 的信号的名称。" + msgid "" "Returns the number of nodes in the scene.\n" "The [code]idx[/code] argument used to query node data in other " @@ -23465,6 +42945,23 @@ msgstr "" "[code]idx[/code] 参数用于在其他 [code]get_node_*[/code] 方法中查询节点数据," "范围为 [code][0, get_node_count() - 1][/code]。" +msgid "Returns the name of the node at [param idx]." +msgstr "返回索引为 [param idx] 的节点的名称。" + +msgid "" +"Returns the name of the property at [param prop_idx] for the node at [param " +"idx]." +msgstr "" +"返回索引为 [param idx] 的节点中,索引为 [param prop_idx] 的属性的名称。" + +msgid "" +"Returns the value of the property at [param prop_idx] for the node at [param " +"idx]." +msgstr "返回索引为 [param idx] 的节点中,索引为 [param prop_idx] 的属性的值。" + +msgid "Returns the type of the node at [param idx]." +msgstr "返回索引为 [param idx] 的节点的类型。" + msgid "Manages the game loop via a hierarchy of nodes." msgstr "通过节点层次结构管理游戏循环。" @@ -23488,6 +42985,15 @@ msgstr "" "设置属性。\n" "[SceneTree] 是场景所使用的默认 [MainLoop] 实现,因此掌控着游戏循环。" +msgid "SceneTree" +msgstr "SceneTree" + +msgid "Multiple resolutions" +msgstr "多分辨率" + +msgid "Creates and returns a new [Tween]." +msgstr "创建并返回一个新的 [Tween]。" + msgid "" "Returns the current frame number, i.e. the total frame count since the " "application started." @@ -23628,6 +43134,9 @@ msgstr "当计时器到 0 时发出。" msgid "A class stored as a resource." msgstr "作为资源存储的类。" +msgid "Scripting documentation index" +msgstr "脚本文档索引" + msgid "Returns the script directly inherited by this script." msgstr "返回由该脚本直接继承的脚本。" @@ -23756,6 +43265,20 @@ msgstr "滚动停止时发出。" msgid "Emitted when scrolling is started." msgstr "滚动开始时发出。" +msgid "Scrolling disabled, scrollbar will be invisible." +msgstr "禁用滚动,滚动条不可见。" + +msgid "" +"Scrolling enabled, scrollbar will be visible only if necessary, i.e. " +"container's content is bigger than the container." +msgstr "启用滚动,滚动条仅在需要时可见,即容器的内容比容器大时。" + +msgid "Scrolling enabled, scrollbar will be always visible." +msgstr "启用滚动,滚动条始终可见。" + +msgid "Scrolling enabled, scrollbar will be hidden." +msgstr "启用滚动,滚动条隐藏。" + msgid "The background [StyleBox] of the [ScrollContainer]." msgstr "[ScrollContainer] 的背景 [StyleBox]。" @@ -23780,15 +43303,15 @@ msgid "The ray's length." msgstr "射线的长度。" msgid "Base class for separators." -msgstr "分离器的基类。" +msgstr "分隔器的基类。" msgid "" "Separator is a [Control] used for separating other controls. It's purely a " "visual decoration. Horizontal ([HSeparator]) and Vertical ([VSeparator]) " "versions are available." msgstr "" -"Separator 是一个用于分隔其他控件的[Control] 。它纯粹是一种视觉装饰。提供水平 " -"([HSeparator]) 和垂直 ([VSeparator]) 版本。" +"Separator(分隔器)是用于分隔其他控件的 [Control] 。纯粹是视觉装饰。提供水平" +"([HSeparator])和垂直([VSeparator])版本。" msgid "A custom shader program." msgstr "自定义着色器程序。" @@ -23803,6 +43326,9 @@ msgstr "" "编写自己的自定义行为来渲染对象或更新粒子信息。有关详细说明和用法,请参阅下面" "链接的教程。" +msgid "Shaders documentation index" +msgstr "着色器文档索引" + msgid "" "Returns the shader mode for the shader, either [constant MODE_CANVAS_ITEM], " "[constant MODE_SPATIAL] or [constant MODE_PARTICLES]." @@ -23858,18 +43384,57 @@ msgstr "" "超过其边距时,碰撞算法的成本会更高,所以边距的数值越高对性能越好,但代价是边" "缘的精度会降低。" +msgid "" +"Removes a collision exception so the shape does report collisions with the " +"specified [CollisionObject2D] node." +msgstr "移除碰撞例外,使该形状能够汇报与指定 [CollisionObject2D] 节点的碰撞。" + +msgid "" +"Removes a collision exception so the shape does report collisions with the " +"specified [RID]." +msgstr "移除碰撞例外,使该形状能够汇报与指定 [RID] 的碰撞。" + +msgid "The [Shape2D]-derived shape to be used for collision queries." +msgstr "派生自 [Shape2D] 的形状,用于碰撞查询。" + +msgid "The [Shape3D]-derived shape to be used for collision queries." +msgstr "派生自 [Shape3D] 的形状,用于碰撞查询。" + msgid "A shortcut for binding input." msgstr "绑定输入的快捷方式。" +msgid "Built-in type representing a signal defined in an object." +msgstr "内置类型,代表对象中定义的某个信号。" + +msgid "Using Signals" +msgstr "使用信号" + +msgid "GDScript Basics" +msgstr "GDScript 基础" + msgid "Constructs an empty [Signal] with no object nor signal name bound." msgstr "构造空的 [Signal],没有绑定对象和信号名称。" msgid "Constructs a [Signal] as a copy of the given [Signal]." msgstr "构造给定 [Signal] 的副本。" +msgid "Returns the name of this signal." +msgstr "返回该信号的名称。" + +msgid "Returns the object emitting this signal." +msgstr "返回发出该信号的对象。" + +msgid "" +"Returns the ID of the object emitting this signal (see [method Object." +"get_instance_id])." +msgstr "返回发出该信号的对象的 ID(见 [method Object.get_instance_id])。" + msgid "Skeleton for 2D characters and animated objects." msgstr "2D 角色和动画对象的骨架。" +msgid "2D skeletons" +msgstr "2D 骨架" + msgid "" "Returns the number of [Bone2D] nodes in the node hierarchy parented by " "Skeleton2D." @@ -23908,6 +43473,73 @@ msgstr "" "上。" 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 "" +"SkeletonIK3D 可用于将 [Skeleton3D] 的骨骼链的末端骨骼置于 3D 中的某一点,并相" +"应地旋转骨骼链中的所有骨骼。" + +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. A " +"typical scenario for IK in games is to place a characters feet on the ground " +"or a characters hands on a currently hold object. SkeletonIK uses " +"FabrikInverseKinematic internally to solve the bone chain and applies the " +"results to the [Skeleton3D] [code]bones_global_pose_override[/code] property " +"for all affected bones in the chain. If fully applied this overwrites any " +"bone transform from [Animation]s or bone custom poses set by users. The " +"applied amount can be controlled with the [code]interpolation[/code] " +"property.\n" +"[codeblock]\n" +"# Apply IK effect automatically on every new frame (not the current)\n" +"skeleton_ik_node.start()\n" +"\n" +"# Apply IK effect only on the current frame\n" +"skeleton_ik_node.start(true)\n" +"\n" +"# Stop IK effect and reset bones_global_pose_override on Skeleton\n" +"skeleton_ik_node.stop()\n" +"\n" +"# Apply full IK effect\n" +"skeleton_ik_node.set_interpolation(1.0)\n" +"\n" +"# Apply half IK effect\n" +"skeleton_ik_node.set_interpolation(0.5)\n" +"\n" +"# Apply zero IK effect (a value at or below 0.01 also removes " +"bones_global_pose_override on Skeleton)\n" +"skeleton_ik_node.set_interpolation(0.0)\n" +"[/codeblock]" +msgstr "" +"SkeletonIK3D 用于将 [Skeleton3D] 骨骼链的末端骨骼放置在 3D 某一点上,并相应地" +"旋转骨骼链中的所有骨骼。游戏中 IK 的典型场景是将角色的脚放在地面上,或者将角" +"色的手放在当前持有的物体上。SkeletonIK 在内部使用 FabrikInverseKinematic 来解" +"决骨骼链,并将结果应用于 [Skeleton3D] [code]bones_global_pose_override[/" +"code] 属性中所有受影响的骨骼链。如果完全应用,这将覆盖任何来自 [Animation] 的" +"骨骼变换或用户设置的骨骼自定义姿势。应用量可以用 [code]interpolation[/code] " +"属性来控制。\n" +"[codeblock]\n" +"# 在每一个新的帧上自动应用 IK 效果(不是当前的)。\n" +"skeleton_ik_node.start()\n" +"\n" +"# 只在当前帧上应用 IK 效果\n" +"skeleton_ik_node.start(true)\n" +"\n" +"# 停止 IK 效果并重置骨骼上的 bones_global_pose_override\n" +"skeleton_ik_node.stop()\n" +"\n" +"# 应用完整的 IK 效果\n" +"skeleton_ik_node.set_interpolation(1.0)\n" +"\n" +"# 应用一半的 IK 效果\n" +"skeleton_ik_node.set_interpolation(0.5)\n" +"\n" +"# 应用零 IK 效果(数值为 0.01 或低于 0.01 也会移除 Skeleton 上的 " +"bones_global_pose_override)。\n" +"skeleton_ik_node.set_interpolation(0.0)\n" +"[/codeblock]" + +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 " @@ -23965,6 +43597,58 @@ msgstr "" "如果为 [code]true[/code],指示 IK 求解器在解算器链时考虑次要磁铁目标(极点目" "标)。使用磁铁位置(磁极目标)来控制 IK 链的弯曲。" +msgid "" +"Returns the maximum angle constraint for the joint at [param joint_idx]." +msgstr "返回索引为 [param joint_idx] 的关节的最大角约束。" + +msgid "" +"Returns the minimum angle constraint for the joint at [param joint_idx]." +msgstr "返回索引为 [param joint_idx] 的关节的最小角约束。" + +msgid "Sets the maximum angle constraint for the joint at [param joint_idx]." +msgstr "设置索引为 [param joint_idx] 的关节的最大角约束。" + +msgid "Sets the minimum angle constraint for the joint at [param joint_idx]." +msgstr "设置索引为 [param joint_idx] 的关节的最小角约束。" + +msgid "The number of CCDIK joints in the CCDIK modification." +msgstr "CCDIK 修改中 CCDIK 关节的数量。" + +msgid "The number of FABRIK joints in the FABRIK modification." +msgstr "FABRIK 修改中 FABRIK 关节的数量。" + +msgid "Returns the constraint's maximum allowed angle." +msgstr "返回该约束允许的最大角度。" + +msgid "Returns the constraint's minimum allowed angle." +msgstr "返回该约束允许的最小角度。" + +msgid "Sets the constraint's maximum allowed angle." +msgstr "设置该约束允许的最大角度。" + +msgid "Sets the constraint's minimum allowed angle." +msgstr "设置该约束允许的最小角度。" + +msgid "Returns the group of the bone at [param bone_idx]." +msgstr "返回索引为 [param bone_idx] 的骨骼的分组。" + +msgid "Sets the group of the bone at [param bone_idx]." +msgstr "设置索引为 [param bone_idx] 的骨骼的分组。" + +msgid "" +"A bone name which will use model's height as the coefficient for " +"normalization. For example, [SkeletonProfileHumanoid] defines it as " +"[code]Hips[/code]." +msgstr "" +"骨骼的名称,将使用模型的高度作为归一化的系数。例如," +"[SkeletonProfileHumanoid] 将其定义为 [code]Hips[/code] 。" + +msgid "Direction is not calculated." +msgstr "不计算方向。" + +msgid "A humanoid [SkeletonProfile] preset." +msgstr "人形 [SkeletonProfile] 预设。" + msgid "Radiance texture size is 32×32 pixels." msgstr "辐照度纹理尺寸为 32×32 像素。" @@ -23975,10 +43659,16 @@ msgid "Radiance texture size is 128×128 pixels." msgstr "辐照度纹理尺寸为128×128像素。" msgid "Radiance texture size is 256×256 pixels." -msgstr "辐照度纹理大小为 256×256 像素。" +msgstr "辐照度纹理尺寸为 256×256 像素。" msgid "Radiance texture size is 512×512 pixels." -msgstr "辐照度纹理大小为 512×512 像素。" +msgstr "辐照度纹理尺寸为 512×512 像素。" + +msgid "Radiance texture size is 1024×1024 pixels." +msgstr "辐照度纹理尺寸为 1024×1024 像素。" + +msgid "Radiance texture size is 2048×2048 pixels." +msgstr "辐照度纹理尺寸为 2048×2048 像素。" msgid "Represents the size of the [enum RadianceSize] enum." msgstr "代表 [enum RadianceSize] 枚举的大小。" @@ -24066,17 +43756,37 @@ msgstr "超出限制后的补偿。数值越低,损失的速度能量越多。 msgid "A soft mesh physics body." msgstr "柔性网格物理体。" +msgid "SoftBody" +msgstr "SoftBody" + msgid "Returns local translation of a vertex in the surface array." msgstr "返回表面数组中顶点的局部平移。" msgid "Returns [code]true[/code] if vertex is set to pinned." msgstr "如果顶点设置为固定,则返回 [code]true[/code]。" +msgid "If [code]true[/code], the [SoftBody3D] will respond to [RayCast3D]s." +msgstr "如果为 [code]true[/code],则该 [SoftBody3D] 会响应 [RayCast3D]。" + msgid "" "Increasing this value will improve the resulting simulation, but can affect " "performance. Use with care." msgstr "增加这个值会改善模拟结果,但会影响性能。请小心使用。" +msgid "The SoftBody3D's mass." +msgstr "该 SoftBody3D 的质量。" + +msgid "" +"When [member Node.process_mode] is set to [constant Node." +"PROCESS_MODE_DISABLED], remove from the physics simulation to stop all " +"physics interactions with this [SoftBody3D].\n" +"Automatically re-added to the physics simulation when the [Node] is " +"processed again." +msgstr "" +"当 [member Node.process_mode] 被设置为 [constant Node.PROCESS_MODE_DISABLED] " +"时,从物理仿真中移除,停止与此 [SoftBody3D] 的所有物理交互。\n" +"当该 [Node] 再次被处理时,会自动重新加入到物理仿真中。" + msgid "Class representing a spherical [PrimitiveMesh]." msgstr "表示球形 [PrimitiveMesh] 的类。" @@ -24100,6 +43810,12 @@ msgstr "球体半径." msgid "Number of segments along the height of the sphere." msgstr "沿着球体高度的段数。" +msgid "The sphere's radius in 3D units." +msgstr "球体半径,使用 3D 单位。" + +msgid "Sphere shape resource for 3D collisions." +msgstr "用于 3D 碰撞的球体形状资源。" + msgid "The sphere's radius. The shape's diameter is double the radius." msgstr "球体的半径。形状的直径是半径的两倍。" @@ -24184,12 +43900,6 @@ msgstr "拆分拖动器永远不可见,其空间也被折叠。" msgid "A spotlight, such as a reflector spotlight or a lantern." msgstr "聚光灯,如反射器聚光灯或灯笼。" -msgid "The spotlight's angular attenuation curve." -msgstr "聚光灯的角度衰减曲线。" - -msgid "The spotlight's light energy attenuation curve." -msgstr "聚光灯的光量衰减曲线。" - msgid "A helper node, mostly used in 3rd person cameras." msgstr "辅助节点,主要用于第三人称相机。" @@ -24206,14 +43916,73 @@ msgstr "" "physics_introduction.html#collision-layers-and-masks]《碰撞层与遮罩》[/url]。" msgid "General-purpose sprite node." -msgstr "通用精灵图节点。" +msgstr "通用精灵节点。" msgid "" "A node that displays a 2D texture. The texture displayed can be a region " "from a larger atlas texture, or a frame from a sprite sheet animation." msgstr "" -"显示 2D 纹理的节点。显示的纹理可以是来自较大图集纹理的区域,也可以是来自精灵" -"表动画的帧。" +"显示 2D 纹理的节点。显示的纹理可以是较大图集纹理中的某个区域,也可以是精灵表" +"动画中的某一帧。" + +msgid "" +"Returns a [Rect2] representing the Sprite2D's boundary in local coordinates. " +"Can be used to detect if the Sprite2D was clicked.\n" +"[b]Example:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _input(event):\n" +" if event is InputEventMouseButton and event.pressed and event." +"button_index == MOUSE_BUTTON_LEFT:\n" +" if get_rect().has_point(to_local(event.position)):\n" +" print(\"A click!\")\n" +"[/gdscript]\n" +"[csharp]\n" +"public override void _Input(InputEvent @event)\n" +"{\n" +" if (@event is InputEventMouseButton inputEventMouse)\n" +" {\n" +" if (inputEventMouse.Pressed && inputEventMouse.ButtonIndex == " +"MouseButton.Left)\n" +" {\n" +" if (GetRect().HasPoint(ToLocal(inputEventMouse.Position)))\n" +" {\n" +" GD.Print(\"A click!\");\n" +" }\n" +" }\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回代表该 Sprite2D 边界的 [Rect2],使用局部坐标。可用于检测该 Sprite2D 是否" +"被点击。\n" +"[b]示例:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _input(event):\n" +" if event is InputEventMouseButton and event.pressed and event." +"button_index == MOUSE_BUTTON_LEFT:\n" +" if get_rect().has_point(to_local(event.position)):\n" +" print(\"我点!\")\n" +"[/gdscript]\n" +"[csharp]\n" +"public override void _Input(InputEvent @event)\n" +"{\n" +" if (@event is InputEventMouseButton inputEventMouse)\n" +" {\n" +" if (inputEventMouse.Pressed && inputEventMouse.ButtonIndex == " +"MouseButton.Left)\n" +" {\n" +" if (GetRect().HasPoint(ToLocal(inputEventMouse.Position)))\n" +" {\n" +" GD.Print(\"我点!\");\n" +" }\n" +" }\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" msgid "" "Returns [code]true[/code], if the pixel at the given position is opaque and " @@ -24259,6 +44028,9 @@ msgid "" msgstr "" "要显示的图集纹理区域。[member region_enabled] 必须是 [code]true[/code]。" +msgid "[Texture2D] object to draw." +msgstr "要绘制的 [Texture2D] 对象。" + msgid "The number of rows in the sprite sheet." msgstr "精灵表中的行数。" @@ -24328,6 +44100,27 @@ msgstr "" "这个模式会进行标准的 Alpha 混合。可以显示半透明区域,但透明材质存在重叠时可能" "会暴露透明度排序问题。" +msgid "Sprite frame library for AnimatedSprite2D and AnimatedSprite3D." +msgstr "精灵帧库,用于 AnimatedSprite2D 和 AnimatedSprite3D。" + +msgid "" +"Sprite frame library for an [AnimatedSprite2D] or [AnimatedSprite3D] node. " +"Contains frames and animation data for playback." +msgstr "" +"[AnimatedSprite2D] 和 [AnimatedSprite3D] 节点的精灵帧库。包含帧和用于播放的动" +"画信息。" + +msgid "Adds a new [param anim] animation to the library." +msgstr "向库中添加新动画 [param anim]。" + +msgid "Removes all frames from the [param anim] animation." +msgstr "删除 [param anim] 动画中的所有帧。" + +msgid "" +"Removes all animations. An empty [code]default[/code] animation will be " +"created." +msgstr "移除所有动画。将创建名为 [code]default[/code] 的空动画。" + msgid "" "Returns [code]true[/code] if the given animation is configured to loop when " "it finishes playing. Otherwise, returns [code]false[/code]." @@ -24340,20 +44133,58 @@ msgid "" "are placed in alphabetical order." msgstr "返回一个包含每个动画的名称的数组。值按字母顺序排列。" +msgid "Returns the speed in frames per second for the [param anim] animation." +msgstr "返回 [param anim] 动画的速度,单位为帧每秒。" + +msgid "Returns the number of frames for the [param anim] animation." +msgstr "返回 [param anim] 动画中的帧数。" + +msgid "" +"Returns the texture of the frame [param idx] in the [param anim] animation." +msgstr "移除 [param anim] 动画中索引为 [param idx] 的帧的纹理。" + +msgid "Returns [code]true[/code] if the [param anim] animation exists." +msgstr "如果 [param anim] 动画存在,则返回 [code]true[/code]。" + +msgid "Removes the [param anim] animation." +msgstr "移除 [param anim] 动画。" + +msgid "Removes the [param anim] animation's frame [param idx]." +msgstr "移除 [param anim] 动画中索引为 [param idx] 的帧。" + +msgid "Changes the [param anim] animation's name to [param newname]." +msgstr "将 [param anim] 动画的名称更改为 [param newname]。" + +msgid "Sets the speed for the [param anim] animation in frames per second." +msgstr "设置 [param anim] 动画的速度,单位为帧每秒。" + +msgid "" +"Physics body for 2D physics which is static or moves only by script. Useful " +"for floor and walls." +msgstr "静态或者只能被脚本移动的 2D 物理物体。可用于地面和墙体。" + +msgid "" +"Physics body for 3D physics which is static or moves only by script. Useful " +"for floor and walls." +msgstr "静态或者只能被脚本移动的 3D 物理物体。可用于地面和墙体。" + msgid "Abstraction and base class for stream-based protocols." msgstr "基于流的协议的抽象和基类。" msgid "Gets a signed 16-bit value from the stream." -msgstr "从流中获取一个有符号 16 位值。" +msgstr "从流中获取有符号 16 位值。" msgid "Gets a signed 32-bit value from the stream." -msgstr "从流中获取一个有符号 32 位值。" +msgstr "从流中获取有符号 32 位值。" msgid "Gets a signed 64-bit value from the stream." -msgstr "从流中获取一个有符号 64 位值。" +msgstr "从流中获取有符号 64 位值。" msgid "Gets a signed byte from the stream." -msgstr "从流中获取一个有符号字节。" +msgstr "从流中获取有符号字节。" + +msgid "Returns the number of bytes this [StreamPeer] has available." +msgstr "返回该 [StreamPeer] 可用的字节数。" msgid "Gets a double-precision float from the stream." msgstr "从流中获取一个双精度浮点数。" @@ -24466,16 +44297,266 @@ msgstr "" "轮询连接以检查传入的字节。在 [method StreamPeer.get_available_bytes] 之前调用" "它以使其正常工作。" +msgid "A status representing a [StreamPeerTLS] that is disconnected." +msgstr "状态,表示 [StreamPeerSSL] 已断开连接。" + +msgid "A status representing a [StreamPeerTLS] during handshaking." +msgstr "状态,表示 [StreamPeerSSL] 处于握手阶段。" + +msgid "A status representing a [StreamPeerTLS] that is connected to a host." +msgstr "状态,表示 [StreamPeerSSL] 已连接至主机。" + +msgid "A status representing a [StreamPeerTLS] in error state." +msgstr "状态,表示 [StreamPeerSSL] 处于出错状态。" + +msgid "" +"An error status that shows a mismatch in the TLS certificate domain " +"presented by the host and the domain requested for validation." +msgstr "错误状态,表示主机的 TLS 证书域名与请求验证的域名不匹配。" + +msgid "Built-in string Variant type." +msgstr "内置字符串 Variant 类。" + +msgid "" +"This is the built-in string Variant type (and the one used by GDScript). " +"Strings may contain any number of Unicode characters, and expose methods " +"useful for manipulating and generating strings. Strings are reference-" +"counted and use a copy-on-write approach (every modification to a string " +"returns a new [String]), so passing them around is cheap in resources.\n" +"Some string methods have corresponding variations. Variations suffixed with " +"[code]n[/code] ([method countn], [method findn], [method replacen], etc.) " +"are [b]case-insensitive[/b] (they make no distinction between uppercase and " +"lowercase letters). Method variations prefixed with [code]r[/code] ([method " +"rfind], [method rsplit], etc.) are reversed, and start from the end of the " +"string, instead of the beginning.\n" +"[b]Note:[/b] In a boolean context, a string will evaluate to [code]false[/" +"code] if it is empty ([code]\"\"[/code]). Otherwise, a string will always " +"evaluate to [code]true[/code]." +msgstr "" +"这是内置的字符串 Variant 类型(GDScript 使用的就是这个类型)。字符中中可以包" +"含任意数量的 Unicode 字符,暴露的方法可用于字符串操作和生成。字符串有引用计" +"数,使用写时复制技术(每次对字符串的修改都会返回新的 [String]),所以传递字符" +"串的资源损耗很小。\n" +"部分字符串方法有对应的变体。后缀 [code]n[/code] 的变体([method countn]、" +"[method findn]、[method replacen] 等)[b]大小写不敏感[/b](不区分大写字符和小" +"写字符)。前缀 [code]r[/code] 的方法变体([method rfind]、[method rsplit] " +"等)是逆序的,会从字符串末尾开始,而不是从开头开始。\n" +"[b]注意:[/b]转换为布尔值时,空字符串([code]\"\"[/code])为 [code]false[/" +"code],其他字符串均为 [code]true[/code]。" + +msgid "GDScript format strings" +msgstr "GDScript 格式字符串" + msgid "Constructs an empty [String] ([code]\"\"[/code])." msgstr "构造空的 [String]([code]\"\"[/code])。" msgid "Constructs a [String] as a copy of the given [String]." msgstr "构造给定 [String] 的副本。" +msgid "Constructs a new [String] from the given [NodePath]." +msgstr "从给定的 [NodePath] 构造新的 [String]。" + +msgid "Constructs a new [String] from the given [StringName]." +msgstr "从给定的 [StringName] 构造新 [String]。" + +msgid "" +"Returns [code]true[/code] if the string begins with the given [param text]. " +"See also [method ends_with]." +msgstr "" +"如果该字符串以给定的 [param text] 开始,则返回 [code]true[/code]。另见 " +"[method ends_with]。" + +msgid "" +"Returns an array containing the bigrams (pairs of consecutive characters) of " +"this string.\n" +"[codeblock]\n" +"print(\"Get up!\".bigrams()) # Prints [\"Ge\", \"et\", \"t \", \" u\", " +"\"up\", \"p!\"]\n" +"[/codeblock]" +msgstr "" +"返回包含该字符串的双字母组(连续字母的组合)的数组。\n" +"[codeblock]\n" +"print(\"Get up!\".bigrams()) # 输出 [\"Ge\", \"et\", \"t \", \" u\", \"up\", " +"\"p!\"]\n" +"[/codeblock]" + +msgid "" +"Converts the string representing a binary number into an [int]. The string " +"may optionally be prefixed with [code]\"0b\"[/code], and an additional " +"[code]-[/code] prefix for negative numbers.\n" +"[codeblocks]\n" +"[gdscript]\n" +"print(\"101\".bin_to_int()) # Prints 5\n" +"print(\"0b101\".bin_to_int()) # Prints 5\n" +"print(\"-0b10\".bin_to_int()) # Prints -2\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.Print(\"101\".BinToInt()); // Prints 5\n" +"GD.Print(\"0b101\".BinToInt()); // Prints 5\n" +"GD.Print(\"-0b10\".BinToInt()); // Prints -2\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"将表示二进制数的字符串转换为 [int]。该字符串可以前缀 [code]\"0b\"[/code],负" +"数可以前缀 [code]-[/code]。\n" +"[codeblocks]\n" +"[gdscript]\n" +"print(\"101\".bin_to_int()) # 输出 5\n" +"print(\"0b101\".bin_to_int()) # 输出 5\n" +"print(\"-0b10\".bin_to_int()) # 输出 -2\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.Print(\"101\".BinToInt()); // 输出 5\n" +"GD.Print(\"0b101\".BinToInt()); // 输出 5\n" +"GD.Print(\"-0b10\".BinToInt()); // 输出 -2\n" +"[/csharp]\n" +"[/codeblocks]" + msgid "" "Returns a copy of the string with special characters escaped using the C " "language standard." -msgstr "返回一个使用 C 语言标准转义的特殊字符的字符串的副本。" +msgstr "返回该字符串的副本,按照 C 语言标准对特殊字符进行转义。" + +msgid "" +"Returns a copy of the string with escaped characters replaced by their " +"meanings. Supported escape sequences are [code]\\'[/code], [code]\\\"[/" +"code], [code]\\\\[/code], [code]\\a[/code], [code]\\b[/code], [code]\\f[/" +"code], [code]\\n[/code], [code]\\r[/code], [code]\\t[/code], [code]\\v[/" +"code].\n" +"[b]Note:[/b] Unlike the GDScript parser, this method doesn't support the " +"[code]\\uXXXX[/code] escape sequence." +msgstr "" +"返回该字符串的副本,转义字符均使用本义代替。支持的转义序列有 [code]\\'[/" +"code]、[code]\\\"[/code]、[code]\\\\[/code]、[code]\\a[/code]、[code]\\b[/" +"code]、[code]\\f[/code]、[code]\\n[/code]、[code]\\r[/code]、[code]\\t[/" +"code]、[code]\\v[/code]。\n" +"[b]注意:[/b]与 GDScript 解析器不同,这个方法不支持 [code]\\uXXXX[/code] 转义" +"序列。" + +msgid "" +"Changes the appearance of the string: replaces underscores ([code]_[/code]) " +"with spaces, adds spaces before uppercase letters in the middle of a word, " +"converts all letters to lowercase, then converts the first one and each one " +"following a space to uppercase.\n" +"[codeblocks]\n" +"[gdscript]\n" +"\"move_local_x\".capitalize() # Returns \"Move Local X\"\n" +"\"sceneFile_path\".capitalize() # Returns \"Scene File Path\"\n" +"[/gdscript]\n" +"[csharp]\n" +"\"move_local_x\".Capitalize(); // Returns \"Move Local X\"\n" +"\"sceneFile_path\".Capitalize(); // Returns \"Scene File Path\"\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Note:[/b] This method not the same as the default appearance of " +"properties in the Inspector dock, as it does not capitalize acronyms " +"([code]\"2D\"[/code], [code]\"FPS\"[/code], [code]\"PNG\"[/code], etc.) as " +"you may expect." +msgstr "" +"改变字符串的外观:用空格代替下划线([code]_[/code]),在单词中间的大写字母前" +"添加空格,将所有字母转换为小写,然后将第一个字母和空格后的每个字母转换为大" +"写。\n" +"[codeblocks]\n" +"[gdscript]\n" +"\"move_local_x\".capitalize() # 返回 \"Move Local X\"\n" +"\"sceneFile_path\".capitalize() # 返回 \"Scene File Path\"\n" +"[/gdscript]\n" +"[csharp]\n" +"\"move_local_x\".Capitalize(); // 返回 \"Move Local X\"\n" +"\"sceneFile_path\".Capitalize(); // 返回 \"Scene File Path\"\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]注意:[/b]这个方法与检查器面板中属性的默认外观不一样,不会像你期望的那样将" +"首字母缩写大写([code]\"2D\"[/code]、[code]\"FPS\"[/code]、[code]\"PNG\"[/" +"code] 等)。" + +msgid "" +"Performs a case-sensitive comparison to another string. Returns [code]-1[/" +"code] if less than, [code]1[/code] if greater than, or [code]0[/code] if " +"equal. \"Less than\" and \"greater than\" are determined by the [url=https://" +"en.wikipedia.org/wiki/List_of_Unicode_characters]Unicode code points[/url] " +"of each string, which roughly matches the alphabetical order.\n" +"With different string lengths, returns [code]1[/code] if this string is " +"longer than the [param to] string, or [code]-1[/code] if shorter. Note that " +"the length of empty strings is [i]always[/i] [code]0[/code].\n" +"To get a [bool] result from a string comparison, use the [code]==[/code] " +"operator instead. See also [method nocasecmp_to] and [method " +"naturalnocasecmp_to]." +msgstr "" +"与另一个字符串进行比较,区分大小写。小于时返回 [code]-1[/code]、大于时返回 " +"[code]1[/code]、等于时返回 [code]0[/code]。“小于”和“大于”比较的是字符串中的 " +"[url=https://zh.wikipedia.org/wiki/" +"Unicode%E5%AD%97%E7%AC%A6%E5%88%97%E8%A1%A8]Unicode 码位[/url],大致与字母表" +"顺序一致。\n" +"如果字符串长度不同,这个字符串比 [param to] 字符串长时返回 [code]1[/code],短" +"时返回 [code]-1[/code]。请注意空字符串的长度[i]始终[/i]为 [code]0[/code]。\n" +"如果想在比较字符串时获得 [bool] 返回值,请改用 [code]==[/code] 运算符。另见 " +"[method nocasecmp_to] 和 [method naturalnocasecmp_to]。" + +msgid "" +"Returns a single Unicode character from the decimal [param char]. You may " +"use [url=https://unicodelookup.com/]unicodelookup.com[/url] or [url=https://" +"www.unicode.org/charts/]unicode.org[/url] as points of reference.\n" +"[codeblock]\n" +"print(String.chr(65)) # Prints \"A\"\n" +"print(String.chr(129302)) # Prints \"🤖\" (robot face emoji)\n" +"[/codeblock]" +msgstr "" +"根据十进制数 [param char] 返回单一 Unicode 字符。你可以用 [url=https://" +"unicodelookup.com/]unicodelookup.com[/url] 和 [url=https://www.unicode.org/" +"charts/]unicode.org[/url] 作为参考。\n" +"[codeblock]\n" +"print(String.chr(65)) # 输出 \"A\"\n" +"print(String.chr(129302)) # 输出 \"🤖\"(机器人脸 Emoji)\n" +"[/codeblock]" + +msgid "" +"Returns [code]true[/code] if the string contains [param what]. In GDScript, " +"this corresponds to the [code]in[/code] operator.\n" +"[codeblocks]\n" +"[gdscript]\n" +"print(\"Node\".contains(\"de\")) # Prints true\n" +"print(\"team\".contains(\"I\")) # Prints false\n" +"print(\"I\" in \"team\") # Prints false\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.Print(\"Node\".Contains(\"de\")); // Prints true\n" +"GD.Print(\"team\".Contains(\"I\")); // Prints false\n" +"[/csharp]\n" +"[/codeblocks]\n" +"If you need to know where [param what] is within the string, use [method " +"find]." +msgstr "" +"如果该字符串包含 [param what],则返回 [code]true[/code]。在 GDScript 中对应 " +"[code]in[/code] 运算符。\n" +"[codeblocks]\n" +"[gdscript]\n" +"print(\"Node\".contains(\"de\")) # 输出 true\n" +"print(\"team\".contains(\"I\")) # 输出 false\n" +"print(\"I\" in \"team\") # 输出 false\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.Print(\"Node\".Contains(\"de\")); // 输出 true\n" +"GD.Print(\"team\".Contains(\"I\")); // 输出 false\n" +"[/csharp]\n" +"[/codeblocks]\n" +"如果想要知道 [param what] 在该字符串中的位置,请使用 [method find]。" + +msgid "" +"Returns the number of occurrences of the substring [param what] between " +"[param from] and [param to] positions. If [param to] is 0, the search " +"continues until the end of the string." +msgstr "" +"返回子串 [param what] 在 [param from] 和 [param to] 位置之间出现的次数。如果 " +"[param to] 为 0,会在剩余字符串中继续搜索。" + +msgid "" +"Returns the number of occurrences of the substring [param what] between " +"[param from] and [param to] positions, [b]ignoring case[/b]. If [param to] " +"is 0, the search continues until the end of the string." +msgstr "" +"返回子串 [param what] 在 [param from] 和 [param to] 位置之间出现的次数,[b]忽" +"略大小写[/b]。如果 [param to] 为 0,会在剩余字符串中继续搜索。" msgid "" "Returns a copy of the string with indentation (leading tabs and spaces) " @@ -24484,16 +44565,1238 @@ msgstr "" "返回删除了缩进(前导制表符和空格)的字符串副本。添加缩进请参阅 [method " "indent]。" +msgid "" +"Returns [code]true[/code] if the string ends with the given [param text]. " +"See also [method begins_with]." +msgstr "" +"如果该字符串以给定的 [param text] 结束,则返回 [code]true[/code]。另见 " +"[method begins_with]。" + +msgid "" +"Returns the index of the [b]first[/b] [b]case-insensitive[/b] occurrence of " +"[param what] in this string, or [code]-1[/code] if there are none. The " +"starting search index can be specified with [param from], continuing to the " +"end of the string." +msgstr "" +"返回这个字符串中 [param what] [b]首次[/b]出现的索引,[b]不区分大小写[/b],不" +"存在时则为 [code]-1[/code]。搜索的起点可以用 [param from] 指定,终点为该字符" +"串的末尾。" + +msgid "" +"If the string is a valid file path, returns the base directory name.\n" +"[codeblock]\n" +"var dir_path = \"/path/to/file.txt\".get_base_dir() # dir_path is \"/path/" +"to\"\n" +"[/codeblock]" +msgstr "" +"如果该字符串是有效的文件路径,则返回基础目录名称。\n" +"[codeblock]\n" +"var dir_path = \"/path/to/file.txt\".get_base_dir() # dir_path 为 \"/path/" +"to\"\n" +"[/codeblock]" + +msgid "" +"If the string is a valid file path, returns the full file path, without the " +"extension.\n" +"[codeblock]\n" +"var base = \"/path/to/file.txt\".get_basename() # base is \"/path/to/file\"\n" +"[/codeblock]" +msgstr "" +"如果该字符串是有效的文件路径,则返回完整文件路径,不包括扩展名。\n" +"[codeblock]\n" +"var base = \"/path/to/file.txt\".get_basename() # base 为 \"/path/to/file\"\n" +"[/codeblock]" + +msgid "" +"If the string is a valid file name or path, returns the file extension " +"without the leading period ([code].[/code]). Otherwise, returns an empty " +"string.\n" +"[codeblock]\n" +"var a = \"/path/to/file.txt\".get_extension() # a is \"txt\"\n" +"var b = \"cool.txt\".get_extension() # b is \"txt\"\n" +"var c = \"cool.font.tres\".get_extension() # c is \"tres\"\n" +"var d = \".pack1\".get_extension() # d is \"pack1\"\n" +"\n" +"var e = \"file.txt.\".get_extension() # e is \"\"\n" +"var f = \"file.txt..\".get_extension() # f is \"\"\n" +"var g = \"txt\".get_extension() # g is \"\"\n" +"var h = \"\".get_extension() # h is \"\"\n" +"[/codeblock]" +msgstr "" +"如果该字符串是有效的文件名或路径,则返回该文件的扩展名,不含开头的点号" +"([code].[/code])。否则返回空字符串。\n" +"[codeblock]\n" +"var a = \"/path/to/file.txt\".get_extension() # a 为 \"txt\"\n" +"var b = \"cool.txt\".get_extension() # b 为 \"txt\"\n" +"var c = \"cool.font.tres\".get_extension() # c 为 \"tres\"\n" +"var d = \".pack1\".get_extension() # d 为 \"pack1\"\n" +"\n" +"var e = \"file.txt.\".get_extension() # e 为 \"\"\n" +"var f = \"file.txt..\".get_extension() # f 为 \"\"\n" +"var g = \"txt\".get_extension() # g 为 \"\"\n" +"var h = \"\".get_extension() # h 为 \"\"\n" +"[/codeblock]" + +msgid "" +"If the string is a valid file path, returns the file name, including the " +"extension.\n" +"[codeblock]\n" +"var file = \"/path/to/icon.png\".get_file() # file is \"icon.png\"\n" +"[/codeblock]" +msgstr "" +"如果该字符串是有效的文件路径,则返回文件名,包括扩展名。\n" +"[codeblock]\n" +"var file = \"/path/to/icon.png\".get_file() # file 为 \"icon.png\"\n" +"[/codeblock]" + +msgid "" +"Splits the string using a [param delimiter] and returns the substring at " +"index [param slice]. Returns an empty string if the [param slice] does not " +"exist.\n" +"This is faster than [method split], if you only need one substring.\n" +"[b]Example:[/b]\n" +"[codeblock]\n" +"print(\"i/am/example/hi\".get_slice(\"/\", 2)) # Prints \"example\"\n" +"[/codeblock]" +msgstr "" +"使用分隔符 [param delimiter] 拆分该字符串,返回索引为 [param slice] 的子串。" +"如果 [param slice] 不存在则返回空字符串。\n" +"只需要一个子串时这个方法比 [method split] 快。\n" +"[b]示例:[/b]\n" +"[codeblock]\n" +"print(\"i/am/example/hi\".get_slice(\"/\", 2)) # 输出 \"example\"\n" +"[/codeblock]" + +msgid "" +"Returns the total number of slices when the string is split with the given " +"[param delimiter] (see [method split])." +msgstr "" +"返回使用给定的分隔符 [param delimiter] 拆分该字符串后切片的总数(见 [method " +"split])。" + +msgid "" +"Splits the string using a Unicode character with code [param delimiter] and " +"returns the substring at index [param slice]. Returns an empty string if the " +"[param slice] does not exist.\n" +"This is faster than [method split], if you only need one substring." +msgstr "" +"使用 Unicode 字符码分隔符 [param delimiter] 拆分该字符串,返回索引为 [param " +"slice] 的子串。如果 [param slice] 不存在则返回空字符串。\n" +"只需要一个子串时这个方法比 [method split] 快。" + +msgid "" +"Returns the 32-bit hash value representing the string's contents.\n" +"[b]Note:[/b] Strings with equal hash values are [i]not[/i] guaranteed to be " +"the same, as a result of hash collisions. On the countrary, strings with " +"different hash values are guaranteed to be different." +msgstr "" +"返回代表该字符串内容的 32 位哈希值。\n" +"[b]注意:[/b]由于哈希碰撞的缘故,内容相同的字符串[i]不一定[/i]会得到相同的哈" +"希值。而相对的是,哈希不同的字符串一定不同。" + +msgid "" +"Converts the string representing a hexadecimal number into an [int]. The " +"string may be optionally prefixed with [code]\"0x\"[/code], and an " +"additional [code]-[/code] prefix for negative numbers.\n" +"[codeblocks]\n" +"[gdscript]\n" +"print(\"0xff\".hex_to_int()) # Prints 255\n" +"print(\"ab\".hex_to_int()) # Prints 171\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.Print(\"0xff\".HexToInt()); // Prints 255\n" +"GD.Print(\"ab\".HexToInt()); // Prints 171\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"将表示十六进制数的字符串转换为 [int]。该字符串可以前缀 [code]\"0x\"[/code]," +"负数可以前缀 [code]-[/code]。\n" +"[codeblocks]\n" +"[gdscript]\n" +"print(\"0xff\".hex_to_int()) # 输出 255\n" +"print(\"ab\".hex_to_int()) # 输出 171\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.Print(\"0xff\".HexToInt()); // 输出 255\n" +"GD.Print(\"ab\".HexToInt()); // 输出 171\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Converts [param size] which represents a number of bytes into a human-" +"readable form.\n" +"The result is in [url=https://en.wikipedia.org/wiki/" +"Binary_prefix#IEC_prefixes]IEC prefix format[/url], which may end in either " +"[code]\"B\"[/code], [code]\"KiB\"[/code], [code]\"MiB\"[/code], " +"[code]\"GiB\"[/code], [code]\"TiB\"[/code], [code]\"PiB\"[/code], or " +"[code]\"EiB\"[/code]." +msgstr "" +"将表示字节数的 [param size] 转换为人类可读的形式。\n" +"结果使用 [url=https://zh.wikipedia.org/wiki/" +"%E4%BA%8C%E9%80%B2%E4%BD%8D%E5%89%8D%E7%BD%AE%E8%A9%9E]IEC 词头[/url],结尾可" +"能是 [code]\"B\"[/code]、[code]\"KiB\"[/code]、[code]\"MiB\"[/code]、" +"[code]\"GiB\"[/code]、[code]\"TiB\"[/code]、[code]\"PiB\"[/code] 或 " +"[code]\"EiB\"[/code]。" + +msgid "" +"Indents every line of the string with the given [param prefix]. Empty lines " +"are not indented. See also [method dedent] to remove indentation.\n" +"For example, the string can be indented with two tabulations using " +"[code]\"\\t\\t\"[/code], or four spaces using [code]\" \"[/code]." +msgstr "" +"使用前缀 [param prefix] 将该字符串中的每一行进行缩进。空行不缩进。移除缩进请" +"参阅 [method dedent]。\n" +"例如,该字符串可以用 [code]\"\\t\\t\"[/code] 缩进两个制表位,用 [code]\" " +"\"[/code] 缩进四个空格。" + +msgid "Inserts [param what] at the given [param position] in the string." +msgstr "在该字符串中的 [param position] 位置插入 [param what]。" + +msgid "" +"Returns [code]true[/code] if the string is a path to a file or directory, " +"and its starting point is explicitly defined. This method is the opposite of " +"[method is_relative_path].\n" +"This includes all paths starting with [code]\"res://\"[/code], " +"[code]\"user://\"[/code], [code]\"C:\\\"[/code], [code]\"/\"[/code], etc." +msgstr "" +"如果该字符串为文件或目录的路径,并且显式指定了起点,则返回 [code]true[/" +"code]。这个方法与 [method is_relative_path] 相反。\n" +"包括以 [code]\"res://\"[/code]、[code]\"user://\"[/code]、[code]\"C:\\\"[/" +"code]、[code]\"/\"[/code] 等开头的路径。" + +msgid "" +"Returns [code]true[/code] if the string's length is [code]0[/code] " +"([code]\"\"[/code]). See also [method length]." +msgstr "" +"如果该字符串的长度为 [code]0[/code]([code]\"\"[/code]),则返回 [code]true[/" +"code]。另见 [method length]。" + +msgid "" +"Returns [code]true[/code] if the string is a path, and its starting point is " +"dependent on context. The path could begin from the current directory, or " +"the current [Node] (if the string is derived from a [NodePath]), and may " +"sometimes be prefixed with [code]\"./\"[/code]. This method is the opposite " +"of [method is_absolute_path]." +msgstr "" +"如果该字符串为文件或目录的路径,并且起点依赖于上下文,则返回 [code]true[/" +"code]。路径可以是从当前目录开始,也可以是从当前 [Node] 开始(如果该字符串是" +"从 [NodePath] 得到的),有时候也可以是使用了 [code]\"./\"[/code] 前缀。这个方" +"法与 [method is_absolute_path] 相反。" + +msgid "" +"Returns [code]true[/code] if all characters of this string can be found in " +"[param text] in their original order.\n" +"[codeblock]\n" +"var text = \"Wow, incredible!\"\n" +"\n" +"print(\"inedible\".is_subsequence_of(text)) # Prints true\n" +"print(\"Word!\".is_subsequence_of(text)) # Prints true\n" +"print(\"Window\".is_subsequence_of(text)) # Prints false\n" +"print(\"\".is_subsequence_of(text)) # Prints true\n" +"[/codeblock]" +msgstr "" +"如果这个字符串中的所有字符都能在 [param text] 中按照原始顺序找到,则返回 " +"[code]true[/code]。\n" +"[codeblock]\n" +"var text = \"Wow, incredible!\"\n" +"\n" +"print(\"inedible\".is_subsequence_of(text)) # 输出 true\n" +"print(\"Word!\".is_subsequence_of(text)) # 输出 true\n" +"print(\"Window\".is_subsequence_of(text)) # 输出 false\n" +"print(\"\".is_subsequence_of(text)) # 输出 true\n" +"[/codeblock]" + +msgid "" +"Returns [code]true[/code] if all characters of this string can be found in " +"[param text] in their original order, [b]ignoring case[/b]." +msgstr "" +"如果这个字符串中的所有字符都能在 [param text] 中按照原始顺序找到,[b]忽略大小" +"写[/b],则返回 [code]true[/code]。" + +msgid "" +"Returns [code]true[/code] if this string does not contain characters that " +"are not allowed in file names ([code]:[/code] [code]/[/code] [code]\\[/code] " +"[code]?[/code] [code]*[/code] [code]\"[/code] [code]|[/code] [code]%[/code] " +"[code]<[/code] [code]>[/code])." +msgstr "" +"如果该字符串不包含文件名中不允许的字符,则返回 [code]true[/code](不允许的字" +"符有:[code]:[/code] [code]/[/code] [code]\\[/code] [code]?[/code] [code]*[/" +"code] [code]\"[/code] [code]|[/code] [code]%[/code] [code]<[/code] [code]>[/" +"code])。" + +msgid "" +"Returns [code]true[/code] if this string represents a valid floating-point " +"number. A valid float may contain only digits, one decimal point ([code].[/" +"code]), and the exponent letter ([code]e[/code]). It may also be prefixed " +"with a positive ([code]+[/code]) or negative ([code]-[/code]) sign. Any " +"valid integer is also a valid float (see [method is_valid_int]). See also " +"[method to_float].\n" +"[codeblock]\n" +"print(\"1.7\".is_valid_float()) # Prints true\n" +"print(\"24\".is_valid_float()) # Prints true\n" +"print(\"7e3\".is_valid_float()) # Prints true\n" +"print(\"Hello\".is_valid_float()) # Prints false\n" +"[/codeblock]" +msgstr "" +"如果该字符串代表有效的浮点数,则返回 [code]true[/code]。浮点数只能包含数字、" +"一个小数点([code].[/code])以及指数字符([code]e[/code])。还可以前缀正号" +"([code]+[/code])或负号([code]-[/code])。有效的整数同时也是有效的浮点数" +"(见 [method is_valid_int])。另见 [method to_float]。\n" +"[codeblock]\n" +"print(\"1.7\".is_valid_float()) # 输出 true\n" +"print(\"24\".is_valid_float()) # 输出 true\n" +"print(\"7e3\".is_valid_float()) # 输出 true\n" +"print(\"Hello\".is_valid_float()) # 输出 false\n" +"[/codeblock]" + +msgid "" +"Returns [code]true[/code] if this string is a valid hexadecimal number. A " +"valid hexadecimal number only contains digits or letters [code]A[/code] to " +"[code]F[/code] (either uppercase or lowercase), and may be prefixed with a " +"positive ([code]+[/code]) or negative ([code]-[/code]) sign.\n" +"If [param with_prefix] is [code]true[/code], the hexadecimal number needs to " +"prefixed by [code]\"0x\"[/code] to be considered valid.\n" +"[codeblock]\n" +"print(\"A08E\".is_valid_hex_number()) # Prints true\n" +"print(\"-AbCdEf\".is_valid_hex_number()) # Prints true\n" +"print(\"2.5\".is_valid_hex_number()) # Prints false\n" +"\n" +"print(\"0xDEADC0DE\".is_valid_hex_number(true)) # Prints true\n" +"[/codeblock]" +msgstr "" +"如果该字符串代表有效的十六进制数,则返回 [code]true[/code]。有效的十六进制数" +"只能包含数字或字母 [code]A[/code] 到 [code]F[/code](大小写均可),还可以前缀" +"正号([code]+[/code])或负号([code]-[/code])。\n" +"如果 [param with_prefix] 为 [code]true[/code],则十六进制数需要有 " +"[code]\"0x\"[/code] 前缀才算有效。\n" +"[codeblock]\n" +"print(\"A08E\".is_valid_hex_number()) # 输出 true\n" +"print(\"-AbCdEf\".is_valid_hex_number()) # 输出 true\n" +"print(\"2.5\".is_valid_hex_number()) # 输出 false\n" +"\n" +"print(\"0xDEADC0DE\".is_valid_hex_number(true)) # 输出 true\n" +"[/codeblock]" + +msgid "" +"Returns [code]true[/code] if this string is a valid color in hexadecimal " +"HTML notation. The string must be a hexadecimal value (see [method " +"is_valid_hex_number]) of either 3, 4, 6 or 8 digits, and may be prefixed by " +"a hash sign ([code]#[/code]). Other HTML notations for colors, such as names " +"or [code]hsl()[/code], are not considered valid. See also [method Color." +"html]." +msgstr "" +"如果该字符串是有效的十六进制 HTML 颜色标记,则返回 [code]true[/code]。该字符" +"串必须为 3 位、4 位、6 位或 8 位字符的十六进制值(见 [method " +"is_valid_hex_number]),也可以带有井号前缀([code]#[/code])。名称、" +"[code]hsl()[/code] 等其他 HTML 颜色标记法无效。另见 [method Color.html]。" + +msgid "" +"Returns [code]true[/code] if this string is a valid identifier. A valid " +"identifier may contain only letters, digits and underscores ([code]_[/" +"code]), and the first character may not be a digit.\n" +"[codeblock]\n" +"print(\"node_2d\".is_valid_identifier()) # Prints true\n" +"print(\"TYPE_FLOAT\".is_valid_identifier()) # Prints true\n" +"print(\"1st_method\".is_valid_identifier()) # Prints false\n" +"print(\"MyMethod#2\".is_valid_identifier()) # Prints false\n" +"[/codeblock]" +msgstr "" +"如果该字符串为有效的标识符,则返回 [code]true[/code]。有效的标识符仅可以包含" +"字母、数字和下划线([code]_[/code]),第一个字符不能为数字。\n" +"[codeblock]\n" +"print(\"node_2d\".is_valid_identifier()) # 输出 true\n" +"print(\"TYPE_FLOAT\".is_valid_identifier()) # 输出 true\n" +"print(\"1st_method\".is_valid_identifier()) # 输出 false\n" +"print(\"MyMethod#2\".is_valid_identifier()) # 输出 false\n" +"[/codeblock]" + +msgid "" +"Returns [code]true[/code] if this string represents a valid integer. A valid " +"integer only contains digits, and may be prefixed with a positive ([code]+[/" +"code]) or negative ([code]-[/code]) sign. See also [method to_int].\n" +"[codeblock]\n" +"print(\"7\".is_valid_int()) # Prints true\n" +"print(\"1.65\".is_valid_int()) # Prints false\n" +"print(\"Hi\".is_valid_int()) # Prints false\n" +"print(\"+3\".is_valid_int()) # Prints true\n" +"print(\"-12\".is_valid_int()) # Prints true\n" +"[/codeblock]" +msgstr "" +"如果该字符串代表有效的整数,则返回 [code]true[/code]。有效的整数仅可以包含数" +"字,还可以前缀正号([code]+[/code])或负号([code]-[/code])。另见 [method " +"to_int]。\n" +"[codeblock]\n" +"print(\"7\".is_valid_int()) # 输出 true\n" +"print(\"1.65\".is_valid_int()) # 输出 false\n" +"print(\"Hi\".is_valid_int()) # 输出 false\n" +"print(\"+3\".is_valid_int()) # 输出 true\n" +"print(\"-12\".is_valid_int()) # 输出 true\n" +"[/codeblock]" + +msgid "" +"Returns [code]true[/code] if this string represents a well-formatted IPv4 or " +"IPv6 address. This method considers [url=https://en.wikipedia.org/wiki/" +"Reserved_IP_addresses]reserved IP addresses[/url] such as [code]\"0.0.0.0\"[/" +"code] and [code]\"ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff\"[/code] as valid." +msgstr "" +"如果该字符串表示格式正确的 IPv4 或 IPv6 地址,则返回 [code]true[/code]。这个" +"方法认为 [code]0.0.0.0[/code]、[code]\"ffff:ffff:ffff:ffff:ffff:ffff:ffff:" +"ffff\"[/code] 等[url=https://zh.wikipedia.org/wiki/" +"%E4%BF%9D%E7%95%99IP%E5%9C%B0%E5%9D%80]保留 IP 地址[/url]是有效的。" + +msgid "" +"Returns a copy of the string with special characters escaped using the JSON " +"standard. Because it closely matches the C standard, it is possible to use " +"[method c_unescape] to unescape the string, if necessary." +msgstr "" +"返回该字符串的副本,使用 JSON 标准对特殊字符进行转义。因为与 C 标准非常类似," +"所以需要时可以用 [method c_unescape] 取消转义。" + +msgid "" +"Returns the first [param length] characters from the beginning of the " +"string. If [param length] is negative, strips the last [param length] " +"characters from the string's end.\n" +"[codeblock]\n" +"print(\"Hello World!\".left(3)) # Prints \"Hel\"\n" +"print(\"Hello World!\".left(-4)) # Prints \"Hello Wo\"\n" +"[/codeblock]" +msgstr "" +"返回该字符串开头的前 [param length] 个字符。如果 [param length] 为负,则会从" +"该字符串的末尾剥离最后 [param length] 个字符。\n" +"[codeblock]\n" +"print(\"Hello World!\".left(3)) # 输出 \"Hel\"\n" +"print(\"Hello World!\".left(-4)) # 输出 \"Hello Wo\"\n" +"[/codeblock]" + +msgid "" +"Returns the number of characters in the string. Empty strings ([code]\"\"[/" +"code]) always return [code]0[/code]. See also [method is_empty]." +msgstr "" +"返回该字符串中的字符数。空字符串([code]\"\"[/code])始终返回 [code]0[/" +"code]。另见 [method is_empty]。" + +msgid "" +"Formats the string to be at least [param min_length] long by adding [param " +"character]s to the left of the string, if necessary. See also [method rpad]." +msgstr "" +"必要时在该字符串的左侧添加若干 [param character] 字符,使其长度至少为 [param " +"min_length]。另见 [method rpad]。" + +msgid "" +"Removes a set of characters defined in [param chars] from the string's " +"beginning. See also [method rstrip].\n" +"[b]Note:[/b] [param chars] is not a prefix. Use [method trim_prefix] to " +"remove a single prefix, rather than a set of characters." +msgstr "" +"从该字符串的开头移除 [param chars] 中定义的字符。另见 [method rstrip]。\n" +"[b]注意:[/b][param chars] 不是前缀。如果要移除前缀而不是一组字符,请使用 " +"[method trim_prefix]。" + +msgid "" +"Does a simple expression match (also called \"glob\" or \"globbing\"), where " +"[code]*[/code] matches zero or more arbitrary characters and [code]?[/code] " +"matches any single character except a period ([code].[/code]). An empty " +"string or empty expression always evaluates to [code]false[/code]." +msgstr "" +"进行简单的表达式匹配(也叫“通配”),[code]*[/code] 匹配零个或多个任意字符," +"[code]?[/code] 匹配除英文句号外的任意字符([code].[/code])。使用空字符串或空" +"表达式时始终为 [code]false[/code]。" + +msgid "" +"Does a simple [b]case-insensitive[/b] expression match, where [code]*[/code] " +"matches zero or more arbitrary characters and [code]?[/code] matches any " +"single character except a period ([code].[/code]). An empty string or empty " +"expression always evaluates to [code]false[/code]." +msgstr "" +"进行简单的[b]大小写不敏感[/b]表达式匹配(也叫“通配”),[code]*[/code] 匹配零" +"个或多个任意字符,[code]?[/code] 匹配除英文句号外的任意字符([code].[/" +"code])。使用空字符串或空表达式时始终为 [code]false[/code]。" + +msgid "" +"Returns the [url=https://en.wikipedia.org/wiki/MD5]MD5 hash[/url] of the " +"string as a [PackedByteArray]." +msgstr "" +"返回该字符串的 [url=https://zh.wikipedia.org/wiki/MD5]MD5 哈希[/url],类型为 " +"[PackedByteArray]。" + +msgid "" +"Returns the [url=https://en.wikipedia.org/wiki/MD5]MD5 hash[/url] of the " +"string as another [String]." +msgstr "" +"返回该字符串的 [url=https://zh.wikipedia.org/wiki/MD5]MD5 哈希[/url],类型 " +"[String]。" + +msgid "" +"Performs a [b]case-insensitive[/b], [i]natural order[/i] comparison to " +"another string. Returns [code]-1[/code] if less than, [code]1[/code] if " +"greater than, or [code]0[/code] if equal. \"Less than\" or \"greater than\" " +"are determined by the [url=https://en.wikipedia.org/wiki/" +"List_of_Unicode_characters]Unicode code points[/url] of each string, which " +"roughly matches the alphabetical order. Internally, lowercase characters are " +"converted to uppercase for the comparison.\n" +"When used for sorting, natural order comparison orders sequences of numbers " +"by the combined value of each digit as is often expected, instead of the " +"single digit's value. A sorted sequence of numbered strings will be [code]" +"[\"1\", \"2\", \"3\", ...][/code], not [code][\"1\", \"10\", \"2\", " +"\"3\", ...][/code].\n" +"With different string lengths, returns [code]1[/code] if this string is " +"longer than the [param to] string, or [code]-1[/code] if shorter. Note that " +"the length of empty strings is [i]always[/i] [code]0[/code].\n" +"To get a [bool] result from a string comparison, use the [code]==[/code] " +"operator instead. See also [method nocasecmp_to] and [method casecmp_to]." +msgstr "" +"与另一个字符串进行[b]不区分大小写[/b]的[i]自然顺序[/i]比较。小于时返回 " +"[code]-1[/code]、大于时返回 [code]1[/code]、等于时返回 [code]0[/code]。“小" +"于”和“大于”比较的是字符串中的 [url=https://zh.wikipedia.org/wiki/" +"Unicode%E5%AD%97%E7%AC%A6%E5%88%97%E8%A1%A8]Unicode 码位[/url],大致与字母表" +"顺序一致。内部实现时,会将小写字符转换为大写后进行比较。\n" +"使用自然顺序进行排序时,会和常见预期一样将连续的数字进行组合,而不是一个个数" +"字进行比较。排序后的数列为 [code][\"1\", \"2\", \"3\", ...][/code] 而不是 " +"[code][\"1\", \"10\", \"2\", \"3\", ...][/code]。\n" +"如果字符串长度不同,这个字符串比 [param to] 字符串长时返回 [code]1[/code],短" +"时返回 [code]-1[/code]。请注意空字符串的长度[i]始终[/i]为 [code]0[/code]。\n" +"如果想在比较字符串时获得 [bool] 返回值,请改用 [code]==[/code] 运算符。另见 " +"[method nocasecmp_to] 和 [method casecmp_to]。" + +msgid "" +"Performs a [b]case-insensitive[/b] comparison to another string. Returns " +"[code]-1[/code] if less than, [code]1[/code] if greater than, or [code]0[/" +"code] if equal. \"Less than\" or \"greater than\" are determined by the " +"[url=https://en.wikipedia.org/wiki/List_of_Unicode_characters]Unicode code " +"points[/url] of each string, which roughly matches the alphabetical order. " +"Internally, lowercase characters are converted to uppercase for the " +"comparison.\n" +"With different string lengths, returns [code]1[/code] if this string is " +"longer than the [param to] string, or [code]-1[/code] if shorter. Note that " +"the length of empty strings is [i]always[/i] [code]0[/code].\n" +"To get a [bool] result from a string comparison, use the [code]==[/code] " +"operator instead. See also [method casecmp_to] and [method " +"naturalnocasecmp_to]." +msgstr "" +"与另一个字符串进行[b]不区分大小写[/b]的比较。小于时返回 [code]-1[/code]、大于" +"时返回 [code]1[/code]、等于时返回 [code]0[/code]。“小于”和“大于”比较的是字符" +"串中的 [url=https://zh.wikipedia.org/wiki/" +"Unicode%E5%AD%97%E7%AC%A6%E5%88%97%E8%A1%A8]Unicode 码位[/url],大致与字母表" +"顺序一致。内部实现时,会将小写字符转换为大写后进行比较。\n" +"如果字符串长度不同,这个字符串比 [param to] 字符串长时返回 [code]1[/code],短" +"时返回 [code]-1[/code]。请注意空字符串的长度[i]始终[/i]为 [code]0[/code]。\n" +"如果想在比较字符串时获得 [bool] 返回值,请改用 [code]==[/code] 运算符。另见 " +"[method casecmp_to] 和 [method naturalnocasecmp_to]。" + +msgid "" +"Converts a [float] to a string representation of a decimal number, with the " +"number of decimal places specified in [param decimals].\n" +"If [param decimals] is [code]-1[/code] as by default, the string " +"representation may only have up to 14 significant digits, with digits before " +"the decimal point having priority over digits after.\n" +"Trailing zeros are not included in the string. The last digit is rounded, " +"not truncated.\n" +"[b]Example:[/b]\n" +"[codeblock]\n" +"String.num(3.141593) # Returns \"3.141593\"\n" +"String.num(3.141593, 3) # Returns \"3.142\"\n" +"String.num(3.14159300) # Returns \"3.141593\"\n" +"\n" +"# Here, the last digit will be rounded up,\n" +"# which reduces the total digit count, since trailing zeros are removed:\n" +"String.num(42.129999, 5) # Returns \"42.13\"\n" +"\n" +"# If `decimals` is not specified, the maximum number of significant digits " +"is 14:\n" +"String.num(-0.0000012345432123454321) # Returns \"-0.00000123454321\"\n" +"String.num(-10000.0000012345432123454321) # Returns \"-10000.0000012345\"\n" +"[/codeblock]" +msgstr "" +"将 [float] 转换为十进制小数的字符串表示,小数点位数由 [param decimals] 指" +"定。\n" +"如果 [param decimals] 为默认的 [code]-1[/code],该字符串表示可能最多只有 14 " +"位有效数字,小数点前的数字优先于小数点后的数字。\n" +"该字符串中不包含后缀的零。最后一位数字会四舍五入,而不是截断。\n" +"[b]示例:[/b]\n" +"[codeblock]\n" +"String.num(3.141593) # 返回 \"3.141593\"\n" +"String.num(3.141593, 3) # 返回 \"3.142\"\n" +"String.num(3.14159300) # 返回 \"3.141593\"\n" +"\n" +"# 此处的最后一位数字会进位,\n" +"# 数字位数会减少,因为后缀的零会被移除:\n" +"String.num(42.129999, 5) # 返回 \"42.13\"\n" +"\n" +"# 如果没有指定 `decimals`,最大有效位数为 14:\n" +"String.num(-0.0000012345432123454321) # 返回 \"-0.00000123454321\"\n" +"String.num(-10000.0000012345432123454321) # 返回 \"-10000.0000012345\"\n" +"[/codeblock]" + +msgid "" +"Converts the given [param number] to a string representation, with the given " +"[param base].\n" +"By default, [param base] is set to decimal ([code]10[/code]). Other common " +"bases in programming include binary ([code]2[/code]), [url=https://en." +"wikipedia.org/wiki/Octal]octal[/url] ([code]8[/code]), hexadecimal " +"([code]16[/code]).\n" +"If [param capitalize_hex] is [code]true[/code], digits higher than 9 are " +"represented in uppercase." +msgstr "" +"将给定的数字 [param number] 转换为字符串表示,进位制由 [param base] 给定。\n" +"默认情况下 [param base] 为十进制([code]10[/code])。编程中常见的进位制还有二" +"进制([code]2[/code])、[url=https://zh.wikipedia.org/wiki/" +"%E5%85%AB%E8%BF%9B%E5%88%B6]八进制[/url]([code]8[/code])、十六进制" +"([code]16[/code])。\n" +"如果 [param capitalize_hex] 为 [code]true[/code],比 9 大的数位会大写。" + +msgid "" +"Converts the given [param number] to a string representation, in scientific " +"notation.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var n = -5.2e8\n" +"print(n) # Prints -520000000\n" +"print(String.NumScientific(n)) # Prints -5.2e+08\n" +"[/gdscript]\n" +"[csharp]\n" +"// This method is not implemented in C#.\n" +"// Use `string.ToString()` with \"e\" to achieve similar results.\n" +"var n = -5.2e8f;\n" +"GD.Print(n); // Prints -520000000\n" +"GD.Print(n.ToString(\"e1\")); // Prints -5.2e+008\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Note:[/b] In C#, this method is not implemented. To achieve similar " +"results, see C#'s [url=https://learn.microsoft.com/en-us/dotnet/standard/" +"base-types/standard-numeric-format-strings]Standard numeric format strings[/" +"url]" +msgstr "" +"将给定的数字 [param number] 转换为字符串表示,使用科学记数法。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var n = -5.2e8\n" +"print(n) # 输出 -520000000\n" +"print(String.NumScientific(n)) # 输出 -5.2e+08\n" +"[/gdscript]\n" +"[csharp]\n" +"// 这个方法没有在 C# 中实现。\n" +"// 请在 `string.ToString()` 中使用 \"e\" 来实现类似的结果。\n" +"var n = -5.2e8f;\n" +"GD.Print(n); // 输出 -520000000\n" +"GD.Print(n.ToString(\"e1\")); // 输出 -5.2e+008\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]注意:[/b]这个方法没有在 C# 中实现。要实现类似的效果,见 C# 的" +"[url=https://learn.microsoft.com/en-us/dotnet/standard/base-types/standard-" +"numeric-format-strings]标准数字格式字符串[/url]" + +msgid "" +"Converts the given unsigned [int] to a string representation, with the given " +"[param base].\n" +"By default, [param base] is set to decimal ([code]10[/code]). Other common " +"bases in programming include binary ([code]2[/code]), [url=https://en." +"wikipedia.org/wiki/Octal]octal[/url] ([code]8[/code]), hexadecimal " +"([code]16[/code]).\n" +"If [param capitalize_hex] is [code]true[/code], digits higher than 9 are " +"represented in uppercase." +msgstr "" +"将给定的无符号 [int] 转换为字符串表示,进位制由 [param base] 给定。\n" +"默认情况下 [param base] 为十进制([code]10[/code])。编程中常见的进位制还有二" +"进制([code]2[/code])、[url=https://zh.wikipedia.org/wiki/" +"%E5%85%AB%E8%BF%9B%E5%88%B6]八进制[/url]([code]8[/code])、十六进制" +"([code]16[/code])。\n" +"如果 [param capitalize_hex] 为 [code]true[/code],比 9 大的数位会大写。" + +msgid "" +"Formats the string representing a number to have an exact number of [param " +"digits] [i]after[/i] the decimal point." +msgstr "格式化表示数字的字符串,使其小数点[i]后[/i]的位数为 [param digits]。" + +msgid "" +"Formats the string representing a number to have an exact number of [param " +"digits] [i]before[/i] the decimal point." +msgstr "格式化表示数字的字符串,使其小数点[i]前[/i]的位数为 [param digits]。" + +msgid "" +"Concatenates [param file] at the end of the string as a subpath, adding " +"[code]/[/code] if necessary.\n" +"[b]Example:[/b] [code]\"this/is\".path_join(\"path\") == \"this/is/path\"[/" +"code]." +msgstr "" +"将 [param file] 作为子路径连接到该字符串的末尾,必要时会添加 [code]/[/" +"code]。\n" +"[b]示例:[/b][code]\"this/is\".path_join(\"path\") == \"this/is/path\"[/" +"code]。" + +msgid "" +"Repeats this string a number of times. [param count] needs to be greater " +"than [code]0[/code]. Otherwise, returns an empty string." +msgstr "" +"将该字符串重复若干次。次数 [param count] 需要大于[code]0[/code] 。否则返回空" +"字符串。" + +msgid "" +"Replaces all occurrences of [param what] inside the string with the given " +"[param forwhat]." +msgstr "将该字符串中出现的所有 [param what] 都替换为给定的 [param forwhat]。" + +msgid "" +"Replaces all [b]case-insensitive[/b] occurrences of [param what] inside the " +"string with the given [param forwhat]." +msgstr "" +"将该字符串中出现的所有 [param what] 都替换为给定的 [param forwhat],[b]大小写" +"不敏感[/b]。" + +msgid "" +"Returns the index of the [b]last[/b] occurrence of [param what] in this " +"string, or [code]-1[/code] if there are none. The search's start can be " +"specified with [param from], continuing to the beginning of the string. This " +"method is the reverse of [method find]." +msgstr "" +"返回这个字符串中 [param what] [b]最后一次[/b]出现时的索引,不存在时则为 " +"[code]-1[/code]。搜索的起点可以用 [param from] 指定,终点为该字符串的末尾。这" +"个方法与 [method find] 相对。" + +msgid "" +"Returns the index of the [b]last[/b] [b]case-insensitive[/b] occurrence of " +"[param what] in this string, or [code]-1[/code] if there are none. The " +"starting search index can be specified with [param from], continuing to the " +"beginning of the string. This method is the reverse of [method findn]." +msgstr "" +"返回这个字符串中 [param what] [b]最后一次[/b]出现时的索引,[b]不区分大小写[/" +"b],不存在时则为 [code]-1[/code]。搜索的起点可以用 [param from] 指定,终点为" +"该字符串的末尾。这个方法与 [method findn] 相对。" + +msgid "" +"Returns the last [param length] characters from the end of the string. If " +"[param length] is negative, strips the first [param length] characters from " +"the string's beginning.\n" +"[codeblock]\n" +"print(\"Hello World!\".right(3)) # Prints \"ld!\"\n" +"print(\"Hello World!\".right(-4)) # Prints \"o World!\"\n" +"[/codeblock]" +msgstr "" +"返回该字符串末尾的最后 [param length] 个字符。如果 [param length] 为负,则会" +"从该字符串的开头剥离前 [param length] 个字符。\n" +"[codeblock]\n" +"print(\"Hello World!\".right(3)) # 输出 \"ld!\"\n" +"print(\"Hello World!\".right(-4)) # 输出 \"o World!\"\n" +"[/codeblock]" + +msgid "" +"Formats the string to be at least [param min_length] long, by adding [param " +"character]s to the right of the string, if necessary. See also [method lpad]." +msgstr "" +"必要时在该字符串的右侧添加若干 [param character] 字符,使其长度至少为 [param " +"min_length]。另见 [method lpad]。" + +msgid "" +"Splits the string using a [param delimiter] and returns an array of the " +"substrings, starting from the end of the string. The splits in the returned " +"array appear in the same order as the original string. If [param delimiter] " +"is an empty string, each substring will be a single character.\n" +"If [param allow_empty] is [code]false[/code], empty strings between adjacent " +"delimiters are excluded from the array.\n" +"If [param maxsplit] is greater than [code]0[/code], the number of splits may " +"not exceed [param maxsplit]. By default, the entire string is split, which " +"is mostly identical to [method split].\n" +"[b]Example:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"var some_string = \"One,Two,Three,Four\"\n" +"var some_array = some_string.rsplit(\",\", true, 1)\n" +"\n" +"print(some_array.size()) # Prints 2\n" +"print(some_array[0]) # Prints \"One,Two,Three\"\n" +"print(some_array[1]) # Prints \"Four\"\n" +"[/gdscript]\n" +"[csharp]\n" +"// In C#, there is no String.RSplit() method.\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"使用分隔符 [param delimiter] 将该字符串从末尾开始进行拆分,返回子字符串数组。" +"返回的数组中,每部分的出现顺序与它们在原字符串中的出现顺序一致。如果 [param " +"delimiter] 为空,则子串为单个字符。\n" +"如果 [param allow_empty] 为 [code]false[/code],数组中会排除相邻分隔符之间的" +"空字符串。\n" +"如果 [param maxsplit] 大于 [code]0[/code],则拆分次数不能超过 [param " +"maxsplit]。默认拆分整个字符串,基本与 [method split] 一致。\n" +"[b]示例:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"var some_string = \"One,Two,Three,Four\"\n" +"var some_array = some_string.rsplit(\",\", true, 1)\n" +"\n" +"print(some_array.size()) # 输出 2\n" +"print(some_array[0]) # 输出 \"One,Two,Three\"\n" +"print(some_array[1]) # 输出 \"Four\"\n" +"[/gdscript]\n" +"[csharp]\n" +"// C# 中没有 String.RSplit() 方法。\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Removes a set of characters defined in [param chars] from the string's end. " +"See also [method lstrip].\n" +"[b]Note:[/b] [param chars] is not a suffix. Use [method trim_suffix] to " +"remove a single suffix, rather than a set of characters." +msgstr "" +"从该字符串的结尾移除 [param chars] 中定义的字符。另见 [method rstrip]。\n" +"[b]注意:[/b][param chars] 不是后缀。如果要移除后缀而不是一组字符,请使用 " +"[method trim_suffix]。" + +msgid "" +"Returns the [url=https://en.wikipedia.org/wiki/SHA-1]SHA-1[/url] hash of the " +"string as a [PackedByteArray]." +msgstr "" +"返回该字符串的 [url=https://zh.wikipedia.org/wiki/SHA-1]SHA-1[/url] 哈希,类" +"型为 [PackedByteArray]。" + +msgid "" +"Returns the [url=https://en.wikipedia.org/wiki/SHA-1]SHA-1[/url] hash of the " +"string as another [String]." +msgstr "" +"返回该字符串的 [url=https://zh.wikipedia.org/wiki/SHA-1]SHA-1[/url] 哈希,类" +"型为 [String]。" + +msgid "" +"Returns the [url=https://en.wikipedia.org/wiki/SHA-2]SHA-256[/url] hash of " +"the string as a [PackedByteArray]." +msgstr "" +"返回该字符串的 [url=https://zh.wikipedia.org/wiki/SHA-2]SHA-256[/url] 哈希," +"类型为 [PackedByteArray]。" + +msgid "" +"Returns the [url=https://en.wikipedia.org/wiki/SHA-2]SHA-256[/url] hash of " +"the string as another [String]." +msgstr "" +"返回该字符串的 [url=https://zh.wikipedia.org/wiki/SHA-2]SHA-256[/url] 哈希," +"类型为 [String]。" + +msgid "" +"Returns the similarity index ([url=https://en.wikipedia.org/wiki/" +"S%C3%B8rensen%E2%80%93Dice_coefficient]Sorensen-Dice coefficient[/url]) of " +"this string compared to another. A result of [code]1.0[/code] means totally " +"similar, while [code]0.0[/code] means totally dissimilar.\n" +"[codeblock]\n" +"print(\"ABC123\".similarity(\"ABC123\")) # Prints 1.0\n" +"print(\"ABC123\".similarity(\"XYZ456\")) # Prints 0.0\n" +"print(\"ABC123\".similarity(\"123ABC\")) # Prints 0.8\n" +"print(\"ABC123\".similarity(\"abc123\")) # Prints 0.4\n" +"[/codeblock]" +msgstr "" +"返回该字符串与另一个字符串的相似指数([url=https://zh.wikipedia.org/wiki/" +"Dice%E7%B3%BB%E6%95%B0]索伦森-戴斯系数[/url])。结果为 [code]1.0[/code] 表示" +"完全相似,[code]0.0[/code] 表示完全不相似。\n" +"[codeblock]\n" +"print(\"ABC123\".similarity(\"ABC123\")) # 输出 1.0\n" +"print(\"ABC123\".similarity(\"XYZ456\")) # 输出 0.0\n" +"print(\"ABC123\".similarity(\"123ABC\")) # 输出 0.8\n" +"print(\"ABC123\".similarity(\"abc123\")) # 输出 0.4\n" +"[/codeblock]" + +msgid "" +"If the string is a valid file path, converts the string into a canonical " +"path. This is the shortest possible path, without [code]\"./\"[/code], and " +"all the unnecessary [code]\"..\"[/code] and [code]\"/\"[/code].\n" +"[codeblock]\n" +"var simple_path = \"./path/to///../file\".simplify_path()\n" +"print(simple_path) # Prints \"path/file\"\n" +"[/codeblock]" +msgstr "" +"如果该字符串为有效的文件路径,则将其转换为规范路径。规范路径是最短路径,不带 " +"[code]\"./\"[/code] 和所有不必要的 [code]\"..\"[/code] 和 [code]\"/\"[/" +"code]。\n" +"[codeblock]\n" +"var simple_path = \"./path/to///../file\".simplify_path()\n" +"print(simple_path) # 输出 \"path/file\"\n" +"[/codeblock]" + +msgid "" +"Splits the string using a [param delimiter] and returns an array of the " +"substrings. If [param delimiter] is an empty string, each substring will be " +"a single character. This method is the opposite of [method join].\n" +"If [param allow_empty] is [code]false[/code], empty strings between adjacent " +"delimiters are excluded from the array.\n" +"If [param maxsplit] is greater than [code]0[/code], the number of splits may " +"not exceed [param maxsplit]. By default, the entire string is split.\n" +"[b]Example:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"var some_array = \"One,Two,Three,Four\".split(\",\", true, 2)\n" +"\n" +"print(some_array.size()) # Prints 3\n" +"print(some_array[0]) # Prints \"One\"\n" +"print(some_array[1]) # Prints \"Two\"\n" +"print(some_array[2]) # Prints \"Three,Four\"\n" +"[/gdscript]\n" +"[csharp]\n" +"// C#'s `Split()` does not support the `maxsplit` parameter.\n" +"var someArray = \"One,Two,Three\".Split(\",\");\n" +"\n" +"GD.Print(someArray[0]); // Prints \"One\"\n" +"GD.Print(someArray[1]); // Prints \"Two\"\n" +"GD.Print(someArray[2]); // Prints \"Three\"\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Note:[/b] If you only need one substring from the array, consider using " +"[method get_slice] which is faster. If you need to split strings with more " +"complex rules, use the [RegEx] class instead." +msgstr "" +"使用分隔符 [param delimiter] 将该字符串进行拆分,返回子字符串数组。如果 " +"[param delimiter] 为空,则子串为单个字符。这个方法与 [method join] 相对。\n" +"如果 [param allow_empty] 为 [code]false[/code],数组中会排除相邻分隔符之间的" +"空字符串。\n" +"如果 [param maxsplit] 大于 [code]0[/code],则拆分次数不能超过 [param " +"maxsplit]。默认拆分整个字符串。\n" +"[b]示例:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"var some_array = \"One,Two,Three,Four\".split(\",\", true, 2)\n" +"\n" +"print(some_array.size()) # 输出 3\n" +"print(some_array[0]) # 输出 \"One\"\n" +"print(some_array[1]) # 输出 \"Two\"\n" +"print(some_array[2]) # 输出 \"Three,Four\"\n" +"[/gdscript]\n" +"[csharp]\n" +"// C# 的 `Split()` 不支持 `maxsplit` 参数。\n" +"var someArray = \"One,Two,Three\".Split(\",\");\n" +"\n" +"GD.Print(someArray[0]); // 输出 \"One\"\n" +"GD.Print(someArray[1]); // 输出 \"Two\"\n" +"GD.Print(someArray[2]); // 输出 \"Three\"\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]注意:[/b]如果你只需要数组中的某一个子串,请考虑使用更快的 [method " +"get_slice]。如果你需要用更复杂的规则来拆分字符串,请改用 [RegEx] 类。" + +msgid "" +"Splits the string into floats by using a [param delimiter] and returns a " +"[PackedFloat64Array].\n" +"If [param allow_empty] is [code]false[/code], empty or invalid [float] " +"conversions between adjacent delimiters are excluded.\n" +"[codeblock]\n" +"var a = \"1,2,4.5\".split_floats(\",\") # a is [1.0, 2.0, 4.5]\n" +"var c = \"1| ||4.5\".split_floats(\"|\") # c is [1.0, 0.0, 0.0, 4.5]\n" +"var b = \"1| ||4.5\".split_floats(\"|\", false) # b is [1.0, 4.5]\n" +"[/codeblock]" +msgstr "" +"使用分隔符 [param delimiter] 将该字符串拆分为浮点数,返回 " +"[PackedFloat64Array]。\n" +"如果 [param allow_empty] 为 [code]false[/code],则会排除相邻分隔符之间为空或" +"无法转换为 [float] 的内容。\n" +"[codeblock]\n" +"var a = \"1,2,4.5\".split_floats(\",\") # a 为 [1.0, 2.0, 4.5]\n" +"var c = \"1| ||4.5\".split_floats(\"|\") # c 为 [1.0, 0.0, 0.0, 4.5]\n" +"var b = \"1| ||4.5\".split_floats(\"|\", false) # b 为 [1.0, 4.5]\n" +"[/codeblock]" + +msgid "" +"Strips all non-printable characters from the beginning and the end of the " +"string. These include spaces, tabulations ([code]\\t[/code]), and newlines " +"([code]\\n[/code] [code]\\r[/code]).\n" +"If [param left] is [code]false[/code], ignores the string's beginning. " +"Likewise, if [param right] is [code]false[/code], ignores the string's end." +msgstr "" +"从该字符串的开头和结尾剥离所有不可打印的字符。其中包括空格、制表符" +"([code]\\t[/code])以及换行符([code]\\n[/code] [code]\\r[/code])。\n" +"如果 [param left] 为 [code]false[/code],会忽略该字符串的开头。与此类似,如" +"果 [param right] 为 [code]false[/code],则会忽略该字符串的结尾。" + +msgid "" +"Strips all escape characters from the string. These include all non-" +"printable control characters of the first page of the ASCII table (values " +"from 0 to 31), such as tabulation ([code]\\t[/code]) and newline ([code]\\n[/" +"code], [code]\\r[/code]) characters, but [i]not[/i] spaces." +msgstr "" +"从该字符串中剥离所有转义字符。其中包括 ASCII 表第一页的所有不可打印控制字符" +"(值为 0 到 32),例如制表符(C 中的 [code]\\t[/code])和换行符([code]\\n[/" +"code] 和 [code]]\\r[/code]) 字符,但[i]不包括[/i]空格。" + +msgid "" +"Returns part of the string from the position [param from] with length [param " +"len]. If [param len] is [code]-1[/code] (as by default), returns the rest of " +"the string starting from the given position." +msgstr "" +"返回该字符串中的某一部分,位置从 [param from] 开始,长度为 [param len]。如果 " +"[param len] 为 [code]-1[/code](默认值),将返回开给定位置开始的剩余字符。" + +msgid "" +"Converts the string to an [url=https://en.wikipedia.org/wiki/ASCII]ASCII[/" +"url]/Latin-1 encoded [PackedByteArray]. This method is slightly faster than " +"[method to_utf8_buffer], but replaces all unsupported characters with spaces." +msgstr "" +"将该字符串转换为 [url=https://zh.wikipedia.org/wiki/ASCII]ASCII[/url]/" +"Latin-1 编码的 [PackedByteArray]。这个方法比 [method to_utf8_buffer] 稍快,但" +"会把不支持的字符都替换为空格。" + +msgid "Returns the string converted to [code]camelCase[/code]." +msgstr "返回将该字符串转换为小驼峰命名 [code]camelCase[/code] 的结果。" + +msgid "" +"Converts the string representing a decimal number into a [float]. This " +"method stops on the first non-number character, except the first decimal " +"point ([code].[/code]) and the exponent letter ([code]e[/code]). See also " +"[method is_valid_float].\n" +"[codeblock]\n" +"var a = \"12.35\".to_float() # a is 12.35\n" +"var b = \"1.2.3\".to_float() # b is 1.2\n" +"var c = \"12xy3\".to_float() # c is 12.0\n" +"var d = \"1e3\".to_float() # d is 1000.0\n" +"var e = \"Hello!\".to_int() # e is 0.0\n" +"[/codeblock]" +msgstr "" +"将代表十进制数的字符串转换为 [float]。该方法会在首个非数字字符处停止,除非是" +"首次遇到 [code].[/code](小数点)以及表示指数的 [code]e[/code]。另见 [method " +"is_valid_float]。\n" +"[codeblock]\n" +"var a = \"12.35\".to_float() # a 为 12.35\n" +"var b = \"1.2.3\".to_float() # b 为 1.2\n" +"var c = \"12xy3\".to_float() # c 为 12.0\n" +"var d = \"1e3\".to_float() # d 为 1000.0\n" +"var e = \"Hello!\".to_int() # e 为 0.0\n" +"[/codeblock]" + +msgid "" +"Converts the string representing an integer number into an [int]. This " +"method removes any non-number character and stops at the first decimal point " +"([code].[/code]). See also [method is_valid_int].\n" +"[codeblock]\n" +"var a = \"123\".to_int() # a is 123\n" +"var b = \"x1y2z3\".to_int() # b is 123\n" +"var c = \"-1.2.3\".to_int() # c is -1\n" +"var d = \"Hello!\".to_int() # d is 0\n" +"[/codeblock]" +msgstr "" +"将代表整数的字符串转换为 [int]。该方法会删除所有非数字字符,并在遇到 [code]." +"[/code] 后停止。另见 [method is_valid_int]。\n" +"[codeblock]\n" +"var a = \"123\".to_int() # a 为 123\n" +"var b = \"x1y2z3\".to_int() # b 为 123\n" +"var c = \"-1.2.3\".to_int() # c 为 -1\n" +"var d = \"Hello!\".to_int() # d 为 0\n" +"[/codeblock]" + msgid "Returns the string converted to lowercase." -msgstr "返回转换为小写的字符串。" +msgstr "返回将该字符串转换为小写的结果。" + +msgid "Returns the string converted to [code]PascalCase[/code]." +msgstr "返回将该字符串转换为大驼峰命名 [code]PascalCase[/code] 的结果。" + +msgid "Returns the string converted to [code]snake_case[/code]." +msgstr "返回将该字符串转换为蛇形命名 [code]snake_case[/code] 的结果。" msgid "Returns the string converted to uppercase." -msgstr "返回转换为大写的字符串。" +msgstr "返回将该字符串转换为大写的结果。" + +msgid "" +"Converts the string to a [url=https://en.wikipedia.org/wiki/UTF-16]UTF-16[/" +"url] encoded [PackedByteArray]." +msgstr "" +"将该字符串转换为 [url=https://zh.wikipedia.org/wiki/UTF-16]UTF-16[/url] 编码" +"的 [PackedByteArray]。" + +msgid "" +"Converts the string to a [url=https://en.wikipedia.org/wiki/UTF-32]UTF-32[/" +"url] encoded [PackedByteArray]." +msgstr "" +"将该字符串转换为 [url=https://zh.wikipedia.org/wiki/UTF-32]UTF-32[/url] 编码" +"的 [PackedByteArray]。" + +msgid "" +"Converts the string to a [url=https://en.wikipedia.org/wiki/UTF-8]UTF-8[/" +"url] encoded [PackedByteArray]. This method is slightly slower than [method " +"to_ascii_buffer], but supports all UTF-8 characters. For most cases, prefer " +"using this method." +msgstr "" +"将该字符串转换为 [url=https://zh.wikipedia.org/wiki/UTF-8]UTF-8[/url] 编码的 " +"[PackedByteArray]。这个方法比 [method to_ascii_buffer] 稍慢,但支持所有 " +"UTF-8 字符。大多数情况下请优先使用这个方法。" + +msgid "" +"Removes the given [param prefix] from the start of the string, or returns " +"the string unchanged." +msgstr "移除该字符串开头的 [param prefix] 前缀,否则原样返回该字符串。" + +msgid "" +"Removes the given [param suffix] from the end of the string, or returns the " +"string unchanged." +msgstr "移除该字符串末尾的 [param suffix] 后缀,否则原样返回该字符串。" + +msgid "Returns the character code at position [param at]." +msgstr "返回位于 [param at] 处的字符的代码。" + +msgid "" +"Decodes the string from its URL-encoded format. This method is meant to " +"properly decode the parameters in a URL when receiving an HTTP request.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var url = \"$DOCS_URL/?highlight=Godot%20Engine%3%docs\"\n" +"print(url.uri_decode()) # Prints \"$DOCS_URL/?highlight=Godot Engine:docs\"\n" +"[/gdscript]\n" +"[csharp]\n" +"var url = \"$DOCS_URL/?highlight=Godot%20Engine%3%docs\"\n" +"GD.Print(url.URIDecode()) // Prints \"$DOCS_URL/?highlight=Godot Engine:" +"docs\"\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"将该字符串从 URL 编码格式中解码。该方法的目的是在收到 HTTP 请求时正确解码 " +"URL 中的参数。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var url = \"$DOCS_URL/?highlight=Godot%20Engine%3%docs\"\n" +"print(url.uri_decode()) # 输出 \"$DOCS_URL/?highlight=Godot Engine:docs\"\n" +"[/gdscript]\n" +"[csharp]\n" +"var url = \"$DOCS_URL/?highlight=Godot%20Engine%3%docs\"\n" +"GD.Print(url.URIDecode()) // 输出 \"$DOCS_URL/?highlight=Godot Engine:" +"docs\"\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Encodes the string to URL-friendly format. This method is meant to properly " +"encode the parameters in a URL when sending an HTTP request.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var prefix = \"$DOCS_URL/?highlight=\"\n" +"var url = prefix + \"Godot Engine:docs\".uri_encode()\n" +"\n" +"print(url) # Prints \"$DOCS_URL/?highlight=Godot%20Engine%3%docs\"\n" +"[/gdscript]\n" +"[csharp]\n" +"var prefix = \"$DOCS_URL/?highlight=\";\n" +"var url = prefix + \"Godot Engine:docs\".URIEncode();\n" +"\n" +"GD.Print(url); // Prints \"$DOCS_URL/?highlight=Godot%20Engine%3%docs\"\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"将该字符串按照对 URL 友好的格式进行编码。该方法的目的是在发送 HTTP 请求时,正" +"确编码 URL 中的参数。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var prefix = \"$DOCS_URL/?highlight=\"\n" +"var url = prefix + \"Godot Engine:docs\".uri_encode()\n" +"\n" +"print(url) # 输出 \"$DOCS_URL/?highlight=Godot%20Engine%3%docs\"\n" +"[/gdscript]\n" +"[csharp]\n" +"var prefix = \"$DOCS_URL/?highlight=\";\n" +"var url = prefix + \"Godot Engine:docs\".URIEncode();\n" +"\n" +"GD.Print(url); // 输出 \"$DOCS_URL/?highlight=Godot%20Engine%3%docs\"\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Returns a copy of the string with all characters that are not allowed in " +"[method is_valid_filename] replaced with underscores." +msgstr "" +"返回该字符串的副本,所有 [method is_valid_filename] 中不允许的字符都会被替换" +"为下划线。" + +msgid "" +"Returns a copy of the string with all characters that are not allowed in " +"[member Node.name] removed ([code].[/code] [code]:[/code] [code]@[/code] " +"[code]/[/code] [code]\"[/code] [code]%[/code])." +msgstr "" +"返回该字符串的副本,所有 [member Node.name] 中不允许的字符都会被移除([code]." +"[/code] [code]:[/code] [code]@[/code] [code]/[/code] [code]\"[/code] " +"[code]%[/code]))。" + +msgid "" +"Returns a copy of the string with special characters escaped using the XML " +"standard. If [param escape_quotes] is [code]true[/code], the single quote " +"([code]'[/code]) and double quote ([code]\"[/code]) characters are also " +"escaped." +msgstr "" +"返回该字符串的副本,使用 XML 标准对特殊字符进行转义。如果 [param " +"escape_quotes] 为 [code]true[/code],则单引号([code]'[/code])和双引号" +"([code]\"[/code])字符也会被转义。" msgid "" "Returns a copy of the string with escaped characters replaced by their " "meanings according to the XML standard." -msgstr "返回根据 XML 标准将转义字符替换为其含义的字符串副本。" +msgstr "返回该字符串的副本,转义字符均按照 XML 标准使用本义代替。" + +msgid "" +"Returns [code]true[/code] if both strings do not contain the same sequence " +"of characters." +msgstr "如果两个字符串不以相同的字符序列开头,则返回 [code]true[/code]。" + +msgid "" +"Returns [code]true[/code] if this [String] is not equivalent to the given " +"[StringName]." +msgstr "" +"如果该 [String] 与给定的 [StringName] 不等价,则返回 [code]true[/code]。" + +msgid "" +"Appends [param right] at the end of this [String], also known as a string " +"concatenation." +msgstr "将 [param right] 追加到该 [String] 的末尾,也称作字符串连接。" + +msgid "" +"Returns [code]true[/code] if the left [String] comes before [param right] in " +"[url=https://en.wikipedia.org/wiki/List_of_Unicode_characters]Unicode order[/" +"url], which roughly matches the alphabetical order. Useful for sorting." +msgstr "" +"如果左侧的 [String] 比 [param right] 靠前,则返回 [code]true[/code]。使用的" +"是 [url=https://zh.wikipedia.org/wiki/" +"Unicode%E5%AD%97%E7%AC%A6%E5%88%97%E8%A1%A8]Unicode 顺序[/url],大致与字母表" +"顺序一致。可用于排序。" + +msgid "" +"Returns [code]true[/code] if the left [String] comes before [param right] in " +"[url=https://en.wikipedia.org/wiki/List_of_Unicode_characters]Unicode order[/" +"url], which roughly matches the alphabetical order, or if both are equal." +msgstr "" +"如果左侧的 [String] 比 [param right] 靠前,或两者相等,则返回 [code]true[/" +"code]。使用的是 [url=https://zh.wikipedia.org/wiki/" +"Unicode%E5%AD%97%E7%AC%A6%E5%88%97%E8%A1%A8]Unicode 顺序[/url],大致与字母表" +"顺序一致。" + +msgid "" +"Returns [code]true[/code] if both strings contain the same sequence of " +"characters." +msgstr "如果两个字符串以相同的字符序列开头,则返回 [code]true[/code]。" + +msgid "" +"Returns [code]true[/code] if this [String] is equivalent to the given " +"[StringName]." +msgstr "如果该 [String] 与给定的 [StringName] 等价,则返回 [code]true[/code]。" + +msgid "" +"Returns [code]true[/code] if the left [String] comes after [param right] in " +"[url=https://en.wikipedia.org/wiki/List_of_Unicode_characters]Unicode order[/" +"url], which roughly matches the alphabetical order. Useful for sorting." +msgstr "" +"如果左侧的 [String] 比 [param right] 靠后,则返回 [code]true[/code]。使用的" +"是 [url=https://zh.wikipedia.org/wiki/" +"Unicode%E5%AD%97%E7%AC%A6%E5%88%97%E8%A1%A8]Unicode 顺序[/url],大致与字母表" +"顺序一致。可用于排序。" + +msgid "" +"Returns [code]true[/code] if the left [String] comes after [param right] in " +"[url=https://en.wikipedia.org/wiki/List_of_Unicode_characters]Unicode order[/" +"url], which roughly matches the alphabetical order, or if both are equal." +msgstr "" +"如果左侧的 [String] 比 [param right] 靠后,或两者相等,则返回 [code]true[/" +"code]。使用的是 [url=https://zh.wikipedia.org/wiki/" +"Unicode%E5%AD%97%E7%AC%A6%E5%88%97%E8%A1%A8]Unicode 顺序[/url],大致与字母表" +"顺序一致。" + +msgid "" +"Returns a new [String] that only contains the character at [param index]. " +"Indices start from [code]0[/code]. If [param index] is greater or equal to " +"[code]0[/code], the character is fetched starting from the beginning of the " +"string. If [param index] is a negative value, it is fetched starting from " +"the end. Accessing a string out-of-bounds will cause a run-time error, " +"pausing the project execution if run from the editor." +msgstr "" +"返回只包含索引为 [param index] 的字符的新 [String]。索引从 [code]0[/code] 开" +"始。如果 [param index] 大于等于 [code]0[/code],则字符是从该字符串的开头开始" +"获取的。如果 [param index] 为负,则从末尾开始获取。越界访问字符串会导致运行时" +"错误,从编辑器中运行时会将项目暂停。" msgid "An optimized string type for unique names." msgstr "针对唯一名称优化的字符串类型。" @@ -24504,6 +45807,63 @@ msgstr "构造空的 [StringName]。" msgid "Constructs a [StringName] as a copy of the given [StringName]." msgstr "构造给定 [StringName] 的副本。" +msgid "" +"Creates a new [StringName] from the given [String]. In GDScript, " +"[code]StringName(\"example\")[/code] is equivalent to [code]&\"example\"[/" +"code]." +msgstr "" +"从给定的 [String] 创建 [StringName]。在 GDScript 中," +"[code]StringName(\"example\")[/code] 与 [code]&\"example\"[/code] 等价。" + +msgid "" +"Returns [code]true[/code] if this [StringName] is not equivalent to the " +"given [String]." +msgstr "" +"如果该 [StringName] 与给定的 [String] 不等价,则返回 [code]true[/code]。" + +msgid "" +"Returns [code]true[/code] if the [StringName] and [param right] do not refer " +"to the same name. Comparisons between [StringName]s are much faster than " +"regular [String] comparisons." +msgstr "" +"如果该 [StringName] 与 [param right] 不指向同一个名称,则返回 [code]true[/" +"code]。[StringName] 间的比较比常规 [String] 间的比较要快很多。" + +msgid "" +"Returns [code]true[/code] if this [StringName] is equivalent to the given " +"[String]." +msgstr "如果该 [StringName] 与给定的 [String] 等价,则返回 [code]true[/code]。" + +msgid "" +"Returns [code]true[/code] if the [StringName] and [param right] refer to the " +"same name. Comparisons between [StringName]s are much faster than regular " +"[String] comparisons." +msgstr "" +"如果该 [StringName] 与 [param right] 指向同一个名称,则返回 [code]true[/" +"code]。[StringName] 间的比较比常规 [String] 间的比较要快很多。" + +msgid "" +"Returns [code]true[/code] if the left [StringName] comes after [param right] " +"in [url=https://en.wikipedia.org/wiki/List_of_Unicode_characters]Unicode " +"order[/url], which roughly matches the alphabetical order. Useful for " +"sorting." +msgstr "" +"如果左侧的 [StringName] 比 [param right] 靠后,则返回 [code]true[/code]。使用" +"的是 [url=https://zh.wikipedia.org/wiki/" +"Unicode%E5%AD%97%E7%AC%A6%E5%88%97%E8%A1%A8]Unicode 顺序[/url],大致与字母表" +"顺序一致。可用于排序。" + +msgid "" +"Returns [code]true[/code] if the left [StringName] comes after [param right] " +"in [url=https://en.wikipedia.org/wiki/List_of_Unicode_characters]Unicode " +"order[/url], which roughly matches the alphabetical order, or if both are " +"equal." +msgstr "" +"如果左侧的 [StringName] 比 [param right] 靠后,或两者相等,则返回 " +"[code]true[/code]。使用的是 [url=https://zh.wikipedia.org/wiki/" +"Unicode%E5%AD%97%E7%AC%A6%E5%88%97%E8%A1%A8]Unicode 顺序[/url],大致与字母表" +"顺序一致。可用于排序。" + msgid "Base class for drawing stylized boxes for the UI." msgstr "用于为 UI 绘制风格化框的基类。" @@ -24528,6 +45888,9 @@ msgstr "" "[code]pressed[/code] 的 [StyleBox]之上。这样的行为有助于 [code]focus[/code] " "[StyleBox] 在不同节点上复用。" +msgid "Returns the default margin of the specified [enum Side]." +msgstr "返回指定边 [enum Side] 的默认边距。" + msgid "" "Returns the [CanvasItem] that handles its [constant CanvasItem." "NOTIFICATION_DRAW] or [method CanvasItem._draw] callback at this moment." @@ -24535,6 +45898,13 @@ msgstr "" "返回此时处理其 [constant CanvasItem.NOTIFICATION_DRAW] 或 [method CanvasItem." "_draw] 回调的 [CanvasItem]。" +msgid "" +"Returns the content margin offset for the specified [enum Side].\n" +"Positive values reduce size inwards, unlike [Control]'s margin values." +msgstr "" +"返回指定边 [enum Side] 的内容边距偏移量。\n" +"与 [Control] 的边距不同,正值会向内减小大小。" + msgid "Returns the minimum size that this stylebox can be shrunk to." msgstr "返回此样式盒可以缩小到的最小尺寸。" @@ -24546,6 +45916,13 @@ msgstr "" "返回样式盒的“偏移量”。这个辅助函数返回一个等价于 [code]Vector2(style." "get_margin(MARGIN_LEFT), style.get_margin(MARGIN_TOP))[/code] 的值。" +msgid "" +"Sets the default value of the specified [enum Side] to [param offset] pixels." +msgstr "将指定边 [enum Side] 的默认值设置为 [param offset] 像素。" + +msgid "Sets the default margin to [param offset] pixels for all sides." +msgstr "将所有边的默认边距设置为 [param offset] 像素。" + msgid "Test a position in a rectangle, return whether it passes the mask test." msgstr "测试矩形中的一个位置,返回它是否通过掩码测试。" @@ -24604,8 +45981,39 @@ msgid "" "Customizable [StyleBox] with a given set of parameters (no texture required)." msgstr "可通过一系列参数自定义的 [StyleBox](无需纹理) 。" +msgid "Returns the specified [enum Side]'s border width." +msgstr "返回指定边 [enum Side] 的边框宽度。" + msgid "Returns the smallest border width out of all four borders." -msgstr "返回所有四个边界中最小的边框宽度。" +msgstr "返回所有四条边中,最小的边框宽度。" + +msgid "" +"Returns the given [param corner]'s radius. See [enum Corner] for possible " +"values." +msgstr "返回给定角 [param corner] 的半径。可能的取值见 [enum Corner]。" + +msgid "Returns the size of the specified [enum Side]'s expand margin." +msgstr "返回指定边 [enum Side] 的扩展边距的大小。" + +msgid "Sets the specified [enum Side]'s border width to [param width] pixels." +msgstr "将指定边 [enum Side] 的边框宽度设置为 [param width] 像素。" + +msgid "Sets the border width to [param width] pixels for all sides." +msgstr "将所有边的边框宽度设置为 [param width] 像素。" + +msgid "" +"Sets the corner radius to [param radius] pixels for the given [param " +"corner]. See [enum Corner] for possible values." +msgstr "" +"将给定角 [param corner] 的圆角半径设置为 [param radius] 像素。可能的取值见 " +"[enum Corner]。" + +msgid "Sets the corner radius to [param radius] pixels for all corners." +msgstr "将所有角的圆角半径设置为 [param radius] 像素。" + +msgid "" +"Sets the expand margin to [param size] pixels for the specified [enum Side]." +msgstr "将指定边 [enum Side] 的扩展边距设置为 [param size] 像素。" msgid "" "Antialiasing draws a small ring around the edges, which fades to " @@ -24830,9 +46238,21 @@ msgid "" "cell is fully stretched. This makes it possible to design bordered styles " "regardless of the stylebox's size." msgstr "" -"基于纹理的九宫格 [StyleBox],类似于 [NinePatchRect]。这个样式盒会对纹理执行 " -"3×3 缩放,其中只有中心单元会被完全拉伸。这使得无论样式盒的大小如何,都可以设" -"计有边框的样式。" +"基于纹理的九宫格 [StyleBox],类似于 [NinePatchRect]。这种样式盒对纹理执行 " +"3×3 缩放,只有中心单元格会被完全拉伸。因此无论样式盒的大小如何,都可以设计带" +"边框的样式。" + +msgid "Returns the expand margin size of the specified [enum Side]." +msgstr "返回指定边 [enum Side] 的扩展边距大小。" + +msgid "Returns the margin size of the specified [enum Side]." +msgstr "返回指定边 [enum Side] 的边距大小。" + +msgid "Sets the margin to [param size] pixels for the specified [enum Side]." +msgstr "将指定边 [enum Side] 的边距设置为 [param size] 像素。" + +msgid "Sets the margin to [param size] pixels for all sides." +msgstr "将所有边的边距都设置为 [param size] 像素。" msgid "" "Controls how the stylebox's texture will be stretched or tiled horizontally. " @@ -24844,7 +46264,7 @@ msgid "" "Controls how the stylebox's texture will be stretched or tiled vertically. " "See [enum AxisStretchMode] for possible values." msgstr "" -"控制如何垂直拉伸或平铺 StyleBox 的纹理。可能的取值见 [enum AxisStretchMode]。" +"控制如何垂直拉伸或平铺样式盒的纹理。可能的取值见 [enum AxisStretchMode]。" msgid "" "If [code]true[/code], the nine-patch texture's center tile will be drawn." @@ -24853,7 +46273,7 @@ msgstr "如果为 [code]true[/code],将绘制九宫格纹理的中心图块。 msgid "" "Expands the bottom margin of this style box when drawing, causing it to be " "drawn larger than requested." -msgstr "绘制时扩展此样式盒的底部边距,使其绘制得比请求的大。" +msgstr "绘制时扩展此样式盒的下边距,使其绘制得比请求的大。" msgid "" "Expands the left margin of this style box when drawing, causing it to be " @@ -24944,6 +46364,19 @@ msgstr "" msgid "Creates a sub-view into the screen." msgstr "在屏幕中创建子视图。" +msgid "" +"[SubViewport] is a [Viewport] that isn't a [Window], i.e. it doesn't draw " +"anything by itself. To display something, [SubViewport]'s [member size] must " +"be non-zero and it should be either put inside a [SubViewportContainer] or " +"assigned to a [ViewportTexture]." +msgstr "" +"[SubViewport] 是 [Viewport] 但不是 [Window],即它本身不绘制任何内容。要显示内" +"容,[SubViewport] 的 [member size] 必须非零,并且应该被放在 " +"[SubViewportContainer] 内,或被分配给 [ViewportTexture]。" + +msgid "Using Viewports" +msgstr "使用视口" + msgid "3D in 2D Demo" msgstr "2D 中的 3D 演示" @@ -24956,6 +46389,16 @@ msgstr "动态分屏演示" msgid "3D Viewport Scaling Demo" msgstr "3D Viewport 缩放演示" +msgid "" +"The clear mode when the sub-viewport is used as a render target.\n" +"[b]Note:[/b] This property is intended for 2D usage." +msgstr "" +"该子视口用作渲染目标时的清除模式。\n" +"[b]注意:[/b]此属性适用于 2D 用途。" + +msgid "The update mode when the sub-viewport is used as a render target." +msgstr "该子视口用作渲染目标时的更新模式。" + msgid "Always clear the render target before drawing." msgstr "绘制前始终清除渲染目标。" @@ -24981,6 +46424,9 @@ msgstr "仅在渲染目标可见时更新渲染目标。这是默认值。" msgid "Always update the render target." msgstr "始终更新渲染目标。" +msgid "Control for holding [SubViewport]s." +msgstr "用于持有 [SubViewport] 的控件。" + msgid "Helper tool to create geometry." msgstr "创建几何图形的辅助工具。" @@ -25075,6 +46521,64 @@ msgstr "" "而你没有为第一个顶点提交这个信息,此信息可能根本就不会被使用。" msgid "" +"Stores data passed to [method set_custom] as half precision floats, and uses " +"only red and green color channels. See [constant Mesh.ARRAY_CUSTOM_RG_HALF]." +msgstr "" +"将传递给 [method set_custom] 的数据存储为半精度浮点数,只使用红色和绿色通道。" +"见 [constant Mesh.ARRAY_CUSTOM_RG_HALF]。" + +msgid "" +"Stores data passed to [method set_custom] as half precision floats and uses " +"all color channels. See [constant Mesh.ARRAY_CUSTOM_RGBA_HALF]." +msgstr "" +"将传递给 [method set_custom] 的数据存储为半精度浮点数,使用所有颜色通道。见 " +"[constant Mesh.ARRAY_CUSTOM_RGBA_HALF]。" + +msgid "" +"Stores data passed to [method set_custom] as full precision floats, and uses " +"only red color channel. See [constant Mesh.ARRAY_CUSTOM_R_FLOAT]." +msgstr "" +"将传递给 [method set_custom] 的数据存储为全精度浮点数,只使用红色通道。见 " +"[constant Mesh.ARRAY_CUSTOM_R_FLOAT]。" + +msgid "" +"Stores data passed to [method set_custom] as full precision floats, and uses " +"only red and green color channels. See [constant Mesh.ARRAY_CUSTOM_RG_FLOAT]." +msgstr "" +"将传递给 [method set_custom] 的数据存储为全精度浮点数,只使用红色和绿色通道。" +"见 [constant Mesh.ARRAY_CUSTOM_RG_FLOAT]。" + +msgid "" +"Stores data passed to [method set_custom] as full precision floats, and uses " +"only red, green and blue color channels. See [constant Mesh." +"ARRAY_CUSTOM_RGB_FLOAT]." +msgstr "" +"将传递给 [method set_custom] 的数据存储为全精度浮点数,只使用红色、绿色和蓝色" +"通道。见 [constant Mesh.ARRAY_CUSTOM_RGB_FLOAT]。" + +msgid "" +"Stores data passed to [method set_custom] as full precision floats, and uses " +"all color channels. See [constant Mesh.ARRAY_CUSTOM_RGBA_FLOAT]." +msgstr "" +"将传递给 [method set_custom] 的数据存储为全精度浮点数,使用所有颜色通道。见 " +"[constant Mesh.ARRAY_CUSTOM_RGBA_FLOAT]。" + +msgid "Each individual vertex can be influenced by only 4 bone weights." +msgstr "每个单独的顶点只能受到 4 个骨骼权重的影响。" + +msgid "Each individual vertex can be influenced by up to 8 bone weights." +msgstr "每个单独的顶点最多能够受到 8 个骨骼权重的影响。" + +msgid "Base Syntax highlighter resource for [TextEdit]." +msgstr "用于 [TextEdit] 的基础语法高亮器资源。" + +msgid "Font hinting mode." +msgstr "字体微调模式。" + +msgid "Tab bar control." +msgstr "选项卡栏控件。" + +msgid "" "Simple tabs control, similar to [TabContainer] but is only in charge of " "drawing tabs, not interacting with children." msgstr "" @@ -25083,6 +46587,9 @@ msgstr "" msgid "Adds a new tab." msgstr "添加新选项卡。" +msgid "Clears all tabs." +msgstr "清空所有选项卡。" + msgid "Moves the scroll view to make the tab visible." msgstr "移动滚动视图,使标签可见。" @@ -25096,12 +46603,51 @@ msgstr "" msgid "Returns the previously active tab index." msgstr "返回上一个活动选项卡的索引。" +msgid "Returns tab title language code." +msgstr "返回选项卡标题的语言代码。" + msgid "Returns the number of hidden tabs offsetted to the left." msgstr "返回向左偏移的隐藏选项卡的数量。" msgid "Returns tab [Rect2] with local position and size." msgstr "返回带有局部位置和大小的选项卡 [Rect2]。" +msgid "Returns tab title text base writing direction." +msgstr "返回选项卡标题文本的基础书写方向。" + +msgid "Returns the title of the tab at index [param tab_idx]." +msgstr "返回索引 [param tab_idx] 处的选项卡的标题。" + +msgid "" +"Returns [code]true[/code] if the tab at index [param tab_idx] is disabled." +msgstr "如果索引 [param tab_idx] 处的选项卡被禁用,则返回 [code]true[/code]。" + +msgid "" +"Returns [code]true[/code] if the tab at index [param tab_idx] is hidden." +msgstr "如果索引 [param tab_idx] 处的选项卡被隐藏,则返回 [code]true[/code]。" + +msgid "Moves a tab from [param from] to [param to]." +msgstr "将选项卡从 [param from] 移动到 [param to]。" + +msgid "Removes the tab at index [param tab_idx]." +msgstr "删除索引 [param tab_idx] 处的选项卡。" + +msgid "Sets an [param icon] for the tab at index [param tab_idx]." +msgstr "设置索引 [param tab_idx] 处的选项卡的图标。" + +msgid "" +"Sets language code of tab title used for line-breaking and text shaping " +"algorithms, if left empty current locale is used instead." +msgstr "" +"设置选项卡标题的语言代码,用于断行和文本塑形算法,如果留空则使用当前区域设" +"置。" + +msgid "Sets tab title base writing direction." +msgstr "设置选项卡标题的基础书写方向。" + +msgid "Sets a [param title] for the tab at index [param tab_idx]." +msgstr "设置索引 [param tab_idx] 处的选项卡的标题 [param title]。" + msgid "Select tab at index [code]tab_idx[/code]." msgstr "选择索引 [code]tab_idx[/code] 处的选项卡。" @@ -25109,6 +46655,12 @@ msgid "If [code]true[/code], tabs can be rearranged with mouse drag." msgstr "如果为 [code]true[/code],可以通过鼠标拖动重新排列选项卡。" msgid "" +"Sets the maximum width which all tabs should be limited to. Unlimited if set " +"to [code]0[/code]." +msgstr "" +"设置所有选项卡应被限制的最大宽度。如果设置为 [code]0[/code],则无限制。" + +msgid "" "if [code]true[/code], the mouse's scroll wheel can be used to navigate the " "scroll view." msgstr "如果为 [code]true[/code],鼠标的滚轮可用于导航滚动视图。" @@ -25144,6 +46696,18 @@ msgstr "单击选项卡时发出,即使它是当前选项卡。" msgid "Emitted when a tab is hovered by the mouse." msgstr "当鼠标悬停选项卡时发出。" +msgid "Places tabs to the left." +msgstr "将选项卡置于左侧。" + +msgid "Places tabs in the middle." +msgstr "将选项卡置于中间。" + +msgid "Places tabs to the right." +msgstr "将选项卡置于右侧。" + +msgid "Represents the size of the [enum AlignmentMode] enum." +msgstr "代表 [enum AlignmentMode] 枚举的大小。" + msgid "Never show the close buttons." msgstr "永远不会显示关闭按钮。" @@ -25154,7 +46718,7 @@ msgid "Show the close button on all tabs." msgstr "在所有选项卡上显示关闭按钮。" msgid "Represents the size of the [enum CloseButtonDisplayPolicy] enum." -msgstr "表示 [enum CloseButtonDisplayPolicy] 枚举的大小。" +msgstr "代表 [enum CloseButtonDisplayPolicy] 枚举的大小。" msgid "Font color of disabled tabs." msgstr "禁用选项卡的字体颜色。" @@ -25165,6 +46729,9 @@ msgstr "当前所选选项卡的字体颜色。" msgid "The font used to draw tab names." msgstr "用于绘制选项卡名称的字体。" +msgid "Font size of the tab names." +msgstr "选项卡名称的字体大小。" + msgid "The icon for the close button (see [member tab_close_display_policy])." msgstr "关闭按钮的图标(见 [member tab_close_display_policy])。" @@ -25210,9 +46777,21 @@ msgstr "选项卡容器。" msgid "Returns the child [Control] node located at the active tab index." msgstr "返回位于活动选项卡索引处的子 [Control] 节点。" +msgid "Returns the button icon from the tab at index [param tab_idx]." +msgstr "返回索引为 [param tab_idx] 的选项卡的按钮图标。" + +msgid "Returns the [Control] node from the tab at index [param tab_idx]." +msgstr "返回索引为 [param tab_idx] 的选项卡的 [Control] 节点。" + msgid "Returns the number of tabs." msgstr "返回选项卡的数量。" +msgid "Sets the button icon from the tab at index [param tab_idx]." +msgstr "设置索引为 [param tab_idx] 的选项卡的按钮图标。" + +msgid "Sets an icon for the tab at index [param tab_idx]." +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." @@ -25253,6 +46832,9 @@ msgstr "" msgid "Emitted when a tab is selected, even if it is the current tab." msgstr "选择选项卡时发出,即使它是当前选项卡。" +msgid "Space between tab's name and its icon." +msgstr "选项卡名称与其图标之间的间距。" + msgid "The icon for the menu button (see [method set_popup])." msgstr "菜单按钮的图标(见 [method set_popup])。" @@ -25267,6 +46849,21 @@ msgstr "背景填充的样式。" msgid "A TCP server." msgstr "TCP 服务器。" +msgid "" +"A TCP server. Listens to connections on a port and returns a [StreamPeerTCP] " +"when it gets an incoming connection.\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 "" +"TCP 服务器。监听端口上的连接,并在获得传入连接时返回 [StreamPeerTCP]。\n" +"[b]注意:[/b]导出到安卓时,在导出项目或使用一键部署之前,请务必在安卓导出预设" +"中开启 [code]INTERNET[/code] 权限。否则 Android 会阻止任何形式的网络通信。" + +msgid "Returns the local port this server is listening to." +msgstr "返回该服务器正在监听的本地端口。" + msgid "Returns [code]true[/code] if a connection is available for taking." msgstr "如果有连接可供获取,则返回 [code]true[/code]。" @@ -25275,6 +46872,28 @@ msgid "" "connections." msgstr "如果服务器当前正在侦听连接,则返回 [code]true[/code]。" +msgid "" +"Listen on the [param port] binding to [param bind_address].\n" +"If [param bind_address] is set as [code]\"*\"[/code] (default), the server " +"will listen on all available addresses (both IPv4 and IPv6).\n" +"If [param bind_address] is set as [code]\"0.0.0.0\"[/code] (for IPv4) or " +"[code]\"::\"[/code] (for IPv6), the server will listen on all available " +"addresses matching that IP type.\n" +"If [param bind_address] is set to any valid address (e.g. " +"[code]\"192.168.1.101\"[/code], [code]\"::1\"[/code], etc), the server will " +"only listen on the interface with that addresses (or fail if no interface " +"with the given address exists)." +msgstr "" +"在 [param port] 上监听与 [param bind_address] 绑定的地址。\n" +"如果 [param bind_address] 被设置为 [code]\"*\"[/code](默认),该服务器将监听" +"所有可用地址(包括 IPv4 和 IPv6)。\n" +"如果 [param bind_address] 被设置为 [code]\"0.0.0.0\"[/code](用于 IPv4)或 " +"[code]\"::\"[/code](用于 IPv6),该服务器将监听所有符合该 IP 类型的可用地" +"址。\n" +"如果 [param bind_address] 被设置为任何有效的地址(如 " +"[code]\"192.168.1.101\"[/code]、[code]\"::1\"[/code] 等),该服务器将只在具有" +"该地址的接口上监听(如果不存在具有该地址的接口则失败)。" + msgid "Stops listening." msgstr "停止监听。" @@ -25288,12 +46907,36 @@ msgstr "多行文本编辑控件。" msgid "Clears the undo history." msgstr "清除撤销历史。" +msgid "Deletes the selected text." +msgstr "删除选定的文本。" + msgid "Deselects the current selection." msgstr "取消当前选择。" +msgid "Returns the number of carets in this [TextEdit]." +msgstr "返回该 [TextEdit] 中的光标数。" + +msgid "Returns the [HScrollBar] used by [TextEdit]." +msgstr "设置该 [TextEdit] 所使用的 [HScrollBar]。" + msgid "Returns the text of a specific line." msgstr "返回特定行的文本。" +msgid "Returns the number of lines in the text." +msgstr "返回文本中的行数。" + +msgid "Returns the icon currently in [param gutter] at [param line]." +msgstr "返回边栏 [param gutter] 中,当前位于 [param line] 行的图标。" + +msgid "Returns the color currently in [param gutter] at [param line]." +msgstr "返回边栏 [param gutter] 中,当前位于 [param line] 行的颜色。" + +msgid "Returns the metadata currently in [param gutter] at [param line]." +msgstr "返回边栏 [param gutter] 中,当前位于 [param line] 行的元数据。" + +msgid "Returns the text currently in [param gutter] at [param line]." +msgstr "返回边栏 [param gutter] 中,当前位于 [param line] 行的文本。" + msgid "Returns the height of a largest line." msgstr "返回最大行的高度。" @@ -25303,8 +46946,8 @@ msgstr "返回给定行换行的次数。" msgid "Returns an array of [String]s representing each wrapped index." msgstr "返回代表各个换行索引的 [String] 数组。" -msgid "Returns the equivalent minimap line at [param position]" -msgstr "返回小地图 [param position] 处等价的行" +msgid "Returns the number of lines that may be drawn on the minimap." +msgstr "返回小地图上能够绘制的行数。" msgid "" "Returns the local position and size for the grapheme at the given [param " @@ -25315,11 +46958,11 @@ msgid "" "of the line, unlike [method get_pos_at_line_column] which returns the bottom " "side." msgstr "" -"返回字素的本地位置和大小,该字素位于给定行 [code]line[/code] 和列 " -"[code]column[/code]。如果返回的矩形中,位置的 [code]x[/code] 或 [code]y[/" -"code] 等于 [code]-1[/code],表示位于该控件的可视范围之外。\n" -"[b]注意:[/b]位置中的 Y 对应该行的顶部,而 [method get_pos_at_line_column] 返" -"回的则是底部。" +"返回给定 [param line] 和 [param column] 处的字素的局部位置和大小。如果返回的" +"矩形的 [code]x[/code] 或 [code]y[/code] 位置等于 [code]-1[/code],则该位置在" +"该控件的可视区域之外。\n" +"[b]注意:[/b]返回的矩形的 Y 位置对应于该行的顶部,不像 [method " +"get_pos_at_line_column] 返回底边。" msgid "Returns the text inside the selection." msgstr "返回选择内的文本。" @@ -25330,24 +46973,54 @@ msgstr "返回选择开始行。" msgid "Returns the selection end line." msgstr "返回选择结束行。" +msgid "Returns the [TextEdit]'s' tab size." +msgstr "返回该 [TextEdit] 的制表符大小。" + msgid "Returns the total width of all gutters and internal padding." msgstr "返回所有栏位及内部边距的总宽度。" +msgid "Returns the number of lines that may be drawn." +msgstr "返回可绘制的行数。" + +msgid "Returns the [VScrollBar] of the [TextEdit]." +msgstr "设置该 [TextEdit] 所使用的 [StyleBox]。" + msgid "Returns the number of visible lines, including wrapped text." msgstr "返回可见行数,包括自动换行。" +msgid "Returns the word at [param position]." +msgstr "返回位于 [param position] 的单词。" + msgid "Returns [code]true[/code] if a \"redo\" action is available." msgstr "有“重做”动作可用时返回 [code]true[/code]。" msgid "Returns [code]true[/code] if an \"undo\" action is available." msgstr "有“撤销”动作可用时返回 [code]true[/code]。" +msgid "Returns whether the gutter is clickable." +msgstr "返回该边栏是否可点击。" + +msgid "Returns whether the gutter is currently drawn." +msgstr "返回该边栏是否正被绘制。" + +msgid "Returns whether the gutter is overwritable." +msgstr "返回该边栏是否可覆写。" + +msgid "Returns whether the gutter on the given line is clickable." +msgstr "返回该边栏的给定行是否可点击。" + msgid "Returns if the given line is wrapped." msgstr "返回给定的行是否换行。" +msgid "Pastes the primary clipboard." +msgstr "粘贴主剪贴板。" + msgid "Perform redo operation." msgstr "执行重做操作。" +msgid "Removes all additional carets." +msgstr "移除所有额外的光标。" + msgid "" "Perform selection, from line/column to line/column.\n" "If [member selecting_enabled] is [code]false[/code], no selection will occur." @@ -25362,9 +47035,41 @@ msgstr "" "选择所有文本。\n" "如果 [member selecting_enabled] 为 [code]false[/code],则不会发生选择。" +msgid "Sets whether the gutter should be drawn." +msgstr "设置该边栏是否应被绘制。" + +msgid "Sets the name of the gutter." +msgstr "设置该边栏的名称。" + +msgid "Sets the gutter to overwritable. See [method merge_gutters]." +msgstr "设置该边栏为可覆写。见 [method merge_gutters]。" + +msgid "Sets the type of gutter." +msgstr "设置边栏的类型。" + +msgid "Set the width of the gutter." +msgstr "设置该边栏的宽度。" + msgid "Sets the text for a specific line." msgstr "设置特定行的文本。" +msgid "Sets the icon for [param gutter] on [param line] to [param icon]." +msgstr "将边栏 [param gutter] 在第 [param line] 行的图标设置为 [param icon]。" + +msgid "Sets the color for [param gutter] on [param line] to [param color]." +msgstr "将边栏 [param gutter] 在第 [param line] 行的颜色设置为 [param color]。" + +msgid "" +"Sets the metadata for [param gutter] on [param line] to [param metadata]." +msgstr "" +"将边栏 [param gutter] 在第 [param line] 行的元数据设置为 [param metadata]。" + +msgid "Sets the text for [param gutter] on [param line] to [param text]." +msgstr "将边栏 [param gutter] 在第 [param line] 行的文本设置为 [param text]。" + +msgid "Swaps the two lines." +msgstr "交换两行。" + msgid "Perform undo operation." msgstr "执行撤销操作。" @@ -25398,6 +47103,13 @@ msgid "The width, in pixels, of the minimap." msgstr "小地图的宽度(以像素为单位)。" msgid "" +"Text shown when the [TextEdit] is empty. It is [b]not[/b] the [TextEdit]'s " +"default value (see [member text])." +msgstr "" +"[TextEdit] 为空时显示的文本。它[b]不是[/b] [TextEdit] 的默认值(参见 [member " +"text])。" + +msgid "" "If there is a horizontal scrollbar, this determines the current horizontal " "scroll value in pixels." msgstr "如果有一个水平滚动条,这决定了当前的水平滚动值,单位是像素。" @@ -25417,9 +47129,15 @@ msgstr "" "如果为 [code]false[/code],用户或使用[method select]或[method select_all]方法" "都不能选择文本。" +msgid "Sets the [SyntaxHighlighter] to use." +msgstr "设置要使用的 [SyntaxHighlighter]。" + msgid "String value of the [TextEdit]." msgstr "[TextEdit] 的字符串值。" +msgid "Sets the line wrapping mode to use." +msgstr "设置要使用的换行模式。" + msgid "" "Pastes the clipboard text over the selected text (or at the cursor's " "position)." @@ -25443,6 +47161,21 @@ msgstr "搜索时匹配整个单词。" msgid "Search from end to beginning." msgstr "从头到尾搜索。" +msgid "Vertical line caret." +msgstr "垂直线光标。" + +msgid "Block caret." +msgstr "方块光标。" + +msgid "Draw a string." +msgstr "绘制字符串。" + +msgid "Draw an icon." +msgstr "绘制图标。" + +msgid "Custom draw." +msgstr "自定义绘制。" + msgid "" "Sets the highlight [Color] of multiple occurrences. [member " "highlight_all_occurrences] has to be enabled." @@ -25452,6 +47185,27 @@ msgstr "" msgid "Sets the [StyleBox] of this [TextEdit]." msgstr "设置这个 [TextEdit] 的 [StyleBox]。" +msgid "Aligns text to the given tab-stops." +msgstr "将文本与给定的制表位对齐。" + +msgid "Text writing direction." +msgstr "文本书写方向。" + +msgid "Line alignment rules. For more info see [TextServer]." +msgstr "行对齐规则。详细请参阅 [TextServer]。" + +msgid "Text orientation." +msgstr "文本朝向。" + +msgid "If set to [code]true[/code] text will display control characters." +msgstr "如果设置为 [code]true[/code],则将在文本中显示控制字符。" + +msgid "If set to [code]true[/code] text will display invalid characters." +msgstr "如果设置为 [code]true[/code],则将在文本中显示无效字符。" + +msgid "Text line width." +msgstr "文本行宽。" + msgid "Generate an [PrimitiveMesh] from the text." msgstr "从文本生成 [PrimitiveMesh]。" @@ -25481,12 +47235,176 @@ msgstr "" "生成的网格的深度,设为 [code]0.0[/code] 时只有正面,此时的 UV 布局会变为让正" "面占据整张纹理。" +msgid "Font size of the [TextMesh]'s text." +msgstr "该 [TextMesh] 文本的字体大小。" + +msgid "" +"Language code used for text shaping algorithms, if left empty current locale " +"is used instead." +msgstr "语言代码,用于文本塑形算法,如果留空则使用当前区域设置。" + +msgid "Vertical space between lines in multiline [TextMesh]." +msgstr "多行 [TextMesh] 中,行与行之间的垂直间距。" + msgid "The size of one pixel's width on the text to scale it in 3D." msgstr "文本上一个像素宽度的大小,以 3D 缩放。" msgid "The text to generate mesh from." msgstr "用于生成网格的文本。" +msgid "Interface for the fonts and complex text layouts." +msgstr "用于字体和复杂排版的接口。" + +msgid "" +"[TextServer] is the API backend for managing fonts, and rendering complex " +"text." +msgstr "[TextServer] 是用于管理字体、渲染复杂文本的 API 后端。" + +msgid "" +"Creates new buffer for complex text layout, with the given [param direction] " +"and [param orientation]. To free the resulting buffer, use [method free_rid] " +"method.\n" +"[b]Note:[/b] Direction is ignored if server does not support [constant " +"FEATURE_BIDI_LAYOUT] feature (supported by [TextServerAdvanced]).\n" +"[b]Note:[/b] Orientation is ignored if server does not support [constant " +"FEATURE_VERTICAL_LAYOUT] feature (supported by [TextServerAdvanced])." +msgstr "" +"使用给定的方向 [param direction] 和朝向 [param orientation] 新建缓冲区,用于" +"复杂排版。要释放生成的缓冲区,请使用 [method free_rid]方法。\n" +"[b]注意:[/b]如果服务器不支持 [constant FEATURE_BIDI_LAYOUT] 特性,则会忽略方" +"向([TextServerAdvanced] 支持)。\n" +"[b]注意:[/b]如果服务器不支持 [constant FEATURE_VERTICAL_LAYOUT] 特性,则会忽" +"略朝向([TextServerAdvanced] 支持)。" + +msgid "" +"Draws box displaying character hexadecimal code. Used for replacing missing " +"characters." +msgstr "绘制显示字符十六进制码的框。用于替换缺失的字符。" + +msgid "" +"Removes all rendered glyphs 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 all font sizes from the cache entry." +msgstr "从缓存条目中移除所有的字体大小。" + +msgid "" +"Removes all textures from font cache entry.\n" +"[b]Note:[/b] This function will not remove glyphs associated with the " +"texture, use [method font_remove_glyph] to remove them manually." +msgstr "" +"从字体缓存条目中移除所有的纹理。\n" +"[b]注意:[/b]该函数不会移除与纹理关联的字形,请使用 [method " +"font_remove_glyph] 手动移除。" + +msgid "" +"Draws single glyph into a canvas item at the position, using [param " +"font_rid] at the size [param size].\n" +"[b]Note:[/b] Glyph index is specific to the font, use glyphs indices " +"returned by [method shaped_text_get_glyphs] or [method " +"font_get_glyph_index].\n" +"[b]Note:[/b] If there are pending glyphs to render, calling this function " +"might trigger the texture cache update." +msgstr "" +"在画布项中某个位置绘制单个字形,使用的字体为 [param font_rid],大小为 [param " +"size]。\n" +"[b]注意:[/b]字形索引是特定于字体的,请使用 [method shaped_text_get_glyphs] " +"或 [method font_get_glyph_index] 返回的字形索引。\n" +"[b]注意:[/b]如果有待渲染的字形,调用这个函数可能会触发纹理缓存的更新。" + +msgid "" +"Draws single glyph outline of size [param outline_size] into a canvas item " +"at the position, using [param font_rid] at the size [param size].\n" +"[b]Note:[/b] Glyph index is specific to the font, use glyphs indices " +"returned by [method shaped_text_get_glyphs] or [method " +"font_get_glyph_index].\n" +"[b]Note:[/b] If there are pending glyphs to render, calling this function " +"might trigger the texture cache update." +msgstr "" +"在画布项中某个位置绘制单个字形轮廓,使用的字体为 [param font_rid],大小为 " +"[param size]。\n" +"[b]注意:[/b]字形索引是特定于字体的,请使用 [method shaped_text_get_glyphs] " +"或 [method font_get_glyph_index] 返回的字形索引。\n" +"[b]注意:[/b]如果有待渲染的字形,调用这个函数可能会触发纹理缓存的更新。" + +msgid "Returns font anti-aliasing mode." +msgstr "返回字体的抗锯齿模式。" + +msgid "Returns font embolden strength." +msgstr "返回字体的加粗力度。" + +msgid "Returns bitmap font fixed size." +msgstr "返回位图字体的固定大小。" + +msgid "Returns [code]true[/code] if font texture mipmap generation is enabled." +msgstr "如果启用了字体纹理 mipmap 生成,则返回 [code]true[/code]。" + +msgid "" +"Returns the font oversampling factor, shared by all fonts in the TextServer." +msgstr "返回字体过采样系数,由 TextServer 中的所有字体共享。" + +msgid "Returns size of the glyph." +msgstr "返回该字形的大小。" + +msgid "Returns font OpenType feature set override." +msgstr "返回字体 OpenType 特性集覆盖。" + +msgid "Sets size of the glyph." +msgstr "设置字形的大小。" + +msgid "Sets font hinting mode. Used by dynamic fonts only." +msgstr "设置字体微调模式。仅由动态字体使用。" + +msgid "Sets the font family name." +msgstr "设置该字体的家族名称。" + +msgid "Sets font OpenType feature set override." +msgstr "设置字体 OpenType 特性集覆盖。" + +msgid "Adds override for [method font_is_script_supported]." +msgstr "为 [method font_is_script_supported] 添加覆盖。" + +msgid "Sets the font style name." +msgstr "设置字体的样式名称。" + +msgid "Sets font subpixel glyph positioning mode." +msgstr "设置字体的次像素字形定位模式。" + +msgid "Sets font cache texture image data." +msgstr "设置字体的缓存纹理图像数据。" + +msgid "" +"Converts a number from the Western Arabic (0..9) to the numeral systems used " +"in [param language].\n" +"If [param language] is omitted, the active locale will be used." +msgstr "" +"将数字从阿拉伯数字(0..9)转换为 [param language] 语言的记数系统。\n" +"如果省略 [param language],则会使用激活的区域设置。" + +msgid "Returns the name of the server interface." +msgstr "返回该服务器接口的名称。" + +msgid "Returns [code]true[/code] if locale is right-to-left." +msgstr "如果区域设置为从右至左,则返回 [code]true[/code]。" + +msgid "" +"Converts [param number] from the numeral systems used in [param language] to " +"Western Arabic (0..9)." +msgstr "" +"将数字 [param number] 从 [param language] 的记数系统转换为阿拉伯数字" +"(0..9)。" + +msgid "Returns direction of the text." +msgstr "返回文本的方向。" + +msgid "Returns text orientation." +msgstr "返回文本朝向。" + msgid "Returns size of the text." msgstr "返回该文本的大小。" @@ -25508,6 +47426,60 @@ msgstr "" "返回字素的索引,该字素位于基线上指定像素偏移的位置,如果没有找到,则返回 " "[code]-1[/code]。" +msgid "Horizontal RGB subpixel layout." +msgstr "水平 RGB 次像素布局。" + +msgid "Horizontal BGR subpixel layout." +msgstr "水平 BGR 次像素布局。" + +msgid "Vertical RGB subpixel layout." +msgstr "垂直 RGB 次像素布局。" + +msgid "Vertical BGR subpixel layout." +msgstr "垂直 BGR 次像素布局。" + +msgid "Text direction is determined based on contents and current locale." +msgstr "文本的书写方向由根据内容和当前区域设置确定。" + +msgid "Text is written from left to right." +msgstr "文本从左至右书写。" + +msgid "Text is written from right to left." +msgstr "文本从右至左书写。" + +msgid "" +"Text writing direction is the same as base string writing direction. Used " +"for BiDi override only." +msgstr "文本的书写方向与基础字符串书写方向一致。仅用于 BiDi 覆盖。" + +msgid "Text is written horizontally." +msgstr "文本水平书写。" + +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" +"从右至左的文本从下到上垂直书写。" + +msgid "Do not justify text." +msgstr "不两端对齐文本。" + +msgid "Justify text by adding and removing kashidas." +msgstr "通过添加和移除 Kashida 来两端对齐文本。" + +msgid "Justify text by changing width of the spaces between the words." +msgstr "通过更改单词之间空格的宽度来两端对齐文本。" + +msgid "Remove trailing and leading spaces from the justified text." +msgstr "从两端对齐的文本中移除前缀和后缀的空格。" + +msgid "Only apply justification to the part of the text after the last tab." +msgstr "仅对最后一个制表符之后的文本应用两端对齐。" + +msgid "Autowrap is disabled." +msgstr "自动换行已禁用。" + msgid "Do not break the line." msgstr "不换行。" @@ -25581,6 +47553,42 @@ msgstr "禁用字体提示(更平滑但不那么清晰)。" msgid "Use the light font hinting mode." msgstr "使用浅色字体提示模式。" +msgid "TextServer supports simple text layouts." +msgstr "TextServer 支持简单排版。" + +msgid "TextServer supports bidirectional text layouts." +msgstr "TextServer 支持双向排版。" + +msgid "TextServer supports vertical layouts." +msgstr "TextServer 支持垂直布局。" + +msgid "TextServer supports complex text shaping." +msgstr "TextServer 支持复杂文本塑形。" + +msgid "TextServer supports justification using kashidas." +msgstr "TextServer 支持使用 kashida 进行两端对齐。" + +msgid "" +"TextServer supports complex line/word breaking rules (e.g. dictionary based)." +msgstr "TextServer 支持复杂断行/断词规则(例如基于字典)。" + +msgid "TextServer supports loading bitmap fonts." +msgstr "TextServer 支持加载位图字体。" + +msgid "TextServer supports loading dynamic (TrueType, OpeType, etc.) fonts." +msgstr "TextServer 支持加载动态字体(TrueType、OpeType 等)。" + +msgid "" +"TextServer supports multichannel signed distance field dynamic font " +"rendering." +msgstr "TextServer 支持多通道有符号距离场动态字体的渲染。" + +msgid "TextServer supports loading system fonts." +msgstr "TextServer 支持加载系统字体。" + +msgid "TextServer supports variable fonts." +msgstr "TextServer 支持可变字体。" + msgid "Contour point is on the curve." msgstr "轮廓点在曲线上。" @@ -25594,24 +47602,158 @@ msgid "" "Bézier arc." msgstr "轮廓点不在曲线上,而是作为三次贝塞尔曲线的控制点。" +msgid "Spacing for each glyph." +msgstr "每个字形的间距。" + msgid "Spacing for the space character." msgstr "空格字符的间距。" +msgid "Spacing at the top of the line." +msgstr "行顶部的间距。" + +msgid "Spacing at the bottom of the line." +msgstr "行底部的间距。" + +msgid "Font is bold." +msgstr "字体为粗体。" + +msgid "Use default Unicode BiDi algorithm." +msgstr "使用默认的 Unicode BiDi 算法。" + +msgid "BiDi override for URI." +msgstr "URI 的 BiDi 覆盖。" + +msgid "BiDi override for file path." +msgstr "文件路径的 BiDi 覆盖。" + +msgid "BiDi override for email." +msgstr "电子邮件的 BiDi 覆盖。" + +msgid "" +"BiDi override for lists.\n" +"Structured text options: list separator [code]String[/code]." +msgstr "" +"列表的 BiDi 覆盖。\n" +"结构化文本选项:列表分隔符 [code]String[/code]。" + +msgid "BiDi override for GDScript." +msgstr "GDScript 的 BiDi 覆盖。" + +msgid "User defined structured text BiDi override function." +msgstr "用户定义的结构化文本 BiDi 覆盖函数。" + +msgid "" +"Text Server using HarfBuzz, ICU and SIL Graphite to support BiDi, complex " +"text layouts and contextual OpenType features." +msgstr "" +"文本服务器,使用 HarfBuzz、ICU 和 SIL Graphite 来支持 BiDi、复杂排版和上下文 " +"OpenType 特性。" + +msgid "Base class for TextServer custom implementations (plugins)." +msgstr "TextServer 自定义实现(插件)的基类。" + +msgid "External TextServer implementations should inherit from this class." +msgstr "外部 TextServer 实现应该继承这个类。" + +msgid "" +"Fallback implementation of the Text Server, without BiDi and complex text " +"layout support." +msgstr "文本服务器的回退实现,不支持双向排版和复杂排版。" + +msgid "Manager for the font and complex text layout servers." +msgstr "字体和复杂排版服务器的管理器。" + +msgid "" +"[TextServerManager] is the API backend for loading, enumeration and " +"switching [TextServer]s.\n" +"[b]Note:[/b] Switching text server at runtime is possible, but will " +"invalidate all fonts and text buffers. Make sure to unload all controls, " +"fonts, and themes before doing so." +msgstr "" +"[TextServerManager] 是加载、枚举和切换 [TextServer] 的 API 后端。\n" +"[b]注意:[/b]文本服务器可以在运行时切换,但会导致所有字体和文本缓冲区失效。请" +"确保在切换之前卸载所有控件、字体和主题。" + +msgid "Registers an [TextServer] interface." +msgstr "注册 [TextServer] 接口。" + +msgid "Finds an interface by its name." +msgstr "按名称查找接口。" + +msgid "Returns the interface registered at a given index." +msgstr "返回在给定索引处注册的接口。" + +msgid "Returns the number of interfaces currently registered." +msgstr "返回当前注册的接口数。" + +msgid "" +"Returns a list of available interfaces the index and name of each interface." +msgstr "返回可用接口的列表,包含每个接口的索引号和名称。" + +msgid "Returns the primary [TextServer] interface currently in use." +msgstr "返回当前使用的主 [TextServer] 接口。" + +msgid "Sets the primary [TextServer] interface." +msgstr "设置主 [TextServer] 接口。" + msgid "Emitted when a new interface has been added." msgstr "添加新接口时触发。" msgid "Emitted when an interface is removed." msgstr "当接口被移除时触发。" +msgid "Base class for all texture types." +msgstr "所有纹理类型的基类。" + msgid "Texture for 2D and 3D." msgstr "用于 2D 和 3D 的纹理。" +msgid "Returns the texture height in pixels." +msgstr "返回该纹理的高度,单位为像素。" + +msgid "Returns the texture size in pixels." +msgstr "返回该纹理的大小,单位为像素。" + +msgid "Returns the texture width in pixels." +msgstr "返回该纹理的宽度,单位为像素。" + +msgid "Base class for 3-dimensionnal textures." +msgstr "3D 纹理的基类。" + +msgid "Called when the [Texture3D]'s data is queried." +msgstr "查询该 [Texture3D] 的数据时被调用。" + +msgid "Called when the [Texture3D]'s depth is queried." +msgstr "查询该 [Texture3D] 的深度时被调用。" + +msgid "Called when the [Texture3D]'s format is queried." +msgstr "查询该 [Texture3D] 的格式时被调用。" + +msgid "Called when the [Texture3D]'s height is queried." +msgstr "查询该 [Texture3D] 的高度时被调用。" + +msgid "Called when the [Texture3D]'s width is queried." +msgstr "查询该 [Texture3D] 的宽度时被调用。" + +msgid "Called when the presence of mipmaps in the [Texture3D] is queried." +msgstr "查询该 [Texture3D] 的 Mipmap 是否存在时被调用。" + msgid "" "Returns the current format being used by this texture. See [enum Image." "Format] for details." msgstr "返回纹理当前使用的格式。详情见 [enum Image.Format]。" msgid "" +"Returns the [Texture3D]'s height in pixels. Width is typically represented " +"by the Y axis." +msgstr "返回该 [Texture3D] 的高度,单位为像素。宽度通常由 Y 轴表示。" + +msgid "" +"Returns the [Texture3D]'s width in pixels. Width is typically represented by " +"the X axis." +msgstr "返回该 [Texture3D] 的宽度,单位为像素。宽度通常由 X 轴表示。" + +msgid "" "Texture-based button. Supports Pressed, Hover, Disabled and Focused states." msgstr "基于纹理的按钮。支持按下、悬停、停用和焦点状态。" @@ -25690,6 +47832,36 @@ msgid "" "other side clips to the node's limits." msgstr "缩放纹理,使较短的一边适应边界矩形。另一边则裁剪到节点的界限内。" +msgid "Called when the [TextureLayered]'s format is queried." +msgstr "查询该 [TextureLayered] 的格式时被调用。" + +msgid "Called when the the [TextureLayered]'s height is queried." +msgstr "查询该 [TextureLayered] 的高度时被调用。" + +msgid "Called when the data for a layer in the [TextureLayered] is queried." +msgstr "查询该 [TextureLayered] 中某一层的数据时被调用。" + +msgid "Called when the layers' type in the [TextureLayered] is queried." +msgstr "查询该 [TextureLayered] 的层类型时被调用。" + +msgid "Called when the number of layers in the [TextureLayered] is queried." +msgstr "查询该 [TextureLayered] 的层数时被调用。" + +msgid "Called when the [TextureLayered]'s width queried." +msgstr "查询该 [TextureLayered] 的宽度时被调用。" + +msgid "Called when the presence of mipmaps in the [TextureLayered] is queried." +msgstr "查询该 [TextureLayered] 的 Mipmap 是否存在时被调用。" + +msgid "Texture is a generic [Texture2DArray]." +msgstr "纹理为通用的 [Texture2DArray]。" + +msgid "Texture is a [Cubemap], with each side in its own layer (6 in total)." +msgstr "纹理为 [Cubemap],每一面都有自己的层(共 6 层)。" + +msgid "Texture is a [CubemapArray], with each cubemap being made of 6 layers." +msgstr "纹理为 [CubemapArray],每个立方体贴图都由 6 层组成。" + msgid "" "Texture-based progress bar. Useful for loading screens and life or stamina " "bars." @@ -25837,11 +48009,20 @@ msgid "" "See [enum StretchMode]." msgstr "控件纹理在调整节点边界矩形时的行为。见 [enum StretchMode]。" +msgid "The node's [Texture2D] resource." +msgstr "该节点的 [Texture2D] 资源。" + msgid "" "Scale the texture to fit the node's bounding rectangle, center it and " "maintain its aspect ratio." msgstr "缩放纹理以适应节点的边界矩形,使其居中并保持其长宽比。" +msgid "GUI skinning" +msgstr "GUI 皮肤" + +msgid "Using the theme editor" +msgstr "使用主题编辑器" + msgid "" "Adds an empty theme type for every valid data type.\n" "[b]Note:[/b] Empty types are not saved with the theme. This method only " @@ -25860,6 +48041,64 @@ msgstr "" "移除该主题类型,优雅地丢弃其中定义的主题项目。如果该类型为变种,则该信息也会" "被消除。如果该类型为类型变种的基础类型,则那些变种会失去其基础类型。" +msgid "" +"Creates or changes the value of the [Color] property defined by [param name] " +"and [param theme_type]. Use [method clear_color] to remove the property." +msgstr "" +"创建或改变由名称 [param name] 和主题类型 [param theme_type] 定义的 [Color] 属" +"性的值。移除该属性请使用 [method clear_color]。" + +msgid "" +"Creates or changes the value of the constant property defined by [param " +"name] and [param theme_type]. Use [method clear_constant] to remove the " +"property." +msgstr "" +"创建或改变由名称 [param name] 和主题类型 [param theme_type] 定义的常量属性的" +"值。移除该属性请使用 [method clear_constant]。" + +msgid "" +"Creates or changes the value of the [Font] property defined by [param name] " +"and [param theme_type]. Use [method clear_font] to remove the property." +msgstr "" +"创建或改变由名称 [param name] 和主题类型 [param theme_type] 定义的 [Font] 属" +"性的值。移除该属性请使用 [method clear_font]。" + +msgid "" +"Creates or changes the value of the font size property defined by [param " +"name] and [param theme_type]. Use [method clear_font_size] to remove the " +"property." +msgstr "" +"创建或改变由名称 [param name] 和主题类型 [param theme_type] 定义的字体大小属" +"性的值。移除该属性请使用 [method clear_font_size]。" + +msgid "" +"Creates or changes the value of the icon property defined by [param name] " +"and [param theme_type]. Use [method clear_icon] to remove the property." +msgstr "" +"创建或改变由名称 [param name] 和主题类型 [param theme_type] 定义的图标属性的" +"值。移除该属性请使用 [method clear_icon]。" + +msgid "" +"Creates or changes the value of the [StyleBox] property defined by [param " +"name] and [param theme_type]. Use [method clear_stylebox] to remove the " +"property." +msgstr "" +"创建或改变由名称 [param name] 和主题类型 [param theme_type] 定义的 " +"[StyleBox] 属性的值。移除该属性请使用 [method clear_stylebox]。" + +msgid "" +"Creates or changes the value of the theme property of [param data_type] " +"defined by [param name] and [param theme_type]. Use [method " +"clear_theme_item] to remove the property.\n" +"Fails if the [param value] type is not accepted by [param data_type].\n" +"[b]Note:[/b] This method is analogous to calling the corresponding data type " +"specific method, but can be used for more generalized logic." +msgstr "" +"创建或改变由名称 [param name] 和主题类型 [param theme_type] 定义的主题属性的" +"值。移除该属性请使用 [method clear_theme_item]。\n" +"如果 [param value] 的类型不被 [param data_type] 所接受,则失败。\n" +"[b]注意:[/b]这个方法类似于调用相应的数据类型特定方法,但可以用于更通用逻辑。" + msgid "Theme's [Color] item type." msgstr "主题的 [Color] 颜色项类型。" @@ -25869,12 +48108,24 @@ msgstr "主题的常量项类型。" msgid "Theme's [Font] item type." msgstr "主题的 [Font] 字体项类型。" +msgid "Theme's font size item type." +msgstr "主题的字体大小项类型。" + +msgid "Theme's icon [Texture2D] item type." +msgstr "主题的图标 [Texture2D] 项类型。" + msgid "Theme's [StyleBox] item type." msgstr "主题的 [StyleBox] 项目类型。" msgid "Maximum value for the DataType enum." msgstr "数据类型枚举的最大值。" +msgid "" +"An engine singleton providing access to static [Theme] information, such as " +"default and project theme, and fallback values." +msgstr "" +"引擎单例,用于访问静态 [Theme] 信息,如默认主题和项目主题,以及回退值等。" + msgid "A unit of execution in a process." msgstr "执行过程中的执行单元。" @@ -25919,22 +48170,130 @@ msgstr "具有标准优先级的线程。" msgid "A thread running with higher priority than normally." msgstr "以比正常情况更高的优先级运行的线程。" +msgid "Settings for a single tile in a [TileSet]." +msgstr "[TileSet] 中单个图块的设置。" + +msgid "" +"[TileData] object represents a single tile in a [TileSet]. It is usually " +"edited using the tileset editor, but it can be modified at runtime using " +"[method TileMap._tile_data_runtime_update]." +msgstr "" +"[TileData] 对象代表 [TileSet] 中的单个图块,通常使用图块集编辑器进行编辑,但" +"也可以在运行时使用 [method TileMap._tile_data_runtime_update] 进行修改。" + +msgid "Color modulation of the tile." +msgstr "该图块的颜色调制。" + msgid "Node for 2D tile-based maps." msgstr "基于 2D 图块的地图节点。" +msgid "" +"Node for 2D tile-based maps. Tilemaps use a [TileSet] which contain a list " +"of tiles which are used to create grid-based maps. A TileMap may have " +"several layers, layouting tiles on top of each other." +msgstr "" +"基于 2D 图块的地图节点。Tilemap(图块地图)使用 [TileSet],其中包含了图块的列" +"表,用于创建基于栅格的地图。TileMap 可以有若干图层,可以将图块布局在彼此之" +"上。" + msgid "Using Tilemaps" -msgstr "使用图块地图" +msgstr "使用 Tilemap" msgid "2D Hexagonal Demo" msgstr "2D 六边形演示" +msgid "" +"Called with a TileData object about to be used internally by the TileMap, " +"allowing its modification at runtime.\n" +"This method is only called if [method _use_tile_data_runtime_update] is " +"implemented and returns [code]true[/code] for the given tile [param coords] " +"and [param layer].\n" +"[b]Warning:[/b] The [param tile_data] object's sub-resources are the same as " +"the one in the TileSet. Modifying them might impact the whole TileSet. " +"Instead, make sure to duplicate those resources.\n" +"[b]Note:[/b] If the properties of [param tile_data] object should change " +"over time, use [method force_update] to trigger a TileMap update." +msgstr "" +"会使用 TileMap 内部即将使用的 TileData 对象来调用,从而实现运行时修改。\n" +"这个方法被调用的前提是:实现了 [method _use_tile_data_runtime_update],并且对" +"给定的图块坐标 [param coords] 和层 [param layer] 返回 [code]true[/code] 。\n" +"[b]警告:[/b]该 [param tile_data] 对象的子资源和 TileSet 中的子资源是一样的。" +"对它们进行修改可能会影响整个 TileSet。请确保制作这些资源的副本再进行修改。\n" +"[b]注意:[/b]如果 [param tile_data] 对象的属性要随时间变化,请使用 [method " +"force_update] 来触发 TileMap 更新。" + +msgid "" +"Should return [code]true[/code] if the tile at coordinates [param coords] on " +"layer [param layer] requires a runtime update.\n" +"[b]Warning:[/b] Make sure this function only return [code]true[/code] when " +"needed. Any tile processed at runtime without a need for it will imply a " +"significant performance penalty." +msgstr "" +"如果位于层 [param layer] 坐标 [param coords] 的图块需要运行时更新,则应返回 " +"[code]true[/code]。\n" +"[b]警告:[/b]请确保这个函数只在需要时返回 [code]true[/code]。任何在没有需要的" +"情况下在运行时处理的图块都将导致显著的性能损失。" + +msgid "" +"Adds a layer at the given position [param to_position] in the array. If " +"[param to_position] is negative, the position is counted from the end, with " +"[code]-1[/code] adding the layer at the end of the array." +msgstr "" +"在数组中的给定位置 [param to_position] 添加层。如果 [param to_position] 为负" +"数,则位置从结尾处开始计数,[code]-1[/code] 会把层添加在数组的末尾。" + msgid "Clears all cells." msgstr "清除所有单元格。" +msgid "Clears all cells on the given layer." +msgstr "清除给定图层中的所有单元格。" + +msgid "Erases the cell on layer [param layer] at coordinates [param coords]." +msgstr "擦除图层 [param layer] 上位于坐标 [param coords] 处的单元格。" + msgid "Clears cells that do not exist in the tileset." msgstr "清除图块集中不存在的单元格。" msgid "" +"Triggers an update of the TileMap. If [param layer] is provided, only " +"updates the given layer.\n" +"[b]Note:[/b] The TileMap node updates automatically when one of its " +"properties is modified. A manual update is only needed if runtime " +"modifications (implemented in [method _tile_data_runtime_update]) need to be " +"applied.\n" +"[b]Warning:[/b] Updating the TileMap is computationally expensive and may " +"impact performance. Try to limit the number of updates and the tiles they " +"impact (by placing frequently updated tiles in a dedicated layer for " +"example)." +msgstr "" +"触发 TileMap 的更新。如果提供了 [param layer],则只更新给定的层。\n" +"[b]注意:[/b]TileMap 节点的属性被修改时,该节点会自动更新。只有在需要应用运行" +"时修改(在 [method _tile_data_runtime_update] 中实现)时才需要手动更新。\n" +"[b]警告:[/b]更新 TileMap 的计算量很大,可能会影响性能。请尽量限制更新的次数" +"和受影响的图块(例如,将经常更新的图块放在专门的层中)。" + +msgid "Returns a TileMap layer's modulate." +msgstr "返回 TileMap 图层的调制颜色。" + +msgid "Returns a TileMap layer's name." +msgstr "返回 TileMap 图层的名称。" + +msgid "Returns a TileMap layer's Y sort origin." +msgstr "返回 TileMap 图层的 Y 排序原点。" + +msgid "Returns a TileMap layer's Z-index value." +msgstr "返回 TileMap 图层的 Z 索引值。" + +msgid "Returns the number of layers in the TileMap." +msgstr "返回 TileMap 图层的数量。" + +msgid "Returns if a layer is enabled." +msgstr "返回图层是否被启用。" + +msgid "Returns if a layer Y-sorts its tiles." +msgstr "返回图层是否对其图块进行 Y 排序。" + +msgid "" "The TileMap's quadrant size. Optimizes drawing by batching, using chunks of " "this size." msgstr "该 TileMap 的象限大小。会使用这个大小的区块对绘制进行批处理优化。" @@ -25942,8 +48301,210 @@ msgstr "该 TileMap 的象限大小。会使用这个大小的区块对绘制进 msgid "The assigned [TileSet]." msgstr "指定的 [TileSet] 图块集。" +msgid "Use the debug settings to determine visibility." +msgstr "使用调试设置确定可见性。" + +msgid "Always hide." +msgstr "始终隐藏。" + +msgid "Always show." +msgstr "始终显示。" + msgid "Tile library for tilemaps." -msgstr "图块地图的图块库。" +msgstr "Tilemap 的图块库。" + +msgid "" +"A TileSet is a library of tiles for a [TileMap]. A TileSet handles a list of " +"[TileSetSource], each of them storing a set of tiles.\n" +"Tiles can either be from a [TileSetAtlasSource], that render tiles out of a " +"texture with support for physics, navigation, etc... or from a " +"[TileSetScenesCollectionSource] which exposes scene-based tiles.\n" +"Tiles are referenced by using three IDs: their source ID, their atlas " +"coordinates ID and their alternative tile ID.\n" +"A TileSet can be configured so that its tiles expose more or less " +"properties. To do so, the TileSet resources uses property layers, that you " +"can add or remove depending on your needs.\n" +"For example, adding a physics layer allows giving collision shapes to your " +"tiles. Each layer having dedicated properties (physics layer an mask), you " +"may add several TileSet physics layers for each type of collision you need.\n" +"See the functions to add new layers for more information." +msgstr "" +"TileSet 是 [TileMap] 的图块库。TileSet 处理 [TileSetSource] 列表,每个表中存" +"储一组图块。\n" +"图块既可以来自 [TileSetAtlasSource],可以渲染纹理中的图块,支持物理、导航等功" +"能,也可以来自 [TileSetScenesCollectionSource],提供基于场景的图块。\n" +"图块通过使用三个 ID 来引用:源 ID、图集坐标 ID、备选图块 ID。\n" +"TileSet 可以配置图块暴露哪些属性。为了做到这一点,TileSet 资源使用了属性层," +"你可以根据需要进行添加和删除。\n" +"例如,添加物理层可以为瓷砖提供碰撞形状。不同的层都有不同的属性(物理层和遮" +"罩),要实现不同类型的碰撞,你也可以添加多个 TileSet 物理层。\n" +"更多信息请参阅添加新层的函数。" + +msgid "Returns the custom data layers count." +msgstr "返回自定义数据层的数量。" + +msgid "Returns the navigation layers count." +msgstr "返回导航层的数量。" + +msgid "Returns the occlusion layers count." +msgstr "返回遮挡层的数量。" + +msgid "Returns the physics layers count." +msgstr "返回物理层的数量。" + +msgid "Returns a terrain's color." +msgstr "返回地形的颜色。" + +msgid "Returns a terrain's name." +msgstr "返回地形的名称。" + +msgid "Returns a terrain set mode." +msgstr "返回地形集模式。" + +msgid "Returns the terrain sets count." +msgstr "返回地形集的数量。" + +msgid "Returns the number of terrains in the given terrain set." +msgstr "返回给定地形集中的地形数。" + +msgid "Changes a source's ID." +msgstr "更改源的 ID。" + +msgid "" +"Sets a terrain's color. This color is used for identifying the different " +"terrains in the TileSet editor." +msgstr "设置地形的颜色。该颜色用于在 TileSet 编辑器中区分不同的地形。" + +msgid "Sets a terrain's name." +msgstr "设置地形的名称。" + +msgid "" +"Sets a terrain mode. Each mode determines which bits of a tile shape is used " +"to match the neighboring tiles' terrains." +msgstr "" +"设置地形模式。每种模式决定了图块形状的哪一个位被用来匹配相邻图块的地形。" + +msgid "" +"For all half-offset shapes (Isometric, Hexagonal and Half-Offset square), " +"changes the way tiles are indexed in the TileMap grid." +msgstr "" +"对于所有半偏移形状(等轴、六边形和半偏移正方形),更改图块在 TileMap 栅格中的" +"索引方式。" + +msgid "" +"For all half-offset shapes (Isometric, Hexagonal and Half-Offset square), " +"determines the offset axis." +msgstr "对于所有半偏移形状(等轴、六边形和半偏移正方形),确定偏移轴。" + +msgid "The tile shape." +msgstr "图块的形状。" + +msgid "" +"The tile size, in pixels. For all tile shapes, this size corresponds to the " +"encompassing rectangle of the tile shape. This is thus the minimal cell size " +"required in an atlas." +msgstr "" +"图块的大小,单位为像素。无论图块是什么形状,这个大小对应的都是图块形状的包围" +"矩形。因此,这是图集所需的最小单元格大小。" + +msgid "Enables/Disable uv clipping when rendering the tiles." +msgstr "渲染图块时启用/禁用 UV 裁剪。" + +msgid "Rectangular tile shape." +msgstr "矩形图块形状。" + +msgid "" +"Diamond tile shape (for isometric look).\n" +"[b]Note:[/b] Isometric [TileSet] works best if [TileMap] and all its layers " +"have Y-sort enabled." +msgstr "" +"钻石图块形状(用于等轴外观)。\n" +"[b]注意:[/b]等轴 [TileSet] 在 [TileMap] 及其所有图层都启用了Y 排序时效果最" +"好。" + +msgid "" +"Rectangular tile shape with one row/column out of two offset by half a tile." +msgstr "矩形图块形状,每隔一行/列偏移半个图块。" + +msgid "Hexagonal tile shape." +msgstr "六边形图块形状。" + +msgid "Horizontal half-offset." +msgstr "水平半偏移。" + +msgid "Vertical half-offset." +msgstr "垂直半偏移。" + +msgid "Neighbor on the right side." +msgstr "右侧相邻单元格。" + +msgid "Neighbor in the right corner." +msgstr "右角相邻单元格。" + +msgid "Neighbor on the bottom right side." +msgstr "右下侧相邻单元格。" + +msgid "Neighbor in the bottom right corner." +msgstr "右下角相邻单元格。" + +msgid "Neighbor on the bottom side." +msgstr "下侧相邻单元格。" + +msgid "Neighbor in the bottom corner." +msgstr "下角相邻单元格。" + +msgid "Neighbor on the bottom left side." +msgstr "左下侧相邻单元格。" + +msgid "Neighbor in the bottom left corner." +msgstr "左下角相邻单元格。" + +msgid "Neighbor on the left side." +msgstr "左侧相邻单元格。" + +msgid "Neighbor in the left corner." +msgstr "左角相邻单元格。" + +msgid "Neighbor on the top left side." +msgstr "左上侧相邻单元格。" + +msgid "Neighbor in the top left corner." +msgstr "左上角相邻单元格。" + +msgid "Neighbor on the top side." +msgstr "上侧相邻单元格。" + +msgid "Neighbor in the top corner." +msgstr "上角相邻单元格。" + +msgid "Neighbor on the top right side." +msgstr "右上侧相邻单元格。" + +msgid "Neighbor in the top right corner." +msgstr "右上角相邻单元格。" + +msgid "The atlas texture." +msgstr "图集纹理。" + +msgid "" +"Returns whether the scene tile with [param id] displays a placeholder in the " +"editor." +msgstr "返回 ID 为 [param id] 的场景图块是否在编辑器中显示占位图。" + +msgid "Returns the scene tile ID of the scene tile at [param index]." +msgstr "返回索引为 [param index] 的场景图块的场景图块 ID。" + +msgid "Returns the [PackedScene] resource of scene tile with [param id]." +msgstr "返回 ID 为 [param id] 的场景图块的 [PackedScene] 资源。" + +msgid "Returns the number or scene tiles this TileSet source has." +msgstr "返回该 TileSet 源中场景图块的数量。" + +msgid "Returns whether this TileSet source has a scene tile with [param id]." +msgstr "返回该 TileSet 源是否包含 ID 为 [param id] 的场景图块。" + +msgid "Remove the scene tile with [param id]." +msgstr "移除 ID 为 [param id] 的场景图块。" msgid "Time singleton for working with time." msgstr "用于处理时间的 Time 单例。" @@ -26209,6 +48770,9 @@ msgstr "" "如果为 [code]true[/code],定时器会被暂停,并且不再处理,即使调用 [method " "start],直到它被取消暂停。" +msgid "Processing callback. See [enum TimerProcessCallback]." +msgstr "处理回调。见 [enum TimerProcessCallback]。" + msgid "" "Update the timer during the physics step at each frame (fixed framerate " "processing)." @@ -26217,6 +48781,12 @@ msgstr "在每一帧的物理运算步骤中更新定时器,即固定帧率处 msgid "Update the timer during the idle time at each frame." msgstr "在每一帧空闲时间内更新定时器。" +msgid "TLS configuration for clients and servers." +msgstr "客户端与服务器的 TLS 配置。" + +msgid "Class representing a torus [PrimitiveMesh]." +msgstr "表示圆环 [PrimitiveMesh] 的类。" + msgid "Button for touch screen devices for gameplay use." msgstr "触摸屏设备的按钮,供游戏使用。" @@ -26271,6 +48841,9 @@ msgstr "" "如果为 [code]true[/code],按钮的形状会在提供的纹理中居中。如果没有使用纹理," "这个属性就没有效果。" +msgid "If [code]true[/code], the button's shape is visible in the editor." +msgstr "如果为 [code]true[/code],则该按钮的形状在编辑器中可见。" + msgid "The button's texture for the normal state." msgstr "该按钮在正常状态下的纹理。" @@ -26306,13 +48879,22 @@ msgid "" msgstr "" "用于 2D 线性变换的 2×3 矩阵(2 行 3 列),可以表示平移、旋转、缩放等变换。由" "三个 [Vector2] 值组成:[member x]、[member y]、[member origin]。\n" -"更多信息请阅读文档文章《矩阵和变换》。" +"更多信息请阅读文档文章《矩阵与变换》。" + +msgid "" +"Constructs a default-initialized [Transform2D] set to [constant IDENTITY]." +msgstr "构造默认初始化为 [constant IDENTITY] 的 [Transform2D]。" msgid "Constructs a [Transform2D] as a copy of the given [Transform2D]." msgstr "构造给定 [Transform2D] 的副本。" msgid "Constructs the transform from a given angle (in radians) and position." -msgstr "从一个给定的角度(单位为弧度)和位置构造变换。" +msgstr "从给定的角度(单位为弧度)和位置构造变换。" + +msgid "" +"Constructs the transform from a given angle (in radians), scale, skew (in " +"radians) and position." +msgstr "从给定的角度(单位为弧度)、缩放、偏斜(单位为弧度)和位置构造变换。" msgid "" "Constructs the transform from 3 [Vector2] values representing [member x], " @@ -26324,7 +48906,7 @@ msgstr "" msgid "" "Returns the inverse of the transform, under the assumption that the " "transformation is composed of rotation, scaling and translation." -msgstr "返回变换的反值,假设变换是由旋转、缩放和平移组成的。" +msgstr "返回该变换的逆,假设变换由旋转、缩放和平移组成。" msgid "" "Returns a vector transformed (multiplied) by the basis matrix.\n" @@ -26341,14 +48923,17 @@ msgstr "" "该方法不考虑平移(原点向量)。" msgid "Returns the transform's origin (translation)." -msgstr "返回变换的原点(平移)。" +msgstr "返回该变换的原点(平移)。" msgid "Returns the transform's rotation (in radians)." -msgstr "返回变换的旋转(单位为弧度)。" +msgstr "返回该变换的旋转(单位为弧度)。" msgid "Returns the scale." msgstr "返回缩放。" +msgid "Returns the transform's skew (in radians)." +msgstr "返回该变换的偏斜(单位为弧度)。" + msgid "" "Returns the inverse of the transform, under the assumption that the " "transformation is composed of rotation and translation (no scaling, use " @@ -26405,7 +48990,7 @@ msgstr "" "用于 3D 线性变换的 3×4 矩阵(3 行 4 列),可以表示平移、旋转、缩放等变换。它" "由一个 [member basis](前 3 列)和一个 [member origin] 的 [Vector3](最后一" "列)组成。\n" -"更多信息请阅读文档文章《矩阵和变换》。" +"更多信息请阅读文档文章《矩阵与变换》。" msgid "Constructs a [Transform3D] as a copy of the given [Transform3D]." msgstr "构造给定 [Transform3D] 的副本。" @@ -26423,6 +49008,13 @@ msgid "" "Equivalent to array index [code]3[/code]." msgstr "变换的平移偏移量,即第 3、4 列。相当于数组索引 [code]3[/code]。" +msgid "" +"[Transform3D] with no translation, rotation or scaling applied. When applied " +"to other data structures, [constant IDENTITY] performs no transformation." +msgstr "" +"没有应用平移、旋转、缩放的 [Transform3D]。当应用于其他数据结构时,[constant " +"IDENTITY] 不执行变换。" + msgid "Language Translation." msgstr "语言翻译。" @@ -26431,8 +49023,17 @@ msgid "" "map a string to another string." msgstr "翻译是可以按需加载和卸载的资源,将一个字符串映射到另一个字符串。" +msgid "Internationalizing games" +msgstr "将游戏国际化" + +msgid "Locales" +msgstr "区域设置" + msgid "Virtual method to override [method get_message]." -msgstr "重写 [method get_message] 的虚方法。" +msgstr "覆盖 [method get_message] 的虚方法。" + +msgid "Virtual method to override [method get_plural_message]." +msgstr "覆盖 [method get_plural_message] 的虚方法。" msgid "Erases a message." msgstr "删除信息。" @@ -26463,6 +49064,21 @@ msgstr "添加一个 [Translation] 资源。" msgid "Clears the server from all translations." msgstr "清除服务器中的所有翻译。" +msgid "Returns array of known country codes." +msgstr "返回已知地区代码的数组。" + +msgid "Returns array of known language codes." +msgstr "返回已知语言代码的数组。" + +msgid "Returns array of known script codes." +msgstr "返回已知文字代码的数组。" + +msgid "Returns readable country name for the [param country] code." +msgstr "返回地区代码 [param country] 的可读地区名。" + +msgid "Returns readable language name for the [param language] code." +msgstr "返回语言代码 [param language] 的可读语言名。" + msgid "Returns an array of all loaded locales of the project." msgstr "返回项目中所有已加载的区域设置的数组。" @@ -26482,6 +49098,17 @@ msgstr "" "返回区域设置的语言及其变体。例如,[code]\"en_US\"[/code] 将返回 " "[code]\"English (United States)\"[/code]。" +msgid "Returns readable script name for the [param script] code." +msgstr "返回文字代码 [param script] 的可读文字名称。" + +msgid "" +"Returns the current locale of the editor.\n" +"[b]Note:[/b] When called from an exported project returns the same value as " +"[method get_locale]." +msgstr "" +"返回编辑器的当前区域设置。\n" +"[b]注意:[/b]从导出后的项目中调用时,返回值与 [method get_locale] 相同。" + msgid "Removes the given translation from the server." msgstr "从服务器中删除给定的翻译。" @@ -26515,7 +49142,13 @@ msgstr "" "SELECT_MULTI] 模式下可见。" msgid "Returns the column's title." -msgstr "返回列的标题。" +msgstr "返回该列的标题。" + +msgid "Returns column title base writing direction." +msgstr "返回列标题的基础书写方向。" + +msgid "Returns column title language code." +msgstr "返回列标题的语言代码。" msgid "Returns the column's width in pixels." msgstr "返回列的宽度,单位是像素。" @@ -26580,6 +49213,18 @@ msgstr "使 [Tree] 跳转到指定的 [TreeItem]。" msgid "Sets the title of a column." msgstr "设置某一列的标题。" +msgid "Sets column title base writing direction." +msgstr "设置列标题的基础书写方向。" + +msgid "" +"Sets language code of column title used for line-breaking and text shaping " +"algorithms, if left empty current locale is used instead." +msgstr "" +"设置列标题的语言代码,用于断行和文本塑形算法,如果留空则使用当前区域设置。" + +msgid "Selects the specified [TreeItem] and column." +msgstr "选中指定的 [TreeItem] 和列。" + msgid "" "If [code]true[/code], the currently selected cell may be selected again." msgstr "如果为 [code]true[/code],可以再次选择当前选定的单元。" @@ -26728,6 +49373,9 @@ msgstr "" msgid "[Color] of the guideline." msgstr "参考线的 [Color] 颜色。" +msgid "The default [Color] of the relationship lines." +msgstr "关系线的默认 [Color]。" + msgid "Default text [Color] of the title button." msgstr "标题按钮的默认文本 [Color] 颜色。" @@ -26758,6 +49406,9 @@ msgid "" "enabled for the item." msgstr "项目开头的水平边距。在项目启用折叠功能时使用。" +msgid "The default width of the relationship lines." +msgstr "关系线的默认宽度。" + msgid "" "The maximum distance between the mouse cursor and the control's border to " "trigger border scrolling when dragging." @@ -26775,54 +49426,82 @@ msgid "[Font] of the title button's text." msgstr "标题按钮文本的 [Font] 字体。" msgid "The arrow icon used when a foldable item is not collapsed." -msgstr "当一个可折叠的项没有被折叠时,使用的箭头图标。" +msgstr "箭头图标,可折叠项未折叠时使用。" + +msgid "" +"The arrow icon used when a foldable item is collapsed (for left-to-right " +"layouts)." +msgstr "箭头图标,可折叠项已折叠时使用(用于从左至右布局)。" + +msgid "" +"The arrow icon used when a foldable item is collapsed (for right-to-left " +"layouts)." +msgstr "箭头图标,可折叠项已折叠时使用(用于从右至左布局)。" msgid "" "The check icon to display when the [constant TreeItem.CELL_MODE_CHECK] mode " "cell is checked." msgstr "" -"当 [constant TreeItem.CELL_MODE_CHECK] 模式单元格被选中时,显示的选中图标。" +"复选图标,模式为 [constant TreeItem.CELL_MODE_CHECK] 的单元格处于勾选状态时显" +"示。" + +msgid "" +"The check icon to display when the [constant TreeItem.CELL_MODE_CHECK] mode " +"cell is indeterminate." +msgstr "" +"复选图标,模式为 [constant TreeItem.CELL_MODE_CHECK] 的单元格处于中间状态时显" +"示。" msgid "" "The arrow icon to display for the [constant TreeItem.CELL_MODE_RANGE] mode " "cell." -msgstr "为 [constant TreeItem.CELL_MODE_RANGE] 模式单元显示的箭头图标。" +msgstr "箭头图标,模式为 [constant TreeItem.CELL_MODE_RANGE] 的单元格显示。" msgid "" "The check icon to display when the [constant TreeItem.CELL_MODE_CHECK] mode " "cell is unchecked." msgstr "" -"当 [constant TreeItem.CELL_MODE_CHECK] 模式单元未被选中时,要显示的选中图标。" +"复选图标,模式为 [constant TreeItem.CELL_MODE_CHECK] 的单元格处于未选状态时显" +"示。" msgid "" "The updown arrow icon to display for the [constant TreeItem.CELL_MODE_RANGE] " "mode cell." -msgstr "为 [constant TreeItem.CELL_MODE_RANGE] 模式单元显示的向下箭头图标。" +msgstr "" +"上下箭头图标,模式为 [constant TreeItem.CELL_MODE_RANGE] 的单元格显示。" msgid "[StyleBox] used when a button in the tree is pressed." -msgstr "当树中的按钮被按下时使用的 [StyleBox]。" +msgstr "树中的按钮处于按下状态时使用的 [StyleBox]。" msgid "[StyleBox] used for the cursor, when the [Tree] is being focused." -msgstr "当 [Tree] 获得焦点时,用于光标的 [StyleBox]。" +msgstr "用作光标的 [StyleBox],该 [Tree] 处于聚焦状态时使用。" msgid "[StyleBox] used for the cursor, when the [Tree] is not being focused." -msgstr "当 [Tree] 未获聚焦时,用于光标的 [StyleBox]。" +msgstr "用作光标的 [StyleBox],该 [Tree] 处于失焦状态时使用。" msgid "" "Default [StyleBox] for a [constant TreeItem.CELL_MODE_CUSTOM] mode cell." -msgstr "[constant TreeItem.CELL_MODE_CUSTOM] 模式的单元格默认的 [StyleBox]。" +msgstr "模式为 [constant TreeItem.CELL_MODE_RANGE] 的单元格的默认 [StyleBox]。" msgid "" "[StyleBox] for a [constant TreeItem.CELL_MODE_CUSTOM] mode cell when it's " "hovered." msgstr "" -"当 [constant TreeItem.CELL_MODE_CUSTOM] 模式的单元格被悬停时的 [StyleBox]。" +"模式为 [constant TreeItem.CELL_MODE_RANGE] 的单元格处于悬停状态时的 " +"[StyleBox]。" msgid "" "[StyleBox] for a [constant TreeItem.CELL_MODE_CUSTOM] mode cell when it's " "pressed." msgstr "" -"当 [constant TreeItem.CELL_MODE_CUSTOM] 模式的单元格被按下时的 [StyleBox]。" +"模式为 [constant TreeItem.CELL_MODE_RANGE] 的单元格处于按下状态时的 " +"[StyleBox]。" + +msgid "The focused style for the [Tree], drawn on top of everything." +msgstr "该 [Tree] 的聚焦样式,绘制在所有东西之上。" + +msgid "The background style for the [Tree]." +msgstr "该 [Tree] 的背景样式。" msgid "" "[StyleBox] for the selected items, used when the [Tree] is not being focused." @@ -26864,9 +49543,24 @@ msgstr "取消选择指定列。" msgid "Returns the column's cell mode." msgstr "返回该列的单元格模式。" +msgid "Returns the number of child items." +msgstr "返回子项的数量。" + +msgid "Returns the custom background color of column [param column]." +msgstr "返回列 [param column] 的自定义背景色。" + +msgid "Returns the custom color of column [param column]." +msgstr "返回列 [param column] 的自定义颜色。" + msgid "Returns [code]true[/code] if [code]expand_right[/code] is set." msgstr "如果设置了 [code]expand_right[/code],则返回 [code]true[/code]。" +msgid "Returns the TreeItem's first child." +msgstr "返回该 TreeItem 的第一个子项。" + +msgid "Returns the given column's icon [Texture2D]. Error if no icon is set." +msgstr "返回给定列的图标 [Texture2D]。如果未设置图标,则会出错。" + msgid "Returns the column's icon's maximum width." msgstr "返回列的图标的最大宽度。" @@ -26908,6 +49602,27 @@ msgstr "返回给定列的文本。" msgid "Returns the given column's text alignment." msgstr "返回给定列的文本对齐方式。" +msgid "Returns the given column's tooltip text." +msgstr "设置给定列的工具提示文本。" + +msgid "Returns the [Tree] that owns this TreeItem." +msgstr "返回拥有此 TreeItem 的 [Tree]。" + +msgid "Returns [code]true[/code] if the given [param column] is checked." +msgstr "如果给定的列 [param column] 被勾选,则返回 [code]true[/code]。" + +msgid "Returns [code]true[/code] if the given [param column] is editable." +msgstr "如果给定的列 [param column] 可编辑,则返回 [code]true[/code]。" + +msgid "Returns [code]true[/code] if the given [param column] is indeterminate." +msgstr "如果给定的列 [param column] 未确定,则返回 [code]true[/code]。" + +msgid "Returns [code]true[/code] if the given [param column] is selectable." +msgstr "如果给定的列 [param column] 可选,则返回 [code]true[/code]。" + +msgid "Returns [code]true[/code] if the given [param column] is selected." +msgstr "如果给定的列 [param column] 被选中,则返回 [code]true[/code]。" + 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. " @@ -26917,6 +49632,9 @@ msgstr "" "释放该项,所以之后可重新使用。要完全删除一个 [TreeItem],请使用 [method " "Object.free]。" +msgid "Selects the given [param column]." +msgstr "选中 [param column] 指定的列。" + msgid "" "Sets the given column's custom background color and whether to just use it " "as an outline." @@ -26925,6 +49643,16 @@ msgstr "设置给定列的自定义背景颜色,以及是否只将其作为一 msgid "Sets the given column's custom color." msgstr "设置给定列的自定义颜色。" +msgid "If [code]true[/code], the given [param column] is editable." +msgstr "如果为 [code]true[/code],则给定的列 [param column] 可编辑。" + +msgid "" +"If [code]true[/code], the given [param column] is expanded to the right." +msgstr "如果为 [code]true[/code],则给定的列 [param column] 向右扩展。" + +msgid "Sets the given column's icon [Texture2D]." +msgstr "设置给定列的图标 [Texture2D]。" + msgid "Sets the given column's icon's maximum width." msgstr "设置给定列图标的最大宽度。" @@ -26988,10 +49716,16 @@ msgid "" "[Tweener]s." msgstr "通过脚本进行通用动画的轻量级对象,使用 [Tweener]。" +msgid "Aborts all tweening operations and invalidates the [Tween]." +msgstr "中止所有补间操作,并使该 [Tween] 无效。" + msgid "" "Pauses the tweening. The animation can be resumed by using [method play]." msgstr "暂停补间。可以使用 [method play] 恢复动画。" +msgid "Resumes a paused or stopped [Tween]." +msgstr "恢复已暂停或已停止的 [Tween]。" + msgid "" "Scales the speed of tweening. This affects all [Tweener]s and their delays." msgstr "补间的速度缩放。影响所有 [Tweener] 及其延迟。" @@ -27004,6 +49738,26 @@ msgstr "" "完成一次循环时触发(见 [method set_loops]),会提供该循环的索引号。这个信号不" "会在最后一次循环后触发,这种情况请使用 [signal finished] 代替。" +msgid "The [Tween] updates during the physics frame." +msgstr "该 [Tween] 在物理帧期间更新。" + +msgid "The [Tween] updates during the idle frame." +msgstr "该 [Tween] 在空闲帧期间更新。" + +msgid "" +"If the [Tween] has a bound node, it will process when that node can process " +"(see [member Node.process_mode]). Otherwise it's the same as [constant " +"TWEEN_PAUSE_STOP]." +msgstr "" +"如果该 [Tween] 绑定了节点,它将在该节点可以处理时进行处理(见 [member Node." +"process_mode])。否则与 [constant TWEEN_PAUSE_STOP] 相同。" + +msgid "If [SceneTree] is paused, the [Tween] will also pause." +msgstr "如果 [SceneTree] 被暂停,则该 [Tween] 也会暂停。" + +msgid "The [Tween] will process regardless of whether [SceneTree] is paused." +msgstr "无论 [SceneTree] 是否被暂停,该 [Tween] 都会处理。" + msgid "The animation is interpolated linearly." msgstr "动画是线性插值的。" @@ -27012,20 +49766,20 @@ msgstr "动画使用正弦函数进行插值。" msgid "" "The animation is interpolated with a quintic (to the power of 5) function." -msgstr "动画是用五次方,即 5 的幂函数进行插值的。" +msgstr "动画使用五次(5 次方)函数进行插值。" msgid "" "The animation is interpolated with a quartic (to the power of 4) function." -msgstr "动画是用一个四次方,即 4 的幂函数插值的。" +msgstr "动画使用四次(4 次方)函数进行插值。" msgid "" "The animation is interpolated with a quadratic (to the power of 2) function." -msgstr "动画是用二次方,即 2 的幂函数插值的。" +msgstr "动画使用二次(2 次方)函数进行插值。" msgid "" "The animation is interpolated with an exponential (to the power of x) " "function." -msgstr "动画是用一个指数,即 x 的幂函数插值的。" +msgstr "动画使用指数(x 次方)函数进行插值。" msgid "" "The animation is interpolated with elasticity, wiggling around the edges." @@ -27033,7 +49787,7 @@ msgstr "动画弹性插值,在边缘摆动。" msgid "" "The animation is interpolated with a cubic (to the power of 3) function." -msgstr "动画是用一个立方,即 3 的幂函数插值的。" +msgstr "动画使用三次(3 次方)函数进行插值。" msgid "The animation is interpolated with a function using square roots." msgstr "动画使用平方根的函数进行插值。" @@ -27060,6 +49814,17 @@ msgid "" "interpolation is fastest at both ends." msgstr "[constant EASE_IN] 和 [constant EASE_OUT] 的组合。两端的插值最快。" +msgid "Abstract class for all Tweeners used by [Tween]." +msgstr "[Tween] 使用的所有 Tweener(补间器)的抽象类。" + +msgid "" +"Tweeners are objects that perform a specific animating task, e.g. " +"interpolating a property or calling a method at a given time. A [Tweener] " +"can't be created manually, you need to use a dedicated method from [Tween]." +msgstr "" +"Tweener 是执行特定动画化的任务的对象,例如,在给定的时间,插值一个属性或调用" +"一个方法。[Tweener] 不能被手动创建,您需要使用 [Tween] 中的专用方法。" + msgid "Emitted when the [Tweener] has just finished its job." msgstr "当该 [Tweener] 刚刚完成其任务时触发。" @@ -27067,6 +49832,257 @@ msgid "Helper class to implement a UDP server." msgstr "用于实现 UDP 服务器的辅助类。" msgid "" +"A simple server that opens a UDP socket and returns connected " +"[PacketPeerUDP] upon receiving new packets. See also [method PacketPeerUDP." +"connect_to_host].\n" +"After starting the server ([method listen]), you will need to [method poll] " +"it at regular intervals (e.g. inside [method Node._process]) for it to " +"process new packets, delivering them to the appropriate [PacketPeerUDP], and " +"taking new connections.\n" +"Below a small example of how it can be used:\n" +"[codeblocks]\n" +"[gdscript]\n" +"# server_node.gd\n" +"class_name ServerNode\n" +"extends Node\n" +"\n" +"var server := UDPServer.new()\n" +"var peers = []\n" +"\n" +"func _ready():\n" +" server.listen(4242)\n" +"\n" +"func _process(delta):\n" +" server.poll() # Important!\n" +" if server.is_connection_available():\n" +" var peer : PacketPeerUDP = server.take_connection()\n" +" var packet = peer.get_packet()\n" +" print(\"Accepted peer: %s:%s\" % [peer.get_packet_ip(), peer." +"get_packet_port()])\n" +" print(\"Received data: %s\" % [packet.get_string_from_utf8()])\n" +" # Reply so it knows we received the message.\n" +" peer.put_packet(packet)\n" +" # Keep a reference so we can keep contacting the remote peer.\n" +" peers.append(peer)\n" +"\n" +" for i in range(0, peers.size()):\n" +" pass # Do something with the connected peers.\n" +"[/gdscript]\n" +"[csharp]\n" +"// ServerNode.cs\n" +"using Godot;\n" +"using System.Collections.Generic;\n" +"\n" +"public partial class ServerNode : Node\n" +"{\n" +" private UdpServer _server = new UdpServer();\n" +" private List<PacketPeerUdp> _peers = new List<PacketPeerUdp>();\n" +"\n" +" public override void _Ready()\n" +" {\n" +" _server.Listen(4242);\n" +" }\n" +"\n" +" public override void _Process(double delta)\n" +" {\n" +" _server.Poll(); // Important!\n" +" if (_server.IsConnectionAvailable())\n" +" {\n" +" PacketPeerUdp peer = _server.TakeConnection();\n" +" byte[] packet = peer.GetPacket();\n" +" GD.Print($\"Accepted Peer: {peer.GetPacketIP()}:{peer." +"GetPacketPort()}\");\n" +" GD.Print($\"Received Data: {packet.GetStringFromUtf8()}\");\n" +" // Reply so it knows we received the message.\n" +" peer.PutPacket(packet);\n" +" // Keep a reference so we can keep contacting the remote peer.\n" +" _peers.Add(peer);\n" +" }\n" +" foreach (var peer in _peers)\n" +" {\n" +" // Do something with the peers.\n" +" }\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[codeblocks]\n" +"[gdscript]\n" +"# client_node.gd\n" +"class_name ClientNode\n" +"extends Node\n" +"\n" +"var udp := PacketPeerUDP.new()\n" +"var connected = false\n" +"\n" +"func _ready():\n" +" udp.connect_to_host(\"127.0.0.1\", 4242)\n" +"\n" +"func _process(delta):\n" +" if !connected:\n" +" # Try to contact server\n" +" udp.put_packet(\"The answer is... 42!\".to_utf8())\n" +" if udp.get_available_packet_count() > 0:\n" +" print(\"Connected: %s\" % udp.get_packet().get_string_from_utf8())\n" +" connected = true\n" +"[/gdscript]\n" +"[csharp]\n" +"// ClientNode.cs\n" +"using Godot;\n" +"\n" +"public partial class ClientNode : Node\n" +"{\n" +" private PacketPeerUdp _udp = new PacketPeerUdp();\n" +" private bool _connected = false;\n" +"\n" +" public override void _Ready()\n" +" {\n" +" _udp.ConnectToHost(\"127.0.0.1\", 4242);\n" +" }\n" +"\n" +" public override void _Process(double delta)\n" +" {\n" +" if (!_connected)\n" +" {\n" +" // Try to contact server\n" +" _udp.PutPacket(\"The Answer Is..42!\".ToUtf8());\n" +" }\n" +" if (_udp.GetAvailablePacketCount() > 0)\n" +" {\n" +" GD.Print($\"Connected: {_udp.GetPacket()." +"GetStringFromUtf8()}\");\n" +" _connected = true;\n" +" }\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"一个简单的服务,它打开一个 UDP 套接字,并在接收到新数据包时,返回已连接的 " +"[PacketPeerUDP]。另见 [method PacketPeerUDP.connect_to_host]。\n" +"在启动服务([method listen])后,您需要定期(例如在 [method Node._process] 内" +"部)对其 [method poll],以处理新的数据包,将数据包传递给适当的 " +"[PacketPeerUDP],并且接受新的连接。\n" +"下面是一个如何使用它的小例子:\n" +"[codeblocks]\n" +"[gdscript]\n" +"# server_node.gd\n" +"class_name ServerNode\n" +"extends Node\n" +"\n" +"var server := UDPServer.new()\n" +"var peers = []\n" +"\n" +"func _ready():\n" +" server.listen(4242)\n" +"\n" +"func _process(delta):\n" +" server.poll() # 重要!\n" +" if server.is_connection_available():\n" +" var peer : PacketPeerUDP = server.take_connection()\n" +" var packet = peer.get_packet()\n" +" print(\"Accepted peer: %s:%s\" % [peer.get_packet_ip(), peer." +"get_packet_port()])\n" +" print(\"Received data: %s\" % [packet.get_string_from_utf8()])\n" +" # 回复,以便它知道我们收到了消息。\n" +" peer.put_packet(packet)\n" +" # 保留一个引用,以便我们可以继续联系远程对等体。\n" +" peers.append(peer)\n" +"\n" +" for i in range(0, peers.size()):\n" +" pass # 与已连接的对等体,一起做一些事情。\n" +"[/gdscript]\n" +"[csharp]\n" +"// ServerNode.cs\n" +"using Godot;\n" +"using System.Collections.Generic;\n" +"\n" +"public partial class ServerNode : Node\n" +"{\n" +" private UdpServer _server = new UdpServer();\n" +" private List<PacketPeerUdp> _peers = new List<PacketPeerUdp>();\n" +"\n" +" public override void _Ready()\n" +" {\n" +" _server.Listen(4242);\n" +" }\n" +"\n" +" public override void _Process(double delta)\n" +" {\n" +" _server.Poll(); // 重要!\n" +" if (_server.IsConnectionAvailable())\n" +" {\n" +" PacketPeerUdp peer = _server.TakeConnection();\n" +" byte[] packet = peer.GetPacket();\n" +" GD.Print($\"Accepted Peer: {peer.GetPacketIP()}:{peer." +"GetPacketPort()}\");\n" +" GD.Print($\"Received Data: {packet.GetStringFromUtf8()}\");\n" +" // 回复,以便它知道我们收到了消息。\n" +" peer.PutPacket(packet);\n" +" // 保留一个引用,以便我们可以继续联系远程对等体。\n" +" _peers.Add(peer);\n" +" }\n" +" foreach (var peer in _peers)\n" +" {\n" +" // 与对等体,一起做一些事情。\n" +" }\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[codeblocks]\n" +"[gdscript]\n" +"# client_node.gd\n" +"class_name ClientNode\n" +"extends Node\n" +"\n" +"var udp := PacketPeerUDP.new()\n" +"var connected = false\n" +"\n" +"func _ready():\n" +" udp.connect_to_host(\"127.0.0.1\", 4242)\n" +"\n" +"func _process(delta):\n" +" if !connected:\n" +" # 尝试联系服务器\n" +" udp.put_packet(\"The answer is... 42!\".to_utf8())\n" +" if udp.get_available_packet_count() > 0:\n" +" print(\"Connected: %s\" % udp.get_packet().get_string_from_utf8())\n" +" connected = true\n" +"[/gdscript]\n" +"[csharp]\n" +"// ClientNode.cs\n" +"using Godot;\n" +"\n" +"public partial class ClientNode : Node\n" +"{\n" +" private PacketPeerUdp _udp = new PacketPeerUdp();\n" +" private bool _connected = false;\n" +"\n" +" public override void _Ready()\n" +" {\n" +" _udp.ConnectToHost(\"127.0.0.1\", 4242);\n" +" }\n" +"\n" +" public override void _Process(double delta)\n" +" {\n" +" if (!_connected)\n" +" {\n" +" // 尝试联系服务器\n" +" _udp.PutPacket(\"The Answer Is..42!\".ToUtf8());\n" +" }\n" +" if (_udp.GetAvailablePacketCount() > 0)\n" +" {\n" +" GD.Print($\"Connected: {_udp.GetPacket()." +"GetStringFromUtf8()}\");\n" +" _connected = true;\n" +" }\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" "Returns [code]true[/code] if a packet with a new address/port combination " "was received on the socket." msgstr "" @@ -27122,6 +50138,22 @@ msgstr "" msgid "Helper to manage undo/redo operations in the editor or custom tools." msgstr "在编辑器或自定义工具中管理撤销及重做操作的辅助工具。" +msgid "Gets the action name from its index." +msgstr "根据索引获取动作名称。" + +msgid "Gets the index of the current action." +msgstr "获取当前动作的索引。" + +msgid "" +"Gets the name of the current action, equivalent to " +"[code]get_action_name(get_current_action())[/code]." +msgstr "" +"获取当前动作的名称,等价于 [code]get_action_name(get_current_action())[/" +"code]。" + +msgid "Returns how many elements are in the history." +msgstr "返回历史中有多少元素。" + msgid "" "Gets the version. Every time a new action is committed, the [UndoRedo]'s " "version number is increased automatically.\n" @@ -27430,6 +50462,222 @@ msgstr "内存分配错误。" msgid "The most important data type in Godot." msgstr "Godot 中最重要的数据类型。" +msgid "" +"In computer programming, a Variant class is a class that is designed to " +"store a variety of other types. Dynamic programming languages like PHP, Lua, " +"JavaScript and GDScript like to use them to store variables' data on the " +"backend. With these Variants, properties are able to change value types " +"freely.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var foo = 2 # foo is dynamically an integer\n" +"foo = \"Now foo is a string!\"\n" +"foo = RefCounted.new() # foo is an Object\n" +"var bar: int = 2 # bar is a statically typed integer.\n" +"# bar = \"Uh oh! I can't make static variables become a different type!\"\n" +"[/gdscript]\n" +"[csharp]\n" +"// C# is statically typed. Once a variable has a type it cannot be changed. " +"You can use the `var` keyword to let the compiler infer the type " +"automatically.\n" +"var foo = 2; // Foo is a 32-bit integer (int). Be cautious, integers in " +"GDScript are 64-bit and the direct C# equivalent is `long`.\n" +"// foo = \"foo was and will always be an integer. It cannot be turned into a " +"string!\";\n" +"var boo = \"Boo is a string!\";\n" +"var ref = new RefCounted(); // var is especially useful when used together " +"with a constructor.\n" +"\n" +"// Godot also provides a Variant type that works like an union of all the " +"Variant-compatible types.\n" +"Variant fooVar = 2; // fooVar is dynamically an integer (stored as a `long` " +"in the Variant type).\n" +"fooVar = \"Now fooVar is a string!\";\n" +"fooVar = new RefCounted(); // fooVar is a GodotObject.\n" +"[/csharp]\n" +"[/codeblocks]\n" +"Godot tracks all scripting API variables within Variants. Without even " +"realizing it, you use Variants all the time. When a particular language " +"enforces its own rules for keeping data typed, then that language is " +"applying its own custom logic over the base Variant scripting API.\n" +"- GDScript automatically wrap values in them. It keeps all data in plain " +"Variants by default and then optionally enforces custom static typing rules " +"on variable types.\n" +"- C# is statically typed, but uses its own implementation of the " +"[code]Variant[/code] type in place of Godot's Variant class when it needs to " +"represent a dynamic value. A [code]Variant[/code] can be assigned any " +"compatible type implicitly but converting requires an explicit cast.\n" +"The global [method @GlobalScope.typeof] function returns the enumerated " +"value of the Variant type stored in the current variable (see [enum Variant." +"Type]).\n" +"[codeblocks]\n" +"[gdscript]\n" +"var foo = 2\n" +"match typeof(foo):\n" +" TYPE_NIL:\n" +" print(\"foo is null\")\n" +" TYPE_INTEGER:\n" +" print(\"foo is an integer\")\n" +" TYPE_OBJECT:\n" +" # Note that Objects are their own special category.\n" +" # To get the name of the underlying Object type, you need the " +"`get_class()` method.\n" +" print(\"foo is a(n) %s\" % foo.get_class()) # inject the class name " +"into a formatted string.\n" +" # Note also that there is not yet any way to get a script's " +"`class_name` string easily.\n" +" # To fetch that value, you can use [member ProjectSettings." +"get_global_class_list].\n" +" # Open your project.godot file to see it up close.\n" +"[/gdscript]\n" +"[csharp]\n" +"Variant foo = 2;\n" +"switch (foo.VariantType)\n" +"{\n" +" case Variant.Type.Nil:\n" +" GD.Print(\"foo is null\");\n" +" break;\n" +" case Variant.Type.Int:\n" +" GD.Print(\"foo is an integer\");\n" +" break;\n" +" case Variant.Type.Object:\n" +" // Note that Objects are their own special category.\n" +" // You can convert a Variant to a GodotObject and use reflection to " +"get its name.\n" +" GD.Print($\"foo is a(n) {foo.AsGodotObject().GetType().Name}\");\n" +" break;\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"A Variant takes up only 20 bytes and can store almost any engine datatype " +"inside of it. Variants are rarely used to hold information for long periods " +"of time. Instead, they are used mainly for communication, editing, " +"serialization and moving data around.\n" +"Godot has specifically invested in making its Variant class as flexible as " +"possible; so much so that it is used for a multitude of operations to " +"facilitate communication between all of Godot's systems.\n" +"A Variant:\n" +"- Can store almost any datatype.\n" +"- Can perform operations between many variants. GDScript uses Variant as its " +"atomic/native datatype.\n" +"- Can be hashed, so it can be compared quickly to other variants.\n" +"- Can be used to convert safely between datatypes.\n" +"- Can be used to abstract calling methods and their arguments. Godot exports " +"all its functions through variants.\n" +"- Can be used to defer calls or move data between threads.\n" +"- Can be serialized as binary and stored to disk, or transferred via " +"network.\n" +"- Can be serialized to text and use it for printing values and editable " +"settings.\n" +"- Can work as an exported property, so the editor can edit it universally.\n" +"- Can be used for dictionaries, arrays, parsers, etc.\n" +"[b]Containers (Array and Dictionary):[/b] Both are implemented using " +"variants. A [Dictionary] can match any datatype used as key to any other " +"datatype. An [Array] just holds an array of Variants. Of course, a Variant " +"can also hold a [Dictionary] and an [Array] inside, making it even more " +"flexible.\n" +"Modifications to a container will modify all references to it. A [Mutex] " +"should be created to lock it if multi-threaded access is desired." +msgstr "" +"在计算机编程中,Variant(变体)类是用来存储各种其他类型的类。像 PHP、 Lua、 " +"JavaScript 和 GDScript 这样的动态编程语言喜欢用它们在后端存储变量数据。使用 " +"Variant,属性可以自由地更改值类型。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var foo = 2 # foo 是动态类型的整数\n" +"foo = \"现在 foo 是字符串!\"\n" +"foo = RefCounted.new() # foo 是 Object\n" +"var bar: int = 2 # bar 是静态类型的整数。\n" +"# bar = \"诶呀!我没法让静态类型的变量变成其他类型!\"\n" +"[/gdscript]\n" +"[csharp]\n" +"// C# 是静态类型的。变量设置类型后无法改变。你可以用 `var` 关键字让编译器自动" +"推断类型。\n" +"var foo = 2; // foo 是 32 位整数(int)。请注意,GDScript 中的整数是 64 位" +"的,在 C# 中与之等价的是 `long`。\n" +"// foo = \"foo 过去、现在、将来都是整数,没法变成字符串!\";\n" +"var boo = \"boo 是字符串!\";\n" +"var ref = new RefCounted(); // var 非常适合与构造函数配合使用。\n" +"\n" +"// Godot 也提供了 Variant 类,类似于所有与 Variant 兼容类型的 union。\n" +"Variant fooVar = 2; // fooVar 是动态类型的整数(在 Variant 类型中存储为 " +"`long`)。\n" +"fooVar = \"现在 fooVar 是字符串!\";\n" +"fooVar = new RefCounted(); // fooVar 是 GodotObject。\n" +"[/csharp]\n" +"[/codeblocks]\n" +"Godot 在 Variant 中跟踪所有脚本 API 变量。你一直在无意中使用 Variant。某种语" +"言为保持数据类型而执行自己的规则时,那么就是该语言在基础 Variant 脚本 API 上" +"应用了自定义的逻辑。\n" +"- GDScript 会自动将数值进行包装。默认情况下会将所有数据保存在普通的 Variant " +"中,也可以选择对变量类型执行自定义的静态类型规则。\n" +"- C# 是静态类型的,但是当它需要表示动态值时,就会在需要 Godot 的 Variant 类的" +"地方使用它自己实现的 [code]Variant[/code] 类型。[code]Variant[/code] 可以用任" +"意兼容类型隐式赋值,但反之则需要显式类型转换。\n" +"全局函数 [method @GlobalScope.typeof] 返回的是枚举类型的值,表示当前变量中所" +"存储的 Variant 类型(见 [enum Variant.Type])。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var foo = 2\n" +"match typeof(foo):\n" +" TYPE_NIL:\n" +" print(\"foo 为 null\")\n" +" TYPE_INTEGER:\n" +" print(\"foo 为整数\")\n" +" TYPE_OBJECT:\n" +" # 请注意,Object 有自己的特殊分类。\n" +" # 要获取实际的 Object 类型名称,你需要使用 `get_class()` 方法。\n" +" print(\"foo is a(n) %s\" % foo.get_class()) # 将类名注入格式字符串" +"中。\n" +" # 另外请注意,目前没有比较方便的方法来获取脚本的 `class_name` 字符" +"串。\n" +" # 如果要获取,你可以使用 [member ProjectSettings." +"get_global_class_list]。\n" +" # 请打开 project.godot 文件查看。\n" +"[/gdscript]\n" +"[csharp]\n" +"Variant foo = 2;\n" +"switch (foo.VariantType)\n" +"{\n" +" case Variant.Type.Nil:\n" +" GD.Print(\"foo 为 null\");\n" +" break;\n" +" case Variant.Type.Int:\n" +" GD.Print(\"foo 为整数\");\n" +" break;\n" +" case Variant.Type.Object:\n" +" // 请注意,Object 有自己的特殊分类。\n" +" // 可以将 Variant 转换为 GodotObject,通过反射获取名称。\n" +" GD.Print($\"foo is a(n) {foo.AsGodotObject().GetType().Name}\");\n" +" break;\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"Variant 只占 20 个字节,可以在其中存储几乎所有的引擎数据类型。Variant 很少用" +"于长期保存信息,主要还是用于通信、编辑、序列化和移动数据。\n" +"Godot 特别致力于使其 Variant 类尽可能灵活;以使它可被用于各种操作,促进 " +"Godot 所有系统之间的联系。\n" +"Variant:\n" +"- 可以存储几乎任何数据类型。\n" +"- 可以在许多 Variant 之间执行操作。GDScript 使用 Variant 作为其原子/原生数据" +"类型。\n" +"- 可以被哈希,所以可以快速与其他 Variant 进行比较。\n" +"- 可以用于数据类型之间的安全转换。\n" +"- 可以用来抽象调用方法和它们的参数。Godot 通过 Variant 导出所有函数。\n" +"- 可以用来推迟调用或在线程之间移动数据。\n" +"- 可以序列化为二进制并存储到磁盘,或通过网络传输。\n" +"- 可以序列化为文本,用于打印数值和可编辑设置项。\n" +"- 可以作为一个导出的属性工作,所以编辑器可以通用地进行编辑。\n" +"- 可以用于字典、数组、解析器等。\n" +"[b]容器(数组和字典):[/b]它们都是用 Variant 来实现的。[Dictionary] 可以将任" +"何作为键的数据类型匹配到到任何其他数据类型。[Array] 就是持有 Variant 的数组。" +"当然,Variant 也可以在里面再容纳 [Dictionary] 和 [Array],使其更加灵活。\n" +"对容器的修改会修改所有对它的引用。如果需要多线程访问,应该创建 [Mutex] 来对它" +"进行锁定。" + +msgid "Variant class introduction" +msgstr "Variant 类简介" + msgid "Vertical box container." msgstr "垂直盒式容器。" @@ -27439,12 +50687,21 @@ msgstr "垂直盒式容器。请参阅 [BoxContainer]。" msgid "The vertical space between the [VBoxContainer]'s elements." msgstr "[VBoxContainer] 的元素之间的垂直空间。" +msgid "Vector used for 2D math using floating point coordinates." +msgstr "浮点数坐标向量,用于 2D 数学。" + msgid "3Blue1Brown Essence of Linear Algebra" msgstr "3Blue1Brown《线性代数的本质》" msgid "Constructs a [Vector2] as a copy of the given [Vector2]." msgstr "构造给定 [Vector2] 的副本。" +msgid "Constructs a new [Vector2] from [Vector2i]." +msgstr "从 [Vector2i] 构造新的 [Vector2]。" + +msgid "Constructs a new [Vector2] from the given [param x] and [param y]." +msgstr "从给定的 [param x] 和 [param y] 构造新的 [Vector2]。" + msgid "" "Returns a new vector with all components in absolute values (i.e. positive)." msgstr "返回一个新的向量,其所有分量都是绝对值,即正值。" @@ -27474,6 +50731,13 @@ msgid "" msgstr "返回一个新的向量,所有的向量都被四舍五入,向负无穷大。" msgid "" +"Returns [code]true[/code] if this vector is finite, by calling [method " +"@GlobalScope.is_finite] on each component." +msgstr "" +"如果该向量无穷,则返回 [code]true[/code],判断方法是对每个分量调用 [method " +"@GlobalScope.is_finite]。" + +msgid "" "Returns [code]true[/code] if the vector is normalized, [code]false[/code] " "otherwise." msgstr "" @@ -27512,6 +50776,18 @@ msgid "" "[1][/code]." msgstr "向量的 Y 分量。也可以通过使用索引位置 [code][1][/code] 访问。" +msgid "" +"Enumerated value for the X axis. Returned by [method max_axis_index] and " +"[method min_axis_index]." +msgstr "" +"X 轴的枚举值。由 [method max_axis_index] 和 [method min_axis_index] 返回。" + +msgid "" +"Enumerated value for the Y axis. Returned by [method max_axis_index] and " +"[method min_axis_index]." +msgstr "" +"Y 轴的枚举值。由 [method max_axis_index] 和 [method min_axis_index] 返回。" + msgid "Zero vector, a vector with all components set to [code]0[/code]." msgstr "零向量,所有分量都设置为 [code]0[/code] 的向量。" @@ -27535,12 +50811,170 @@ msgstr "上单位向量。在 2D 中 Y 是向下的,所以这个向量指向 - msgid "Down unit vector. Y is down in 2D, so this vector points +Y." msgstr "下单位向量。在 2D 中 Y 是向下的,所以这个向量指向 +Y。" +msgid "" +"Multiplies each component of the [Vector2] by the components of the given " +"[Vector2].\n" +"[codeblock]\n" +"print(Vector2(10, 20) * Vector2(3, 4)) # Prints \"(30, 80)\"\n" +"[/codeblock]" +msgstr "" +"将该 [Vector2] 的每个分量乘以给定 [Vector2] 的对应分量。\n" +"[codeblock]\n" +"print(Vector2(10, 20) * Vector2(3, 4)) # 输出 \"(30, 80)\"\n" +"[/codeblock]" + +msgid "Multiplies each component of the [Vector2] by the given [float]." +msgstr "将该 [Vector2] 的每个分量乘以给定的 [float]。" + +msgid "Multiplies each component of the [Vector2] by the given [int]." +msgstr "将该 [Vector2] 的每个分量乘以给定的 [int]。" + +msgid "" +"Adds each component of the [Vector2] by the components of the given " +"[Vector2].\n" +"[codeblock]\n" +"print(Vector2(10, 20) + Vector2(3, 4)) # Prints \"(13, 24)\"\n" +"[/codeblock]" +msgstr "" +"将该 [Vector2] 的每个分量加上给定 [Vector2] 的对应分量。\n" +"[codeblock]\n" +"print(Vector2(10, 20) + Vector2(3, 4)) # 输出 \"(13, 24)\"\n" +"[/codeblock]" + +msgid "" +"Subtracts each component of the [Vector2] by the components of the given " +"[Vector2].\n" +"[codeblock]\n" +"print(Vector2(10, 20) - Vector2(3, 4)) # Prints \"(7, 16)\"\n" +"[/codeblock]" +msgstr "" +"将该 [Vector2] 的每个分量减去给定 [Vector2] 的对应分量。\n" +"[codeblock]\n" +"print(Vector2(10, 20) - Vector2(3, 4)) # 输出 \"(7, 16)\"\n" +"[/codeblock]" + +msgid "" +"Divides each component of the [Vector2] by the components of the given " +"[Vector2].\n" +"[codeblock]\n" +"print(Vector2(10, 20) / Vector2(2, 5)) # Prints \"(5, 4)\"\n" +"[/codeblock]" +msgstr "" +"将该 [Vector2] 的每个分量除以给定 [Vector2] 的对应分量。\n" +"[codeblock]\n" +"print(Vector2(10, 20) / Vector2(2, 5)) # 输出 \"(5, 4)\"\n" +"[/codeblock]" + +msgid "Divides each component of the [Vector2] by the given [float]." +msgstr "将该 [Vector2] 的每个分量除以给定的 [float]。" + +msgid "Divides each component of the [Vector2] by the given [int]." +msgstr "将该 [Vector2] 的每个分量除以给定的 [int]。" + +msgid "Vector used for 2D math using integer coordinates." +msgstr "整数坐标向量,用于 2D 数学。" + 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]。" + +msgid "Returns [code]true[/code] if the vectors are not equal." +msgstr "如果向量不相等,则返回 [code]true[/code]。" + +msgid "" +"Multiplies each component of the [Vector2i] by the components of the given " +"[Vector2i].\n" +"[codeblock]\n" +"print(Vector2i(10, 20) * Vector2i(3, 4)) # Prints \"(30, 80)\"\n" +"[/codeblock]" +msgstr "" +"将该 [Vector2i] 的每个分量乘以给定 [Vector2i] 的对应分量。\n" +"[codeblock]\n" +"print(Vector2i(10, 20) * Vector2i(3, 4)) # 输出 \"(30, 80)\"\n" +"[/codeblock]" + +msgid "" +"Multiplies each component of the [Vector2i] by the given [float]. Returns a " +"[Vector2].\n" +"[codeblock]\n" +"print(Vector2i(10, 15) * 0.9) # Prints \"(9, 13.5)\"\n" +"[/codeblock]" +msgstr "" +"将该 [Vector2i] 的每个分量乘以给定的 [float]。返回的是 [Vector2]。\n" +"[codeblock]\n" +"print(Vector2i(10, 15) * 0.9) # 输出 \"(9, 13.5)\"\n" +"[/codeblock]" + +msgid "" +"Adds each component of the [Vector2i] by the components of the given " +"[Vector2i].\n" +"[codeblock]\n" +"print(Vector2i(10, 20) + Vector2i(3, 4)) # Prints \"(13, 24)\"\n" +"[/codeblock]" +msgstr "" +"将该 [Vector2i] 的每个分量加上给定 [Vector2i] 的对应分量。\n" +"[codeblock]\n" +"print(Vector2i(10, 20) + Vector2i(3, 4)) # 输出 \"(13, 24)\"\n" +"[/codeblock]" + +msgid "" +"Subtracts each component of the [Vector2i] by the components of the given " +"[Vector2i].\n" +"[codeblock]\n" +"print(Vector2i(10, 20) - Vector2i(3, 4)) # Prints \"(7, 16)\"\n" +"[/codeblock]" +msgstr "" +"将该 [Vector2i] 的每个分量减去给定 [Vector2i] 的对应分量。\n" +"[codeblock]\n" +"print(Vector2i(10, 20) - Vector2i(3, 4)) # 输出 \"(7, 16)\"\n" +"[/codeblock]" + +msgid "" +"Divides each component of the [Vector2i] by the components of the given " +"[Vector2i].\n" +"[codeblock]\n" +"print(Vector2i(10, 20) / Vector2i(2, 5)) # Prints \"(5, 4)\"\n" +"[/codeblock]" +msgstr "" +"将该 [Vector2i] 的每个分量除以给定 [Vector2i] 的对应分量。\n" +"[codeblock]\n" +"print(Vector2i(10, 20) / Vector2i(2, 5)) # 输出 \"(5, 4)\"\n" +"[/codeblock]" + +msgid "" +"Divides each component of the [Vector2i] by the given [float]. Returns a " +"[Vector2].\n" +"[codeblock]\n" +"print(Vector2i(10, 20) / 2.9) # Prints \"(5, 10)\"\n" +"[/codeblock]" +msgstr "" +"将该 [Vector2i] 的每个分量除以给定的 [float]。返回的是 [Vector2]。\n" +"[codeblock]\n" +"print(Vector2i(10, 20) / 2.9) # 输出 \"(5, 10)\"\n" +"[/codeblock]" + +msgid "Divides each component of the [Vector2i] by the given [int]." +msgstr "将该 [Vector2i] 的每个分量除以给定的 [int]。" + +msgid "Vector used for 3D math using floating point coordinates." +msgstr "浮点数坐标向量,用于 3D 数学。" + msgid "Constructs a [Vector3] as a copy of the given [Vector3]." msgstr "构造给定 [Vector3] 的副本。" +msgid "Constructs a new [Vector3] from [Vector3i]." +msgstr "从 [Vector3i] 构造新的 [Vector3]。" + +msgid "Returns a [Vector3] with the given components." +msgstr "返回具有给定分量的 [Vector3]。" + msgid "Returns the unsigned minimum angle to the given vector, in radians." msgstr "返回与给定向量的无符号最小角度,单位为弧度。" @@ -27554,6 +50988,12 @@ msgid "" msgstr "向量的 Z 分量。也可以通过使用索引位置 [code][2][/code] 访问。" msgid "" +"Enumerated value for the Z axis. Returned by [method max_axis_index] and " +"[method min_axis_index]." +msgstr "" +"Z 轴的枚举值。由 [method max_axis_index] 和 [method min_axis_index] 返回。" + +msgid "" "Left unit vector. Represents the local direction of left, and the global " "direction of west." msgstr "左单位向量。代表局部的左方向,全局的西方向。" @@ -27579,15 +51019,352 @@ msgid "" "direction of south." msgstr "后单位向量。代表局部的后方向,全局的南方向。" +msgid "" +"Inversely transforms (multiplies) the [Vector3] by the given [Basis] matrix." +msgstr "使用给定的 [Basis] 矩阵逆变换(乘)该 [Vector3]。" + +msgid "" +"Multiplies each component of the [Vector3] by the components of the given " +"[Vector3].\n" +"[codeblock]\n" +"print(Vector3(10, 20, 30) * Vector3(3, 4, 5)) # Prints \"(30, 80, 150)\"\n" +"[/codeblock]" +msgstr "" +"将该 [Vector3] 的每个分量乘以给定 [Vector3] 的对应分量。\n" +"[codeblock]\n" +"print(Vector3(10, 20, 30) * Vector3(3, 4, 5)) # 输出 \"(30, 80, 150)\"\n" +"[/codeblock]" + +msgid "" +"Adds each component of the [Vector3] by the components of the given " +"[Vector3].\n" +"[codeblock]\n" +"print(Vector3(10, 20, 30) + Vector3(3, 4, 5)) # Prints \"(13, 24, 35)\"\n" +"[/codeblock]" +msgstr "" +"将该 [Vector3] 的每个分量加上给定 [Vector3] 的对应分量。\n" +"[codeblock]\n" +"print(Vector3(10, 20, 30) + Vector3(3, 4, 5)) # 输出 \"(13, 24, 35)\"\n" +"[/codeblock]" + +msgid "" +"Subtracts each component of the [Vector3] by the components of the given " +"[Vector3].\n" +"[codeblock]\n" +"print(Vector3(10, 20, 30) - Vector3(3, 4, 5)) # Prints \"(7, 16, 25)\"\n" +"[/codeblock]" +msgstr "" +"将该 [Vector3] 的每个分量减去给定 [Vector3] 的对应分量。\n" +"[codeblock]\n" +"print(Vector3(10, 20, 30) - Vector3(3, 4, 5)) # 输出 \"(7, 16, 25)\"\n" +"[/codeblock]" + +msgid "" +"Divides each component of the [Vector3] by the components of the given " +"[Vector3].\n" +"[codeblock]\n" +"print(Vector3(10, 20, 30) / Vector3(2, 5, 3)) # Prints \"(5, 4, 10)\"\n" +"[/codeblock]" +msgstr "" +"将该 [Vector3] 的每个分量除以给定 [Vector3] 的对应分量。\n" +"[codeblock]\n" +"print(Vector3(10, 20, 30) / Vector3(2, 5, 3)) # 输出 \"(5, 4, 10)\"\n" +"[/codeblock]" + +msgid "Divides each component of the [Vector3] by the given [float]." +msgstr "将该 [Vector3] 的每个分量除以给定的 [float]。" + +msgid "Divides each component of the [Vector3] by the given [int]." +msgstr "将该 [Vector3] 的每个分量除以给定的 [int]。" + +msgid "Vector used for 3D math using integer coordinates." +msgstr "整数坐标向量,用于 3D 数学。" + 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 "" +"Multiplies each component of the [Vector3i] by the components of the given " +"[Vector3i].\n" +"[codeblock]\n" +"print(Vector3i(10, 20, 30) * Vector3i(3, 4, 5)) # Prints \"(30, 80, 150)\"\n" +"[/codeblock]" +msgstr "" +"将该 [Vector3i] 的每个分量乘以给定 [Vector3i] 的对应分量。\n" +"[codeblock]\n" +"print(Vector3i(10, 20, 30) * Vector3i(3, 4, 5)) # 输出 \"(30, 80, 150)\"\n" +"[/codeblock]" + +msgid "" +"Multiplies each component of the [Vector3i] by the given [float]. Returns a " +"[Vector3].\n" +"[codeblock]\n" +"print(Vector3i(10, 15, 20) * 0.9) # Prints \"(9, 13.5, 18)\"\n" +"[/codeblock]" +msgstr "" +"将该 [Vector3i] 的每个分量乘以给定的 [float]。返回的是 [Vector3]。\n" +"[codeblock]\n" +"print(Vector3i(10, 15, 20) * 0.9) # 输出 \"(9, 13.5, 18)\"\n" +"[/codeblock]" + +msgid "" +"Adds each component of the [Vector3i] by the components of the given " +"[Vector3i].\n" +"[codeblock]\n" +"print(Vector3i(10, 20, 30) + Vector3i(3, 4, 5)) # Prints \"(13, 24, 35)\"\n" +"[/codeblock]" +msgstr "" +"将该 [Vector3i] 的每个分量加上给定 [Vector3i] 的对应分量。\n" +"[codeblock]\n" +"print(Vector3i(10, 20, 30) + Vector3i(3, 4, 5)) # 输出 \"(13, 24, 35)\"\n" +"[/codeblock]" + +msgid "" +"Subtracts each component of the [Vector3i] by the components of the given " +"[Vector3i].\n" +"[codeblock]\n" +"print(Vector3i(10, 20, 30) - Vector3i(3, 4, 5)) # Prints \"(7, 16, 25)\"\n" +"[/codeblock]" +msgstr "" +"将该 [Vector3i] 的每个分量减去给定 [Vector3i] 的对应分量。\n" +"[codeblock]\n" +"print(Vector3i(10, 20, 30) - Vector3i(3, 4, 5)) # 输出 \"(7, 16, 25)\"\n" +"[/codeblock]" + +msgid "" +"Divides each component of the [Vector3i] by the components of the given " +"[Vector3i].\n" +"[codeblock]\n" +"print(Vector3i(10, 20, 30) / Vector3i(2, 5, 3)) # Prints \"(5, 4, 10)\"\n" +"[/codeblock]" +msgstr "" +"将该 [Vector3i] 的每个分量除以给定 [Vector3i] 的对应分量。\n" +"[codeblock]\n" +"print(Vector3i(10, 20, 30) / Vector3i(2, 5, 3)) # 输出 \"(5, 4, 10)\"\n" +"[/codeblock]" + +msgid "" +"Divides each component of the [Vector3i] by the given [float]. Returns a " +"[Vector3].\n" +"[codeblock]\n" +"print(Vector3i(10, 20, 30) / 2.9) # Prints \"(5, 10, 15)\"\n" +"[/codeblock]" +msgstr "" +"将该 [Vector3i] 的每个分量除以给定的 [float]。返回的是 [Vector3]。\n" +"[codeblock]\n" +"print(Vector3i(10, 20, 30) / 2.9) # 输出 \"(5, 10, 15)\"\n" +"[/codeblock]" + +msgid "Divides each component of the [Vector3i] by the given [int]." +msgstr "将该 [Vector3i] 的每个分量除以给定的 [int]。" + +msgid "Vector used for 4D math using floating point coordinates." +msgstr "浮点数坐标向量,用于 4D 数学。" + msgid "Constructs a [Vector4] as a copy of the given [Vector4]." msgstr "构造给定 [Vector4] 的副本。" +msgid "Constructs a new [Vector4] from the given [Vector4i]." +msgstr "从给定的 [Vector4i] 构造新的 [Vector4]。" + +msgid "Returns a [Vector4] with the given components." +msgstr "返回具有给定分量的 [Vector4]。" + +msgid "Returns the dot product of this vector and [param with]." +msgstr "返回该向量与 [param with] 的点积。" + +msgid "" +"Enumerated value for the W axis. Returned by [method max_axis_index] and " +"[method min_axis_index]." +msgstr "" +"W 轴的枚举值。由 [method max_axis_index] 和 [method min_axis_index] 返回。" + +msgid "" +"Multiplies each component of the [Vector4] by the components of the given " +"[Vector4].\n" +"[codeblock]\n" +"print(Vector4(10, 20, 30, 40) * Vector4(3, 4, 5, 6)) # Prints \"(30, 80, " +"150, 240)\"\n" +"[/codeblock]" +msgstr "" +"将该 [Vector4] 的每个分量乘以给定 [Vector4] 的对应分量。\n" +"[codeblock]\n" +"print(Vector4(10, 20, 30, 40) * Vector4(3, 4, 5, 6)) # 输出 \"(30, 80, 150, " +"240)\"\n" +"[/codeblock]" + +msgid "" +"Multiplies each component of the [Vector4] by the given [float].\n" +"[codeblock]\n" +"print(Vector4(10, 20, 30, 40) * 2) # Prints \"(20, 40, 60, 80)\"\n" +"[/codeblock]" +msgstr "" +"将该 [Vector4] 的每个分量乘以给定的 [float]。\n" +"[codeblock]\n" +"print(Vector4(10, 20, 30, 40) * 2) # 输出 \"(20, 40, 60, 80)\"\n" +"[/codeblock]" + +msgid "" +"Adds each component of the [Vector4] by the components of the given " +"[Vector4].\n" +"[codeblock]\n" +"print(Vector4(10, 20, 30, 40) + Vector4(3, 4, 5, 6)) # Prints \"(13, 24, 35, " +"46)\"\n" +"[/codeblock]" +msgstr "" +"将该 [Vector4] 的每个分量加上给定 [Vector4] 的对应分量。\n" +"[codeblock]\n" +"print(Vector4(10, 20, 30, 40) + Vector4(3, 4, 5, 6)) # 输出 \"(13, 24, 35, " +"46)\"\n" +"[/codeblock]" + +msgid "" +"Subtracts each component of the [Vector4] by the components of the given " +"[Vector4].\n" +"[codeblock]\n" +"print(Vector4(10, 20, 30, 40) - Vector4(3, 4, 5, 6)) # Prints \"(7, 16, 25, " +"34)\"\n" +"[/codeblock]" +msgstr "" +"将该 [Vector4] 的每个分量减去给定 [Vector4] 的对应分量。\n" +"[codeblock]\n" +"print(Vector4(10, 20, 30, 40) - Vector4(3, 4, 5, 6)) # 输出 \"(7, 16, 25, " +"34)\"\n" +"[/codeblock]" + +msgid "" +"Divides each component of the [Vector4] by the components of the given " +"[Vector4].\n" +"[codeblock]\n" +"print(Vector4(10, 20, 30, 40) / Vector4(2, 5, 3, 4)) # Prints \"(5, 4, 10, " +"10)\"\n" +"[/codeblock]" +msgstr "" +"将该 [Vector4] 的每个分量除以给定 [Vector4] 的对应分量。\n" +"[codeblock]\n" +"print(Vector4(10, 20, 30, 40) / Vector4(2, 5, 3, 4)) # 输出 \"(5, 4, 10, " +"10)\"\n" +"[/codeblock]" + +msgid "" +"Divides each component of the [Vector4] by the given [float].\n" +"[codeblock]\n" +"print(Vector4(10, 20, 30, 40) / 2 # Prints \"(5, 10, 15, 20)\"\n" +"[/codeblock]" +msgstr "" +"将该 [Vector4] 的每个分量除以给定的 [float]。\n" +"[codeblock]\n" +"print(Vector4(10, 20, 30, 40) / 2 # 输出 \"(5, 10, 15, 20)\"\n" +"[/codeblock]" + +msgid "Divides each component of the [Vector4] by the given [int]." +msgstr "将该 [Vector4] 的每个分量除以给定的 [int]。" + +msgid "Vector used for 4D math using integer coordinates." +msgstr "整数坐标向量,用于 4D 数学。" + 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 "" +"Multiplies each component of the [Vector4i] by the components of the given " +"[Vector4i].\n" +"[codeblock]\n" +"print(Vector4i(10, 20, 30, 40) * Vector4i(3, 4, 5, 6)) # Prints \"(30, 80, " +"150, 240)\"\n" +"[/codeblock]" +msgstr "" +"将该 [Vector4i] 的每个分量乘以给定 [Vector4i] 的对应分量。\n" +"[codeblock]\n" +"print(Vector4i(10, 20, 30, 40) * Vector4i(3, 4, 5, 6))# 输出 \"(30, 80, 150, " +"240)\"\n" +"[/codeblock]" + +msgid "" +"Multiplies each component of the [Vector4i] by the given [float].\n" +"Returns a Vector4 value due to floating-point operations.\n" +"[codeblock]\n" +"print(Vector4i(10, 20, 30, 40) * 2) # Prints \"(20, 40, 60, 80)\"\n" +"[/codeblock]" +msgstr "" +"将该 [Vector4i] 的每个分量乘以给定的 [float]。\n" +"由于浮点数运算,返回值为 Vector4。\n" +"[codeblock]\n" +"print(Vector4i(10, 20, 30, 40) * 2) # 输出 \"(20, 40, 60, 80)\"\n" +"[/codeblock]" + +msgid "" +"Adds each component of the [Vector4i] by the components of the given " +"[Vector4i].\n" +"[codeblock]\n" +"print(Vector4i(10, 20, 30, 40) + Vector4i(3, 4, 5, 6)) # Prints \"(13, 24, " +"35, 46)\"\n" +"[/codeblock]" +msgstr "" +"将该 [Vector4i] 的每个分量加上给定 [Vector4i] 的对应分量。\n" +"[codeblock]\n" +"print(Vector4i(10, 20, 30, 40) + Vector4i(3, 4, 5, 6)) # 输出 \"(13, 24, 35, " +"46)\"\n" +"[/codeblock]" + +msgid "" +"Subtracts each component of the [Vector4i] by the components of the given " +"[Vector4i].\n" +"[codeblock]\n" +"print(Vector4i(10, 20, 30, 40) - Vector4i(3, 4, 5, 6)) # Prints \"(7, 16, " +"25, 34)\"\n" +"[/codeblock]" +msgstr "" +"将该 [Vector4i] 的每个分量减去给定 [Vector4i] 的对应分量。\n" +"[codeblock]\n" +"print(Vector4i(10, 20, 30, 40) - Vector4i(3, 4, 5, 6)) # 输出 \"(7, 16, 25, " +"34)\"\n" +"[/codeblock]" + +msgid "" +"Divides each component of the [Vector4i] by the components of the given " +"[Vector4i].\n" +"[codeblock]\n" +"print(Vector4i(10, 20, 30, 40) / Vector4i(2, 5, 3, 4)) # Prints \"(5, 4, 10, " +"10)\"\n" +"[/codeblock]" +msgstr "" +"将该 [Vector4i] 的每个分量除以给定 [Vector4i] 的对应分量。\n" +"[codeblock]\n" +"print(Vector4i(10, 20, 30, 40) / Vector4i(2, 5, 3, 4)) # 输出 \"(5, 4, 10, " +"10)\"\n" +"[/codeblock]" + +msgid "" +"Divides each component of the [Vector4i] by the given [float].\n" +"Returns a Vector4 value due to floating-point operations.\n" +"[codeblock]\n" +"print(Vector4i(10, 20, 30, 40) / 2 # Prints \"(5, 10, 15, 20)\"\n" +"[/codeblock]" +msgstr "" +"将该 [Vector4i] 的每个分量除以给定的 [float]。\n" +"由于浮点数运算,返回值为 Vector4。\n" +"[codeblock]\n" +"print(Vector4i(10, 20, 30, 40) / 2 # 输出 \"(5, 10, 15, 20)\"\n" +"[/codeblock]" + +msgid "Divides each component of the [Vector4i] by the given [int]." +msgstr "将该 [Vector4] 的每个分量除以给定的 [int]。" + msgid "Physics body that simulates the behavior of a car." msgstr "模拟汽车行为的物理体。" @@ -27687,7 +51464,58 @@ msgid "Vertical version of [FlowContainer]." msgstr "[FlowContainer] 的垂直版本。" msgid "Base resource for video streams." -msgstr "视频流的资源基类。" +msgstr "视频流的基础资源。" + +msgid "Returns the number of audio channels." +msgstr "返回音频通道的数量。" + +msgid "Returns the video duration in seconds, if known, or 0 if unknown." +msgstr "视频时长已知时返回视频时长,未知时返回 0。" + +msgid "" +"Return the current playback timestamp. Called in response to the [member " +"VideoStreamPlayer.stream_position] getter." +msgstr "" +"返回当前播放时间戳。获取 [member VideoStreamPlayer.stream_position] 时会被调" +"用。" + +msgid "Allocates a [Texture2D] in which decoded video frames will be drawn." +msgstr "分配一个 [Texture2D],解码得到的视频帧会在其中绘制。" + +msgid "Returns the paused status, as set by [method _set_paused]." +msgstr "返回暂停状态,由 [method _set_paused] 设置。" + +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] " +"should return true once playing." +msgstr "" +"[member VideoStreamPlayer.autoplay] 或 [method VideoStreamPlayer.play] 时会被" +"调用。请注意,手动播放在这个方法被调用前也可能多次调用 [method _stop]。开始播" +"放后 [method _is_playing] 就应该返回 true。" + +msgid "" +"Seeks to [code]time[/code] seconds. Called in response to the [member " +"VideoStreamPlayer.stream_position] setter." +msgstr "" +"检索至第 [code]time[/code] 秒。设置 [member VideoStreamPlayer." +"stream_position] 时会被调用。" + +msgid "" +"Select the audio track [code]idx[/code]. Called when playback starts, and in " +"response to the [member VideoStreamPlayer.audio_track] setter." +msgstr "" +"选择 [code]idx[/code] 音轨。播放开始时,或者设置 [member VideoStreamPlayer." +"audio_track] 时会被调用。" + +msgid "" +"Set the paused status of video playback. [method _is_paused] must return " +"[code]paused[/code]. Called in response to the [member VideoStreamPlayer." +"paused] setter." +msgstr "" +"设置视频播放的暂停状态。[method _is_paused] 必须返回 [code]paused[/code]。设" +"置 [member VideoStreamPlayer.paused] 时会被调用。" msgid "Control for playing video streams." msgstr "用于播放视频流的控件。" @@ -27756,6 +51584,31 @@ msgstr "播放结束时触发。" msgid "[VideoStream] resource for Ogg Theora videos." msgstr "[VideoStream] Ogg Theora 视频的资源。" +msgid "Base class for viewports." +msgstr "视口的基类。" + +msgid "" +"A Viewport creates a different view into the screen, or a sub-view inside " +"another viewport. Children 2D Nodes will display on it, and children " +"Camera3D 3D nodes will render on it too.\n" +"Optionally, a viewport can have its own 2D or 3D world, so they don't share " +"what they draw with other viewports.\n" +"Viewports can also choose to be audio listeners, so they generate positional " +"audio depending on a 2D or 3D camera child of it.\n" +"Also, viewports can be assigned to different screens in case the devices " +"have multiple screens.\n" +"Finally, viewports can also behave as render targets, in which case they " +"will not be visible unless the associated texture is used to draw." +msgstr "" +"Viewport(视口)会在屏幕中创建不同的视图,或是在其他视口中创建子视图。视口上" +"会显示 2D 子节点,也会渲染 Camera3D 3D 子节点。\n" +"视口也可以拥有自己的 2D 或 3D 世界,这样就不会与其他视口共享绘制的内容。\n" +"视口也可以选择作为音频监听器,这样就可以根据 2D 或 3D 相机子节点生成位置音" +"频。\n" +"另外,在设备有多个屏幕的情况下,可以将视口分配给不同的屏幕。\n" +"最后,视口也可以充当渲染目标,在这种情况下,除非使用与其相关联的纹理进行绘" +"制,否则它们将不可见。" + msgid "" "Returns the first valid [World2D] for this viewport, searching the [member " "world_2d] property of itself and any Viewport ancestor." @@ -27763,6 +51616,9 @@ msgstr "" "返回该视口的首个有效 [World2D],在它自身及任何 Viewport 祖先节点的 [member " "world_2d] 属性中查找。" +msgid "Returns an individual bit on the rendering layer mask." +msgstr "返回渲染层遮罩上的某个比特位。" + msgid "" "Returns the mouse's position in this [Viewport] using the coordinate system " "of this [Viewport]." @@ -27805,6 +51661,10 @@ msgid "If [code]true[/code], the viewport will process 3D audio streams." msgstr "如果为 [code]true[/code],该视口将处理 3D 音频流。" msgid "" +"The rendering layers in which this [Viewport] renders [CanvasItem] nodes." +msgstr "渲染层,该 [Viewport] 会渲染位于这些层中的 [CanvasItem] 节点。" + +msgid "" "The canvas transform of the viewport, useful for changing the on-screen " "positions of all child [CanvasItem]s. This is relative to the global canvas " "transform of the viewport." @@ -27815,6 +51675,9 @@ msgstr "" msgid "The overlay mode for test rendered geometry in debug purposes." msgstr "在调试时,用于测试渲染的几何图形的叠加模式。" +msgid "Disable 3D rendering (but keep 2D rendering)." +msgstr "禁用 3D 渲染(但保留 2D 渲染)。" + msgid "" "The global canvas transform of the viewport. The canvas transform is " "relative to this." @@ -27853,6 +51716,9 @@ msgstr "如果为 [code]true[/code],该视口应使其背景渲染为透明。 msgid "The custom [World2D] which can be used as 2D environment source." msgstr "自定义的 [World2D],可以作为 2D 环境源。" +msgid "The custom [World3D] which can be used as 3D environment source." +msgstr "自定义的 [World3D],可以作为 3D 环境源。" + msgid "Emitted when a Control node grabs keyboard focus." msgstr "当控件节点获取键盘焦点时触发。" @@ -27871,6 +51737,19 @@ msgstr "此象限将被分成 16 个方向,并被最多 16 张阴影贴图使 msgid "This quadrant will be split 64 ways and used by up to 64 shadow maps." msgstr "这个象限将被分成 64 个方向,并被最多 64 张阴影贴图使用。" +msgid "" +"Represents the size of the [enum PositionalShadowAtlasQuadrantSubdiv] enum." +msgstr "代表 [enum PositionalShadowAtlasQuadrantSubdiv] 枚举的大小。" + +msgid "Represents the size of the [enum Scaling3DMode] enum." +msgstr "代表 [enum Scaling3DMode] 枚举的大小。" + +msgid "Represents the size of the [enum MSAA] enum." +msgstr "代表 [enum MSAA] 枚举的大小。" + +msgid "Represents the size of the [enum ScreenSpaceAA] enum." +msgstr "代表 [enum ScreenSpaceAA] 枚举的大小。" + msgid "Amount of objects in frame." msgstr "帧中对象的数量。" @@ -27881,7 +51760,7 @@ msgid "Amount of draw calls in frame." msgstr "帧中的绘制调用量。" msgid "Represents the size of the [enum RenderInfo] enum." -msgstr "表示 [enum RenderInfo] 枚举的大小。" +msgstr "代表 [enum RenderInfo] 枚举的大小。" msgid "Objects are displayed normally." msgstr "对象正常显示。" @@ -27889,6 +51768,9 @@ msgstr "对象正常显示。" msgid "Objects are displayed in wireframe style." msgstr "对象以线框风格显示。" +msgid "Represents the size of the [enum VRSMode] enum." +msgstr "代表 [enum VRSMode] 枚举的大小。" + msgid "Texture which displays the content of a [Viewport]." msgstr "显示 [Viewport] 内容的纹理。" @@ -27899,6 +51781,12 @@ msgstr "" "显示 [Viewport] 节点的路径。该路径是相对于场景根的,而不是相对于使用该纹理的" "节点。" +msgid "Corresponds to [constant Node.PROCESS_MODE_INHERIT]." +msgstr "对应 [constant Node.PROCESS_MODE_INHERIT]。" + +msgid "Corresponds to [constant Node.PROCESS_MODE_ALWAYS]." +msgstr "对应 [constant Node.PROCESS_MODE_ALWAYS]。" + msgid "Enables certain nodes only when approximately visible." msgstr "只在大约可见时启用某些节点。" @@ -27913,6 +51801,15 @@ msgstr "" "[b]注意:[/b]一旦添加到场景树中,需要一帧来计算节点的可见性,所以这个方法将在" "它被实例化后立即返回 [code]false[/code],即使屏幕在绘制过程中。" +msgid "The VisibleOnScreenNotifier2D's bounding rectangle." +msgstr "该 VisibleOnScreenNotifier2D 的边界矩形。" + +msgid "Emitted when the VisibleOnScreenNotifier2D enters the screen." +msgstr "当该 VisibleOnScreenNotifier2D 进入屏幕时发出。" + +msgid "Emitted when the VisibleOnScreenNotifier2D exits the screen." +msgstr "当该 VisibleOnScreenNotifier2D 退出屏幕时发出。" + msgid "Detects approximately when the node is visible on screen." msgstr "大约在节点在屏幕上可见时进行检测。" @@ -27927,6 +51824,15 @@ msgstr "" "[b]注意:[/b]一旦添加到场景树中,需要一帧来计算节点的可见性,所以这个方法将在" "它被实例化后立即返回 [code]false[/code],即使屏幕在绘制过程中。" +msgid "The VisibleOnScreenNotifier3D's bounding box." +msgstr "该 VisibleOnScreenNotifier3D 的边界框。" + +msgid "Emitted when the VisibleOnScreenNotifier3D enters the screen." +msgstr "当该 VisibleOnScreenNotifier3D 进入屏幕时发出。" + +msgid "Emitted when the VisibleOnScreenNotifier3D exits the screen." +msgstr "当该 VisibleOnScreenNotifier3D 退出屏幕时发出。" + msgid "Parent of all visual 3D nodes." msgstr "所有可视 3D 节点的父节点。" @@ -27989,8 +51895,59 @@ msgstr "片段着色器,对片段(像素)进行操作。" msgid "A shader for light calculations." msgstr "用于光线计算的着色器。" +msgid "A function for the \"start\" stage of particle shader." +msgstr "粒子着色器的“开始”阶段所使用的函数。" + +msgid "A function for the \"process\" stage of particle shader." +msgstr "粒子着色器的“处理”阶段所使用的函数。" + +msgid "" +"A function for the \"collide\" stage (particle collision handler) of " +"particle shader." +msgstr "粒子着色器的“碰撞”阶段所使用的函数(粒子碰撞处理器)。" + +msgid "" +"A function for the \"start\" stage of particle shader, with customized " +"output." +msgstr "粒子着色器的“开始”阶段所使用的函数,带自定义输出。" + +msgid "" +"A function for the \"process\" stage of particle shader, with customized " +"output." +msgstr "粒子着色器的“处理”阶段所使用的函数,带自定义输出。" + msgid "Represents the size of the [enum Type] enum." -msgstr "表示 [enum Type] 枚举的大小。" +msgstr "代表 [enum Type] 枚举的大小。" + +msgid "Represents the size of the [enum VaryingMode] enum." +msgstr "代表 [enum VaryingMode] 枚举的大小。" + +msgid "Varying is of type [float]." +msgstr "Varying 的类型为 [float]。" + +msgid "Varying is of type [int]." +msgstr "Varying 的类型为 [int]。" + +msgid "Varying is of type unsigned [int]." +msgstr "Varying 的类型为无符号 [int]。" + +msgid "Varying is of type [Vector2]." +msgstr "Varying 的类型为 [Vector2]。" + +msgid "Varying is of type [Vector3]." +msgstr "Varying 的类型为 [Vector3]。" + +msgid "Varying is of type [Vector4]." +msgstr "Varying 的类型为 [Vector2]。" + +msgid "Varying is of type [bool]." +msgstr "Varying 的类型为 [bool]。" + +msgid "Varying is of type [Transform3D]." +msgstr "Varying 的类型为 [Transform2D]。" + +msgid "Represents the size of the [enum VaryingType] enum." +msgstr "代表 [enum VariantType] 枚举的大小。" msgid "Base class for nodes in a visual shader graph." msgstr "可视化着色器图中节点的基类。" @@ -28029,29 +51986,49 @@ msgstr "" msgid "" "Floating-point scalar. Translated to [code]float[/code] type in shader code." -msgstr "浮点标量。在着色器代码中被转换成[code]float[/code]类型。" +msgstr "浮点数类型。在着色器代码中,会被翻译为 [code]float[/code] 类型。" + +msgid "Integer scalar. Translated to [code]int[/code] type in shader code." +msgstr "整数标量。在着色器代码中,会被翻译为 [code]int[/code] 类型。" + +msgid "" +"Unsigned integer scalar. Translated to [code]uint[/code] type in shader code." +msgstr "无符号整数标量。在着色器代码中,会被翻译为 [code]uint[/code] 类型。" + +msgid "" +"2D vector of floating-point values. Translated to [code]vec2[/code] type in " +"shader code." +msgstr "浮点数 2D 向量。在着色器代码中,会被翻译为 [code]vec2[/code] 类型。" msgid "" "3D vector of floating-point values. Translated to [code]vec3[/code] type in " "shader code." -msgstr "浮点值的 3D 向量。在着色器代码中转换为 [code]vec3[/code] 类型。" +msgstr "浮点数 3D 向量。在着色器代码中,会被翻译为 [code]vec3[/code] 类型。" + +msgid "" +"4D vector of floating-point values. Translated to [code]vec4[/code] type in " +"shader code." +msgstr "浮点数 4D 向量。在着色器代码中,会被翻译为 [code]vec4[/code] 类型。" msgid "Boolean type. Translated to [code]bool[/code] type in shader code." -msgstr "布尔类型。在着色器代码中转换为 [code]bool[/code] 类型。" +msgstr "布尔值类型。在着色器代码中,会被翻译为 [code]bool[/code] 类型。" msgid "Transform type. Translated to [code]mat4[/code] type in shader code." -msgstr "变换类型。在着色器代码中转换为 [code]mat4[/code] 类型。" +msgstr "变换类型。在着色器代码中,会被翻译为 [code]mat4[/code] 类型。" msgid "" "Sampler type. Translated to reference of sampler uniform in shader code. Can " "only be used for input ports in non-uniform nodes." msgstr "" -"采样器类型。转换为着色器代码中的采样器 uniform 引用。只能用于非 uniform 节点" -"中的输入端口。" +"采样器类型。在着色器代码中,会被翻译为对采样器 uniform 的引用。只能用于非 " +"uniform 节点的输入端口。" msgid "Represents the size of the [enum PortType] enum." msgstr "表示 [enum PortType] 枚举的大小。" +msgid "Represents the size of the [enum BillboardType] enum." +msgstr "代表 [enum BillboardType] 枚举的大小。" + msgid "A boolean constant to be used within the visual shader graph." msgstr "在可视化着色器图中使用的布尔常量。" @@ -28079,12 +52056,30 @@ msgid "" "values." msgstr "将值限制在[code]min[/code]和[code]max[/code]之间。" +msgid "A type of operands and returned value." +msgstr "操作数和返回值的类型。" + msgid "A floating-point scalar." msgstr "浮点标量。" +msgid "An integer scalar." +msgstr "整数标量。" + +msgid "An unsigned integer scalar." +msgstr "无符号整数标量。" + +msgid "A 2D vector type." +msgstr "2D 向量类型。" + msgid "A 3D vector type." msgstr "3D向量类型。" +msgid "A 4D vector type." +msgstr "4D 向量类型。" + +msgid "Represents the size of the [enum OpType] enum." +msgstr "代表 [enum OpType] 枚举的大小。" + msgid "A [Color] constant to be used within the visual shader graph." msgstr "[Color] 常量,在可视化着色器图中使用。" @@ -28155,6 +52150,9 @@ msgstr "" "return vec3(r, g, b);\n" "[/codeblock]" +msgid "Represents the size of the [enum Function] enum." +msgstr "代表 [enum Function] 枚举的大小。" + msgid "A [Color] operator to be used within the visual shader graph." msgstr "在可视化着色器图中使用的 [Color] 运算符。" @@ -28312,9 +52310,15 @@ msgstr "" "}\n" "[/codeblock]" +msgid "Represents the size of the [enum Operator] enum." +msgstr "代表 [enum Operator] 枚举的大小。" + msgid "Translated to [code]uniform vec4[/code] in the shader language." msgstr "在着色器语言中被转换成 [code]uniform vec4[/code]。" +msgid "A title of the node." +msgstr "节点的标题。" + msgid "A comparison function for common types within the visual shader graph." msgstr "可视化着色器图内常见类型的比较函数。" @@ -28339,6 +52343,9 @@ msgstr "布林类型。" msgid "A transform ([code]mat4[/code]) type." msgstr "变换类型,即 [code]mat4[/code]。" +msgid "Represents the size of the [enum ComparisonType] enum." +msgstr "代表 [enum ComparisonType] 枚举的大小。" + msgid "Comparison for equality ([code]a == b[/code])." msgstr "相等比较,即 [code]a == b[/code]。" @@ -28377,6 +52384,9 @@ msgid "" "condition." msgstr "如果向量中的任意分量满足比较条件,则结果为真。" +msgid "Represents the size of the [enum Condition] enum." +msgstr "代表 [enum Condition] 枚举的大小。" + msgid "" "Translated to [code]texture(cubemap, vec3)[/code] in the shader language. " "Returns a color vector and alpha channel as scalar." @@ -28394,6 +52404,9 @@ msgid "" "TextureType] for options." msgstr "定义源纹理提供的数据类型。选项参阅[enum TextureType]。" +msgid "Represents the size of the [enum Source] enum." +msgstr "代表 [enum Source] 枚举的大小。" + msgid "No hints are added to the uniform declaration." msgstr "在uniform声明中未添加提示。" @@ -28417,6 +52430,9 @@ msgid "" msgstr "" "用于定义自定义 [VisualShaderNode] 的虚类,以便在可视化着色器编辑器中使用。" +msgid "Visual Shader plugins" +msgstr "可视化着色器插件" + msgid "" "Override this method to define the description of the associated custom node " "in the Visual Shader Editor's members dialog.\n" @@ -28514,6 +52530,9 @@ msgstr "在 [code]x[/code] 中使用局部差分的导数。" msgid "Derivative in [code]y[/code] using local differencing." msgstr "在 [code]y[/code] 中使用局部差分的导数。" +msgid "Represents the size of the [enum Precision] enum." +msgstr "代表 [enum Precision] 枚举的大小。" + msgid "Translates to [code]determinant(x)[/code] in the shader language." msgstr "在着色器语言中翻译成[code]determinant(x)[/code]。" @@ -28556,6 +52575,135 @@ msgstr "" "值为 [code]N[/code]。否则,将返回 [code]-N[/code]。" msgid "" +"Returns the sine of the parameter. Translates to [code]sin(x)[/code] in the " +"Godot Shader Language." +msgstr "" +"返回参数的正弦值。在 Godot 着色器语言中,会被翻译为 [code]sin(x)[/code]。" + +msgid "" +"Returns the cosine of the parameter. Translates to [code]cos(x)[/code] in " +"the Godot Shader Language." +msgstr "" +"返回参数的余弦值。在 Godot 着色器语言中,会被翻译为 [code]cos(x)[/code]。" + +msgid "" +"Returns the tangent of the parameter. Translates to [code]tan(x)[/code] in " +"the Godot Shader Language." +msgstr "" +"返回参数的正切值。在 Godot 着色器语言中,会被翻译为 [code]tan(x)[/code]。" + +msgid "" +"Returns the arc-sine of the parameter. Translates to [code]asin(x)[/code] in " +"the Godot Shader Language." +msgstr "" +"返回参数的反正弦值。在 Godot 着色器语言中,会被翻译为 [code]asin(x)[/code]。" + +msgid "" +"Returns the arc-cosine of the parameter. Translates to [code]acos(x)[/code] " +"in the Godot Shader Language." +msgstr "" +"返回参数的反余弦值。在 Godot 着色器语言中,会被翻译为 [code]acos(x)[/code]。" + +msgid "" +"Returns the arc-tangent of the parameter. Translates to [code]atan(x)[/code] " +"in the Godot Shader Language." +msgstr "" +"返回参数的反正切值。在 Godot 着色器语言中,会被翻译为 [code]atan(x)[/code]。" + +msgid "" +"Returns the hyperbolic sine of the parameter. Translates to [code]sinh(x)[/" +"code] in the Godot Shader Language." +msgstr "" +"返回参数的双曲正弦值。在 Godot 着色器语言中,会被翻译为 [code]sinh(x)[/" +"code]。" + +msgid "" +"Returns the hyperbolic cosine of the parameter. Translates to [code]cosh(x)[/" +"code] in the Godot Shader Language." +msgstr "" +"返回参数的双曲余弦值。在 Godot 着色器语言中,会被翻译为 [code]cosh(x)[/" +"code]。" + +msgid "" +"Returns the hyperbolic tangent of the parameter. Translates to [code]tanh(x)" +"[/code] in the Godot Shader Language." +msgstr "" +"返回参数的双曲正切值。在 Godot 着色器语言中,会被翻译为 [code]tanh(x)[/" +"code]。" + +msgid "" +"Returns the natural logarithm of the parameter. Translates to [code]log(x)[/" +"code] in the Godot Shader Language." +msgstr "" +"返回参数的自然对数。在 Godot 着色器语言中,会被翻译为 [code]log(x)[/code]。" + +msgid "" +"Returns the natural exponentiation of the parameter. Translates to " +"[code]exp(x)[/code] in the Godot Shader Language." +msgstr "" +"返回该参数的自然指数。在 Godot 着色器语言中,会被翻译为 [code]exp(x)[/code]。" + +msgid "" +"Returns the square root of the parameter. Translates to [code]sqrt(x)[/code] " +"in the Godot Shader Language." +msgstr "" +"返回参数的平方根。在 Godot 着色器语言中,会被翻译为 [code]sqrt(x)[/code]。" + +msgid "" +"Returns the absolute value of the parameter. Translates to [code]abs(x)[/" +"code] in the Godot Shader Language." +msgstr "" +"返回参数的绝对值。在 Godot 着色器语言中,会被翻译为 [code]abs(x)[/code]。" + +msgid "" +"Extracts the sign of the parameter. Translates to [code]sign(x)[/code] in " +"the Godot Shader Language." +msgstr "" +"提取参数的符号。在 Godot 着色器语言中,会被翻译为 [code]sign(x)[/code]。" + +msgid "" +"Finds the nearest integer less than or equal to the parameter. Translates to " +"[code]floor(x)[/code] in the Godot Shader Language." +msgstr "" +"查找小于或等于参数的最接近的整数。在 Godot 着色器语言中,会被翻译为 " +"[code]floor(x)[/code]。" + +msgid "" +"Finds the nearest integer to the parameter. Translates to [code]round(x)[/" +"code] in the Godot Shader Language." +msgstr "" +"查找最接近参数的整数。在 Godot 着色器语言中,会被翻译为 [code]round(x)[/" +"code]。" + +msgid "" +"Finds the nearest integer that is greater than or equal to the parameter. " +"Translates to [code]ceil(x)[/code] in the Godot Shader Language." +msgstr "" +"查找大于或等于参数的最接近的整数。在 Godot 着色器语言中,会被翻译为 " +"[code]ceil(x)[/code]。" + +msgid "" +"Computes the fractional part of the argument. Translates to [code]fract(x)[/" +"code] in the Godot Shader Language." +msgstr "" +"计算参数的小数部分。在 Godot 着色器语言中,会被翻译为 [code]fract(x)[/code]。" + +msgid "Sums two numbers using [code]a + b[/code]." +msgstr "使用 [code]a + b[/code] 将两个数字相加。" + +msgid "Subtracts two numbers using [code]a - b[/code]." +msgstr "使用 [code]a - b[/code] 将两个数字相减。" + +msgid "Multiplies two numbers using [code]a * b[/code]." +msgstr "使用 [code]a * b[/code] 将两个数字相乘。" + +msgid "Divides two numbers using [code]a / b[/code]." +msgstr "使用 [code]a / b[/code] 将两个数字相除。" + +msgid "Translated to [code]uniform float[/code] in the shader language." +msgstr "在着色器语言中被翻译为 [code]uniform float[/code]。" + +msgid "" "Minimum value for range hints. Used if [member hint] is set to [constant " "HINT_RANGE] or [constant HINT_RANGE_STEP]." msgstr "" @@ -28597,7 +52745,7 @@ msgstr "" "[code]hint_range(min, max, step)[/code]。" msgid "Represents the size of the [enum Hint] enum." -msgstr "表示 [enum Hint] 枚举的大小。" +msgstr "代表 [enum Hint] 枚举的大小。" msgid "A Fresnel effect to be used within the visual shader graph." msgstr "在可视化着色器图中使用的菲涅尔效果。" @@ -28719,6 +52867,9 @@ msgstr "" "提供对着色器可用的输入变量(内置)的访问。关于每种着色器类型的可用内置变量列" "表,请参阅着色器参考(查看[code]教程[/code]部分的链接)。" +msgid "Shading reference index" +msgstr "着色参考索引" + msgid "" "A boolean comparison operator to be used within the visual shader graph." msgstr "布尔比较运算符,在可视化着色器图中使用。" @@ -28741,10 +52892,44 @@ msgid "" msgstr "" "与 [code]NaN[/code] 比较(不是一个数字;表示无效的数字结果,如除以 0)。" +msgid "This node can be used in fragment shaders." +msgstr "该节点可用于片段着色器。" + +msgid "" +"Linearly interpolates between two values within the visual shader graph." +msgstr "在可视化着色器图中,在两个值之间进行线性插值。" + msgid "Translates to [code]mix(a, b, weight)[/code] in the shader language." msgstr "在着色器语言中转换为 [code]mix(a, b, weight)[/code]。" msgid "" +"The [code]a[/code] and [code]b[/code] ports use a 2D vector type. The " +"[code]weight[/code] port uses a scalar type." +msgstr "" +"[code]a[/code] 和 [code]b[/code] 端口使用 2D 向量类型。[code]weight[/code] 端" +"口使用标量类型。" + +msgid "" +"The [code]a[/code] and [code]b[/code] ports use a 3D vector type. The " +"[code]weight[/code] port uses a scalar type." +msgstr "" +"[code]a[/code] 和 [code]b[/code] 端口使用 3D 向量类型。[code]weight[/code] 端" +"口使用标量类型。" + +msgid "" +"The [code]a[/code] and [code]b[/code] ports use a 4D vector type. The " +"[code]weight[/code] port uses a scalar type." +msgstr "" +"[code]a[/code] 和 [code]b[/code] 端口使用 4D 向量类型。[code]weight[/code] 端" +"口使用标量类型。" + +msgid "Performs a fused multiply-add operation within the visual shader graph." +msgstr "在可视化着色器图中,执行乘加融合运算。" + +msgid "A floating-point scalar type." +msgstr "浮点数标量类型。" + +msgid "" "Calculates an outer product of two vectors within the visual shader graph." msgstr "计算可视化着色器图中两个向量的外积。" @@ -28771,8 +52956,59 @@ msgstr "" "此可视化着色器节点以 \"输出\" 块的形式出现在所有着色器图中,有多个输出值端" "口。" +msgid "A base type for the parameters within the visual shader graph." +msgstr "可视化着色器图中,参数的基础类型。" + +msgid "Defines the scope of the parameter." +msgstr "定义该参数的作用域。" + +msgid "Represents the size of the [enum Qualifier] enum." +msgstr "代表 [enum Qualifier] 枚举的大小。" + +msgid "A reference to an existing [VisualShaderNodeParameter]." +msgstr "对现有 [VisualShaderNodeParameter] 的引用。" + +msgid "A visual shader node that accelerates particles." +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 "Represents the size of the [enum Mode] enum." +msgstr "代表 [enum Mode] 枚举的大小。" + +msgid "If enabled, the particle starts with the position defined by this node." +msgstr "如果启用,则粒子从该节点所定义的位置开始。" + +msgid "" +"If enabled, the particle starts with the rotation and scale defined by this " +"node." +msgstr "如果启用,则粒子从该节点所定义的旋转和缩放开始。" + +msgid "If enabled,the particle starts with the velocity defined by this node." +msgstr "如果启用,则粒子从该节点所定义的速度开始。" + +msgid "If enabled, the particle starts with the color defined by this node." +msgstr "如果启用,则粒子从该节点所定义的颜色开始。" + +msgid "" +"If enabled, the particle starts with the [code]CUSTOM[/code] data defined by " +"this node." +msgstr "如果启用,则粒子从该节点所定义的 [code]CUSTOM[/code] 自定义数据开始。" + +msgid "A base class for particle emitters." +msgstr "粒子发射器的基类。" + +msgid "" +"If [code]true[/code], the angle will be interpreted in degrees instead of " +"radians." +msgstr "如果为 [code]true[/code],夹角会被解释为度数,而不是弧度数。" + msgid "The size of the node in the visual shader graph." -msgstr "可视化着色器图中节点的大小。" +msgstr "可视化着色器图中,该节点的大小。" msgid "" "Translates to [code]step(edge, x)[/code] in the shader language.\n" @@ -28783,6 +53019,9 @@ msgstr "" "如果 [code]x[/code] 小于 [code]edge[/code],返回 [code]0.0[/code],否则返回 " "[code]1.0[/code]。" +msgid "A transform type." +msgstr "变换类型。" + msgid "" "Performs a lookup operation on the provided texture, with support for " "multiple texture sources to choose from." @@ -28824,6 +53063,12 @@ msgstr "对作为 uniform 着色器提供的纹理进行查找操作。" msgid "Sets the default color if no texture is assigned to the uniform." msgstr "如果没有给 uniform 分配纹理,则设置默认颜色。" +msgid "Represents the size of the [enum ColorDefault] enum." +msgstr "代表 [enum ColorDefault] 枚举的大小。" + +msgid "Represents the size of the [enum TextureSource] enum." +msgstr "代表 [enum TextureSource] 枚举的大小。" + msgid "" "Performs a uniform texture lookup with triplanar within the visual shader " "graph." @@ -28842,6 +53087,9 @@ msgstr "" "使用四个类型为 [code]vec3[/code] 的向量创建一个 4x4 变换矩阵。每个向量是矩阵" "中的一行,最后一列是一个 [code]vec4(0, 0, 0, 1)[/code]。" +msgid "A constant [Transform3D], which can be used as an input node." +msgstr "[Transform3D] 常量,可用作输入节点。" + msgid "" "Takes a 4x4 transform matrix and decomposes it into four [code]vec3[/code] " "values, one from each row of the matrix." @@ -28896,11 +53144,14 @@ msgid "" msgstr "" "将向量 [code]b[/code] 乘以变换 [code]a[/code],跳过变换的最后一行和一列。" +msgid "A constant [Vector2], which can be used as an input node." +msgstr "[Vector2] 常量,可用作输入节点。" + msgid "A [Vector3] constant to be used within the visual shader graph." msgstr "[Vector3] 常量,用于可视化着色器图中。" msgid "A constant [Vector3], which can be used as an input node." -msgstr "常量 [Vector3],它可以作为输入节点使用。" +msgstr "[Vector3] 常量,可用作输入节点。" msgid "A [Vector3] constant which represents the state of this node." msgstr "[Vector3] 常量,表示该节点的状态。" @@ -28908,6 +53159,9 @@ msgstr "[Vector3] 常量,表示该节点的状态。" msgid "Translated to [code]uniform vec3[/code] in the shader language." msgstr "在着色器语言中被转换成 [code]uniform vec3[/code]。" +msgid "A constant 4D vector, which can be used as an input node." +msgstr "4D 常向量,可用作输入节点。" + msgid "" "Returns the distance between two points. To be used within the visual shader " "graph." @@ -29165,17 +53419,17 @@ msgstr "" "custom_step]属性的自定义步长。" msgid "Vertical version of [Separator]." -msgstr "[Separator]的垂直版本。" +msgstr "[Separator] 的垂直版本。" msgid "" "Vertical version of [Separator]. Even though it looks vertical, it is used " "to separate objects horizontally." -msgstr "[Separator]的垂直版本。尽管它看起来是垂直的,但它用来水平分离对象。" +msgstr "[Separator] 的垂直版本。尽管外观是垂直的,但作用是水平分隔对象。" msgid "" "The width of the area covered by the separator. Effectively works like a " "minimum width." -msgstr "分隔符所覆盖区域的宽度。以最小宽度时有效工作。" +msgstr "分隔器覆盖区域的宽度。效果上和最小宽度一致。" msgid "" "The style for the separator line. Works best with [StyleBoxLine] (remember " @@ -29615,6 +53869,9 @@ msgstr "返回给定对等体的 IP 地址。" msgid "Returns the remote port of the given peer." msgstr "返回给定对等体的远程端口。" +msgid "A WebSocket connection." +msgstr "WebSocket 连接。" + msgid "" "Returns [code]true[/code] if the last received packet was sent as a text " "payload. See [enum WriteMode]." @@ -29632,6 +53889,220 @@ msgid "" "(any byte combination is allowed)." msgstr "指定 WebSockets 消息应以二进制有效载荷的形式传输(允许任何字节组合)。" +msgid "XR interface using WebXR." +msgstr "使用 WebXR 的 AR/VR 接口。" + +msgid "" +"WebXR is an open standard that allows creating VR and AR applications that " +"run in the web browser.\n" +"As such, this interface is only available when running in Web exports.\n" +"WebXR supports a wide range of devices, from the very capable (like Valve " +"Index, HTC Vive, Oculus Rift and Quest) down to the much less capable (like " +"Google Cardboard, Oculus Go, GearVR, or plain smartphones).\n" +"Since WebXR is based on JavaScript, it makes extensive use of callbacks, " +"which means that [WebXRInterface] is forced to use signals, where other XR " +"interfaces would instead use functions that return a result immediately. " +"This makes [WebXRInterface] quite a bit more complicated to initialize than " +"other XR interfaces.\n" +"Here's the minimum code required to start an immersive VR session:\n" +"[codeblock]\n" +"extends Node3D\n" +"\n" +"var webxr_interface\n" +"var vr_supported = false\n" +"\n" +"func _ready():\n" +" # We assume this node has a button as a child.\n" +" # This button is for the user to consent to entering immersive VR mode.\n" +" $Button.pressed.connect(self._on_button_pressed)\n" +"\n" +" webxr_interface = XRServer.find_interface(\"WebXR\")\n" +" if webxr_interface:\n" +" # WebXR uses a lot of asynchronous callbacks, so we connect to " +"various\n" +" # signals in order to receive them.\n" +" webxr_interface.session_supported.connect(self." +"_webxr_session_supported)\n" +" webxr_interface.session_started.connect(self." +"_webxr_session_started)\n" +" webxr_interface.session_ended.connect(self._webxr_session_ended)\n" +" webxr_interface.session_failed.connect(self._webxr_session_failed)\n" +"\n" +" # This returns immediately - our _webxr_session_supported() method\n" +" # (which we connected to the \"session_supported\" signal above) " +"will\n" +" # be called sometime later to let us know if it's supported or not.\n" +" webxr_interface.is_session_supported(\"immersive-vr\")\n" +"\n" +"func _webxr_session_supported(session_mode, supported):\n" +" if session_mode == 'immersive-vr':\n" +" vr_supported = supported\n" +"\n" +"func _on_button_pressed():\n" +" if not vr_supported:\n" +" OS.alert(\"Your browser doesn't support VR\")\n" +" return\n" +"\n" +" # We want an immersive VR session, as opposed to AR ('immersive-ar') or " +"a\n" +" # simple 3DoF viewer ('viewer').\n" +" webxr_interface.session_mode = 'immersive-vr'\n" +" # 'bounded-floor' is room scale, 'local-floor' is a standing or sitting\n" +" # experience (it puts you 1.6m above the ground if you have 3DoF " +"headset),\n" +" # whereas as 'local' puts you down at the XROrigin.\n" +" # This list means it'll first try to request 'bounded-floor', then\n" +" # fallback on 'local-floor' and ultimately 'local', if nothing else is\n" +" # supported.\n" +" webxr_interface.requested_reference_space_types = 'bounded-floor, local-" +"floor, local'\n" +" # In order to use 'local-floor' or 'bounded-floor' we must also\n" +" # mark the features as required or optional.\n" +" webxr_interface.required_features = 'local-floor'\n" +" webxr_interface.optional_features = 'bounded-floor'\n" +"\n" +" # This will return false if we're unable to even request the session,\n" +" # however, it can still fail asynchronously later in the process, so we\n" +" # only know if it's really succeeded or failed when our\n" +" # _webxr_session_started() or _webxr_session_failed() methods are " +"called.\n" +" if not webxr_interface.initialize():\n" +" OS.alert(\"Failed to initialize\")\n" +" return\n" +"\n" +"func _webxr_session_started():\n" +" $Button.visible = false\n" +" # This tells Godot to start rendering to the headset.\n" +" get_viewport().use_xr = true\n" +" # This will be the reference space type you ultimately got, out of the\n" +" # types that you requested above. This is useful if you want the game " +"to\n" +" # work a little differently in 'bounded-floor' versus 'local-floor'.\n" +" print (\"Reference space type: \" + webxr_interface." +"reference_space_type)\n" +"\n" +"func _webxr_session_ended():\n" +" $Button.visible = true\n" +" # If the user exits immersive mode, then we tell Godot to render to the " +"web\n" +" # page again.\n" +" get_viewport().use_xr = false\n" +"\n" +"func _webxr_session_failed(message):\n" +" OS.alert(\"Failed to initialize: \" + message)\n" +"[/codeblock]\n" +"There are a couple ways to handle \"controller\" input:\n" +"- Using [XRController3D] nodes and their [signal XRController3D." +"button_pressed] and [signal XRController3D.button_released] signals. This is " +"how controllers are typically handled in XR apps in Godot, however, this " +"will only work with advanced VR controllers like the Oculus Touch or Index " +"controllers, for example.\n" +"- Using the [signal select], [signal squeeze] and related signals. This " +"method will work for both advanced VR controllers, and non-traditional input " +"sources like a tap on the screen, a spoken voice command or a button press " +"on the device itself.\n" +"You can use both methods to allow your game or app to support a wider or " +"narrower set of devices and input methods, or to allow more advanced " +"interactions with more advanced devices." +msgstr "" +"WebXR 是一种开放标准,允许创建在网络浏览器中运行的 VR 和 AR 应用程序。\n" +"因此,此接口仅在 Web 导出中运行时可用。\n" +"WebXR 支持范围广泛的设备,从功能强大的设备(如 Valve Index、HTC Vive、Oculus " +"Rift 和 Quest)到功能低得多的设备(如 Google Cardboard、Oculus Go、GearVR 或" +"普通智能手机)。\n" +"由于 WebXR 基于 JavaScript,它大量使用回调,这意味着 [WebXRInterface] 被迫使" +"用信号,而其他 XR 接口将改为使用立即返回结果的函数。这使得 [WebXRInterface] " +"的初始化比其他 XR 接口要复杂得多。\n" +"以下是启动沉浸式 VR 会话所需的最少代码:\n" +"[codeblock]\n" +"extends Node3D\n" +"\n" +"var webxr_interface\n" +"var vr_supported = false\n" +"\n" +"func _ready():\n" +" # 我们假设这个节点有一个按钮作为子节点。\n" +" # 该按钮供用户同意进入沉浸式 VR 模式。\n" +" $Button.pressed.connect(self._on_button_pressed)\n" +"\n" +" webxr_interface = XRServer.find_interface(\"WebXR\")\n" +" if webxr_interface:\n" +" # WebXR 使用了很多异步回调,所以我们连接各种\n" +" # 信号,以便接收它们。\n" +" webxr_interface.session_supported.connect(self." +"_webxr_session_supported)\n" +" webxr_interface.session_started.connect(self." +"_webxr_session_started)\n" +" webxr_interface.session_ended.connect(self._webxr_session_ended)\n" +" webxr_interface.session_failed.connect(self._webxr_session_failed)\n" +"\n" +" # 这会立即返回——我们的 _webxr_session_supported() 方法\n" +" # (我们连接到上面的“session_supported”信号)将\n" +" # 在稍后的某个时间被调用,让我们知道它是否受支持。\n" +" webxr_interface.is_session_supported(\"immersive-vr\")\n" +"\n" +"func _webxr_session_supported(session_mode, supported):\n" +" if session_mode == 'immersive-vr':\n" +" vr_supported = supported\n" +"\n" +"func _on_button_pressed():\n" +" if not vr_supported:\n" +" OS.alert(\"Your browser doesn't support VR\")\n" +" return\n" +"\n" +" # 我们想要一个沉浸式 VR 会话,而不是 AR('immersive-ar')或\n" +" # 简单的 3DoF 查看器('viewer')。\n" +" webxr_interface.session_mode = 'immersive-vr'\n" +" # 'bounded-floor' 是房间比例,'local-floor' 是站立或坐着\n" +" # 的体验(如果你有 3DoF 头戴设备,它会让你离地 1.6m),\n" +" # 而“local”会让你在 XROrigin 下。\n" +" # 这个列表意味着它会首先尝试请求“bounded-floor”,然后\n" +" # 回退到“local-floor”,最后是“local”,如果没有别的\n" +" # 支持的话。\n" +" webxr_interface.requested_reference_space_types = 'bounded-floor, local-" +"floor, local'\n" +" # 为了使用“local-floor”或“bounded-floor”,我们还必须\n" +" # 将功能标记为必需或可选。\n" +" webxr_interface.required_features = 'local-floor'\n" +" webxr_interface.optional_features = 'bounded-floor'\n" +"\n" +" # 如果我们甚至无法请求会话,这将返回 false,\n" +" # 但是,它仍然可以在稍后的过程中异步失败,\n" +" # 因此我们只有在调用 _webxr_session_started() 或\n" +" # _webxr_session_failed() 方法时才知道它是真的成功还是失败。\n" +" if not webxr_interface.initialize():\n" +" OS.alert(\"Failed to initialize\")\n" +" return\n" +"\n" +"func _webxr_session_started():\n" +" $Button.visible = false\n" +" # 这告诉 Godot 开始渲染到头戴设备。\n" +" get_viewport().use_xr = true\n" +" # 这将是您最终获得的参考空间类型,与您在上面请求的类型不同。\n" +" # 如果您希望游戏在 “bounded-floor” 和 “local-floor”\n" +" # 中的运行方式有所不同,这将很有用。\n" +" print (\"Reference space type: \" + webxr_interface." +"reference_space_type)\n" +"\n" +"func _webxr_session_ended():\n" +" $Button.visible = true\n" +" # 如果用户退出沉浸式模式,那么我们会告诉 Godot\n" +" # 再次渲染到网页。\n" +" get_viewport().use_xr = false\n" +"\n" +"func _webxr_session_failed(message):\n" +" OS.alert(\"Failed to initialize: \" + message)\n" +"[/codeblock]\n" +"有几种方法可以处理“控制器”输入:\n" +"- 使用 [XRController3D] 节点及其 [signal XRController3D.button_pressed] 和 " +"[signal XRController3D.button_released] 信号。这是 Godot 中 XR 应用程序通常处" +"理控制器的方式,但是,这仅适用于高级 VR 控制器,例如 Oculus Touch 或 Index 控" +"制器。\n" +"- 使用 [signal select]、[signal squeeze] 和其他相关信号。这种方法适用于高级 " +"VR 控制器和非传统输入源,例如屏幕上的轻敲、语音命令或设备本身的按钮按下。\n" +"您可以使用这两种方法来让您的游戏或应用程序支持更多或更窄的设备和输入法集,或" +"者允许与更高级的设备进行更高级的交互。" + msgid "" "Checks if the given [code]session_mode[/code] is supported by the user's " "browser.\n" @@ -29680,6 +54151,177 @@ msgstr "目标射线由手持指示器发射,很可能是 VR 触摸控制器 msgid "Target ray from touch screen, mouse or other tactile input device." msgstr "目标射线由触摸屏、鼠标等触觉输入设备发射。" +msgid "Base class for all windows." +msgstr "所有窗口的基类。" + +msgid "" +"A node that creates a window. The window can either be a native system " +"window or embedded inside another [Window] (see [member Viewport." +"gui_embed_subwindows]).\n" +"At runtime, [Window]s will not close automatically when requested. You need " +"to handle it manually using [signal close_requested] (this applies both to " +"clicking close button and clicking outside popup)." +msgstr "" +"创建窗口的节点。该窗口可能是原生系统窗口,也可以是嵌入到其他 [Window] 中的窗" +"口(见 [member Viewport.gui_embed_subwindows])。\n" +"在运行时,[Window] 不会在请求关闭时自动关闭。你需要使用 [signal " +"close_requested] 手动处理(适用于点击关闭按钮和点击弹出窗口外部)。" + +msgid "Returns layout direction and text writing direction." +msgstr "返回排版方向和文本书写方向。" + +msgid "Causes the window to grab focus, allowing it to receive user input." +msgstr "使该窗口获得焦点,从而接收用户输入。" + +msgid "Returns [code]true[/code] if the window is focused." +msgstr "如果该窗口已获得焦点,则返回 [code]true[/code]。" + +msgid "Sets a specified window flag." +msgstr "设置指定的窗口标志。" + +msgid "" +"If [param active] is [code]true[/code], enables system's native IME (Input " +"Method Editor)." +msgstr "" +"如果 [param active] 为 [code]true[/code],则启用系统的原生 IME(输入法编辑" +"器)。" + +msgid "Moves IME to the given position." +msgstr "将 IME 移动到给定位置。" + +msgid "" +"Sets layout direction and text writing direction. Right-to-left layouts are " +"necessary for certain languages (e.g. Arabic and Hebrew)." +msgstr "" +"设置布局方向和文本书写方向。某些语言需要从右至左的布局(例如阿拉伯语和希伯来" +"语)。" + +msgid "" +"Enables font oversampling. This makes fonts look better when they are scaled " +"up." +msgstr "启用字体过采样。会使得字体在放大后更好看。" + +msgid "" +"Toggles if any text should automatically change to its translated version " +"depending on the current locale." +msgstr "切换是否所有文本都应该根据当前区域设置自动变为翻译后的版本。" + +msgid "The screen the window is currently on." +msgstr "该窗口当前所在的屏幕。" + +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 " +"will be intercepted by the window, which is the default behavior).\n" +"[codeblocks]\n" +"[gdscript]\n" +"# Set region, using Path2D node.\n" +"$Window.mouse_passthrough_polygon = $Path2D.curve.get_baked_points()\n" +"\n" +"# Set region, using Polygon2D node.\n" +"$Window.mouse_passthrough_polygon = $Polygon2D.polygon\n" +"\n" +"# Reset region to default.\n" +"$Window.mouse_passthrough_polygon = []\n" +"[/gdscript]\n" +"[csharp]\n" +"// Set region, using Path2D node.\n" +"GetNode<Window>(\"Window\").MousePassthrough = GetNode<Path2D>(\"Path2D\")." +"Curve.GetBakedPoints();\n" +"\n" +"// Set region, using Polygon2D node.\n" +"GetNode<Window>(\"Window\").MousePassthrough = " +"GetNode<Polygon2D>(\"Polygon2D\").Polygon;\n" +"\n" +"// Reset region to default.\n" +"GetNode<Window>(\"Window\").MousePassthrough = new Vector2[] {};\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Note:[/b] This property is ignored if [member mouse_passthrough] is set " +"to [code]true[/code].\n" +"[b]Note:[/b] On Windows, the portion of a window that lies outside the " +"region is not drawn, while on Linux (X11) and macOS it is.\n" +"[b]Note:[/b] This property is implemented on Linux (X11), macOS and Windows." +msgstr "" +"设置窗口的一个接受鼠标事件的多边形区域。该区域外的鼠标事件将被传递出去。\n" +"传递一个空数组将禁用穿透支持(所有鼠标事件将被窗口拦截,这是默认行为)。\n" +"[codeblocks]\n" +"[gdscript]\n" +"# 设置区域,使用 Path2D 节点。\n" +"$Window.mouse_passthrough_polygon = $Path2D.curve.get_baked_points()\n" +"\n" +"# 设置区域,使用 Polygon2D 节点。\n" +"$Window.mouse_passthrough_polygon = $Polygon2D.polygon\n" +"\n" +"# 重置区域为默认值。\n" +"$Window.mouse_passthrough_polygon = []\n" +"[/gdscript]\n" +"[csharp]\n" +"// 设置区域,使用 Path2D 节点。\n" +"GetNode<Window>(\"Window\").MousePassthrough = GetNode<Path2D>(\"Path2D\")." +"Curve.GetBakedPoints();\n" +"\n" +"// 设置区域,使用 Polygon2D 节点。\n" +"GetNode<Window>(\"Window\").MousePassthrough = " +"GetNode<Polygon2D>(\"Polygon2D\").Polygon;\n" +"\n" +"// 重置区域为默认值。\n" +"GetNode<Window>(\"Window\").MousePassthrough = new Vector2[] {};\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]注意:[/b]如果 [member mouse_passthrough] 设置为 [code]true[/code],则忽略" +"此属性。\n" +"[b]注意:[/b]在 Windows 上,位于区域外的窗口部分不会被绘制,而在 Linux (X11) " +"和 macOS 上则会被绘制。\n" +"[b]注意:[/b]该属性在 Linux (X11)、macOS 和 Windows 上实现。" + +msgid "The window's position in pixels." +msgstr "该窗口的位置,单位为像素。" + +msgid "The window's size in pixels." +msgstr "该窗口的大小,单位为像素。" + +msgid "" +"If [code]true[/code], the window can't be resized. Minimize and maximize " +"buttons are disabled." +msgstr "" +"如果为 [code]true[/code],则无法调整窗口大小。最小化和最大化按钮被禁用。" + +msgid "If [code]true[/code], the window is visible." +msgstr "如果为 [code]true[/code],则该窗口可见。" + +msgid "" +"Emitted when the [Window]'s DPI changes as a result of OS-level changes (e." +"g. moving the window from a Retina display to a lower resolution one).\n" +"[b]Note:[/b] Only implemented on macOS." +msgstr "" +"该 [Window] 的 DPI 由于操作系统级别的更改而发生更改时发出(例如将该窗口从 " +"Retina 屏幕移动到了更低分辨率的屏幕)。\n" +"[b]注意:[/b]仅在 macOS 上实现。" + +msgid "Emitted when the [Window] gains focus." +msgstr "当该 [Window] 获得焦点时发出。" + +msgid "Emitted when the [Window] loses its focus." +msgstr "当该 [Window] 失去焦点时发出。" + +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" +"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 "" +"全屏窗口模式。请注意,这不是[i]独占的[/i]全屏显示。在 Windows 和 Linux 上,无" +"边框窗口用于模拟全屏。在 macOS 上,会创建一个新的桌面用于显示正在运行的项" +"目。\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 " @@ -29689,21 +54331,60 @@ msgstr "" "整窗口的大小。这个标志对于全屏窗口来说是被忽略的。用 [member unresizable] 设" "置。" +msgid "Max value of the [enum Flags]." +msgstr "[enum Flags] 的最大值。" + +msgid "Initial window position is determined by [member position]." +msgstr "初始窗口位置由 [member position] 决定。" + +msgid "Initial window position is a center of the primary screen." +msgstr "初始窗口位置为主屏幕的中心。" + +msgid "Initial window position is a center of the main window screen." +msgstr "初始窗口位置为主窗口屏幕的中心。" + +msgid "Initial window position is a center of [member current_screen] screen." +msgstr "初始窗口位置为 [member current_screen] 屏幕的中心。" + msgid "The color of the title's text." msgstr "标题文本的颜色。" +msgid "The color of the title's text outline." +msgstr "标题文本轮廓的颜色。" + +msgid "Horizontal position offset of the close button." +msgstr "关闭按钮的水平位置偏移。" + +msgid "Vertical position offset of the close button." +msgstr "关闭按钮的垂直位置偏移。" + +msgid "Height of the title bar." +msgstr "标题栏的高度。" + +msgid "The size of the title outline." +msgstr "标题轮廓的尺寸。" + msgid "The font used to draw the title." msgstr "用于绘制标题的字体。" +msgid "The size of the title font." +msgstr "标题字体的大小。" + msgid "The icon for the close button." msgstr "关闭按钮的图标。" +msgid "The icon for the close button when it's being pressed." +msgstr "关闭按钮被按下时的图标。" + msgid "Class that has everything pertaining to a 2D world." msgstr "拥有与 2D 世界有关的所有内容的类。" msgid "Class that has everything pertaining to a world." msgstr "拥有与世界相关的一切的类。" +msgid "The World3D's [Environment]." +msgstr "该 World3D 的 [Environment]。" + msgid "The line's distance from the origin." msgstr "该直线与原点的距离。" @@ -29718,6 +54399,30 @@ msgid "" msgstr "" "此 [WorldEnvironment] 世界环境所使用的 [Environment] 环境资源,定义默认属性。" +msgid "An X509 certificate (e.g. for TLS)." +msgstr "X509 证书(例如用于 TLS)。" + +msgid "" +"The X509Certificate class represents an X509 certificate. Certificates can " +"be loaded and saved like any other [Resource].\n" +"They can be used as the server certificate in [method StreamPeerTLS." +"accept_stream] (along with the proper [CryptoKey]), and to specify the only " +"certificate that should be accepted when connecting to an TLS server via " +"[method StreamPeerTLS.connect_to_stream]." +msgstr "" +"X509Certificate 类代表 X509 证书。证书可以像其他的 [Resource] 资源一样加载和" +"保存。\n" +"可以用作 [method StreamPeerTLS.accept_stream] 中的服务器证书(搭配正确的 " +"[CryptoKey]),也可以用于指定通过 [method StreamPeerTLS.connect_to_stream] 连" +"接到 TLS 服务器时应该接受的唯一证书。" + +msgid "Loads a certificate from [param path] (\"*.crt\" file)." +msgstr "从路径 [param path] 加载证书(“*.crt”文件)。" + +msgid "" +"Saves a certificate to the given [param path] (should be a \"*.crt\" file)." +msgstr "将证书保存到给定的路径 [param path](应该是“*.crt”文件)。" + msgid "" "Low-level class for creating parsers for [url=https://en.wikipedia.org/wiki/" "XML]XML[/url] files." @@ -29764,6 +54469,13 @@ msgid "" msgstr "" "检查当前元素是否为空(只适用于完全空的标签,例如 [code]<element\\>[/code])。" +msgid "Opens an XML [param file] for parsing. This returns an error code." +msgstr "打开 XML 文件 [param file] 进行解析。返回的是错误码。" + +msgid "" +"Opens an XML raw [param buffer] for parsing. This returns an error code." +msgstr "打开 XML 缓冲区 [param buffer] 进行解析。返回的是错误码。" + msgid "Reads the next node of the file. This returns an error code." msgstr "读取文件的下一个节点。返回的是错误码。" @@ -29822,6 +54534,9 @@ msgid "" "tracking." msgstr "应用了一些 AR/VR 规则的相机节点,例如位置跟踪。" +msgid "XR documentation index" +msgstr "XR 文档索引" + msgid "A spatial node representing a spatially-tracked controller." msgstr "表示空间跟踪控制器的空间节点。" @@ -29831,6 +54546,9 @@ msgstr "当该控制器上的一个按钮被按下时触发。" msgid "Emitted when a button on this controller is released." msgstr "当该控制器上的一个按钮被释放时触发。" +msgid "Base class for an XR interface implementation." +msgstr "XR 接口实现的基类。" + 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 " @@ -29845,11 +54563,21 @@ msgid "" msgstr "返回 [enum Capabilities] 标签的组合,提供关于这个接口功能的信息。" msgid "" +"Returns the name of this interface (OpenXR, OpenVR, OpenHMD, ARKit, etc)." +msgstr "返回该接口的名称(OpenXR、OpenVR、OpenHMD、ARKit 等)。" + +msgid "" "Returns the resolution at which we should render our intermediate results " "before things like lens distortion are applied by the VR platform." msgstr "返回在VR平台应用镜头失真等内容之前渲染的中间结果的分辨率。" msgid "" +"Returns the an array of supported environment blend modes, see [enum " +"XRInterface.EnvironmentBlendMode]." +msgstr "" +"返回支持的环境混合模式数组,见 [enum XRInterface.EnvironmentBlendMode]。" + +msgid "" "If supported, returns the status of our tracking. This will allow you to " "provide feedback to the user whether there are issues with positional " "tracking." @@ -29857,6 +54585,55 @@ msgstr "" "如果支持,返回我们的跟踪状态。这将使你能够向用户反馈,是否存在位置跟踪的问" "题。" +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 "Stops passthrough." +msgstr "停止穿透。" + msgid "Turns the interface off." msgstr "关闭接口。" @@ -29873,6 +54650,9 @@ msgstr "此接口可以与正常的渲染输出一起工作(非基于 HMD 的 msgid "This interface supports stereoscopic rendering." msgstr "该接口支持立体渲染。" +msgid "This interface supports quad rendering (not yet supported by Godot)." +msgstr "该接口支持四边形渲染(Godot 尚不支持)。" + msgid "This interface supports AR (video background and real world tracking)." msgstr "该接口支持 AR(视频背景和真实世界跟踪)。" @@ -29899,6 +54679,25 @@ msgid "" "turned off, etc.)." msgstr "追踪功能失效(相机未插电或被遮挡、灯塔关闭,等等)。" +msgid "Opaque blend mode. This is typically used for VR devices." +msgstr "不透明混合模式。通常用于 VR 设备。" + +msgid "" +"Additive blend mode. This is typically used for AR devices or VR devices " +"with passthrough." +msgstr "加法混合模式。通常用于带有穿透功能的 AR 或 VR 设备。" + +msgid "" +"Alpha blend mode. This is typically used for AR or VR devices with " +"passthrough capabilities. The alpha channel controls how much of the " +"passthrough is visible. Alpha of 0.0 means the passthrough is visible and " +"this pixel works in ADDITIVE mode. Alpha of 1.0 means that the passthrough " +"is not visible and this pixel works in OPAQUE mode." +msgstr "" +"Alpha 混合模式。通常用于带有穿透功能的 AR 或 VR 设备。Alpha 通道控制穿透的可" +"见程度。Alpha 为 0.0 表示穿透可见、该像素处于加法模式。Alpha 为 1.0 表示穿透" +"不可见,该像素处于不透明模式。" + msgid "The origin point in AR/VR." msgstr "AR/VR 的原点。" @@ -30019,7 +54818,7 @@ msgstr "" msgid "" "The profile associated with this tracker, interface dependent but will " "indicate the type of controller being tracked." -msgstr "与此追踪器关联的配置文件,取决于界面,但将指示被追踪的控制器类型。" +msgstr "与此追踪器关联的配置,取决于界面,但将指示被追踪的控制器类型。" msgid "The type of tracker." msgstr "该追踪器的类型。" @@ -30185,7 +54984,7 @@ msgid "" "Resets the orientation but keeps the tilt of the device. So if we're looking " "down, we keep looking down but heading will be reset." msgstr "" -"重置方向,但保持设备的倾斜度。因此,如果我们正在往下看,会继续往下看,但方向" +"重置方向,但保持设备的倾斜度。因此,如果我们正在往下看,会继续往下看,但航向" "会被重置。" msgid "" @@ -30193,6 +54992,84 @@ msgid "" "gets centered." msgstr "不重置 HMD 的方向,只让玩家的位置居中。" +msgid "Allows the creation of zip files." +msgstr "允许创建 zip 文件。" + +msgid "" +"This class implements a writer that allows storing the multiple blobs in a " +"zip archive.\n" +"[codeblock]\n" +"func write_zip_file():\n" +" var writer := ZIPPacker.new()\n" +" var err := writer.open(\"user://archive.zip\")\n" +" if err != OK:\n" +" return err\n" +" writer.start_file(\"hello.txt\")\n" +" writer.write_file(\"Hello World\".to_utf8_buffer())\n" +" writer.close_file()\n" +"\n" +" writer.close()\n" +" return OK\n" +"[/codeblock]" +msgstr "" +"该类实现了一个写入器,可以将多个 blob 存储在一个压缩文件中。\n" +"[codeblock]\n" +"func write_zip_file():\n" +" var writer := ZIPPacker.new()\n" +" var err := writer.open(\"user://archive.zip\")\n" +" if err != OK:\n" +" return err\n" +" writer.start_file(\"hello.txt\")\n" +" writer.write_file(\"Hello World\".to_utf8_buffer())\n" +" writer.close_file()\n" +"\n" +" writer.close()\n" +" return OK\n" +"[/codeblock]" + +msgid "" +"Write the given [param data] to the file.\n" +"Needs to be called after [method start_file]." +msgstr "" +"将给定的 [param data] 写到文件中。\n" +"需要在 [method start_file] 之后调用。" + +msgid "Allows reading the content of a zip file." +msgstr "允许读取 zip 文件的内容。" + +msgid "" +"This class implements a reader that can extract the content of individual " +"files inside a zip archive.\n" +"[codeblock]\n" +"func read_zip_file():\n" +" var reader := ZIPReader.new()\n" +" var err := reader.open(\"user://archive.zip\")\n" +" if err != OK:\n" +" return PackedByteArray()\n" +" var res := reader.read_file(\"hello.txt\")\n" +" reader.close()\n" +" return res\n" +"[/codeblock]" +msgstr "" +"该类实现了一个可以提取 zip 存档中各个文件内容的读取器。\n" +"[codeblock]\n" +"func read_zip_file():\n" +" var reader := ZIPReader.new()\n" +" var err := reader.open(\"user://archive.zip\")\n" +" if err != OK:\n" +" return PackedByteArray()\n" +" var res := reader.read_file(\"hello.txt\")\n" +" reader.close()\n" +" return res\n" +"[/codeblock]" + +msgid "" +"Returns the list of names of all files in the loaded archive.\n" +"Must be called after [method open]." +msgstr "" +"返回加载的存档中所有文件的名称列表。\n" +"必须在 [method open] 之后调用。" + msgid "" "Opens the zip archive at the given [param path] and reads its file index." msgstr "打开给定 [param path] 的压缩文件,并读取其文件索引。" |