diff options
author | Rémi Verschelde <rverschelde@gmail.com> | 2023-03-15 02:29:27 +0100 |
---|---|---|
committer | Rémi Verschelde <rverschelde@gmail.com> | 2023-03-15 02:29:27 +0100 |
commit | d23922ffebe48f29126c003411495737d07e5a9f (patch) | |
tree | b21c934f431b49bc47861bc03817c4aa6ab7cf6e /doc/translations | |
parent | fc7adaab7b3856a7831d402ea2bbb27efe7b7d8a (diff) |
i18n: Sync translations with Weblate
Diffstat (limited to 'doc/translations')
-rw-r--r-- | doc/translations/es.po | 126 | ||||
-rw-r--r-- | doc/translations/fr.po | 44 | ||||
-rw-r--r-- | doc/translations/zh_CN.po | 20410 |
3 files changed, 19193 insertions, 1387 deletions
diff --git a/doc/translations/es.po b/doc/translations/es.po index 69fe1e2aa2..faa87d0327 100644 --- a/doc/translations/es.po +++ b/doc/translations/es.po @@ -44,12 +44,15 @@ # Fernando Sacó <saco.fernando@gmail.com>, 2023. # Damien Monasterios <monasterio13septiembre@gmail.com>, 2023. # andres gallegos <andresgg.prog@gmail.com>, 2023. +# Dariem Lázaro García López <dariemgl@gmail.com>, 2023. +# Adrian Migueles <adrianmigueles14@gmail.com>, 2023. +# Joinner Medina <devjoi2018@gmail.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-18 04:11+0000\n" -"Last-Translator: andres gallegos <andresgg.prog@gmail.com>\n" +"PO-Revision-Date: 2023-03-12 20:08+0000\n" +"Last-Translator: Joinner Medina <devjoi2018@gmail.com>\n" "Language-Team: Spanish <https://hosted.weblate.org/projects/godot-engine/" "godot-class-reference/es/>\n" "Language: es\n" @@ -57,7 +60,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.16-dev\n" +"X-Generator: Weblate 4.16.2-dev\n" msgid "Description" msgstr "Descripción" @@ -164,10 +167,88 @@ msgstr "" msgid "Built-in GDScript functions." msgstr "Funciones GDScript integradas." +msgid "" +"A list of GDScript-specific utility functions and annotations accessible " +"from any script.\n" +"For the list of the global functions and constants see [@GlobalScope]." +msgstr "" +"Una lista de funciones de utilidad y anotaciones específicas de GDScript " +"accesibles desde cualquier script.\n" +"Para la lista de funciones globales y constantes ver [@GlobalScope]." + msgid "GDScript exports" msgstr "Exportaciones de Scripts GD" 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 "" +"Devuelve un [Color] construido a partir de rojo ([param r8]), verde ([param " +"g8]), azul ([param b8]) y opcionalmente alfa ([param a8]), cada uno dividido " +"por [code]255.0[/code] para obtener su valor final.\n" +"[codeblock]\n" +"var red = Color8(255, 0, 0) # Igual que Color(1, " +"0, 0)\n" +"var dark_blue = Color8(0, 0, 51) # Igual que Color(0, 0, " +"0.2).\n" +"var my_color = Color8(306, 255, 0, 102) # Igual que 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 "" +"Afirma que la [condición param] es [code]true[/code]. Si la [condición " +"param] es [code]false[/code], se genera un error. Cuando se ejecuta desde el " +"editor, el proyecto en ejecución también se pausará hasta que lo reanude. " +"Esto se puede utilizar como una forma más fuerte de [method @GlobalScope." +"push_error] para informar de errores a los desarrolladores del proyecto o a " +"los usuarios del complemento.\n" +"Se puede mostrar un [param message] opcional además del mensaje genérico " +"\"Assertion failed\". Puede utilizarlo para proporcionar detalles " +"adicionales sobre por qué falló la aserción.\n" +"[b]Advertencia:[/b] Por razones de rendimiento, el código dentro de [method " +"assert] sólo se ejecuta en construcciones de depuración o cuando se ejecuta " +"el proyecto desde el editor. No incluya código que tenga efectos secundarios " +"en una llamada a [method assert]. De lo contrario, el proyecto se comportará " +"de forma diferente cuando se exporte en modo release.\n" +"[codeblock]\n" +"# Imagina que siempre queremos que la velocidad esté entre 0 y 20.\n" +"var speed = -10\n" +"assert(speed < 20) # Verdadero, el programa continuará.\n" +"assert(speed >= 0) # Falso, el programa se detendrá.\n" +"assert(speed >= 0 and speed < 20) # También puedes combinar las dos " +"sentencias condicionales en una sola comprobación.\n" +"assert(speed < 20, \"el límite de velocidad es 20\") # Muestra un mensaje.\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" @@ -185,6 +266,36 @@ msgstr "" "[/codeblock]" msgid "" +"Converts [param what] to [param type] in the best way possible. The [param " +"type] uses the [enum Variant.Type] values.\n" +"[codeblock]\n" +"var a = [4, 2.5, 1.2]\n" +"print(a is Array) # Prints true\n" +"\n" +"var b = convert(a, TYPE_PACKED_BYTE_ARRAY)\n" +"print(b) # Prints [4, 2, 1]\n" +"print(b is Array) # Prints false\n" +"[/codeblock]" +msgstr "" +"Convierte [param what] a [param type] de la mejor forma posible. El [param " +"type] usa los valores [enum Variant.Type].\n" +"[codeblock]\n" +"var a = [4, 2.5, 1.2]\n" +"print(a is Array) # Prints true\n" +"\n" +"var b = convert(a, TYPE_PACKED_BYTE_ARRAY)\n" +"print(b) # Prints [4, 2, 1]\n" +"print(b is Array) # Prints false\n" +"[/codeblock]" + +msgid "" +"Converts a [param dictionary] (created with [method inst_to_dict]) back to " +"an Object instance. Can be useful for deserializing." +msgstr "" +"Convierte un [param dictionary] (creado con [method inst_to_dict]) en una " +"instancia de objeto. Puede ser útil para deserializar datos." + +msgid "" "Returns an array with the given range. [method range] can be called in three " "ways:\n" "[code]range(n: int)[/code]: Starts from 0, increases by steps of 1, and " @@ -20718,15 +20829,6 @@ msgstr "" "utilice [method affine_inverse] para las transformadas con escalamiento)." msgid "" -"Returns [code]true[/code] if this transform and [code]transform[/code] are " -"approximately equal, by calling [code]is_equal_approx[/code] on each " -"component." -msgstr "" -"Devuelve [code]true[/code] si esta transformada y [code]transform[/code] son " -"aproximadamente iguales, llamando a [code]is_equal_approx[/code] en cada " -"componente." - -msgid "" "Returns the transform with the basis orthogonal (90 degrees), and normalized " "axis vectors (scale of 1 or -1)." msgstr "" diff --git a/doc/translations/fr.po b/doc/translations/fr.po index d4f1b5dbd7..4404b5feeb 100644 --- a/doc/translations/fr.po +++ b/doc/translations/fr.po @@ -64,13 +64,15 @@ # Thalya Gauvrit <skar0ps.dev@gmail.com>, 2023. # Hipolyte Ponthieu <7hip.po6@orange.fr>, 2023. # Dricom Dragon <dev@jovian-hersemeule.eu>, 2023. +# t8y <contact@t3y.eu>, 2023. +# GuruWP <guruwp@protonmail.com>, 2023. msgid "" msgstr "" "Project-Id-Version: Godot Engine class reference\n" "Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2023-02-28 17:36+0000\n" -"Last-Translator: Dricom Dragon <dev@jovian-hersemeule.eu>\n" +"PO-Revision-Date: 2023-03-08 00:26+0000\n" +"Last-Translator: GuruWP <guruwp@protonmail.com>\n" "Language-Team: French <https://hosted.weblate.org/projects/godot-engine/" "godot-class-reference/fr/>\n" "Language: fr\n" @@ -78,7 +80,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 4.16-rc\n" +"X-Generator: Weblate 4.16.2-dev\n" msgid "Description" msgstr "Description" @@ -386,6 +388,25 @@ msgstr "" msgid "Random number generation" msgstr "Génération de nombres aléatoires" +msgid "" +"Returns the arc cosine of [param x] in radians. Use to get the angle of " +"cosine [param x]. [param x] must be between [code]-1.0[/code] and [code]1.0[/" +"code] (inclusive), otherwise, [method acos] will return [constant @GDScript." +"NAN].\n" +"[codeblock]\n" +"# c is 0.523599 or 30 degrees if converted with rad_to_deg(c)\n" +"var c = acos(0.866025)\n" +"[/codeblock]" +msgstr "" +"Renvoie le cosinus inverse de [param x] en radians. À utiliser pour obtenir " +"l'angle du cosinus [param x]. [param x] doit être entre [code]-1.0[/code] et " +"[code]1.0[/code] (inclus), dans le cas contraire, [method acos] retournera " +"[constant @GDScript.NAN].\n" +"[codeblock]\n" +"# c vaut 0.523599 ou 30 degrés si converti avec rad2deg(s)\n" +"c = acos(0.866025)\n" +"[/codeblock]" + msgid "Converts from decibels to linear energy (audio)." msgstr "Convertit les décibels en énergie linéaire (audio)." @@ -19517,14 +19538,6 @@ msgstr "Une unité d'exécution dans un processus." msgid "Thread-safe APIs" msgstr "Les API sûres pour plusieurs fils d'exécution" -msgid "" -"Returns the current [Thread]'s ID, uniquely identifying it among all " -"threads. If the [Thread] is not running this returns an empty string." -msgstr "" -"Retourne l'identifiant du [Thread] actuel, qui lui est unique parmi tous les " -"autres fils d'exécution. Si le [Thread] n'est pas actif, une chaine vide est " -"retournée." - msgid "A thread running with lower priority than normally." msgstr "Un fil d'exécution avec une priorité inférieure à la normale." @@ -19721,15 +19734,6 @@ msgid "Returns the scale." msgstr "Retourne l’échelle." msgid "" -"Returns [code]true[/code] if this transform and [code]transform[/code] are " -"approximately equal, by calling [code]is_equal_approx[/code] on each " -"component." -msgstr "" -"Retourne [code]true[/code] si cette transformation est [code]transform[/" -"code] sont approximativement égales, c'est-à-dire en appelant " -"[code]is_equal_approx[/code] pour chaque composant." - -msgid "" "Returns the transform with the basis orthogonal (90 degrees), and normalized " "axis vectors (scale of 1 or -1)." msgstr "" diff --git a/doc/translations/zh_CN.po b/doc/translations/zh_CN.po index 339697f02c..4ffb3f53cc 100644 --- a/doc/translations/zh_CN.po +++ b/doc/translations/zh_CN.po @@ -68,12 +68,15 @@ # Hamster <hamster5295@163.com>, 2023. # GarliCat <phoenixkaze@live.com>, 2023. # RIKA! <2293840045@qq.com>, 2023. +# ZHANG JIANFEI <3468144728@qq.com>, 2023. +# tjw123hh <tjw123hh@outlook.com>, 2023. +# miaoqvmiao <miaoqvmiaomqm@outlook.com>, 2023. msgid "" msgstr "" "Project-Id-Version: Godot Engine class reference\n" "Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n" -"PO-Revision-Date: 2023-02-28 17:36+0000\n" -"Last-Translator: Haoyu Qiu <timothyqiu32@gmail.com>\n" +"PO-Revision-Date: 2023-03-14 11:31+0000\n" +"Last-Translator: 风青山 <idleman@yeah.net>\n" "Language-Team: Chinese (Simplified) <https://hosted.weblate.org/projects/" "godot-engine/godot-class-reference/zh_Hans/>\n" "Language: zh_CN\n" @@ -81,7 +84,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Weblate 4.16-rc\n" +"X-Generator: Weblate 4.16.2-dev\n" msgid "Description" msgstr "描述" @@ -719,26 +722,6 @@ 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 string = \"\"\n" -"@export var int_number = 5\n" -"@export var float_number: float = 5\n" -"@export var image : Image\n" -"[/codeblock]" -msgstr "" -"将以下属性标记为已导出(可在检查器面板中编辑并保存到磁盘)。要控制导出属性的" -"类型,请使用类型提示表示法。\n" -"[codeblock]\n" -"@export var string = \"\"\n" -"@export var int_number = 5\n" -"@export var float_number: float = 5\n" -"@export var image : Image\n" -"[/codeblock]" - -msgid "" "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" @@ -764,21 +747,6 @@ msgstr "" "[annotation @export_subgroup]。" msgid "" -"Export a [Color] property without allowing its transparency ([member Color." -"a]) to be edited.\n" -"See also [constant PROPERTY_HINT_COLOR_NO_ALPHA].\n" -"[codeblock]\n" -"@export_color_no_alpha var dye_color : Color\n" -"[/codeblock]" -msgstr "" -"导出一个不允许编辑透明度(其alpha 固定为 [code]1.0[/code])的 [Color] 属" -"性。\n" -"另见 [constant PROPERTY_HINT_COLOR_NO_ALPHA]。\n" -"[codeblock]\n" -"@export_color_no_alpha var dye_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" @@ -2351,6 +2319,18 @@ msgstr "" "nan[/code]。" msgid "" +"Returns the maximum of the given numeric 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" @@ -2377,6 +2357,18 @@ msgstr "" "[/codeblock]" msgid "" +"Returns the minimum of the given numeric 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" @@ -5708,19 +5700,6 @@ 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 "" @@ -5761,7 +5740,8 @@ msgid "" "is_equal_approx] instead, which is more reliable." msgstr "" "如果向量不相等,则返回 [code]true[/code]。\n" -"[b]注意:[/b]由于浮点精度误差,考虑改用更可靠的 [method is_equal_approx]。" +"[b]注意:[/b]由于浮点数精度误差,请考虑改用 [method is_equal_approx],会更可" +"靠。" msgid "" "Inversely transforms (multiplies) the [AABB] by the given [Transform3D] " @@ -5774,7 +5754,8 @@ msgid "" "is_equal_approx] instead, which is more reliable." msgstr "" "如果 AABB 完全相等,则返回 [code]true[/code]。\n" -"[b]注意:[/b]由于浮点精度误差,考虑改用更可靠的 [method is_equal_approx]。" +"[b]注意:[/b]由于浮点数精度误差,请考虑改用 [method is_equal_approx],会更可" +"靠。" msgid "Base dialog for user notification." msgstr "用户通知的基本对话框。" @@ -8864,6 +8845,59 @@ msgstr "" "[/codeblocks]" msgid "" +"Retrieve the blended value of the position tracks with the [member " +"root_motion_track] as a [Vector3] that can be used elsewhere.\n" +"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]Vector3(0, 0, 0)[/code] " +"is played in the previous frame and then an animation with only one key " +"[code]Vector3(1, 0, 1)[/code] is played in the next frame, the difference " +"can be calculated as follows:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var prev_root_motion_position_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_position_accumulator: Vector3 = animation_tree." +"get_root_motion_position_accumulator()\n" +" var difference: Vector3 = current_root_motion_position_accumulator - " +"prev_root_motion_position_accumulator\n" +" prev_root_motion_position_accumulator = " +"current_root_motion_position_accumulator\n" +" transform.origin += 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" +"这在重视动画的初始键值的情况下很有用。\n" +"例如,如果一个只有单个键的动画 [code]Vector3(0, 0, 0)[/code] 在前一帧播放,然" +"后一个只有单个键的动画[code]Vector3(1, 0, 1)[/code] 在下一帧播放,其差异可以" +"被计算如下。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var prev_root_motion_position_accumulator: Vector3\n" +"\n" +"func _process(delta):\n" +" if Input.is_action_just_pressed(\"animate\"):\n" +" state_machine.travel(\"Animate\")\n" +" var current_root_motion_position_accumulator: Vector3 = animation_tree." +"get_root_motion_position_accumulator()\n" +" var difference: Vector3 = current_root_motion_position_accumulator - " +"prev_root_motion_position_accumulator\n" +" prev_root_motion_position_accumulator = " +"current_root_motion_position_accumulator\n" +" transform.origin += difference\n" +"[/gdscript]\n" +"[/codeblocks]\n" +"然而,如果动画循环播放,可能会发生意外的不连续变化,所以这种方法只在一些简单" +"的使用场景里好用。" + +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 " @@ -9049,6 +9083,13 @@ msgstr "" msgid "If [code]true[/code], the [AnimationTree] will be processing." msgstr "如果 [code]true[/code] 时,[AnimationTree] 将执行逻辑处理。" +msgid "" +"The path to the [Node] used to evaluate the AnimationNode [Expression] if " +"one is not explicitly specified internally." +msgstr "" +"用于评估 AnimationNode [Expression] 的 [Node] 的路径,如果内部未明确指定路径" +"时使用。" + msgid "The path to the [AnimationPlayer] used for animating." msgstr "用于动画的 [AnimationPlayer] 的路径。" @@ -9058,6 +9099,30 @@ msgid "" msgstr "" "该 [AnimationTree] 的处理模式。可用的模式见 [enum AnimationProcessCallback]。" +msgid "" +"The path to the Animation track used for root motion. Paths must be valid " +"scene-tree paths to a node, and must be specified starting from the parent " +"node of the node that will reproduce the animation. To specify a track that " +"controls properties or bones, append its name after the path, separated by " +"[code]\":\"[/code]. For example, [code]\"character/skeleton:ankle\"[/code] " +"or [code]\"character/mesh:transform/local\"[/code].\n" +"If the track has type [constant Animation.TYPE_POSITION_3D], [constant " +"Animation.TYPE_ROTATION_3D] or [constant Animation.TYPE_SCALE_3D] the " +"transformation will be canceled visually, and the animation will appear to " +"stay in place. See also [method get_root_motion_position], [method " +"get_root_motion_rotation], [method get_root_motion_scale] and " +"[RootMotionView]." +msgstr "" +"用于根部运动的动画轨道的路径。路径必须是指向节点的场景树有效路径,必须从将实" +"现动画的节点的父节点开始指定。要指定控件属性或骨骼的轨道,请在路径后附加其名" +"称,用 [code]\":\"[/code] 隔开。例如,[code]\"character/skeleton:ankle\"[/" +"code] 或 [code]\"character/mesh:transform/local\"[/code]。\n" +"如果轨道的类型是 [constant Animation.TYPE_POSITION_3D]、[constant Animation." +"TYPE_ROTATION_3D]、或者 [constant Animation.TYPE_SCALE_3D],那么将取消视觉上" +"的变换,其动画看起来将是留在原地。参阅 [method get_root_motion_position]、" +"[method get_root_motion_rotation]、[method get_root_motion_scale]、和 " +"[RootMotionView]。" + msgid "The root animation node of this [AnimationTree]. See [AnimationNode]." msgstr "该 [AnimationTree] 的根动画节点。见 [AnimationNode]。" @@ -9071,6 +9136,9 @@ msgstr "" "[b]注意:[/b]如果动画需要循环或者是被中止的,则不会发出该信号。另外请意识到可" "能存在同步和过渡所导致的不可见的播放。" +msgid "Emitted when the [member anim_player] is changed." +msgstr "当 [member anim_player] 被改变时触发。" + msgid "" "Notifies when an animation starts playing.\n" "[b]Note:[/b] This signal is not emitted if an animation is looping or " @@ -9094,6 +9162,26 @@ msgstr "在空闲帧期间进行动画(即 [method Node._process])。" msgid "The animations will only progress manually (see [method advance])." msgstr "只能手动行进动画(见 [method advance])。" +msgid "2D area for detection, as well as physics and audio influence." +msgstr "用于检测、以及物理和音频影响的 2D 区域。" + +msgid "" +"2D area that detects [CollisionObject2D] 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 [CollisionShape2D] or a " +"[CollisionPolygon2D] node as a [i]direct[/i] child (or add multiple such " +"nodes as direct children) of the area.\n" +"[b]Warning:[/b] See [ConcavePolygonShape2D] for a warning about possibly " +"unexpected behavior when using that shape for an area." +msgstr "" +"可以检测到 [CollisionObject2D] 节点间的重叠、进入及退出的 2D 区域。也可以修改" +"或覆盖局部的物理参数(重力、阻尼)、将音频导流至自定义的音频总线。\n" +"要为区域设置形状,请将一个 [CollisionShape2D] 或 [CollisionPolygon2D] 节点添" +"加为该区域的[i]直接[/i]子节点(或者添加多个这种节点作为直接子节点)。\n" +"[b]警告:[/b]使用凹多边形(也叫“三角形网格”)作为区域的形状时,可能产生出乎预" +"料的行为,见 [ConcavePolygonShape2D]。" + msgid "Using Area2D" msgstr "使用 Area2D" @@ -9118,6 +9206,81 @@ msgstr "" "改,而不是在物体被移动后立即修改。可考虑改用信号。" msgid "" +"Returns a list of intersecting [PhysicsBody2D]s and [TileMap]s. The " +"overlapping body's [member CollisionObject2D.collision_layer] must be part " +"of this area's [member CollisionObject2D.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 "" +"返回相交的 [PhysicsBody2D] 和 [TileMap]。重叠物体的 [member " +"CollisionObject2D.collision_layer] 必须是该区域 [member CollisionObject2D." +"collision_mask] 的一部分,才能被检测到。\n" +"出于性能原因(所有碰撞都是一起处理的),这个列表只会在每次物理迭代时发生一次" +"更改,不会在对象移动后立即更改。请考虑使用信号。" + +msgid "" +"Returns [code]true[/code] if intersecting any [Area2D]s, otherwise returns " +"[code]false[/code]. The overlapping area's [member CollisionObject2D." +"collision_layer] must be part of this area's [member CollisionObject2D." +"collision_mask] in order to be detected.\n" +"For performance reasons (collisions are all processed at the same time) the " +"list of overlapping areas is modified once during the physics step, not " +"immediately after objects are moved. Consider using signals instead." +msgstr "" +"如果与其他 [Area2D] 相交,则返回 [code]true[/code],否则返回 [code]false[/" +"code]。重叠区域的 [member CollisionObject2D.collision_layer] 必须是该区域 " +"[member CollisionObject2D.collision_mask] 的一部分,才能被检测到。\n" +"出于性能原因(所有碰撞都是一起处理的),重叠区域的列表只会在每次物理迭代时发" +"生一次更改,不会在对象移动后立即更改。请考虑使用信号。" + +msgid "" +"Returns [code]true[/code] if intersecting any [PhysicsBody2D]s or " +"[TileMap]s, otherwise returns [code]false[/code]. The overlapping body's " +"[member CollisionObject2D.collision_layer] must be part of this area's " +"[member CollisionObject2D.collision_mask] in order to be detected.\n" +"For performance reasons (collisions are all processed at the same time) the " +"list of overlapping bodies is modified once during the physics step, not " +"immediately after objects are moved. Consider using signals instead." +msgstr "" +"如果与其他 [PhysicsBody2D] 或 [TileMap] 相交,则返回 [code]true[/code],否则" +"返回 [code]false[/code]。重叠物体的 [member CollisionObject2D." +"collision_layer] 必须是该区域 [member CollisionObject2D.collision_mask] 的一" +"部分,才能被检测到。\n" +"出于性能原因(所有碰撞都是一起处理的),重叠物体的列表只会在每次物理迭代时发" +"生一次更改,不会在对象移动后立即更改。请考虑使用信号。" + +msgid "" +"Returns [code]true[/code] if the given [Area2D] intersects or overlaps this " +"[Area2D], [code]false[/code] otherwise.\n" +"[b]Note:[/b] The result of this test is not immediate after moving objects. " +"For performance, the list of overlaps is updated once per frame and before " +"the physics step. Consider using signals instead." +msgstr "" +"如果给定的 [Area2D] 与此 [Area2D] 相交或重叠,则返回 [code]true[/code],否则" +"返回 [code]false[/code]。\n" +"[b]注意:[/b]测试结果不反映对象移动后的即时状态。出于性能原因,重叠列表每帧只" +"会在物理迭代前更新一次。请考虑使用信号。" + +msgid "" +"Returns [code]true[/code] if the given physics body intersects or overlaps " +"this [Area2D], [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.\n" +"The [param body] argument can either be a [PhysicsBody2D] or a [TileMap] " +"instance. While TileMaps are not physics bodies themselves, they register " +"their tiles with collision shapes as a virtual physics body." +msgstr "" +"如果给定的物理物体与此 [Area2D] 相交或重叠,则返回 [code]true[/code],否则返" +"回 [code]false[/code]。\n" +"[b]注意:[/b]测试结果不反映对象移动后的即时状态。出于性能原因,重叠列表每帧只" +"会在物理迭代前更新一次。请考虑使用信号。\n" +"参数 [param body] 可以是 [PhysicsBody2D] 实例,也可以是 [TileMap] 实例。" +"TileMap 虽然不是物理物体,但会把图块的碰撞形状注册为虚拟物理物体。" + +msgid "" "The rate at which objects stop spinning in this area. Represents the angular " "velocity lost per second.\n" "See [member ProjectSettings.physics/2d/default_angular_damp] for more " @@ -9374,6 +9537,9 @@ msgstr "" "这个区域取代了到目前为止计算出的任何重力/阻尼(按 [member priority] 顺序)," "但继续计算其余的区域。" +msgid "3D area for detection, as well as 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, " @@ -9415,6 +9581,52 @@ msgstr "" "被移动后立即修改。可考虑改用信号。" msgid "" +"Returns a list of intersecting [PhysicsBody3D]s and [GridMap]s. The " +"overlapping body'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 "" +"返回相交的 [PhysicsBody3D] 和 [GridMap]。重叠物体的 [member " +"CollisionObject3D.collision_layer] 必须是该区域 [member CollisionObject3D." +"collision_mask] 的一部分,才能被检测到。\n" +"出于性能原因(所有碰撞都是一起处理的),这个列表只会在每次物理迭代时发生一次" +"更改,不会在对象移动后立即更改。请考虑使用信号。" + +msgid "" +"Returns [code]true[/code] if intersecting any [Area3D]s, otherwise returns " +"[code]false[/code]. 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) the " +"list of overlapping areas is modified once during the physics step, not " +"immediately after objects are moved. Consider using signals instead." +msgstr "" +"如果与其他 [Area3D] 相交,则返回 [code]true[/code],否则返回 [code]false[/" +"code]。重叠区域的 [member CollisionObject3D.collision_layer] 必须是该区域 " +"[member CollisionObject3D.collision_mask] 的一部分,才能被检测到。\n" +"出于性能原因(所有碰撞都是一起处理的),重叠区域的列表只会在每次物理迭代时发" +"生一次更改,不会在对象移动后立即更改。请考虑使用信号。" + +msgid "" +"Returns [code]true[/code] if intersecting any [PhysicsBody3D]s or " +"[GridMap]s, otherwise returns [code]false[/code]. The overlapping body'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) the " +"list of overlapping bodies is modified once during the physics step, not " +"immediately after objects are moved. Consider using signals instead." +msgstr "" +"如果与其他 [PhysicsBody3D] 或 [GridMap] 相交,则返回 [code]true[/code],否则" +"返回 [code]false[/code]。重叠物体的 [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. " @@ -9423,8 +9635,25 @@ msgid "" msgstr "" "如果给定的 [Area3D] 与此 [Area3D] 相交或重叠,则返回 [code]true[/code],否则" "返回 [code]false[/code]。\n" -"[b]注意:[/b]此测试的结果不是在移动实体后立即产生的。为了提高性能,重叠列表每" -"帧仅更新一次,并且在物理步骤之前更新。可考虑改用信号。" +"[b]注意:[/b]测试结果不反映对象移动后的即时状态。出于性能原因,重叠列表每帧只" +"会在物理迭代前更新一次。请考虑使用信号。" + +msgid "" +"Returns [code]true[/code] if the given physics body 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.\n" +"The [param body] argument can either be a [PhysicsBody3D] or a [GridMap] " +"instance. While GridMaps are not physics body themselves, they register " +"their tiles with collision shapes as a virtual physics body." +msgstr "" +"如果给定的物理物体与此 [Area3D] 相交或重叠,则返回 [code]true[/code],否则返" +"回 [code]false[/code]。\n" +"[b]注意:[/b]测试结果不反映对象移动后的即时状态。出于性能原因,重叠列表每帧只" +"会在物理迭代前更新一次。请考虑使用信号。\n" +"参数 [param body] 可以是 [PhysicsBody3D] 实例,也可以是 [GridMap] 实例。" +"GridMap 虽然不是物理物体,但会把图块的碰撞形状注册为虚拟物理物体。" msgid "" "The rate at which objects stop spinning in this area. Represents the angular " @@ -9574,105 +9803,60 @@ msgstr "" "[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" +"Emitted when a [Shape3D] of the received [param body] enters a shape of 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].\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 [PhysicsServer3D].\n" +"[b]Example of getting the[/b] [CollisionShape3D] [b]node from the shape " +"index:[/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" +"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" -"[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]" +msgstr "" +"当接收到的物体 [param body] 中的某个 [Shape3D] 进入此区域中的某个形状时发出。" +"[param body] 可以是 [PhysicsBody3D] 或 [GridMap]。[GridMap] 的 [MeshLibrary] " +"配置有碰撞形状时才能够被检测到。要求将 [member monitoring] 设置为 " +"[code]true[/code]。\n" +"[param local_shape_index] 和 [param body_shape_index] 分别对应此区域中以及交" +"互物体中正在进行交互的形状的索引。[param body_rid] 包含该物体的 [RID]。这些值" +"可以在 [PhysicsServer3D] 中使用。\n" +"[b]根据形状索引获取[/b] [CollisionShape3D] [b]节点的示例:[/b]\n" "[codeblocks]\n" "[gdscript]\n" -"var array1 = [\"One\", 2]\n" -"var array2 = [3, \"Four\"]\n" -"print(array1 + array2) # [\"One\", 2, 3, \"Four\"]\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" -"[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] 只能防止该常量在初" -"始化后被赋值为另一个值。" +"[/codeblocks]" + +msgid "" +"Emitted when a [Shape3D] of the received [param body] exits a shape of 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].\n" +"See also [signal body_shape_entered]." +msgstr "" +"当接收到的物体 [param body] 中的某个 [Shape3D] 离开此区域中的某个形状时发出。" +"[param body] 可以是 [PhysicsBody3D] 或 [GridMap]。[GridMap] 的 [MeshLibrary] " +"配置有碰撞形状时才能够被检测到。要求将 [member monitoring] 设置为 " +"[code]true[/code]。\n" +"另见 [signal body_shape_entered]。" + +msgid "A generic array datatype." +msgstr "通用数组数据类型。" msgid "Constructs an empty [Array]." msgstr "构造空的 [Array]。" @@ -9869,6 +10053,40 @@ msgstr "" "的,当从编辑器运行时,按索引访问将暂停项目的执行。" msgid "" +"Finds the index of an existing value (or the insertion index that maintains " +"sorting order, if the value is not yet present in the array) using binary " +"search. Optionally, a [param before] specifier can be passed. If " +"[code]false[/code], the returned index comes after all existing entries of " +"the value in the array.\n" +"[b]Note:[/b] Calling [method bsearch] on an unsorted array results in " +"unexpected behavior." +msgstr "" +"使用二进法查找已有值的索引(如果该值尚未存在于数组中,则为保持排序顺序的插入" +"索引)。传递 [param before] 说明符是可选的。如果该参数为 [code]false[/code]," +"则返回的索引位于数组中该值的所有已有的条目之后。\n" +"[b]注意:[/b]在未排序的数组上调用 [method bsearch] 会产生预料之外的行为。" + +msgid "" +"Finds the index of an existing value (or the insertion index that maintains " +"sorting order, if the value is not yet present in the array) using binary " +"search and a custom comparison method. Optionally, a [param before] " +"specifier can be passed. If [code]false[/code], the returned index comes " +"after all existing entries of the value in the array. The custom method " +"receives two arguments (an element from the array and the value searched " +"for) and must return [code]true[/code] if the first argument is less than " +"the second, and return [code]false[/code] otherwise.\n" +"[b]Note:[/b] Calling [method bsearch_custom] on an unsorted array results in " +"unexpected behavior." +msgstr "" +"使用二分法和自定义比较方法查找已有值的索引(如果该值尚未存在于数组中,则为保" +"持排序顺序的插入索引)。传递 [param before] 说明符是可选的。如果该参数为 " +"[code]false[/code],则返回的索引位于数组中该值的所有已有条目之后。自定义方法" +"接收两个参数(数组中的一个元素和搜索到的值),如果第一个参数小于第二个参数," +"则必须返回 [code]true[/code],否则返回 [code]false[/code] .\n" +"[b]注意:[/b]在未排序的数组上调用 [method bsearch_custom] 会产生预料之外的行" +"为。" + +msgid "" "Clears the array. This is equivalent to using [method resize] with a size of " "[code]0[/code]." msgstr "清空数组。相当于调用 [method resize] 时指定大小为 [code]0[/code]。" @@ -9877,6 +10095,23 @@ msgid "Returns the number of times an element is in the array." msgstr "返回元素在数组中出现的次数。" msgid "" +"Returns a copy of the array.\n" +"If [param deep] is [code]true[/code], a deep copy is performed: all nested " +"arrays and dictionaries are duplicated and will not be shared with the " +"original array. If [code]false[/code], a shallow copy is made and references " +"to the original nested arrays and dictionaries are kept, so that modifying a " +"sub-array or dictionary in the copy will also impact those referenced in the " +"source array. Note that any [Object]-derived elements will be shallow copied " +"regardless of the [param deep] setting." +msgstr "" +"返回该数组的副本。\n" +"[param deep] 为 [code]true[/code] 时会执行深拷贝:所有嵌套数组和字典都将被复" +"制,且不会与原始数组共享。为 [code]false[/code] 时则进行浅拷贝,并保留对原始" +"嵌套数组和字典的引用,因此修改副本中的子数组或字典,也会影响源数组中引用的子" +"数组或字典。请注意,无论 [param deep] 如何设置,任何 [Object] 派生的元素都是" +"浅拷贝的。" + +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" @@ -9988,6 +10223,79 @@ msgstr "" msgid "Returns a class name of a typed [Array] of type [constant TYPE_OBJECT]." msgstr "返回类型为 [constant TYPE_OBJECT] 的 类型化 [Array] 的类名。" +msgid "Returns the script associated with a typed array tied to a class name." +msgstr "返回与此类型化数组绑定的类名关联的脚本。" + +msgid "" +"Returns [code]true[/code] if the array contains the given value.\n" +"[codeblocks]\n" +"[gdscript]\n" +"print([\"inside\", 7].has(\"inside\")) # True\n" +"print([\"inside\", 7].has(\"outside\")) # False\n" +"print([\"inside\", 7].has(7)) # True\n" +"print([\"inside\", 7].has(\"7\")) # False\n" +"[/gdscript]\n" +"[csharp]\n" +"var arr = new Godot.Collections.Array { \"inside\", 7 };\n" +"// has is renamed to Contains\n" +"GD.Print(arr.Contains(\"inside\")); // True\n" +"GD.Print(arr.Contains(\"outside\")); // False\n" +"GD.Print(arr.Contains(7)); // True\n" +"GD.Print(arr.Contains(\"7\")); // False\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Note:[/b] This is equivalent to using the [code]in[/code] operator as " +"follows:\n" +"[codeblocks]\n" +"[gdscript]\n" +"# Will evaluate to `true`.\n" +"if 2 in [2, 4, 6, 8]:\n" +" print(\"Contains!\")\n" +"[/gdscript]\n" +"[csharp]\n" +"// As there is no \"in\" keyword in C#, you have to use Contains\n" +"var array = new Godot.Collections.Array { 2, 4, 6, 8 };\n" +"if (array.Contains(2))\n" +"{\n" +" GD.Print(\"Contains!\");\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"如果该数组包含给定值,则返回 [code]true[/code]。\n" +"[codeblocks]\n" +"[gdscript]\n" +"print([\"inside\", 7].has(\"inside\")) # 真\n" +"print([\"inside\", 7].has(\"outside\")) # 假\n" +"print([\"inside\", 7].has(7)) # 真\n" +"print([\"inside\", 7].has(\"7\")) # 假\n" +"[/gdscript]\n" +"[csharp]\n" +"var arr = new Godot.Collections.Array { \"inside\", 7 };\n" +"// has 被改名为 Contains\n" +"GD.Print(arr.Contains(\"inside\")); // 真\n" +"GD.Print(arr.Contains(\"outside\")); // 假\n" +"GD.Print(arr.Contains(7)); // 真\n" +"GD.Print(arr.Contains(\"7\")); // 假\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]注意:[/b]这相当于使用 [code]in[/code] 运算符,如下所示:\n" +"[codeblocks]\n" +"[gdscript]\n" +"# 将评估为`true`。\n" +"if 2 in [2, 4, 6, 8]:\n" +" print(\"包含!\")\n" +"[/gdscript]\n" +"[csharp]\n" +"// 由于 C# 中没有关键字“in”,因此必须使用 Contains\n" +"var array = new Godot.Collections.Array { 2, 4, 6, 8 };\n" +"if (array.Contains(2))\n" +"{\n" +" GD.Print(\"包含!\");\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" + msgid "" "Returns a hashed 32-bit integer value representing the array and its " "contents.\n" @@ -10019,10 +10327,34 @@ msgid "Returns [code]true[/code] if the array is empty." msgstr "该数组为空时,返回 [code]true[/code]。" msgid "" +"Returns [code]true[/code] if the array is read-only. See [method " +"make_read_only]. Arrays are automatically read-only if declared with " +"[code]const[/code] keyword." +msgstr "" +"如果该数组只读,则返回 [code]true[/code]。见 [method make_read_only]。如果数" +"组是用 [code]const[/code] 关键字声明的,则自动只读。" + +msgid "" "Returns [code]true[/code] if the array is typed the same as [param array]." msgstr "如果该数组的类型与 [param array] 相同,则返回 [code]true[/code]。" msgid "" +"Returns [code]true[/code] if the array is typed. Typed arrays can only store " +"elements of their associated type and provide type safety for the [code][][/" +"code] operator. Methods of typed array still return [Variant]." +msgstr "" +"如果该数组是类型化的,则返回 [code]true[/code]。类型化数组只能存储与其关联类" +"型的元素,能够为其 [code][][/code] 运算符提供类型安全支持。类型化数组的方法仍" +"然返回 [Variant]。" + +msgid "" +"Makes the array read-only, i.e. disabled modifying of the array's elements. " +"Does not apply to nested content, e.g. content of nested arrays." +msgstr "" +"使该数组只读,即禁止修改该数组的元素。不适用于嵌套的内容,例如嵌套数组的内" +"容。" + +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 " @@ -10095,6 +10427,24 @@ msgstr "" "[/codeblocks]" msgid "" +"Removes and returns the element of the array at index [param position]. If " +"negative, [param position] is considered relative to the end of the array. " +"Leaves the array untouched and returns [code]null[/code] if the array is " +"empty or if it's accessed out of bounds. An error message is printed when " +"the array is accessed out of bounds, but not when the array is empty.\n" +"[b]Note:[/b] On large arrays, this method can be slower than [method " +"pop_back] as it will reindex the array's elements that are located after the " +"removed element. The larger the array and the lower the index of the removed " +"element, the slower [method pop_at] will be." +msgstr "" +"移除并返回数组中位于 [param position] 索引处的元素。如果 [param position] 为" +"负数,则认为是相对于该数组末尾的值。如果该数组为空,则返回 [code]null[/" +"code],不会改动数组。数组访问越界时会输出错误消息,但如果数组为空时不会。\n" +"[b]注意:[/b]在较大的数组上,这个方法会比 [method pop_back] 慢,因为会对移除" +"元素后的数组元素重新进行索引。数组越大,或者移除元素的索引越小,[method " +"pop_at] 就越慢。" + +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]." @@ -10131,6 +10481,39 @@ msgstr "" "都会重新索引所有数组的元素。数组越大,[method push_front] 的速度就越慢。" msgid "" +"Calls the provided [Callable] for each element in array and accumulates the " +"result in [param accum].\n" +"The callable's method takes two arguments: the current value of [param " +"accum] and the current array element. If [param accum] is [code]null[/code] " +"(default value), the iteration will start from the second element, with the " +"first one used as initial value of [param accum].\n" +"[codeblock]\n" +"func _ready():\n" +" print([1, 2, 3].reduce(sum, 10)) # Prints 16.\n" +" print([1, 2, 3].reduce(func(accum, number): return accum + number, 10)) " +"# Same as above, but using lambda function.\n" +"\n" +"func sum(accum, number):\n" +" return accum + number\n" +"[/codeblock]\n" +"See also [method map], [method filter], [method any] and [method all]." +msgstr "" +"为数组中的每个元素调用给定的 [Callable] 并将结果累积在 [param accum] 中。\n" +"该可调用体的方法接受两个参数:[param accum] 的当前值,以及当前的数组元素。如" +"果 [param accum] 为 [code]null[/code](默认值),则会从第二个元素开始迭代,将" +"第一个元素作为 [param accum] 的初始值。\n" +"[codeblock]\n" +"func _ready():\n" +" print([1, 2, 3].reduce(sum, 10)) # 输出 16.\n" +" print([1, 2, 3].reduce(func(accum, number): return accum + number, 10)) " +"# 同上,但使用 lambda 函数。\n" +"\n" +"func sum(accum, number):\n" +" return accum + number\n" +"[/codeblock]\n" +"另见 [method map]、[method filter]、[method any]、[method all]。" + +msgid "" "Removes an element from the array by index. If the index does not exist in " "the array, nothing happens. To remove an element by searching for its value, " "use [method erase] instead.\n" @@ -10178,6 +10561,35 @@ msgid "Returns the number of elements in the array." msgstr "返回数组中元素的个数。" msgid "" +"Returns the slice of the [Array], from [param begin] (inclusive) to [param " +"end] (exclusive), as a new [Array].\n" +"The absolute value of [param begin] and [param end] will be clamped to the " +"array size, so the default value for [param end] makes it slice to the size " +"of the array by default (i.e. [code]arr.slice(1)[/code] is a shorthand for " +"[code]arr.slice(1, arr.size())[/code]).\n" +"If either [param begin] or [param end] are negative, they will be relative " +"to the end of the array (i.e. [code]arr.slice(0, -2)[/code] is a shorthand " +"for [code]arr.slice(0, arr.size() - 2)[/code]).\n" +"If specified, [param step] is the relative index between source elements. It " +"can be negative, then [param begin] must be higher than [param end]. For " +"example, [code][0, 1, 2, 3, 4, 5].slice(5, 1, -2)[/code] returns [code][5, 3]" +"[/code].\n" +"If [param deep] is true, each element will be copied by value rather than by " +"reference." +msgstr "" +"返回该 [Array] 的切片,是从 [param begin](含)到 [param end](不含)的全新 " +"[Array]。\n" +"[param begin] 和 [param end] 的绝对值会按数组大小进行限制,所以 [param end] " +"的默认值会切到数组大小为止(即 [code]arr.slice(1)[/code] 是 [code]arr." +"slice(1, arr.size())[/code] 的简写)。\n" +"如果 [param begin] 或 [param end] 为负,则表示相对于数组的末尾(即 [code]arr." +"slice(0, -2)[/code] 是 [code]arr.slice(0, arr.size() - 2)[/code] 的简写)。\n" +"如果指定了 [param step],则会用作原始元素的索引间距。这个参数可以为负,此时 " +"[param begin] 必须大于 [param end]。例如,[code][0, 1, 2, 3, 4, 5].slice(5, " +"1, -2)[/code] 会返回 [code][5, 3][/code]。\n" +"如果 [param deep] 为 true,则每个元素都会按值复制,而不是按引用复制。" + +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 " @@ -10299,6 +10711,57 @@ msgstr "" msgid "" "Compares the left operand [Array] against the [param right] [Array]. Returns " +"[code]true[/code] if the sizes or contents of the arrays are [i]not[/i] " +"equal, [code]false[/code] otherwise." +msgstr "" +"将左操作数 [Array] 与右操作数 [param right] [Array] 进行比较。如果大小或内容" +"[i]不相等[/i],则返回 [code]true[/code],否则返回 [code]false[/code]。" + +msgid "" +"Concatenates two [Array]s together, with the [param right] [Array] being " +"added to the end of the [Array] specified in the left operand. For example, " +"[code][1, 2] + [3, 4][/code] results in [code][1, 2, 3, 4][/code]." +msgstr "" +"连接两个 [Array],右操作数 [param right] [Array] 加到左操作数指定的 [Array] " +"的末尾。例如,[code][1, 2] + [3, 4][/code] 的结果是 [code][1, 2, 3, 4][/" +"code]。" + +msgid "" +"Performs a comparison for each index between the left operand [Array] and " +"the [param right] [Array], considering the highest common index of both " +"arrays for this comparison: Returns [code]true[/code] on the first " +"occurrence of an element that is less, or [code]false[/code] if the element " +"is greater. Note that depending on the type of data stored, this function " +"may be recursive. If all elements are equal, it compares the length of both " +"arrays and returns [code]false[/code] if the left operand [Array] has fewer " +"elements, otherwise it returns [code]true[/code]." +msgstr "" +"对左操作数 [Array] 和右操作数 [param right] [Array] 之间的各个索引进行比较," +"考虑两个数组的最高公共索引:遇到第一个不同的元素时,如果该元素较小则返回 " +"[code]true[/code],如果该元素较大则返回 [code]false[/code]。请注意,部分类型" +"的存储数据可能导致本函数的递归调用。如果所有元素都相等,则比较两个数组的长" +"度,如果左操作数 [Array] 元素较少则返回 [code]false[/code],否则返回 " +"[code]true[/code]。" + +msgid "" +"Performs a comparison for each index between the left operand [Array] and " +"the [param right] [Array], considering the highest common index of both " +"arrays for this comparison: Returns [code]true[/code] on the first " +"occurrence of an element that is less, or [code]false[/code] if the element " +"is greater. Note that depending on the type of data stored, this function " +"may be recursive. If all elements are equal, it compares the length of both " +"arrays and returns [code]true[/code] if the left operand [Array] has the " +"same number of elements or fewer, otherwise it returns [code]false[/code]." +msgstr "" +"对左操作数 [Array] 和右操作数 [param right] [Array] 之间的各个索引进行比较," +"考虑两个数组的最高公共索引:遇到第一个不同的元素时,如果该元素较小则返回 " +"[code]true[/code],如果该元素较大则返回 [code]false[/code]。请注意,部分类型" +"的存储数据可能导致本函数的递归调用。如果所有元素都相等,则比较两个数组的长" +"度,如果左操作数 [Array] 元素数量相等或较少则返回 [code]true[/code],否则返" +"回 [code]false[/code]。" + +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 "" @@ -10306,6 +10769,41 @@ msgstr "" "等,则返回 [code]true[/code],否则返回 [code]false[/code]。" msgid "" +"Performs a comparison for each index between the left operand [Array] and " +"the [param right] [Array], considering the highest common index of both " +"arrays for this comparison: Returns [code]true[/code] on the first " +"occurrence of an element that is greater, or [code]false[/code] if the " +"element is less. Note that depending on the type of data stored, this " +"function may be recursive. If all elements are equal, it compares the length " +"of both arrays and returns [code]true[/code] if the [param right] [Array] " +"has more elements, otherwise it returns [code]false[/code]." +msgstr "" +"对左操作数 [Array] 和右操作数 [param right] [Array] 之间的各个索引进行比较," +"考虑两个数组的最高公共索引:遇到第一个不同的元素时,如果该元素较大则返回 " +"[code]true[/code],如果该元素较小则返回 [code]false[/code]。请注意,部分类型" +"的存储数据可能导致本函数的递归调用。如果所有元素都相等,则比较两个数组的长" +"度,如果左操作数 [Array] 元素较多则返回 [code]true[/code],否则返回 " +"[code]false[/code]。" + +msgid "" +"Performs a comparison for each index between the left operand [Array] and " +"the [param right] [Array], considering the highest common index of both " +"arrays for this comparison: Returns [code]true[/code] on the first " +"occurrence of an element that is greater, or [code]false[/code] if the " +"element is less. Note that depending on the type of data stored, this " +"function may be recursive. If all elements are equal, it compares the length " +"of both arrays and returns [code]true[/code] if the [param right] [Array] " +"has more or the same number of elements, otherwise it returns [code]false[/" +"code]." +msgstr "" +"对左操作数 [Array] 和右操作数 [param right] [Array] 之间的各个索引进行比较," +"考虑两个数组的最高公共索引:遇到第一个不同的元素时,如果该元素较大则返回 " +"[code]true[/code],如果该元素较小则返回 [code]false[/code]。请注意,部分类型" +"的存储数据可能导致本函数的递归调用。如果所有元素都相等,则比较两个数组的长" +"度,如果左操作数 [Array] 元素数量相等或较多则返回 [code]true[/code],否则返" +"回 [code]false[/code]。" + +msgid "" "[Mesh] type that provides utility for constructing a surface from arrays." msgstr "[Mesh] 网格类型,提供了用于从数组构造表面的工具。" @@ -11182,6 +11680,15 @@ msgstr "" "如果对于给定的 [param id] 已经存在一个点,它的位置和权重将被更新为给定的值。" msgid "" +"Returns whether the two given points are directly connected by a segment. 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 "" "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" @@ -11419,6 +11926,11 @@ msgstr "" "路径的起点到终点排序。" msgid "" +"Indicates that the grid parameters were changed and [method update] needs to " +"be called." +msgstr "表示网格参数发生改变,需要调用 [method update]。" + +msgid "" "Returns [code]true[/code] if the [param x] and [param y] is a valid grid " "coordinate (id)." msgstr "" @@ -11431,6 +11943,13 @@ msgid "" msgstr "如果 [param id] 向量是有效的网格坐标,则返回 [code]true[/code]。" msgid "" +"Returns [code]true[/code] if a point is disabled for pathfinding. By " +"default, all points are enabled." +msgstr "" +"如果寻路时会禁用某个点,则返回 [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 " @@ -11530,6 +12049,13 @@ msgstr "" msgid "Captures audio from an audio bus in real-time." msgstr "从音频总线上实时捕捉音频。" +msgid "" +"Returns [code]true[/code] if at least [param frames] audio frames are " +"available to read in the internal ring buffer." +msgstr "" +"如果内部环形缓冲区中至少有 [param frames] 个音频帧可供读取,则返回 " +"[code]true[/code]。" + msgid "Clears the internal ring buffer." msgstr "清除内部环形缓冲区。" @@ -12453,6 +12979,46 @@ msgstr "解锁音频驱动程序的主循环。(锁定后,你始终需要手 msgid "Number of available audio buses." msgstr "可用音频总线的数量。" +msgid "" +"Name of the current device for audio input (see [method " +"get_input_device_list]). On systems with multiple audio inputs (such as " +"analog, USB and HDMI audio), this can be used to select the audio input " +"device. The value [code]\"Default\"[/code] will record audio on the system-" +"wide default audio input. If an invalid device name is set, the value will " +"be reverted back to [code]\"Default\"[/code].\n" +"[b]Note:[/b] [member ProjectSettings.audio/driver/enable_input] must be " +"[code]true[/code] for audio input to work. See also that setting's " +"description for caveats related to permissions and operating system privacy " +"settings." +msgstr "" +"当前音频输入设备的名称(见 [method get_input_device_list])。在具有多个音频输" +"入(例如模拟、USB、HDMI 音频)的系统中,可用于选择音频输入设备。为 " +"[code]\"Default\"[/code] 时会从系统默认的音频输入录制音频。如果设置了无效的设" +"备名称,该值会被恢复为 [code]\"Default\"[/code]。\n" +"[b]注意:[/b][member ProjectSettings.audio/driver/enable_input] 必须为 " +"[code]true[/code] 音频输入才能正常工作。另请参阅该设置项的描述,了解权限和操" +"作系统隐私设置相关的说明。" + +msgid "" +"Name of the current device for audio output (see [method " +"get_output_device_list]). On systems with multiple audio outputs (such as " +"analog, USB and HDMI audio), this can be used to select the audio output " +"device. The value [code]\"Default\"[/code] will play audio on the system-" +"wide default audio output. If an invalid device name is set, the value will " +"be reverted back to [code]\"Default\"[/code]." +msgstr "" +"当前音频输出设备的名称(见 [method get_output_device_list])。在具有多个音频" +"输出(例如模拟、USB、HDMI 音频)的系统中,可用于选择音频输出设备。为 " +"[code]\"Default\"[/code] 时会从系统默认的音频输出播放音频。如果设置了无效的设" +"备名称,该值会被恢复为 [code]\"Default\"[/code]。" + +msgid "" +"Scales the rate at which audio is played (i.e. setting it to [code]0.5[/" +"code] will make the audio be played at half its speed)." +msgstr "" +"音频播放的缩放速率(即将其设置为 [code]0.5[/code] 将使音频以其一半的速度播" +"放)。" + msgid "Emitted when the [AudioBusLayout] changes." msgstr "当 [AudioBusLayout] 改变时发出。" @@ -12488,6 +13054,18 @@ msgstr "音频生成器演示" msgid "Returns the length of the audio stream in seconds." msgstr "返回音频流的长度,单位为秒。" +msgid "" +"Returns an AudioStreamPlayback. Useful for when you want to extend [method " +"_instantiate_playback] but call [method instantiate_playback] from an " +"internally held AudioStream subresource. An example of this can be found in " +"the source files for [code]AudioStreamRandomPitch::instantiate_playback[/" +"code]." +msgstr "" +"返回一个 AudioStreamPlayback。当想要扩展 [method _instantiate_playback],但从" +"一个内部持有的 AudioStream 子资源调用 [method instantiate_playback] 时很有" +"用。在 [code]AudioStreamRandomPitch::instantiate_playback[/code] 的源文件中可" +"以找到这方面的示例。" + msgid "Audio stream that generates sounds procedurally." msgstr "使用程序生成声音的音频流。" @@ -12533,6 +13111,14 @@ msgid "" "generated audio in real-time." msgstr "此类旨在与 [AudioStreamGenerator] 一起使用以实时播放生成的音频。" +msgid "" +"Returns [code]true[/code] if a buffer of the size [param amount] can be " +"pushed to the audio sample data buffer without overflowing it, [code]false[/" +"code] otherwise." +msgstr "" +"如果可以将大小为 [param amount] 的缓冲区推送到音频采样数据缓冲区而不会使其溢" +"出,则返回 [code]true[/code],否则返回 [code]false[/code]。" + msgid "Clears the audio sample data buffer." msgstr "清除音频样本数据缓冲区。" @@ -12660,6 +13246,11 @@ msgid "" "[AudioStreamPlayer]." msgstr "返回与此 [AudioStreamPlayer] 关联的 [AudioStreamPlayback] 对象。" +msgid "" +"Returns whether the [AudioStreamPlayer] can return the [AudioStreamPlayback] " +"object or not." +msgstr "返回该 [AudioStreamPlayer] 是否能够返回 [AudioStreamPlayback] 对象。" + msgid "Plays the audio from the given [param from_position], in seconds." msgstr "从给定的位置 [param from_position] 播放音频,以秒为单位。" @@ -12880,6 +13471,17 @@ msgid "Stores audio data loaded from WAV files." msgstr "存储从 WAV 文件加载的音频数据。" msgid "" +"Saves the AudioStreamWAV as a WAV file to [param path]. Samples with IMA " +"ADPCM format can't be saved.\n" +"[b]Note:[/b] A [code].wav[/code] extension is automatically appended to " +"[param path] if it is missing." +msgstr "" +"将 AudioStreamWAV 作为 WAV 文件保存到 [param path]。无法保存 IMA ADPCM 格式的" +"样本。\n" +"[b]注意:[/b]如果缺少 [code].wav[/code] 扩展名,则会自动将其追加到 [param " +"path]。" + +msgid "" "Contains the audio data in bytes.\n" "[b]Note:[/b] This property expects signed PCM8 data. To convert unsigned " "PCM8 to signed PCM8, subtract 128 from each byte." @@ -12971,6 +13573,25 @@ msgid "" msgstr "" "音频在 [member loop_begin] 和 [member loop_end] 之间循环数据,仅向后播放。" +msgid "" +"Node for back-buffering the currently-displayed screen. The region defined " +"in the [BackBufferCopy] node is buffered with the content of the screen it " +"covers, or the entire screen according to the copy mode set. Use the screen " +"texture in your shader scripts to access the buffer.\n" +"[b]Note:[/b] Since this node inherits from [Node2D] (and not [Control]), " +"anchors and margins won't apply to child [Control]-derived nodes. This can " +"be problematic when resizing the window. To avoid this, add [Control]-" +"derived nodes as [i]siblings[/i] to the [BackBufferCopy] node instead of " +"adding them as children." +msgstr "" +"用于后台缓冲当前显示屏幕的节点。根据设置的复制模式,[BackBufferCopy] 节点中定" +"义的区域使用它覆盖的屏幕内容或整个屏幕进行缓冲。在着色器脚本中使用屏幕纹理来" +"访问缓冲区。\n" +"[b]注意:[/b]由于该节点继承自 [Node2D](而非 [Control]),因此锚点和边距不适" +"用于子 [Control] 派生节点。这在调整窗口大小时可能会出现问题。为避免这种情况," +"请将 [Control] 派生节点添加为 [BackBufferCopy] 节点的[i]同级[/i]节点,而不是" +"将它们添加为子节点。" + msgid "Buffer mode. See [enum CopyMode] constants." msgstr "缓冲区模式。见 [enum CopyMode] 常量。" @@ -13134,6 +13755,10 @@ msgstr "" "如果指定的标志被启用,返回 [code]true[/code]。选项见 [enum Flags] 枚举值。" msgid "" +"Returns the [Texture2D] associated with the specified [enum TextureParam]." +msgstr "返回与指定 [enum TextureParam] 关联的 [Texture2D]。" + +msgid "" "If [code]true[/code], enables the specified flag. Flags are optional " "behavior that can be turned on and off. Only one flag can be enabled at a " "time with this function, the flag enumerators cannot be bit-masked together " @@ -13146,6 +13771,25 @@ msgstr "" "用或禁用多个标志。也可以通过将相应成员设置为 [code]true[/code] 来启用标志。选" "项见 [enum Flags] 枚举值。" +msgid "" +"If [code]true[/code], forces a conversion of the [member albedo_texture] " +"from sRGB color space to linear color space. See also [member " +"vertex_color_is_srgb].\n" +"This should only be enabled when needed (typically when using a " +"[ViewportTexture] as [member albedo_texture]). If [member " +"albedo_texture_force_srgb] is [code]true[/code] when it shouldn't be, the " +"texture will appear to be too dark. If [member albedo_texture_force_srgb] is " +"[code]false[/code] when it shouldn't be, the texture will appear to be too " +"bright." +msgstr "" +"如果为 [code]true[/code],则强制将 [member albedo_texture] 从 sRGB 颜色空间转" +"换为线性颜色空间。另见 [member vertex_color_is_srgb]。\n" +"该属性应该只在需要时启用(通常在使用 [ViewportTexture] 作为 [member " +"albedo_texture] 时)。如果 [member albedo_texture_force_srgb] 在不应该的情况" +"下为 [code]true[/code],则纹理会显得太暗。如果 [member " +"albedo_texture_force_srgb] 在不应该的情况下为 [code]false[/code],则纹理会显" +"得太亮。" + msgid "The type of alpha antialiasing to apply. See [enum AlphaAntiAliasing]." msgstr "要应用的 Alpha 抗锯齿类型。见 [enum AlphaAntiAliasing]。" @@ -13244,6 +13888,11 @@ msgstr "" "B通道中,将环境遮挡存储在G通道中,就可以减少您使用的纹理数量。" msgid "" +"The color used by the backlight effect. Represents the light passing through " +"an object." +msgstr "背光效果使用的颜色。表示穿过物体的光。" + +msgid "" "Controls how the object faces the camera. See [enum BillboardMode].\n" "[b]Note:[/b] Billboard mode is not suitable for VR because the left-right " "vector of the camera is not horizontal when the screen is attached to your " @@ -13415,6 +14064,13 @@ msgstr "" "有轮廓连接到一起,和原始网格一致。" msgid "" +"Grows object vertices in the direction of their normals. Only effective if " +"[member grow] is [code]true[/code]." +msgstr "" +"将对象的顶点沿着对应的法线方向生长。仅在 [member grow] 为 [code]true[/code] " +"时有效。" + +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 " "reflection. With non-metals, the reflection appears on top of the albedo " @@ -13455,6 +14111,12 @@ msgid "" "in render order." msgstr "如果为 [code]true[/code],深度测试被禁用,对象将按渲染顺序绘制。" +msgid "" +"If [code]true[/code], normal mapping is enabled. This has a slight " +"performance cost, especially on mobile GPUs." +msgstr "" +"如果为 [code]true[/code],则启用法线映射。略微影响性能,尤其在移动 GPU 上。" + msgid "The strength of the normal map's effect." msgstr "法线贴图的效果强度。" @@ -13811,14 +14473,40 @@ msgstr "使用 [code]UV[/code] 与细节纹理。" msgid "Use [code]UV2[/code] with the detail texture." msgstr "使用 [code]UV2[/code] 与细节纹理。" +msgid "The material will not use transparency. This is the fastest to render." +msgstr "该材质将不使用透明度。渲染最快。" + +msgid "" +"The material will use the texture's alpha values for transparency. This is " +"the slowest to render, and disables shadow casting." +msgstr "该材质将使用纹理的 alpha 值作为透明度。渲染最慢,会禁用阴影投射。" + +msgid "" +"The material will cut off all values below a threshold, the rest will remain " +"opaque. The opaque portions will be rendered in the depth prepass. This is " +"faster to render than alpha blending, but slower than opaque rendering. This " +"also supports casting shadows." +msgstr "" +"该材质会将低于某个阈值的值截断,其他部分保持不透明。不透明部分在深度预渲染阶" +"段进行渲染。比 Alpha 混合快,但比不透明渲染慢。支持投射阴影。" + msgid "" "The material will cut off all values below a spatially-deterministic " "threshold, the rest will remain opaque. This is faster to render than alpha " "blending, but slower than opaque rendering. This also supports casting " "shadows. Alpha hashing is suited for hair rendering." msgstr "" -"该材质将截断所有低于空间确定性阈值的值,其余值将保持不透明。这比 Alpha 混合渲" -"染速度更快,但比不透明渲染慢。这也支持投射阴影。Alpha 哈希适合毛发渲染。" +"该材质会将低于某个空间确定性阈值的值截断,其他部分保持不透明。比 Alpha 混合" +"快,但比不透明渲染慢。支持投射阴影。Alpha 哈希适合毛发渲染。" + +msgid "" +"The material will use the texture's alpha value for transparency, but will " +"discard fragments with an alpha of less than 0.99 during the depth prepass " +"and fragments with an alpha less than 0.1 during the shadow pass. This also " +"supports casting shadows." +msgstr "" +"该材质将使用纹理的 alpha 值作为透明度,但会在深度预渲染阶段丢弃 alpha 小于 " +"0.99 的片段,在阴影阶段丢弃 alpha 小于 0.1 的片段。支持投射阴影。" msgid "Represents the size of the [enum Transparency] enum." msgstr "代表 [enum Transparency] 枚举的大小。" @@ -13957,6 +14645,9 @@ msgstr "禁用接收环境光。" msgid "Enables the shadow to opacity feature." msgstr "启用阴影到不透明度功能。" +msgid "Enables multichannel signed distance field rendering shader." +msgstr "启用多通道有符号距离场渲染着色器。" + msgid "Represents the size of the [enum Flags] enum." msgstr "代表 [enum Flags] 枚举的大小。" @@ -14098,6 +14789,20 @@ msgid "Returns the inverse of the matrix." msgstr "返回矩阵的逆值。" msgid "" +"Returns [code]true[/code] if this basis and [param b] are approximately " +"equal, by calling [code]is_equal_approx[/code] on each component." +msgstr "" +"如果该基矩阵和 [param b] 近似相等,则返回 [code]true[/code],确定近似相等的方" +"法是在每个分量上调用 [code]is_equal_approx[/code]。" + +msgid "" +"Returns [code]true[/code] if this basis is finite, by calling [method " +"@GlobalScope.is_finite] on each component." +msgstr "" +"如果该基矩阵是有限的,则返回 [code]true[/code],确定是否是有限的方法是在每个" +"分量上调用 [method @GlobalScope.is_finite]。" + +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 " @@ -14180,9 +14885,32 @@ msgid "" "transformation." msgstr "在变换中使用时,会沿 Z 轴翻转某物的基。" +msgid "" +"Returns [code]true[/code] if the [Basis] matrices 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 "" +"如果 [Basis] 矩阵不相等,则返回 [code]true[/code]。\n" +"[b]注意:[/b]由于浮点数精度误差,请考虑改用 [method is_equal_approx],会更可" +"靠。" + msgid "Transforms (multiplies) the [Vector3] by the given [Basis] matrix." msgstr "使用给定的 [Basis] 矩阵变换(乘)该 [Vector3]。" +msgid "" +"This operator multiplies all components of the [Basis], which scales it " +"uniformly." +msgstr "该运算符会对 [Basis] 的所有分量进行乘操作,达到统一缩放的效果。" + +msgid "" +"Returns [code]true[/code] if the [Basis] matrices 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 "" +"如果 [Basis] 矩阵完全相等,则返回 [code]true[/code]。\n" +"[b]注意:[/b]由于浮点数精度误差,请考虑改用 [method is_equal_approx],会更可" +"靠。" + msgid "Boolean matrix." msgstr "布尔矩阵。" @@ -14195,9 +14923,29 @@ msgstr "" "使用自然的笛卡尔坐标查询数值。" msgid "" +"Returns an image of the same size as the bitmap and with a [enum Image." +"Format] of type [constant Image.FORMAT_L8]. [code]true[/code] bits of the " +"bitmap are being converted into white pixels, and [code]false[/code] bits " +"into black." +msgstr "" +"返回与该位图大小相同且具有 [constant Image.FORMAT_L8] 类型的 [enum Image." +"Format] 的图像。该位图中的 [code]true[/code] 位被转换为白色像素," +"[code]false[/code] 位被转换为黑色像素。" + +msgid "" "Creates a bitmap with the specified size, filled with [code]false[/code]." msgstr "创建一个指定尺寸的位图,用 [code]false[/code] 填充。" +msgid "" +"Creates a bitmap that matches the given image dimensions, every element of " +"the bitmap is set to [code]false[/code] if the alpha value of the image at " +"that position is equal to [param threshold] or less, and [code]true[/code] " +"in other case." +msgstr "" +"创建一个匹配给定图像大小的位图,如果该位图的 Alpha 值等于或小于 [param " +"threshold],则位图的每个元素都被设置为 [code]false[/code];否则被设置为 " +"[code]true[/code]。" + msgid "Returns bitmap's value at the specified position." msgstr "返回位图在指定位置的值。" @@ -14241,6 +14989,16 @@ msgid "Stores the node's current transforms in [member rest]." msgstr "将节点当前的变换存储在 [member rest] 中。" msgid "" +"Returns whether this [code]Bone2D[/code] node is going to autocalculate its " +"length and bone angle using its first [code]Bone2D[/code] child node, if one " +"exists. If there are no [code]Bone2D[/code] children, then it cannot " +"autocalculate these values and will print a warning." +msgstr "" +"返回该 [code]Bone2D[/code] 节点是否将使用其第一个 [code]Bone2D[/code] 子节点" +"(如果存在)自动计算其长度和骨骼角度。如果没有 [code]Bone2D[/code] 子节点,则" +"它无法自动计算这些值并会打印一条警告。" + +msgid "" "Returns the node's index as part of the entire skeleton. See [Skeleton2D]." msgstr "返回节点在整个骨架中的索引号。见 [Skeleton2D]。" @@ -14251,6 +15009,16 @@ msgstr "" "如果节点没有父节点,返回节点的 [member rest] [code]Transform2D[/code],或者返" "回它相对于父节点的放松姿势。" +msgid "" +"When set to [code]true[/code], the [code]Bone2D[/code] node will attempt to " +"automatically calculate the bone angle and length using the first child " +"[code]Bone2D[/code] node, if one exists. If none exist, the [code]Bone2D[/" +"code] cannot automatically calculate these values and will print a warning." +msgstr "" +"当设置为 [code]true[/code] 时,该 [code]Bone2D[/code] 节点将尝试使用第一个子 " +"[code]Bone2D[/code] 节点(如果存在)自动计算骨骼角度和长度。如果不存在子节" +"点,[code]Bone2D[/code] 将无法自动计算这些值,并将打印一条警告。" + msgid "Sets the length of the bone in the [code]Bone2D[/code] node." msgstr "设置该 [code]Bone2D[/code] 节点中骨骼的长度。" @@ -14263,6 +15031,16 @@ msgstr "" msgid "A node that will attach to a bone." msgstr "会附着在骨骼上的节点。" +msgid "" +"Sets whether the BoneAttachment3D node will use an extenral [Skeleton3D] " +"node rather than attenpting to use its parent node as the [Skeleton3D]. When " +"set to [code]true[/code], the BoneAttachment3D node will use the external " +"[Skeleton3D] node set in [method set_external_skeleton]." +msgstr "" +"设置 BoneAttachment3D 节点是否将使用外部 [Skeleton3D] 节点,而不是尝试使用其" +"父节点作为 [Skeleton3D]。当设置为 [code]true[/code]时,BoneAttachment3D 节点" +"将使用 [method set_external_skeleton] 中设置的外部 [Skeleton3D] 节点。" + msgid "The index of the attached bone." msgstr "所附着骨骼的索引。" @@ -15397,6 +16175,20 @@ msgid "" msgstr "如果为 [code]true[/code],在编辑器中绘制相机的画面矩形。" msgid "" +"Controls whether the camera can be active or not. If [code]true[/code], the " +"[Camera2D] will become the main camera when it enters the scene tree and " +"there is no active camera currently (see [method Viewport.get_camera_2d]).\n" +"When the camera is currently active and [member enabled] is set to " +"[code]false[/code], the next enabled [Camera2D] in the scene tree will " +"become active." +msgstr "" +"控制相机是否可以激活。如果为 [code]true[/code],当 [Camera2D]进入场景树并且当" +"前没有活动的相机时,它将成为主相机(参见 [ method Viewport ." +"get_camera_2d])。\n" +"当相机处于活动状态且 [member enabled]被设置为 [code]false[/code],场景树中下" +"一个启用此项的 [Camera2D]将变为活动状态。" + +msgid "" "If [code]true[/code], the camera's rendered view is not affected by its " "[member Node2D.rotation] and [member Node2D.global_rotation]." msgstr "" @@ -15435,6 +16227,34 @@ msgid "The camera's process callback. See [enum Camera2DProcessCallback]." msgstr "该相机的处理回调。见 [enum Camera2DProcessCallback]。" msgid "" +"The camera's zoom. A zoom of [code]Vector(2, 2)[/code] doubles the size seen " +"in the viewport. A zoom of [code]Vector(0.5, 0.5)[/code] halves the size " +"seen in the viewport.\n" +"[b]Note:[/b] [member FontFile.oversampling] does [i]not[/i] take [Camera2D] " +"zoom into account. This means that zooming in/out will cause bitmap fonts " +"and rasterized (non-MSDF) dynamic fonts to appear blurry or pixelated unless " +"the font is part of a [CanvasLayer] that makes it ignore camera zoom. To " +"ensure text remains crisp regardless of zoom, you can enable MSDF font " +"rendering by enabling [member ProjectSettings.gui/theme/" +"default_font_multichannel_signed_distance_field] (applies to the default " +"project font only), or enabling [b]Multichannel Signed Distance Field[/b] in " +"the import options of a DynamicFont for custom fonts. On system fonts, " +"[member SystemFont.multichannel_signed_distance_field] can be enabled in the " +"inspector." +msgstr "" +"相机的缩放。 设置为 [code]Vector(2, 2)[/code]的缩放值会使通过视口看到的尺寸翻" +"倍。设置为 [code]Vector(0.5, 0.5)[/code]的缩放值会使会使通过视口看到的尺寸减" +"半。\n" +"[b]注意:[/b] [member FontFile.oversampling] [i]不会[/i] 考虑 [Camera2D]的缩放" +"值。这意味着放大/缩小将导致位图字体和光栅化(非MSDF)动态字体看起来模糊或像素" +"化,除非字体是[CanvasLayer]的一部分从而使其忽略相机缩放。为了确保文本无论如何" +"缩放都保持清晰,您可以通过启用 [member ProjectSettings.gui/theme/" +"default_font_multichannel_signed_distance_field] (仅适用于默认项目字体)来启" +"用MSDF字体渲染,或在自定义字体的动态字体导入选项中启用[b]多通道带符号距离场[/" +"b]。对于系统字体,可以在检查器中启用[member SystemFont." +"multichannel_signed_distance_field] 。" + +msgid "" "The camera's position is fixed so that the top-left corner is always at the " "origin." msgstr "相机的位置是固定的,所以左上角总是在原点。" @@ -15469,6 +16289,14 @@ msgstr "" "注册的场景无法显示。" msgid "" +"If this is the current camera, remove it from being current. If [param " +"enable_next] is [code]true[/code], request to make the next camera current, " +"if any." +msgstr "" +"如果这是当前相机,则将其从当前相机中移除。如果 [param enable_next] 为 " +"[code]true[/code],则请求使下一个相机(如果有)成为当前相机。" + +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]." @@ -15908,6 +16736,9 @@ msgstr "" "我们要访问 [CameraFeed] 中的哪个图像,如果相机图像被分割成 Y 和 CbCr 分量,这" "一点很重要。" +msgid "Merges several 2D nodes into a single draw operation." +msgstr "将若干 2D 节点合并至单次绘制操作。" + 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 " @@ -15967,8 +16798,48 @@ msgstr "" "clip_children] 设置为 [constant CanvasItem.CLIP_CHILDREN_DISABLED] 以外的其他" "值将无法正常工作。" +msgid "" +"Sets the size of the margin used to expand the clearing rect of this " +"[CanvasGroup]. This expands the area of the backbuffer that will be used by " +"the [CanvasGroup]. A smaller margin will reduce the area of the backbuffer " +"used which can increase performance, however if [member use_mipmaps] is " +"enabled, a small margin may result in mipmap errors at the edge of the " +"[CanvasGroup]. Accordingly, this should be left as small as possible, but " +"should be increased if artifacts appear along the edges of the canvas group." +msgstr "" +"设置用于扩展该 [CanvasGroup] 清除矩形的边距大小。会对该 [CanvasGroup] 所使用" +"的后台缓冲的区域进行扩展。边距较小时可以减少后台缓冲的区域大小,从而提升性" +"能,但如果启用了 [member use_mipmaps],较小的边距可能在该 [CanvasGroup] 边缘" +"造成 mipmap 错误。因此,这个值应该尽量调小,但是如果画布组的边缘出现问题,就" +"应该将其调大。" + +msgid "" +"Sets the size of a margin used to expand the drawable rect of this " +"[CanvasGroup]. The size of the [CanvasGroup] is determined by fitting a rect " +"around its children then expanding that rect by [member fit_margin]. This " +"increases both the backbuffer area used and the area covered by the " +"[CanvasGroup] both of which can reduce performance. This should be kept as " +"small as possible and should only be expanded when an increased size is " +"needed (e.g. for custom shader effects)." +msgstr "" +"设置用于扩展该 [CanvasGroup] 绘图矩形的边距大小。确定该 [CanvasGroup] 大小的" +"方法是:首先框定子节点的矩形区域,然后将该矩形按照 [member fit_margin] 进行扩" +"展。会增大该 [CanvasGroup] 所使用的后台缓冲的区域,也会增大该 [CanvasGroup] " +"所覆盖的面积,两者都会降低性能。这个值应该尽量调小,仅在需要时调大(例如自定" +"义着色器效果)。" + +msgid "" +"If [code]true[/code], calculates mipmaps for the backbuffer before drawing " +"the [CanvasGroup] so that mipmaps can be used in a custom [ShaderMaterial] " +"attached to the [CanvasGroup]. Generating mipmaps has a performance cost so " +"this should not be enabled unless required." +msgstr "" +"如果为 [code]true[/code],则会在绘制该 [CanvasGroup] 之前为其后台缓冲计算 " +"mipmap,附加到该 [CanvasGroup] 的自定义 [ShaderMaterial] 就可以使用 mipmap。" +"Mipmap 的生成会造成性能消耗,所以应在必要时才启用。" + msgid "Base class of anything 2D." -msgstr "任何 2D 对象的基类。" +msgstr "所有 2D 对象的基类。" msgid "Viewport and canvas transforms" msgstr "Viewport 和画布变换" @@ -15976,6 +16847,16 @@ msgstr "Viewport 和画布变换" msgid "Custom drawing in 2D" msgstr "2D 中的自定义绘图" +msgid "" +"Called when [CanvasItem] has been requested to redraw (after [method " +"queue_redraw] is called, either manually or by the engine).\n" +"Corresponds to the [constant NOTIFICATION_DRAW] notification in [method " +"Object._notification]." +msgstr "" +"当 [CanvasItem] 被请求重绘时调用(手动调用或者引擎调用 [method queue_redraw] " +"之后)。\n" +"对应于 [method Object._notification] 中的 [constant NOTIFICATION_DRAW] 通知。" + msgid "Draws a string first character using a custom font." msgstr "使用自定义字体绘制字符串的第一个字符。" @@ -15996,6 +16877,42 @@ msgstr "" "使用所提供的纹理以 2D 方式绘制一个 [Mesh]。相关文档请参阅 [MeshInstance2D]。" msgid "" +"Draws multiple disconnected lines with a uniform [param color]. When drawing " +"large amounts of lines, this is faster than using individual [method " +"draw_line] calls. To draw interconnected lines, use [method draw_polyline] " +"instead.\n" +"If [param width] is negative, then two-point primitives will be drawn " +"instead of a four-point ones. This means that when the CanvasItem is scaled, " +"the lines will remain thin. If this behavior is not desired, then pass a " +"positive [param width] like [code]1.0[/code]." +msgstr "" +"使用一个 uniform [param color] 绘制多条断开的线。绘制大量线条时,这比使用单独" +"的 [method draw_line] 调用更快。要绘制互连线段,请改用 [method " +"draw_polyline]。\n" +"如果 [param width] 为负,则将绘制两点图元而不是四点图元。这意味着当缩放 " +"CanvasItem 时,线条将保持为细线。如果不需要此行为,请传递一个正的 [param " +"width],如 [code]1.0[/code]。" + +msgid "" +"Draws multiple disconnected lines with a uniform [param width] and segment-" +"by-segment coloring. Colors assigned to line segments match by index between " +"[param points] and [param colors]. When drawing large amounts of lines, this " +"is faster than using individual [method draw_line] calls. To draw " +"interconnected lines, use [method draw_polyline_colors] instead.\n" +"If [param width] is negative, then two-point primitives will be drawn " +"instead of a four-point ones. This means that when the CanvasItem is scaled, " +"the lines will remain thin. If this behavior is not desired, then pass a " +"positive [param width] like [code]1.0[/code]." +msgstr "" +"使用一个 uniform [param width] 绘制多条断开的线,并逐段着色。分配给线段的颜色" +"按 [param points] 和 [param colors] 之间的索引匹配。绘制大量线条时,这比使用" +"单独的 [method draw_line] 调用更快。要绘制互连线,请改用 [method " +"draw_polyline_colors]。\n" +"如果 [param width] 为负,则将绘制两点图元而不是四点图元。这意味着当缩放 " +"CanvasItem 时,线条将保持为细线。如果不需要此行为,请传递一个正的 [param " +"width],如 [code]1.0[/code]。" + +msgid "" "Draws a [MultiMesh] in 2D with the provided texture. See " "[MultiMeshInstance2D] for related documentation." msgstr "" @@ -16003,6 +16920,47 @@ msgstr "" "[MultiMeshInstance2D]。" msgid "" +"Draws interconnected line segments with a uniform [param color] and [param " +"width] and optional antialiasing (supported only for positive [param " +"width]). When drawing large amounts of lines, this is faster than using " +"individual [method draw_line] calls. To draw disconnected lines, use [method " +"draw_multiline] instead. See also [method draw_polygon].\n" +"If [param width] is negative, the polyline is drawn using [constant " +"RenderingServer.PRIMITIVE_LINE_STRIP]. This means that when the CanvasItem " +"is scaled, the polyline will remain thin. If this behavior is not desired, " +"then pass a positive [param width] like [code]1.0[/code]." +msgstr "" +"使用一个 uniform [param color] 和 [param width] 以及可选的抗锯齿(仅支持正 " +"[param width] ),绘制相互连接的线段。绘制大量线条时,这比使用单独的 [method " +"draw_line] 调用更快。要绘制不相连的的线段,请改用 [method draw_multiline]。另" +"见 [method draw_polygon]。\n" +"如果 [param width] 为负,则使用 [constant RenderingServer." +"PRIMITIVE_LINE_STRIP] 绘制折线。这意味着当缩放 CanvasItem 时,多段线将保持为" +"细线。如果不需要该行为,请传递一个正的 [param width],如 [code]1.0[/code]。" + +msgid "" +"Draws interconnected line segments with a uniform [param width] and segment-" +"by-segment coloring, and optional antialiasing (supported only for positive " +"[param width]). Colors assigned to line segments match by index between " +"[param points] and [param colors]. When drawing large amounts of lines, this " +"is faster than using individual [method draw_line] calls. To draw " +"disconnected lines, use [method draw_multiline_colors] instead. See also " +"[method draw_polygon].\n" +"If [param width] is negative, then the polyline is drawn using [constant " +"RenderingServer.PRIMITIVE_LINE_STRIP]. This means that when the CanvasItem " +"is scaled, the polyline will remain thin. If this behavior is not desired, " +"then pass a positive [param width] like [code]1.0[/code]." +msgstr "" +"使用一个 uniform [param width] 以及可选的抗锯齿(仅支持正 [param width]),绘" +"制相连的线段,并且逐段着色。分配给线段的颜色按 [param points] 和 [param " +"colors] 之间的索引匹配。绘制大量线条时,这比使用单独的 [method draw_line] 调" +"用更快。要绘制不相连的线条,请改用 [method draw_multiline_colors]。另见 " +"[method draw_polygon]。\n" +"如果 [param width] 为负,则使用 [constant RenderingServer." +"PRIMITIVE_LINE_STRIP] 绘制折线。这意味着当缩放 CanvasItem 时,多段线将保持为" +"细线。 如果不需要该行为,请传递一个正的 [param width],如 [code]1.0[/code]。" + +msgid "" "Draws a custom primitive. 1 point for a point, 2 points for a line, 3 points " "for a triangle, and 4 points for a quad. If 0 points or more than 4 points " "are specified, nothing will be drawn and an error message will be printed. " @@ -16015,6 +16973,29 @@ msgstr "" "draw_polygon]、[method draw_rect]。" msgid "" +"Sets a custom transform for drawing via components. Anything drawn " +"afterwards will be transformed by this.\n" +"[b]Note:[/b] [member FontFile.oversampling] does [i]not[/i] take [param " +"scale] into account. This means that scaling up/down will cause bitmap fonts " +"and rasterized (non-MSDF) dynamic fonts to appear blurry or pixelated. To " +"ensure text remains crisp regardless of scale, you can enable MSDF font " +"rendering by enabling [member ProjectSettings.gui/theme/" +"default_font_multichannel_signed_distance_field] (applies to the default " +"project font only), or enabling [b]Multichannel Signed Distance Field[/b] in " +"the import options of a DynamicFont for custom fonts. On system fonts, " +"[member SystemFont.multichannel_signed_distance_field] can be enabled in the " +"inspector." +msgstr "" +"使用分量设置用于绘图的自定义变换。后续的绘制都会使用这个变换。\n" +"[b]注意:[/b][member FontFile.oversampling] [i]不会[/i]考虑 [param scale]。这" +"意味着将位图字体及栅格化(非 MSDF)动态字体放大/缩小会产生模糊或像素化的结" +"果。要让文本无论如何缩放都保持清晰,可以启用 MSDF 字体渲染,方法是启用 " +"[member ProjectSettings.gui/theme/" +"default_font_multichannel_signed_distance_field](仅应用于默认项目字体),或" +"者启用自定义 DynamicFont 的[b]多通道带符号距离场[/b]导入选项。对于系统字体," +"可以在检查器中启用 [member SystemFont.multichannel_signed_distance_field]。" + +msgid "" "Sets a custom transform for drawing via matrix. Anything drawn afterwards " "will be transformed by this." msgstr "设置通过矩阵绘制时的自定义变换。此后绘制的任何东西都将被它变换。" @@ -16080,6 +17061,22 @@ msgid "Draws a texture at a given position." msgstr "在给定的位置绘制纹理。" msgid "" +"Draws a textured rectangle at a given position, optionally modulated by a " +"color. If [param transpose] is [code]true[/code], the texture will have its " +"X and Y coordinates swapped." +msgstr "" +"在给定位置绘制一个带纹理的矩形,可以选择用颜色调制。如果 [param transpose] " +"为 [code]true[/code],则纹理将交换其 X 和 Y 坐标。" + +msgid "" +"Draws a textured rectangle region at a given position, optionally modulated " +"by a color. If [param transpose] is [code]true[/code], the texture will have " +"its X and Y coordinates swapped." +msgstr "" +"在给定位置绘制带纹理的矩形区域,可选择用颜色调制。如果 [param transpose] 为 " +"[code]true[/code],则纹理将交换其 X 和 Y 坐标。" + +msgid "" "Forces the transform to update. Transform changes in physics are not instant " "for performance reasons. Transforms are accumulated and then set. Use this " "if you need an up-to-date transform when doing physics operations." @@ -16152,6 +17149,25 @@ msgstr "" "帧也都只会发生[b]一次[/b]绘制。" msgid "" +"If [param enable] is [code]true[/code], this node will receive [constant " +"NOTIFICATION_LOCAL_TRANSFORM_CHANGED] when its local transform changes." +msgstr "" +"如果 [param enable] 为 [code]true[/code],则该节点将在其局部变换发生改变时收" +"到 [constant NOTIFICATION_LOCAL_TRANSFORM_CHANGED]。" + +msgid "" +"If [param enable] is [code]true[/code], this node will receive [constant " +"NOTIFICATION_TRANSFORM_CHANGED] when its global transform changes." +msgstr "" +"如果 [param enable] 为 [code]true[/code],那么这个节点会在其全局变换发生改变" +"时接收到 [constant NOTIFICATION_TRANSFORM_CHANGED]。" + +msgid "" +"Set/clear individual bits on the rendering visibility layer. This simplifies " +"editing this [CanvasItem]'s visibility layer." +msgstr "设置或清除渲染可见层上的单个位。这简化了编辑该 [CanvasItem] 的可见层。" + +msgid "" "Show the [CanvasItem] if it's currently hidden. This is equivalent to " "setting [member visible] to [code]true[/code]. For controls that inherit " "[Popup], the correct way to make them visible is to call one of the multiple " @@ -16583,6 +17599,14 @@ msgstr "" "与 [member follow_viewport_scale] 配合可以实现伪 3D 效果。" msgid "" +"Scales the layer when using [member follow_viewport_enabled]. Layers moving " +"into the foreground should have increasing scales, while layers moving into " +"the background should have decreasing scales." +msgstr "" +"使用 [member follow_viewport_enabled] 时缩放图层。移入到前景的图层应具有增加" +"的缩放,而移入到背景的图层应具有减小的缩放。" + +msgid "" "Layer index for draw order. Lower values are drawn behind higher values." msgstr "绘制顺序的图层索引。较低值绘制在较高值之后。" @@ -16659,6 +17683,37 @@ msgstr "" "法线贴图坐标系见[url=http://wiki.polycount.com/wiki/" "Normal_Map_Technical_Details#Common_Swizzle_Coordinates]这个页面[/url]。" +msgid "" +"The multiplier for specular reflection colors. The [Light2D]'s color is also " +"taken into account when determining the reflection color. Only has a visible " +"effect if [Light2D]s are affecting this [CanvasTexture]." +msgstr "" +"镜面反射颜色的乘数。在确定反射颜色时,[Light2D] 的颜色也会被考虑在内。只有在 " +"[Light2D] 影响到这个 [CanvasTexture] 时才有可见的效果。" + +msgid "" +"The specular exponent for [Light2D] specular reflections. Higher values " +"result in a more glossy/\"wet\" look, with reflections becoming more " +"localized and less visible overall. The default value of [code]1.0[/code] " +"disables specular reflections entirely. Only has a visible effect if " +"[Light2D]s are affecting this [CanvasTexture]." +msgstr "" +"用于 [Light2D] 镜面反射的镜面指数。更高的值会产生更有光泽或更加“湿润”的外观," +"反射变得更局部,且整体上不太明显。默认值为 [code]1.0[/code] ,将完全禁用镜面" +"反射。只有在 [Light2D] 影响到这个 [CanvasTexture] 时才会有可见的效果。" + +msgid "" +"The specular map to use for [Light2D] specular reflections. This should be a " +"grayscale or colored texture, with brighter areas resulting in a higher " +"[member specular_shininess] value. Using a colored [member specular_texture] " +"allows controlling specular shininess on a per-channel basis. Only has a " +"visible effect if [Light2D]s are affecting this [CanvasTexture]." +msgstr "" +"用于 [Light2D] 镜面反射的镜面贴图。这应该是一个灰度或彩色纹理,更亮的区域会产" +"生更高的 [member specular_shininess] 值。使用彩色 [member specular_texture] " +"允许在每个通道的基础上控制镜面反射光泽度。仅当 [Light2D] 影响该 " +"[CanvasTexture] 时才有可见的效果。" + msgid "The texture filtering mode to use when drawing this [CanvasTexture]." msgstr "绘制该 [CanvasTexture] 时所使用的纹理过滤模式。" @@ -16668,6 +17723,9 @@ msgstr "绘制该 [CanvasTexture] 时所使用的纹理重复模式。" msgid "Class representing a capsule-shaped [PrimitiveMesh]." msgstr "表示胶囊状 [PrimitiveMesh] 的类。" +msgid "Total height of the capsule mesh (including the hemispherical ends)." +msgstr "胶囊网格的总高度(包括半球形末端)。" + msgid "Number of radial segments on the capsule mesh." msgstr "胶囊网格上的径向线段数。" @@ -16680,6 +17738,18 @@ msgstr "沿胶囊高度的环数。" msgid "Capsule shape resource for 2D physics." msgstr "用于 2D 物理的胶囊形状资源。" +msgid "" +"2D capsule shape to be added as a [i]direct[/i] child of a [PhysicsBody2D] " +"or [Area2D] using a [CollisionShape2D] node. In 2D, a capsule is a rectangle " +"shape with half-circles at both ends.\n" +"[b]Performance:[/b] Being a primitive collision shape, [CapsuleShape2D] is " +"fast to check collisions against (though not as fast as [CircleShape2D])." +msgstr "" +"使用一个 [CollisionShape2D] 节点时,添加为 [PhysicsBody2D] 或 [Area2D] 的[i]" +"直接[/i]子节点的 2D 胶囊形状。在 2D 中,胶囊是两端带有半圆形的矩形。\n" +"[b]性能:[/b]作为一种原始的碰撞形状,[CapsuleShape2D] 可用于快速检测碰撞(尽" +"管没有 [CircleShape2D] 快)。" + msgid "The capsule's height." msgstr "胶囊体的高度。" @@ -16689,6 +17759,21 @@ msgstr "胶囊体的半径。" msgid "Capsule shape resource for 3D collisions." msgstr "用于 3D 物理的胶囊形状资源。" +msgid "" +"3D capsule shape to be added as a [i]direct[/i] child of a [PhysicsBody3D] " +"or [Area3D] using a [CollisionShape3D] node. In 3D, a capsule is a cylinder " +"shape with hemispheres at both ends.\n" +"[b]Performance:[/b] Being a primitive collision shape, [CapsuleShape3D] is " +"fast to check collisions against (though not as fast as [SphereShape3D]). " +"[CapsuleShape3D] is cheaper to check collisions against compared to " +"[CylinderShape3D]." +msgstr "" +"使用一个 [CollisionShape3D] 节点,添加为 [PhysicsBody3D] 或 [Area3D] 的[i]直" +"接[/i]子节点的 3D 胶囊形状。在 3D 中,胶囊是两端带有半球的圆柱体。\n" +"[b]性能:[/b]作为一种原始的碰撞形状,[CapsuleShape3D] 可用于快速检测碰撞(尽" +"管没有 [SphereShape3D] 快)。与 [CylinderShape3D] 相比,[CapsuleShape3D] 检测" +"碰撞的成本更低。" + msgid "Keeps children controls centered." msgstr "使子级控件居中。" @@ -17620,6 +18705,21 @@ msgstr "作为背景显示的 [StyleBox],用于该 [CheckButton] 的按下状 msgid "Circular shape resource for 2D physics." msgstr "用于 2D 物理的圆形资源。" +msgid "" +"2D circular shape to be added as a [i]direct[/i] child of a [PhysicsBody2D] " +"or [Area2D] using a [CollisionShape2D] node. This shape is useful for " +"modeling balls or small characters and its collision detection with " +"everything else is very fast.\n" +"[b]Performance:[/b] Being a primitive collision shape, [CircleShape2D] is " +"the fastest collision shape to check collisions against, as it only requires " +"a distance check with the shape's origin." +msgstr "" +"使用 [CollisionShape2D] 节点将 2D 圆形添加为 [PhysicsBody2D] 或 [Area2D] 的一" +"个[i]直接[/i]子节点。这种形状对于为球或小角色建模很有用,并且它与其他物体的碰" +"撞检测速度非常快。\n" +"[b]性能:[/b]作为一种原始的碰撞形状,[CircleShape2D] 是检测碰撞最快的碰撞形" +"状,因为它只需要与形状的原点进行距离检测。" + msgid "The circle's radius." msgstr "圆的半径。" @@ -17629,10 +18729,63 @@ msgstr "类信息存储库。" msgid "Provides access to metadata stored for every available class." msgstr "提供对为每个可用类存储的元数据的访问。" +msgid "" +"Returns [code]true[/code] if objects can be instantiated from the specified " +"[param class], otherwise returns [code]false[/code]." +msgstr "" +"如果可以从指定的 [param class] 实例化对象,则返回 [code]true[/code],否则返" +"回 [code]false[/code]。" + msgid "Returns whether the specified [param class] is available or not." msgstr "返回指定的类 [param class] 是否可用。" msgid "" +"Returns an array with all the methods of [param class] or its ancestry if " +"[param no_inheritance] is [code]false[/code]. Every element of the array is " +"a [Dictionary] with the following keys: [code]args[/code], " +"[code]default_args[/code], [code]flags[/code], [code]id[/code], [code]name[/" +"code], [code]return: (class_name, hint, hint_string, name, type, usage)[/" +"code].\n" +"[b]Note:[/b] In exported release builds the debug info is not available, so " +"the returned dictionaries will contain only method names." +msgstr "" +"如果 [param no_inheritance] 为 [code]false[/code],则返回包含 [param class] " +"或其祖先的所有方法的数组。数组的每个元素都是一个 [Dictionary],包含以下键:" +"[code]args[/code]、[code]default_args[/code]、[code]flags[/code]、[code]id[/" +"code]、[code]name[/code]、[code]return: (class_name, hint, hint_string, " +"name, type, usage)[/code]。\n" +"[b]注意:[/b]在导出的发布版本中,调试信息不可用,因此返回的字典将仅包含方法名" +"称。" + +msgid "" +"Returns an array with all the properties of [param class] or its ancestry if " +"[param no_inheritance] is [code]false[/code]." +msgstr "" +"如果 [param no_inheritance] 为 [code]false[/code],则返回包含 [param class] " +"或其祖先的所有属性的数组。" + +msgid "" +"Returns the [param signal] data of [param class] or its ancestry. The " +"returned value is a [Dictionary] with the following keys: [code]args[/code], " +"[code]default_args[/code], [code]flags[/code], [code]id[/code], [code]name[/" +"code], [code]return: (class_name, hint, hint_string, name, type, usage)[/" +"code]." +msgstr "" +"返回 [param class] 或其祖先的 [param signal] 数据。返回值是具有以下键的 " +"[Dictionary]:[code]args[/code]、[code]default_args[/code]、[code]flags[/" +"code]、[code]id[/code]、[code]name[/code]、[code]return: (class_name, hint, " +"hint_string, name, type, usage)[/code]。" + +msgid "" +"Returns an array with all the signals of [param class] or its ancestry if " +"[param no_inheritance] is [code]false[/code]. Every element of the array is " +"a [Dictionary] as described in [method class_get_signal]." +msgstr "" +"如果 [param no_inheritance] 为 [code]false[/code],则返回包含 [param class] " +"或其祖先的所有信号的数组。数组的每个元素都是一个如 [method class_get_signal] " +"中所述的 [Dictionary]。" + +msgid "" "Returns whether [param class] or its ancestry has an enum called [param " "name] or not." msgstr "返回类 [param class] 或其祖类是否有名为 [param name] 的枚举。" @@ -18088,6 +19241,13 @@ msgstr "该 [CodeEdit] 文本轮廓的色调。" msgid "Font color for [member TextEdit.placeholder_text]." msgstr "[member TextEdit.placeholder_text] 的字体颜色。" +msgid "" +"Sets the [Color] of the selected text. If equal to [code]Color(0, 0, 0, 0)[/" +"code], it will be ignored." +msgstr "" +"设置所选文本的 [Color]。如果等于 [code]Color(0, 0, 0, 0)[/code],则该属性将被" +"忽略。" + msgid "Sets the [Color] of line numbers." msgstr "设置行号的颜色 [Color]。" @@ -18221,12 +19381,48 @@ msgid "" msgstr "" "如果成员关键字存在则返回 [code]true[/code],否则返回 [code]false[/code]。" +msgid "Removes the color region that uses that start key." +msgstr "移除使用该开始键的颜色区域。" + msgid "Removes the keyword." msgstr "移除关键字。" msgid "Removes the member keyword." msgstr "移除成员关键字。" +msgid "" +"Sets the color regions. All existing regions will be removed. The " +"[Dictionary] key is the region start and end key, separated by a space. The " +"value is the region color." +msgstr "" +"设置颜色区域。现有区域都将被移除。[Dictionary] 的键为该区域的开始键和结束键," +"用空格隔开。对应的值为区域的颜色。" + +msgid "" +"Sets color for functions. A function is a non-keyword string followed by a " +"'('." +msgstr "设置函数的颜色。函数是后跟“(”的非关键字字符串。" + +msgid "" +"Sets the keyword colors. All existing keywords will be removed. The " +"[Dictionary] key is the keyword. The value is the keyword color." +msgstr "" +"设置关键字的颜色。现有关键字都将被移除。[Dictionary] 的键为关键字。对应的值为" +"关键字的颜色。" + +msgid "" +"Sets the member keyword colors. All existing member keyword will be removed. " +"The [Dictionary] key is the member keyword. The value is the member keyword " +"color." +msgstr "" +"设置成员关键字的颜色。现有成员关键字都将被移除。[Dictionary] 的键为成员关键" +"字。对应的值为成员关键字的颜色。" + +msgid "" +"Sets color for member variables. A member variable is non-keyword, non-" +"function string proceeded with a '.'." +msgstr "设置成员变量的颜色。成员变量是以“.”开头的非关键字、非函数字符串。" + msgid "Sets the color for numbers." msgstr "设置数字的颜色。" @@ -18266,16 +19462,77 @@ msgstr "" "[code]true[/code],并且至少要设置一个 [member collision_layer] 位。" msgid "" +"Called when the mouse pointer enters any of this object's shapes. Requires " +"[member input_pickable] to be [code]true[/code] and at least one [member " +"collision_layer] bit to be set. Note that moving between different shapes " +"within a single [CollisionObject2D] won't cause this function to be called." +msgstr "" +"当鼠标指针进入该实体的任何形状时调用。要求 [member input_pickable] 为 " +"[code]true[/code] 并且至少设置了一个 [member collision_layer] 位。请注意,在" +"单个 [CollisionObject2D] 中的不同形状之间移动,不会导致该函数被调用。" + +msgid "" +"Called when the mouse pointer exits all this object's shapes. Requires " +"[member input_pickable] to be [code]true[/code] and at least one [member " +"collision_layer] bit to be set. Note that moving between different shapes " +"within a single [CollisionObject2D] won't cause this function to be called." +msgstr "" +"当鼠标指针退出该实体的所有形状时调用。要求 [member input_pickable] 为 " +"[code]true[/code] 并且至少设置了一个 [member collision_layer] 位。请注意,在" +"单个 [CollisionObject2D] 中的不同形状之间移动,不会导致该函数被调用。" + +msgid "" +"Called when the mouse pointer enters any of this object's shapes or moves " +"from one shape to another. [param shape_idx] is the child index of the newly " +"entered [Shape2D]. Requires [member input_pickable] to be [code]true[/code] " +"and at least one [member collision_layer] bit to be called." +msgstr "" +"当鼠标指针进入该实体的任何形状或从一个形状移动到另一个形状时调用。[param " +"shape_idx] 是新进入的 [Shape2D] 的子索引。要求 [member input_pickable] 为 " +"[code]true[/code] 并且要至少设置一个 [member collision_layer] 位。" + +msgid "" +"Called when the mouse pointer exits any of this object's shapes. [param " +"shape_idx] is the child index of the exited [Shape2D]. Requires [member " +"input_pickable] to be [code]true[/code] and at least one [member " +"collision_layer] bit to be called." +msgstr "" +"当鼠标指针离开该实体的任何形状时调用。[param shape_idx] 是退出的 [Shape2D] 的" +"子索引。要求 [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 "" "为给定对象创建一个新的形状所有者。返回 [code]owner_id[/code]的新所有者,供将" "来引用。" +msgid "" +"Returns whether or not the specified layer of the [member collision_layer] " +"is enabled, given a [param layer_number] between 1 and 32." +msgstr "" +"返回 [member collision_layer] 中是否启用了指定的层,给定的 [param " +"layer_number] 应在 1 和 32 之间。" + +msgid "" +"Returns whether or not the specified layer of the [member collision_mask] is " +"enabled, given a [param layer_number] between 1 and 32." +msgstr "" +"返回 [member collision_mask] 中是否启用了指定的层,给定的 [param " +"layer_number] 应在 1 和 32 之间。" + msgid "Returns the object's [RID]." msgstr "返回对象的 [RID]。" msgid "" +"Returns the [code]one_way_collision_margin[/code] of the shape owner " +"identified by given [param owner_id]." +msgstr "" +"返回由给定 [param owner_id] 标识的形状所有者的 " +"[code]one_way_collision_margin[/code]。" + +msgid "" "Returns an [Array] of [code]owner_id[/code] identifiers. You can use these " "ids in other methods that take [code]owner_id[/code] as an argument." msgstr "" @@ -18296,6 +19553,20 @@ msgstr "" msgid "Removes the given shape owner." msgstr "移除给定形状的所有者。" +msgid "" +"Based on [param value], enables or disables the specified layer in the " +"[member collision_layer], given a [param layer_number] between 1 and 32." +msgstr "" +"根据 [param value],启用或禁用 [member collision_layer] 中指定的层,给定的 " +"[param layer_number] 应在 1 和 32 之间。" + +msgid "" +"Based on [param value], enables or disables the specified layer in the " +"[member collision_mask], given a [param layer_number] between 1 and 32." +msgstr "" +"根据 [param value],启用或禁用 [member collision_layer] 中指定的层,给定的 " +"[param layer_number] 应在 1 和 32 之间。" + msgid "Returns the [code]owner_id[/code] of the given shape." msgstr "返回指定形状的 [code]owner_id[/code]。" @@ -18320,10 +19591,62 @@ msgstr "从给定的形状所有者中移除一个形状。" msgid "If [code]true[/code], disables the given shape owner." msgstr "如果为 [code]true[/code],则禁用给定的形状所有者。" +msgid "" +"If [param enable] is [code]true[/code], collisions for the shape owner " +"originating from this [CollisionObject2D] will not be reported to collided " +"with [CollisionObject2D]s." +msgstr "" +"如果 [param enable] 为 [code]true[/code],则源自该 [CollisionObject2D] 的形状" +"所有者的碰撞将不会被报告为与 [CollisionObject2D] 发生碰撞。" + +msgid "" +"Sets the [code]one_way_collision_margin[/code] of the shape owner identified " +"by given [param owner_id] to [param margin] pixels." +msgstr "" +"将由给定 [param owner_id] 标识的形状所有者的 [code]one_way_collision_margin[/" +"code] 设置为 [param margin] 像素。" + msgid "Sets the [Transform2D] of the given shape owner." msgstr "设置给定形状所有者的 [Transform2D]。" msgid "" +"The physics layers this CollisionObject2D is in. Collision objects can exist " +"in one or more of 32 different layers. See also [member collision_mask].\n" +"[b]Note:[/b] Object A can detect a contact with object B only if object B is " +"in any of the layers that object A scans. See [url=$DOCS_URL/tutorials/" +"physics/physics_introduction.html#collision-layers-and-masks]Collision " +"layers and masks[/url] in the documentation for more information." +msgstr "" +"此 CollisionObject2D 所在的物理层。碰撞对象可以存在于 32 个不同层中的一个或多" +"个中。另见 [member collision_mask]。\n" +"[b]注意:[/b]只有当对象 B 在对象 A 扫描的任何层中时,对象 A 才能检测到与对象 " +"B 的接触。有关更多信息,请参阅文档中的[url=$DOCS_URL/tutorials/physics/" +"physics_introduction.html#collision-layers-and-masks]《碰撞层与掩码》[/url]。" + +msgid "" +"The physics layers this CollisionObject2D scans. Collision objects can scan " +"one or more of 32 different layers. See also [member collision_layer].\n" +"[b]Note:[/b] Object A can detect a contact with object B only if object B is " +"in any of the layers that object A scans. See [url=$DOCS_URL/tutorials/" +"physics/physics_introduction.html#collision-layers-and-masks]Collision " +"layers and masks[/url] in the documentation for more information." +msgstr "" +"此 CollisionObject2D 扫描的物理层。碰撞对象可以扫描 32 个不同层中的一个或多" +"个。另见 [member collision_layer]。\n" +"[b]注意:[/b]只有当对象 B 在对象 A 扫描的任何层中时,对象 A 才能检测到与对象 " +"B 的接触。有关更多信息,请参阅文档中的[url=$DOCS_URL/tutorials/physics/" +"physics_introduction.html#collision-layers-and-masks]《碰撞层与掩码》[/url]。" + +msgid "" +"The priority used to solve colliding when occurring penetration. The higher " +"the priority is, the lower the penetration into the object will be. This can " +"for example be used to prevent the player from breaking through the " +"boundaries of a level." +msgstr "" +"发生穿透时用于解决碰撞的优先级。优先级越高,对物体的穿透度就越低。例如,可以" +"用来防止玩家突破关卡的边界。" + +msgid "" "If [code]true[/code], this object is pickable. A pickable object can detect " "the mouse pointer entering/leaving, and if the mouse is inside it, report " "input events. Requires at least one [member collision_layer] bit to be set." @@ -18333,6 +19656,26 @@ msgstr "" "collision_layer] 位。" msgid "" +"Emitted when the mouse pointer enters any of this object's shapes or moves " +"from one shape to another. [param shape_idx] is the child index of the newly " +"entered [Shape2D]. Requires [member input_pickable] to be [code]true[/code] " +"and at least one [member collision_layer] bit to be set." +msgstr "" +"当鼠标指针进入该实体的任何形状或从一种形状移动到另一种形状时发出。[param " +"shape_idx] 是新进入的 [Shape2D] 的子索引。要求 [member input_pickable] 为 " +"[code]true[/code] 并且至少设置一个 [member collision_layer] 位。" + +msgid "" +"Emitted when the mouse pointer exits any of this object's shapes. [param " +"shape_idx] is the child index of the exited [Shape2D]. Requires [member " +"input_pickable] to be [code]true[/code] and at least one [member " +"collision_layer] bit to be set." +msgstr "" +"当鼠标指针离开该实体的任何形状时发出。[param shape_idx] 是退出的 [Shape2D] 的" +"子索引。要求 [member input_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 [CollisionObject2D].\n" @@ -18369,6 +19712,43 @@ msgstr "" "[code]true[/code],并且至少要设置一个 [member collision_layer] 位。" msgid "" +"Called when the mouse pointer enters any of this object's shapes. Requires " +"[member input_ray_pickable] to be [code]true[/code] and at least one [member " +"collision_layer] bit to be set. Note that moving between different shapes " +"within a single [CollisionObject3D] won't cause this function to be called." +msgstr "" +"当鼠标指针进入该实体的任何形状时调用。要求 [member input_ray_pickable] 为 " +"[code]true[/code] 并且至少设置一个 [member collision_layer] 位。请注意,在单" +"个 [CollisionObject3D] 中的不同形状之间移动,不会导致该函数被调用。" + +msgid "" +"Called when the mouse pointer exits all this object's shapes. Requires " +"[member input_ray_pickable] to be [code]true[/code] and at least one [member " +"collision_layer] bit to be set. Note that moving between different shapes " +"within a single [CollisionObject3D] won't cause this function to be called." +msgstr "" +"当鼠标指针离开该实体的所有形状时调用。要求 [member input_ray_pickable] 为 " +"[code]true[/code] 并且至少设置一个 [member collision_layer] 位。请注意,在单" +"个 [CollisionObject3D] 中的不同形状之间移动,不会导致该函数被调用。" + +msgid "Adds a [Shape3D] to the shape owner." +msgstr "向形状拥有者添加 [Shape3D]。" + +msgid "Returns the [Shape3D] with the given ID from the given shape owner." +msgstr "返回形状所有者中具有给定 ID 的 [Shape3D]。" + +msgid "" +"Returns the child index of the [Shape3D] with the given ID from the given " +"shape owner." +msgstr "返回形状所有者中具有给定 ID 的 [Shape3D] 的子索引。" + +msgid "Returns the shape owner's [Transform3D]." +msgstr "返回形状所有者的 [Transform3D]。" + +msgid "Sets the [Transform3D] of the given shape owner." +msgstr "设置给定形状所有者的 [Transform3D]。" + +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" @@ -18821,6 +20201,13 @@ msgstr "" "[/codeblocks]" msgid "" +"Returns [code]true[/code] if this color and [param to] are approximately " +"equal, by running [method @GlobalScope.is_equal_approx] on each component." +msgstr "" +"如果该颜色和 [param to] 近似相等,则返回 [code]true[/code],判断近似相等的方" +"法是通过在每个分量上运行 [method @GlobalScope.is_equal_approx]。" + +msgid "" "Returns the 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" @@ -19625,6 +21012,14 @@ msgstr "" "当于 [member g],[code][2][/code] 相当于 [member b],[code][3][/code] 相当于 " "[member a]." +msgid "" +"Returns the same value as if the [code]+[/code] was not there. Unary " +"[code]+[/code] does nothing, but sometimes it can make your code more " +"readable." +msgstr "" +"返回与 [code]+[/code] 不存在时相同的值。单目 [code]+[/code] 没有作用,但有时" +"可以使你的代码更具可读性。" + msgid "Color picker control." msgstr "取色器控件。" @@ -19969,6 +21364,56 @@ msgid "" "The array of points that make up the [ConcavePolygonShape2D]'s line segments." msgstr "组成 [ConcavePolygonShape2D] 线段的点的数组。" +msgid "" +"3D concave polygon shape resource (also called \"trimesh\") to be added as a " +"[i]direct[/i] child of a [PhysicsBody3D] or [Area3D] using a " +"[CollisionShape3D] node. This shape is created by feeding a list of " +"triangles. Despite its name, [ConcavePolygonShape3D] can also store convex " +"polygon shapes. However, unlike [ConvexPolygonShape3D], " +"[ConcavePolygonShape3D] is [i]not[/i] limited to storing convex shapes " +"exclusively.\n" +"[b]Note:[/b] When used for collision, [ConcavePolygonShape3D] is intended to " +"work with static [PhysicsBody3D] nodes like [StaticBody3D] and will not work " +"with [CharacterBody3D] or [RigidBody3D] with a mode other than Static.\n" +"[b]Performance:[/b] Due to its complexity, [ConcavePolygonShape3D] is the " +"slowest collision shape to check collisions against. Its use should " +"generally be limited to level geometry. For convex geometry, using " +"[ConvexPolygonShape3D] will perform better. For dynamic physics bodies that " +"need concave collision, several [ConvexPolygonShape3D]s can be used to " +"represent its collision by using convex decomposition; see " +"[ConvexPolygonShape3D]'s documentation for instructions. However, consider " +"using primitive collision shapes such as [SphereShape3D] or [BoxShape3D] " +"first.\n" +"[b]Warning:[/b] Using this shape for an [Area3D] (via a [CollisionShape3D] " +"node, created e.g. by using the [i]Create Trimesh Collision Sibling[/i] " +"option in the [i]Mesh[/i] menu that appears when selecting a " +"[MeshInstance3D] node) may give unexpected results: the area will only " +"detect collisions with the triangle faces in the [ConcavePolygonShape3D] " +"(and not with any \"inside\" of the shape, for example); moreover it will " +"only detect all such collisions if [member backface_collision] is " +"[code]true[/code]." +msgstr "" +"使用 [CollisionShape3D] 节点时,添加为 [PhysicsBody3D] 或 [Area3D] 的[i]直接" +"[/i]子节点的 3D 凹多边形形状资源(也称为“trimesh”)。这个形状是通过输入一个三" +"角形列表创建的。尽管名称如此,[ConcavePolygonShape3D] 也可以存储凸多边形形" +"状。因而,与 [ConvexPolygonShape3D] 不同,[ConcavePolygonShape3D] [i]不[/i]仅" +"限于专门存储凸多边形。\n" +"[b]注意:[/b]当用于碰撞时,[ConcavePolygonShape3D] 旨在与 [StaticBody3D] 等静" +"态 [PhysicsBody3D] 节点一起使用,而不会与使用非静态模式的 [CharacterBody3D] " +"或 [RigidBody3D] 等一起使用。\n" +"[b]性能:[/b]由于其复杂性,[ConcavePolygonShape3D] 是检查碰撞时最慢的碰撞形" +"状。它的使用通常应限于关卡几何体。对于凸形几何体,使用 " +"[ConvexPolygonShape3D] 会表现更好。对于需要凸形碰撞的动态物理实体,可以用几" +"个 [ConvexPolygonShape3D] 通过凸形分解来表示它的碰撞;有关说明,请参阅 " +"[ConvexPolygonShape3D] 的文档。但是,请首先考虑使用原始碰撞形状,例如 " +"[SphereShape3D] 或 [BoxShape3D]。\n" +"[b]警告:[/b]将该形状用于 [Area3D](通过 [CollisionShape3D] 节点创建的,例如" +"通过使用选择 [MeshInstance3D] 节点时出现的[i]网格[/i]菜单中的[i]创建三角网格" +"碰撞同级[/i]选项)时可能会产生意想不到的结果:该区域将仅检测与 " +"[ConcavePolygonShape3D] 中的三角形面的碰撞(例如,并不会检测与形状的任何“内" +"部”的碰撞);此外,如果 [member backface_collision] 为 [code]true[/code],它" +"只会检测所有这种碰撞。" + msgid "Returns the faces (an array of triangles)." msgstr "返回面(三角形数组)。" @@ -20032,6 +21477,16 @@ msgstr "" msgid "Returns an array of all defined section identifiers." msgstr "返回所有已定义节标识符的数组。" +msgid "" +"Returns the current value for the specified section and key. If either the " +"section or the key do not exist, the method returns the fallback [param " +"default] value. If [param default] is not specified or set to [code]null[/" +"code], an error is also raised." +msgstr "" +"返回指定部分和键的当前值。如果该部分或键不存在,则该方法返回后备值 [param " +"default]。如果未指定 [param default] 或将其设置为 [code]null[/code],则会引发" +"一个错误。" + msgid "Returns [code]true[/code] if the specified section exists." msgstr "如果指定的部分存在,则返回 [code]true[/code]。" @@ -20498,6 +21953,19 @@ msgstr "" "[b]注意:[/b]事件位置相对于该控件原点。" msgid "" +"Virtual method to be implemented by the user. Returns whether the given " +"[param point] is inside this control.\n" +"If not overridden, default behavior is checking if the point is within " +"control's Rect.\n" +"[b]Note:[/b] If you want to check if a point is inside the control, you can " +"use [code]Rect2(Vector2.ZERO, size).has_point(point)[/code]." +msgstr "" +"由用户实现的虚方法。返回给定的 [param point] 是否在该控件内。\n" +"如果没有被覆盖,则默认行为是检查该点是否在控件的 Rect 内。\n" +"[b]注意:[/b]如果要检查一个点是否在该控件内部,可以使用 [code]Rect2(Vector2." +"ZERO, size).has_point(point)[/code]。" + +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" @@ -20729,6 +22197,22 @@ msgid "Returns the parent control node." msgstr "返回父控制节点。" msgid "" +"Returns the position and size of the control in the coordinate system of the " +"containing node. See [member position], [member scale] and [member size].\n" +"[b]Note:[/b] If [member rotation] is not the default rotation, the resulting " +"size is not meaningful.\n" +"[b]Note:[/b] Setting [member Viewport.gui_snap_controls_to_pixels] to " +"[code]true[/code] can lead to rounding inaccuracies between the displayed " +"control and the returned [Rect2]." +msgstr "" +"返回控件在包含节点的坐标系中的位置和大小。参见 [member position]、[member " +"scale] 和 [member size]。\n" +"[b]注意:[/b]如果 [member rotation] 不是默认的旋转,那么得到的大小是没有意义" +"的。\n" +"[b]注意:[/b]将 [member Viewport.gui_snap_controls_to_pixels] 设置为 " +"[code]true[/code],会导致显示的控件和返回的 [Rect2] 之间的舍入不准确。" + +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 " @@ -21048,6 +22532,28 @@ msgstr "" "add_theme_stylebox_override] 或检查器面板添加的。" msgid "" +"Sets the anchor for the specified [enum Side] to [param anchor]. A setter " +"method for [member anchor_bottom], [member anchor_left], [member " +"anchor_right] and [member anchor_top].\n" +"If [param keep_offset] is [code]true[/code], offsets aren't updated after " +"this operation.\n" +"If [param push_opposite_anchor] is [code]true[/code] and the opposite anchor " +"overlaps this anchor, the opposite one will have its value overridden. For " +"example, when setting left anchor to 1 and the right anchor has value of " +"0.5, the right anchor will also get value of 1. If [param " +"push_opposite_anchor] was [code]false[/code], the left anchor would get " +"value 0.5." +msgstr "" +"将指定 [enum Side] 的锚点设置为 [param anchor]。用于 [member anchor_bottom]、" +"[member anchor_left]、[member anchor_right]、和 [member anchor_top] 的设值函" +"数。\n" +"如果 [param keep_offset] 为 [code]true[/code],则偏移量不会在该操作后更新。\n" +"如果 [param push_opposite_anchor] 为 [code]true[/code],并且相对的锚点与该锚" +"点重叠,则相对的锚点的值将被覆盖。例如,当将左锚点设置为 1 且右锚点的值为 " +"0.5 时,右锚点的值也将为 1。如果 [param push_opposite_anchor] 为 " +"[code]false[/code],则左锚点的值将为 0.5。" + +msgid "" "Works the same as [method set_anchor], but instead of [code]keep_offset[/" "code] argument and automatic update of offset, it allows to set the offset " "yourself (see [method set_offset])." @@ -21138,6 +22644,33 @@ msgid "Sets [member offset_right] and [member offset_bottom] at the same time." msgstr "同时设置 [member offset_right] 和 [member offset_bottom]。" msgid "" +"Sets the [member global_position] to given [param position].\n" +"If [param keep_offsets] is [code]true[/code], control's anchors will be " +"updated instead of offsets." +msgstr "" +"将 [member global_position] 设置为给定的 [param position]。\n" +"如果 [param keep_offsets] 为 [code]true[/code],则将更新控件的锚点而不是偏移" +"量。" + +msgid "" +"Sets the [member position] to given [param position].\n" +"If [param keep_offsets] is [code]true[/code], control's anchors will be " +"updated instead of offsets." +msgstr "" +"将 [member position] 设置为给定的 [param position]。\n" +"如果 [param keep_offsets] 为 [code]true[/code],则将更新控件的锚点而不是偏移" +"量。" + +msgid "" +"Sets the size (see [member size]).\n" +"If [param keep_offsets] is [code]true[/code], control's anchors will be " +"updated instead of offsets." +msgstr "" +"设置大小(参见 [member size])。\n" +"如果 [param keep_offsets] 为 [code]true[/code],则将更新控件的锚点而不是偏移" +"量。" + +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 " @@ -21748,28 +23281,28 @@ msgid "" "Snap all 4 anchors to the center of the left edge of the parent control's " "bounds. Use with [method set_anchors_preset]." msgstr "" -"将所有 4 个锚点对齐到父控件边界的左边缘的中心。与 [method " +"将所有 4 个锚点对齐到父控件边界的左边缘的中点。与 [method " "set_anchors_preset] 一起使用。" msgid "" "Snap all 4 anchors to the center of the top edge of the parent control's " "bounds. Use with [method set_anchors_preset]." msgstr "" -"将所有 4 个锚点对齐到父控件边界的顶边缘的中心。与 [method " +"将所有 4 个锚点对齐到父控件边界的顶边缘的中点。与 [method " "set_anchors_preset] 一起使用。" msgid "" "Snap all 4 anchors to the center of the right edge of the parent control's " "bounds. Use with [method set_anchors_preset]." msgstr "" -"将所有 4 个锚点对齐到父控件边界的右边缘的中心。与 [method " +"将所有 4 个锚点对齐到父控件边界的右边缘的中点。与 [method " "set_anchors_preset] 一起使用。" msgid "" "Snap all 4 anchors to the center of the bottom edge of the parent control's " "bounds. Use with [method set_anchors_preset]." msgstr "" -"将所有 4 个锚点对齐到父控件边界的底边缘的中心。与 [method " +"将所有 4 个锚点对齐到父控件边界的底边缘的中点。与 [method " "set_anchors_preset] 一起使用。" msgid "" @@ -21780,6 +23313,42 @@ msgstr "" "用。" msgid "" +"Snap all 4 anchors to the left edge of the parent control. The left offset " +"becomes relative to the left edge and the top offset relative to the top " +"left corner of the node's parent. Use with [method set_anchors_preset]." +msgstr "" +"将所有 4 个锚点对齐到父控件的左边缘。左偏移量相对于父节点的左边缘,上偏移量相" +"对于父节点的左上角。与 [method set_anchors_preset] 一起使用。" + +msgid "" +"Snap all 4 anchors to the top edge of the parent control. The left offset " +"becomes relative to the top left corner, the top offset relative to the top " +"edge, and the right offset relative to the top right corner of the node's " +"parent. Use with [method set_anchors_preset]." +msgstr "" +"将所有 4 个锚点对齐到父控件的上边缘。左偏移量相对于父节点的左上角,上偏移量相" +"对于父节点的上边缘,右偏移相对于父节点的右上角。与 [method " +"set_anchors_preset] 一起使用。" + +msgid "" +"Snap all 4 anchors to the right edge of the parent control. The right offset " +"becomes relative to the right edge and the top offset relative to the top " +"right corner of the node's parent. Use with [method set_anchors_preset]." +msgstr "" +"将所有 4 个锚点对齐到父控件的右边缘。右偏移量相对于父节点的右边缘,上偏移量相" +"对于父节点的右上角。与 [method set_anchors_preset] 一起使用。" + +msgid "" +"Snap all 4 anchors to the bottom edge of the parent control. The left offset " +"becomes relative to the bottom left corner, the bottom offset relative to " +"the bottom edge, and the right offset relative to the bottom right corner of " +"the node's parent. Use with [method set_anchors_preset]." +msgstr "" +"将所有 4 个锚点对齐到父控件的下边缘。左偏移量相对于父节点的左下角,下偏移量相" +"对于父节点的下边缘,右偏移相对于父节点的右下角。与 [method " +"set_anchors_preset] 一起使用。" + +msgid "" "Snap all 4 anchors to a vertical line that cuts the parent control in half. " "Use with [method set_anchors_preset]." msgstr "" @@ -21793,6 +23362,14 @@ msgstr "" "将所有 4 个锚点对齐到一条水平线,该水平线将父控件切成两半。与 [method " "set_anchors_preset] 一起使用。" +msgid "" +"Snap all 4 anchors to the respective corners of the parent control. Set all " +"4 offsets to 0 after you applied this preset and the [Control] will fit its " +"parent control. Use with [method set_anchors_preset]." +msgstr "" +"将所有 4 个锚点对齐到父控件对应的角。应用此预设后,会将所有 4 个偏移都设置为 " +"0,该 [Control] 将适合其父控件。与 [method set_anchors_preset] 一起使用。" + msgid "The control will be resized to its minimum size." msgstr "控件将被调整为最小尺寸。" @@ -21936,12 +23513,55 @@ msgstr "" "该多边形的顶点列表。顺时针顺序或逆时针顺序都有可能。请用凸包点设置该属性,可" "以用 [method set_point_cloud] 从凹形状点设成凸包形状。" +msgid "" +"3D convex polygon shape resource to be added as a [i]direct[/i] child of a " +"[PhysicsBody3D] or [Area3D] using a [CollisionShape3D] node. Unlike " +"[ConcavePolygonShape3D], [ConvexPolygonShape3D] cannot store concave polygon " +"shapes. [ConvexPolygonShape3D]s can be manually drawn in the editor using " +"the [CollisionPolygon3D] node.\n" +"[b]Convex decomposition:[/b] Concave objects' collisions can be represented " +"accurately using [i]several[/i] [ConvexPolygonShape3D]s. This allows dynamic " +"physics bodies to have complex concave collisions (at a performance cost). " +"This is available in the editor by selecting the [MeshInstance3D], going to " +"the [b]Mesh[/b] menu and choosing [b]Create Multiple Convex Collision " +"Siblings[/b]. Alternatively, [method MeshInstance3D." +"create_multiple_convex_collisions] can be called in a script to perform this " +"decomposition at run-time.\n" +"[b]Performance:[/b] [ConvexPolygonShape3D] is faster to check collisions " +"against compared to [ConcavePolygonShape3D], but it is slower than primitive " +"collision shapes such as [SphereShape3D] or [BoxShape3D]. Its use should " +"generally be limited to medium-sized objects that cannot have their " +"collision accurately represented by a primitive shape." +msgstr "" +"使用 [CollisionShape3D] 节点,添加为 [PhysicsBody3D] 或 [Area3D] 的[i]直接[/" +"i]子节点的 3D 凸多边形形状资源。与 [ConcavePolygonShape3D] 不同," +"[ConvexPolygonShape3D] 不能存储凹多边形形状。[ConvexPolygonShape3D] 可以使用 " +"[CollisionPolygon3D] 节点在编辑器中手动绘制。\n" +"[b]凸面分解:[/b]凹面物体的碰撞可以使用[i]几个[/i] [ConvexPolygonShape3D] 来" +"准确表示。这允许动态物理实体具有复杂的凹面碰撞(以性能为代价)。这在编辑器中" +"可用,方法是选择 [MeshInstance3D],转到[b]网格[/b]菜单并选择[b]创建三角网格碰" +"撞同级[/b]。或者,也可以在脚本中调用 [method MeshInstance3D." +"create_multiple_convex_collisions],以在运行时执行该分解。\n" +"[b]性能:[/b]与 [ConcavePolygonShape3D] 相比,[ConvexPolygonShape3D] 检查碰撞" +"的速度更快,但比 [SphereShape3D] 或 [BoxShape3D] 等原始碰撞形状慢。它的使用通" +"常应仅限于不能用原始形状准确表示其碰撞的中等大小的实体。" + msgid "The list of 3D points forming the convex polygon shape." msgstr "形成凸多边形的 3D 点列表。" msgid "CPU-based 2D particle emitter." msgstr "基于 CPU 的 2D 粒子发射器。" +msgid "" +"CPU-based 2D particle node used to create a variety of particle systems and " +"effects.\n" +"See also [GPUParticles2D], which provides the same functionality with " +"hardware acceleration, but may not run on older devices." +msgstr "" +"基于 CPU 的 2D 粒子节点,可用于创建各种粒子系统、粒子效果。\n" +"另见 [GPUParticles2D],利用硬件加速提供了相同的功能,但可能无法在较旧的设备上" +"运行。" + msgid "Particle systems (2D)" msgstr "粒子系统(2D)" @@ -21954,6 +23574,11 @@ msgstr "返回给定参数的最大值范围。" msgid "Returns the minimum value range for the given parameter." msgstr "返回给定参数的最小值范围。" +msgid "" +"Returns the enabled state of the given flag (see [enum ParticleFlags] for " +"options)." +msgstr "返回给定标志的启用状态(选项见 [enum ParticleFlags])。" + msgid "Restarts the particle emitter." msgstr "重新启动粒子发射器。" @@ -22317,6 +23942,21 @@ msgstr "代表 [enum EmissionShape] 枚举的大小。" msgid "CPU-based 3D particle emitter." msgstr "基于 CPU 的 3D 粒子发射器。" +msgid "" +"CPU-based 3D particle node used to create a variety of particle systems and " +"effects.\n" +"See also [GPUParticles3D], which provides the same functionality with " +"hardware acceleration, but may not run on older devices." +msgstr "" +"基于 CPU 的 3D 粒子节点,可用于创建各种粒子系统、粒子效果。\n" +"另见 [GPUParticles3D],利用硬件加速提供了相同的功能,但可能无法在较旧的设备上" +"运行。" + +msgid "" +"Returns the enabled state of the given particle flag (see [enum " +"ParticleFlags] for options)." +msgstr "返回给定粒子标志的启用状态(选项见 [enum ParticleFlags])。" + msgid "Maximum angle." msgstr "最大角度。" @@ -22349,6 +23989,25 @@ msgstr "" "围。" msgid "" +"Sets the [Color]s to modulate particles by when using [constant " +"EMISSION_SHAPE_POINTS] or [constant EMISSION_SHAPE_DIRECTED_POINTS].\n" +"[b]Note:[/b] [member emission_colors] multiplies the particle mesh's vertex " +"colors. To have a visible effect on a [BaseMaterial3D], [member " +"BaseMaterial3D.vertex_color_use_as_albedo] [i]must[/i] be [code]true[/code]. " +"For a [ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/code] must be inserted " +"in the shader's [code]fragment()[/code] function. Otherwise, [member " +"emission_colors] will have no visible effect." +msgstr "" +"设置使用 [constant EMISSION_SHAPE_POINTS] 或 [constant " +"EMISSION_SHAPE_DIRECTED_POINTS] 时对粒子进行调制的 [Color]。\n" +"[b]注意:[/b][member emission_colors] 会与粒子网格的顶点颜色相乘。要在 " +"[BaseMaterial3D] 上产生可见效果,[member BaseMaterial3D." +"vertex_color_use_as_albedo] [i]必须[/i]为 [code]true[/code]。对于 " +"[ShaderMaterial],必须在着色器的 [code]fragment()[/code] 函数中插入 " +"[code]ALBEDO *= COLOR.rgb;[/code]。否则 [member emission_colors] 不会产生可见" +"效果。" + +msgid "" "The axis of the ring when using the emitter [constant EMISSION_SHAPE_RING]." msgstr "使用发射器时的环轴 [constant EMISSION_SHAPE_RING]。" @@ -23065,6 +24724,20 @@ msgid "The CSG base class." msgstr "CSG 基类。" msgid "" +"Returns whether or not the specified layer of the [member collision_layer] " +"is enabled, given a [code]layer_number[/code] between 1 and 32." +msgstr "" +"返回 [member collision_layer] 中的指定层是否启用,[code]layer_number[/code] " +"应在 1 和 32 之间。" + +msgid "" +"Returns whether or not the specified layer of the [member collision_mask] is " +"enabled, given a [code]layer_number[/code] between 1 and 32." +msgstr "" +"返回 [member collision_mask] 中的指定层是否启用,[code]layer_number[/code] 应" +"在 1 和 32 之间。" + +msgid "" "Returns [code]true[/code] if this is a root shape and is thus the object " "that is rendered." msgstr "如果这是根形状,因此是渲染的对象,则返回 [code]true[/code]。" @@ -23097,6 +24770,16 @@ msgstr "" "physics_introduction.html#collision-layers-and-masks]《碰撞层与掩码》[/url]。" msgid "" +"The physics layers this CSG shape scans for collisions. Only effective if " +"[member use_collision] is [code]true[/code]. See [url=$DOCS_URL/tutorials/" +"physics/physics_introduction.html#collision-layers-and-masks]Collision " +"layers and masks[/url] in the documentation for more information." +msgstr "" +"该 CSG 形状扫描碰撞的物理层。仅当 [member use_collision] 为 [code]true[/" +"code] 时有效。有关更多信息,请参阅文档中的[url=$DOCS_URL/tutorials/physics/" +"physics_introduction.html#collision-layers-and-masks]《碰撞层与掩码》[/url]。" + +msgid "" "The operation that is performed on this shape. This is ignored for the first " "CSG child node as the operation is between this node and the previous child " "of this nodes parent." @@ -23198,6 +24881,10 @@ msgstr "通常用于 3D 渲染的 6 面纹理。" msgid "Creates a placeholder version of this resource ([PlaceholderCubemap])." msgstr "创建该资源的占位符版本([PlaceholderCubemap])。" +msgid "" +"Creates a placeholder version of this resource ([PlaceholderCubemapArray])." +msgstr "创建该资源的占位符版本([PlaceholderCubemapArray])。" + msgid "A mathematic curve." msgstr "数学曲线。" @@ -23318,6 +25005,23 @@ msgstr "" "它保留了沿曲线的预计算点的缓存,以加快进一步的计算。" msgid "" +"Adds a point with the specified [param position] relative to the curve's own " +"position, with control points [param in] and [param out]. Appends the new " +"point at the end of the point list.\n" +"If [param index] is given, the new point is inserted before the existing " +"point identified by index [param index]. Every existing point starting from " +"[param index] is shifted further down the list of points. The index must be " +"greater than or equal to [code]0[/code] and must not exceed the number of " +"existing points in the line. See [member point_count]." +msgstr "" +"添加一个具有相对于曲线自身位置的指定 [param position],且带有控制点 [param " +"in] 和 [param out] 的点。在点列表的末尾追加该新点。\n" +"如果给定了 [param index],则将新点插入到由索引 [param index] 标识的已有点之" +"前。从 [param index] 开始的每个已有点,都会在点列表中进一步向下移动。索引必须" +"大于或等于 [code]0[/code],并且不得超过线段中已有点的数量。参见 [member " +"point_count]。" + +msgid "" "Returns the total length of the curve, based on the cached points. Given " "enough density (see [member bake_interval]), it should be approximate enough." msgstr "" @@ -23325,6 +25029,34 @@ msgstr "" "它应该是足够近似的。" msgid "" +"Returns the position of the control point leading to the vertex [param idx]. " +"The returned position is relative to the vertex [param idx]. If the index is " +"out of bounds, the function sends an error to the console, and returns [code]" +"(0, 0)[/code]." +msgstr "" +"返回指向顶点 [param idx] 的控制点的位置。返回的位置是相对于顶点 [param idx] " +"的。如果索引越界,则该函数将向控制台发送一个错误,并返回 [code](0, 0)[/" +"code]。" + +msgid "" +"Returns the position of the control point leading out of the vertex [param " +"idx]. The returned position is relative to the vertex [param idx]. If the " +"index is out of bounds, the function sends an error to the console, and " +"returns [code](0, 0)[/code]." +msgstr "" +"返回离向顶点 [param idx] 的控制点的位置。返回的位置是相对于顶点 [param idx] " +"的。如果索引越界,则该函数将向控制台发送一个错误,并返回 [code](0, 0)[/" +"code]。" + +msgid "" +"Returns the position of the vertex [param idx]. If the index is out of " +"bounds, the function sends an error to the console, and returns [code](0, 0)" +"[/code]." +msgstr "" +"返回顶点的位置 [param idx]。如果索引越界,则该函数将向控制台发送一个错误,并" +"返回 [code](0, 0)[/code]。" + +msgid "" "Deletes the point [code]idx[/code] from the curve. Sends an error to the " "console if [code]idx[/code] is out of bounds." msgstr "" @@ -23332,6 +25064,48 @@ msgstr "" "错误信息。" msgid "" +"Returns the position between the vertex [param idx] and the vertex [code]idx " +"+ 1[/code], where [param t] controls if the point is the first vertex " +"([code]t = 0.0[/code]), the last vertex ([code]t = 1.0[/code]), or in " +"between. Values of [param t] outside the range ([code]0.0 >= t <=1[/code]) " +"give strange, but predictable results.\n" +"If [param idx] is out of bounds it is truncated to the first or last vertex, " +"and [param t] is ignored. If the curve has no points, the function sends an " +"error to the console, and returns [code](0, 0)[/code]." +msgstr "" +"返回顶点 [param idx] 和顶点 [code]idx + 1[/code] 之间的位置,其中 [param t] " +"控制该点是否为第一个顶点([code]t = 0.0[/code])、最后一个顶点([code]t = " +"1.0[/code])、或介于两者之间。超出范围([code]0.0 >= t <=1[/code])的 [param " +"t] 的值会给出奇怪但可预测的结果。\n" +"如果 [param idx] 越界,它将被截断到第一个或最后一个顶点,而 [param t] 将被忽" +"略。如果曲线没有点,则该函数将向控制台发送一个错误,并返回 [code](0, 0)[/" +"code]。" + +msgid "" +"Returns a point within the curve at position [param offset], where [param " +"offset] is measured as a pixel distance along the curve.\n" +"To do that, it finds the two cached points where the [param offset] lies " +"between, then interpolates the values. This interpolation is cubic if [param " +"cubic] is set to [code]true[/code], or linear if set to [code]false[/code].\n" +"Cubic interpolation tends to follow the curves better, but linear is faster " +"(and often, precise enough)." +msgstr "" +"返回曲线内位于 [param offset] 位置的一个点,其中 [param offset] 为沿曲线的像" +"素测量距离。\n" +"为此,它会找到 [param offset] 位于其中的两个缓存点,然后对值进行插值。如果 " +"[param cubic] 被设置为 [code]true[/code],则该插值是立方插值;如果被设置为 " +"[code]false[/code],则该插值是线性插值。\n" +"立方插值往往能更好地跟随曲线,但线性插值速度更快(而且通常足够精确)。" + +msgid "" +"Returns the position at the vertex [param fofs]. It calls [method sample] " +"using the integer part of [param fofs] as [code]idx[/code], and its " +"fractional part as [code]t[/code]." +msgstr "" +"返回顶点 [param fofs] 的位置。该函数使用 [param fofs] 的整数部分作为 " +"[code]idx[/code],其小数部分作为 [code]t[/code],调用 [method sample]。" + +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 " @@ -23363,6 +25137,93 @@ msgid "Returns the cache of points as a [PackedVector3Array]." msgstr "返回缓存的点,类型为 [PackedVector3Array]。" msgid "" +"Returns the position of the control point leading to the vertex [param idx]. " +"The returned position is relative to the vertex [param idx]. If the index is " +"out of bounds, the function sends an error to the console, and returns [code]" +"(0, 0, 0)[/code]." +msgstr "" +"返回指向顶点 [param idx] 的控制点的位置。返回的位置是相对于顶点 [param idx] " +"的。如果索引越界,则该函数将向控制台发送一个错误,并返回 [code](0, 0, 0)[/" +"code]。" + +msgid "" +"Returns the position of the control point leading out of the vertex [param " +"idx]. The returned position is relative to the vertex [param idx]. If the " +"index is out of bounds, the function sends an error to the console, and " +"returns [code](0, 0, 0)[/code]." +msgstr "" +"返回离向顶点 [param idx] 的控制点的位置。返回的位置是相对于顶点 [param idx] " +"的。如果索引越界,则该函数将向控制台发送一个错误,并返回 [code](0, 0, 0)[/" +"code]。" + +msgid "" +"Returns the position of the vertex [param idx]. If the index is out of " +"bounds, the function sends an error to the console, and returns [code](0, 0, " +"0)[/code]." +msgstr "" +"返回顶点 [param idx] 的位置。如果索引越界,则该函数将向控制台发送一个错误,并" +"返回 [code](0, 0, 0)[/code]。" + +msgid "" +"Returns the tilt angle in radians for the point [param idx]. If the index is " +"out of bounds, the function sends an error to the console, and returns " +"[code]0[/code]." +msgstr "" +"返回点 [param idx] 的倾斜弧度角。如果索引越界,则该函数将向控制台发送一个错" +"误,并返回 [code]0[/code]。" + +msgid "" +"Returns the position between the vertex [param idx] and the vertex [code]idx " +"+ 1[/code], where [param t] controls if the point is the first vertex " +"([code]t = 0.0[/code]), the last vertex ([code]t = 1.0[/code]), or in " +"between. Values of [param t] outside the range ([code]0.0 >= t <=1[/code]) " +"give strange, but predictable results.\n" +"If [param idx] is out of bounds it is truncated to the first or last vertex, " +"and [param t] is ignored. If the curve has no points, the function sends an " +"error to the console, and returns [code](0, 0, 0)[/code]." +msgstr "" +"返回顶点 [param idx] 和顶点 [code]idx + 1[/code] 之间的位置,其中 [param t] " +"控制该点是否为第一个顶点([code]t = 0.0[/code])、最后一个顶点([code]t = " +"1.0[/code])、或介于两者之间。超出范围([code]0.0 >= t <=1[/code])的 [param " +"t] 的值会给出奇怪但可预测的结果。\n" +"如果 [param idx] 越界,它将被截断到第一个或最后一个顶点,而 [param t] 将被忽" +"略。如果曲线没有点,则该函数将向控制台发送一个错误,并返回 [code](0, 0, 0)[/" +"code]。" + +msgid "" +"Returns a point within the curve at position [param offset], where [param " +"offset] is measured as a distance in 3D units along the curve.\n" +"To do that, it finds the two cached points where the [param offset] lies " +"between, then interpolates the values. This interpolation is cubic if [param " +"cubic] is set to [code]true[/code], or linear if set to [code]false[/code].\n" +"Cubic interpolation tends to follow the curves better, but linear is faster " +"(and often, precise enough)." +msgstr "" +"返回曲线内位于 [param offset] 位置的一个点,其中 [param offset] 为沿曲线的 " +"3D 单位测量距离。\n" +"为此,它会找到 [param offset] 位于其间的两个缓存点,然后对值进行插值。如果 " +"[param cubic] 被设置为 [code]true[/code],则该插值是立方插值;如果被设置为 " +"[code]false[/code],则该插值是线性插值。\n" +"立方插值往往能更好地跟随曲线,但线性插值速度更快(而且通常足够精确)。" + +msgid "" +"Returns an up vector within the curve at position [param offset], where " +"[param offset] is measured as a distance in 3D units along the curve.\n" +"To do that, it finds the two cached up vectors where the [param offset] lies " +"between, then interpolates the values. If [param apply_tilt] is [code]true[/" +"code], an interpolated tilt is applied to the interpolated up vector.\n" +"If the curve has no up vectors, the function sends an error to the console, " +"and returns [code](0, 1, 0)[/code]." +msgstr "" +"返回曲线内位于 [param offset] 位置的向上向量,其中 [param offset] 为沿曲线的 " +"3D 单位测量距离。\n" +"为此,它会找到 [param offset] 位于其间的两个缓存向上向量,然后对值进行插值。" +"如果 [param apply_tilt] 为 [code]true[/code],则对插值后的向上向量应用插值后" +"的倾斜。\n" +"如果曲线没有向上向量,则该函数将向控制台发送一个错误,并返回 [code](0, 1, 0)" +"[/code]。" + +msgid "" "The distance in meters 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 " @@ -23725,6 +25586,23 @@ msgstr "" "的性能成本,因为增加了法线角度计算。" msgid "" +"Sets the size of the [AABB] used by the decal. All dimensions must be set to " +"a value greater than zero (they will be clamped to [code]0.001[/code] if " +"this is not the case). The AABB goes from [code]-size/2[/code] to " +"[code]size/2[/code].\n" +"[b]Note:[/b] To improve culling efficiency of \"hard surface\" decals, set " +"their [member upper_fade] and [member lower_fade] to [code]0.0[/code] and " +"set the Y component of the [member size] as low as possible. This will " +"reduce the decals' AABB size without affecting their appearance." +msgstr "" +"设置贴花使用的 [AABB] 的大小。所有大小都必须设置为大于零的值(如果不是这种情" +"况,它们将被钳制为 [code]0.001[/code])。该 AABB 从 [code]-size/2[/code] 到 " +"[code]size/2[/code]。\n" +"[b]注意:[/b]为了提高“硬表面”贴花的剔除效率,将它们的 [member upper_fade] 和 " +"[member lower_fade] 设置为 [code]0.0[/code],并将 [member size] 的 Y 分量设置" +"的越低越好。这将减少贴花的 AABB 大小而不影响它们的外观。" + +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 " @@ -23827,315 +25705,6 @@ 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 基础:字典" @@ -24513,6 +26082,18 @@ msgid "File system" msgstr "文件系统" msgid "" +"Changes the currently opened directory to the one passed as an argument. The " +"argument can be relative to the current directory (e.g. [code]newdir[/code] " +"or [code]../newdir[/code]), or an absolute path (e.g. [code]/tmp/newdir[/" +"code] or [code]res://somedir/newdir[/code]).\n" +"Returns one of the [enum Error] code constants ([constant OK] on success)." +msgstr "" +"将当前打开的目录改为作为参数传递的目录。该参数可以是相对于当前目录的(例如 " +"[code]newdir[/code] 或 [code]../newdir[/code]),也可以是绝对路径(例如 " +"[code]/tmp/newdir[/code] 或 [code]res://somedir/newdir[/code])。\n" +"返回 [enum Error] 错误码常量之一(成功时为 [constant OK])。" + +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" @@ -24564,6 +26145,31 @@ msgstr "" "\\tmp\\文件夹[/code])。" msgid "" +"Returns the currently opened directory's drive index. See [method " +"get_drive_name] to convert returned index to the name of the drive." +msgstr "" +"返回当前打开目录的驱动器索引。要将返回的索引转换为驱动器名称,请参阅 [method " +"get_drive_name]。" + +msgid "" +"Returns a [PackedStringArray] containing filenames of the directory " +"contents, excluding files. The array is sorted alphabetically.\n" +"Affected by [member include_hidden] and [member include_navigational]." +msgstr "" +"返回该目录内容的文件名 [PackedStringArray],不含文件。该数组按字母排序。\n" +"受 [member include_hidden] 和 [member include_navigational] 的影响。" + +msgid "" +"Returns a [PackedStringArray] containing filenames of the directory " +"contents, excluding files, at the given [param path]. The array is sorted " +"alphabetically.\n" +"Use [method get_directories] if you want more control of what gets included." +msgstr "" +"返回位于给定路径 [param path] 的目录内容的文件名 [PackedStringArray],不含文" +"件。该数组按字母排序。\n" +"如果你想要对包括的内容有更多的控制,请使用 [method get_directories]。" + +msgid "" "On Windows, returns the number of drives (partitions) mounted on the current " "filesystem.\n" "On macOS, returns the number of mounted volumes.\n" @@ -24591,10 +26197,65 @@ msgstr "" "在其他平台上,或者当请求的驱动器不存在时,该方法会返回空的 String。" msgid "" +"Returns a [PackedStringArray] containing filenames of the directory " +"contents, excluding directories. The array is sorted alphabetically.\n" +"Affected by [member include_hidden]." +msgstr "" +"返回该目录内容的文件名 [PackedStringArray],不含目录。该数组按字母排序。\n" +"受 [member include_hidden] 的影响。" + +msgid "" +"Returns a [PackedStringArray] containing filenames of the directory " +"contents, excluding directories, at the given [param path]. The array is " +"sorted alphabetically.\n" +"Use [method get_files] if you want more control of what gets included." +msgstr "" +"返回位于给定路径 [param path] 的目录内容的文件名 [PackedStringArray],不含目" +"录。该数组按字母排序。\n" +"如果你想要对包括的内容有更多的控制,请使用 [method get_files]。" + +msgid "" +"Returns the next element (file or directory) in the current directory.\n" +"The name of the file or directory is returned (and not its full path). Once " +"the stream has been fully processed, the method returns an empty [String] " +"and closes the stream automatically (i.e. [method list_dir_end] would not be " +"mandatory in such a case)." +msgstr "" +"返回当前目录中的下一个元素(文件或目录)。\n" +"返回的是文件或目录的名称(不是完整路径)。完全处理完流之后,该方法会返回空 " +"[String] 并自动将流关闭(即此时不必再调用 [method list_dir_end])。" + +msgid "" "Returns the result of the last [method open] call in the current thread." msgstr "返回当前线程中最后一次 [method open] 调用的结果。" msgid "" +"Returns the available space on the current directory's disk, in bytes. " +"Returns [code]0[/code] if the platform-specific method to query the " +"available space fails." +msgstr "" +"返回当前目录所在磁盘的可用空间,单位为字节。如果该平台查询可用空间的方法失" +"败,则返回 [code]0[/code]。" + +msgid "" +"Initializes the stream used to list all files and directories using the " +"[method get_next] function, closing the currently opened stream if needed. " +"Once the stream has been processed, it should typically be closed with " +"[method list_dir_end].\n" +"Affected by [member include_hidden] and [member include_navigational].\n" +"[b]Note:[/b] The order of files and directories returned by this method is " +"not deterministic, and can vary between operating systems. If you want a " +"list of all files or folders sorted alphabetically, use [method get_files] " +"or [method get_directories]." +msgstr "" +"初始化流,用于使用 [method get_next] 函数列出所有文件和目录,如果需要还会关闭" +"目前打开的流。处理完流之后,一般应使用 [method list_dir_end] 关闭。\n" +"受 [member include_hidden] 和 [member include_navigational] 的影响。\n" +"[b]注意:[/b]该方法返回的文件和目录顺序是不确定的,不同操作系统也可能不同。如" +"果你想要获取按字母排序的文件或文件夹列表,请使用 [method get_files] 或 " +"[method get_directories]。" + +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 "" @@ -24629,12 +26290,62 @@ msgid "" "Static version of [method make_dir_recursive]. Supports only absolute paths." msgstr "静态版本的 [method make_dir_recursive]。仅支持绝对路径。" +msgid "" +"Creates a new [DirAccess] object and opens an existing directory of the " +"filesystem. The [param path] argument can be within the project tree " +"([code]res://folder[/code]), the user directory ([code]user://folder[/code]) " +"or an absolute path of the user filesystem (e.g. [code]/tmp/folder[/code] or " +"[code]C:\\tmp\\folder[/code]).\n" +"Returns [code]null[/code] if opening the directory failed. You can use " +"[method get_open_error] to check the error that occurred." +msgstr "" +"新建 [DirAccess] 对象并打开文件系统中的某个现存目录。[param path] 参数可以是" +"在项目树中([code]res://folder[/code])、用户目录中([code]user://folder[/" +"code]),也可以是用户文件系统的绝对路径(例如 [code]/tmp/folder[/code] 或 " +"[code]C:\\tmp\\folder[/code])。\n" +"如果打开目录失败,则返回 [code]null[/code]。你可以使用 [method " +"get_open_error] 来查看发生的错误。" + +msgid "" +"Permanently deletes the target file or an empty directory. The argument can " +"be relative to the current directory, or an absolute path. If the target " +"directory is not empty, the operation will fail.\n" +"If you don't want to delete the file/directory permanently, use [method OS." +"move_to_trash] instead.\n" +"Returns one of the [enum Error] code constants ([constant OK] on success)." +msgstr "" +"将目标文件或空目录永久删除。参数可以相对于当前目录,也可以是绝对路径。如果目" +"标目录非空,则操作失败。\n" +"如果你不想永久删除该文件/目录,请改用 [method OS.move_to_trash]。\n" +"返回 [enum Error] 错误码常量(成功时为 [constant OK])。" + msgid "Static version of [method remove]. Supports only absolute paths." msgstr "静态版本的 [method remove]。仅支持绝对路径。" +msgid "" +"Renames (move) the [param from] file or directory to the [param to] " +"destination. Both arguments should be paths to files or directories, either " +"relative or absolute. If the destination file or directory exists and is not " +"access-protected, it will be overwritten.\n" +"Returns one of the [enum Error] code constants ([constant OK] on success)." +msgstr "" +"将 [param from] 文件或目录重命名为(移动至)[param to] 目标。两个参数都应该是" +"文件或目录的路径,可以是相对路径也可以是绝对路径。如果目标文件或目录已存在," +"并且没有写保护,则会被覆盖。\n" +"返回 [enum Error] 错误码常量(成功时为 [constant OK])。" + msgid "Static version of [method rename]. Supports only absolute paths." msgstr "静态版本的 [method rename]。仅支持绝对路径。" +msgid "" +"If [code]true[/code], [code].[/code] and [code]..[/code] are included when " +"navigating the directory.\n" +"Affects [method list_dir_begin] and [method get_directories]." +msgstr "" +"如果为 [code]true[/code],则在导航目录时包含 [code].[/code] 和 [code]..[/" +"code]。\n" +"影响 [method list_dir_begin] 和 [method get_directories]。" + msgid "Directional 2D light from a distance." msgstr "来自远处的 2D 平行光。" @@ -24647,10 +26358,10 @@ msgid "" "supports shadow cull masks). It will always light up 2D nodes, regardless of " "the 2D node's [member CanvasItem.light_mask]." msgstr "" -"定向光是一种 [Light2D] 节点,它模拟覆盖整个场景的无限数量的平行光线。它用于远" -"离场景的强光(例如:模拟日光或月光)。\n" +"平行光是一种 [Light2D] 节点,模拟覆盖整个场景的无数平行光线。可用于远离场景的" +"强光(例如:模拟日光或月光)。\n" "[b]注意:[/b][DirectionalLight2D] 不支持灯光剔除遮罩(但支持阴影剔除遮罩)。" -"它将忽略 2D 节点的 [member CanvasItem.light_mask],始终点亮 2D 节点。" +"它会忽略 2D 节点的 [member CanvasItem.light_mask],始终点亮 2D 节点。" msgid "2D lights and shadows" msgstr "2D 灯光和阴影" @@ -24765,21 +26476,10 @@ msgid "Returns index of the screen which contains specified rectangle." msgstr "返回包含指定矩形的屏幕的索引。" msgid "" -"Adds a new radio-checkable item with text [param label] and icon [param " -"icon] to the global menu with ID [param menu_root].\n" +"Adds a separator between items to the global menu with ID [param menu_root]. " +"Separators also occupy an index.\n" "Returns index of the inserted item, it's not guaranteed to be the same as " "[param index] value.\n" -"An [param accelerator] can optionally be defined, which is a keyboard " -"shortcut that can be pressed to trigger the menu button even if it's not " -"currently open. The [param accelerator] is generally a combination of [enum " -"KeyModifierMask]s and [enum Key]s using boolean OR such as " -"[code]KEY_MASK_CTRL | KEY_A[/code] ([kbd]Ctrl + A[/kbd]).\n" -"[b]Note:[/b] Radio-checkable items just display a checkmark, but don't have " -"any built-in checking behavior and must be checked/unchecked manually. See " -"[method global_menu_set_item_checked] for more info on how to control it.\n" -"[b]Note:[/b] The [param callback] and [param key_callback] Callables need to " -"accept exactly one Variant parameter, the parameter passed to the Callables " -"will be the value passed to [param tag].\n" "[b]Note:[/b] This method is implemented on macOS.\n" "[b]Supported system menu IDs:[/b]\n" "[codeblock]\n" @@ -24787,44 +26487,21 @@ msgid "" "\"_dock\" - Dock popup menu (macOS).\n" "[/codeblock]" msgstr "" -"将带有文本 [param label] 和图标 [param icon] 的新单选项,添加到 ID 为 [param " -"menu_root] 的全局菜单中。\n" -"返回插入项的索引,不保证与 [param index] 值相同。\n" -"可以选择定义一个 [param accelerator],这是一个键盘快捷键,可以按下它来触发菜" -"单按钮,即使该菜单按钮当前没有打开。[param accelerator] 通常是 [enum " -"KeyModifierMask] 和 [enum Key] 使用布尔 OR 的组合,例如 [code]KEY_MASK_CTRL " -"| KEY_A[/code]([kbd]Ctrl + A[/kbd])。\n" -"[b]注意:[/b]单选可勾选项只显示一个复选标记,但没有任何内置的勾选行为,必须手" -"动勾选/取消勾选。有关如何控制它的更多信息,请参阅 [method " -"global_menu_set_item_checked]。\n" -"[b]注意:[/b][param callback] 和 [param key_callback] Callable 只需要接受一" -"个 Variant 参数,传递给 Callable 的参数将是传递给 [param tag] 的值。\n" -"[b]注意:[/b]这个方法是在 macOS 上实现的。\n" +"向 ID 为 [param menu_root] 的全局菜单添加分隔符。分隔符也拥有索引。\n" +"返回插入菜单项的索引,不保证与 [param index] 的值相同。\n" +"[b]注意:[/b]该方法在 macOS 上实现。\n" "[b]支持的系统菜单 ID:[/b]\n" "[codeblock]\n" "\"_main\" - 主菜单(macOS)。\n" -"\"_dock\" - Dock 弹出菜单(macOS)。\n" +"\"_dock\" - 程序坞弹出菜单(macOS)。\n" "[/codeblock]" msgid "" -"Adds a new item with text [param label] to the global menu with ID [param " -"menu_root].\n" -"Contrarily to normal binary items, multistate items can have more than two " -"states, as defined by [param max_states]. Each press or activate of the item " -"will increase the state by one. The default value is defined by [param " -"default_state].\n" +"Adds an item that will act as a submenu of the global menu [param " +"menu_root]. The [param submenu] argument is the ID of the global menu root " +"that will be shown when the item is clicked.\n" "Returns index of the inserted item, it's not guaranteed to be the same as " "[param index] value.\n" -"An [param accelerator] can optionally be defined, which is a keyboard " -"shortcut that can be pressed to trigger the menu button even if it's not " -"currently open. The [param accelerator] is generally a combination of [enum " -"KeyModifierMask]s and [enum Key]s using boolean OR such as " -"[code]KEY_MASK_CTRL | KEY_A[/code] ([kbd]Ctrl + A[/kbd]).\n" -"[b]Note:[/b] By default, there's no indication of the current item state, it " -"should be changed manually.\n" -"[b]Note:[/b] The [param callback] and [param key_callback] Callables need to " -"accept exactly one Variant parameter, the parameter passed to the Callables " -"will be the value passed to [param tag].\n" "[b]Note:[/b] This method is implemented on macOS.\n" "[b]Supported system menu IDs:[/b]\n" "[codeblock]\n" @@ -24832,42 +26509,18 @@ msgid "" "\"_dock\" - Dock popup menu (macOS).\n" "[/codeblock]" msgstr "" -"将带有文本 [param label] 的新项,添加到 ID 为 [param menu_root] 的全局菜" -"单。\n" -"与正常的二进制项目相反,多状态项目可以有两个以上的状态,如 [param " -"max_states] 所定义。每次按下或激活该项都会将状态增加一个。默认值由 [param " -"default_state] 定义。\n" -"返回插入项的索引,不保证与 [param index] 值相同。\n" -"可以选择定义一个 [param accelerator],这是一个键盘快捷键,可以按下它来触发菜" -"单按钮,即使该菜单按钮当前没有打开。[param accelerator] 通常是 [enum " -"KeyModifierMask] 和 [enum Key] 使用布尔 OR 的组合,例如 [code]KEY_MASK_CTRL " -"| KEY_A[/code]([kbd]Ctrl + A[/kbd])。\n" -"[b]注意:[/b]默认情况下,没有当前项状态的指示,应手动更改。\n" -"[b]注意:[/b][param callback] 和 [param key_callback] Callable 只需要接受一" -"个 Variant 参数,传递给 Callable 的参数将是传递给 [param tag] 的值。\n" +"向 ID 为 [param menu_root] 的全局菜单添加作为子菜单的菜单项。[param submenu] " +"参数为全局菜单根菜单项的 ID,会在点击该菜单项时显示\n" +"返回插入菜单项的索引,不保证与 [param index] 的值相同。\n" "[b]注意:[/b]该方法在 macOS 上实现。\n" "[b]支持的系统菜单 ID:[/b]\n" "[codeblock]\n" "\"_main\" - 主菜单(macOS)。\n" -"\"_dock\" - Dock 弹出菜单(macOS)。\n" +"\"_dock\" - 程序坞弹出菜单(macOS)。\n" "[/codeblock]" msgid "" -"Adds a new radio-checkable item with text [param label] to the global menu " -"with ID [param menu_root].\n" -"Returns index of the inserted item, it's not guaranteed to be the same as " -"[param index] value.\n" -"An [param accelerator] can optionally be defined, which is a keyboard " -"shortcut that can be pressed to trigger the menu button even if it's not " -"currently open. The [param accelerator] is generally a combination of [enum " -"KeyModifierMask]s and [enum Key]s using boolean OR such as " -"[code]KEY_MASK_CTRL | KEY_A[/code] ([kbd]Ctrl + A[/kbd]).\n" -"[b]Note:[/b] Radio-checkable items just display a checkmark, but don't have " -"any built-in checking behavior and must be checked/unchecked manually. See " -"[method global_menu_set_item_checked] for more info on how to control it.\n" -"[b]Note:[/b] The [param callback] and [param key_callback] Callables need to " -"accept exactly one Variant parameter, the parameter passed to the Callables " -"will be the value passed to [param tag].\n" +"Removes all items from the global menu with ID [param menu_root].\n" "[b]Note:[/b] This method is implemented on macOS.\n" "[b]Supported system menu IDs:[/b]\n" "[codeblock]\n" @@ -24875,23 +26528,12 @@ msgid "" "\"_dock\" - Dock popup menu (macOS).\n" "[/codeblock]" msgstr "" -"将带有文本 [param label] 的新单选可勾选项,添加到 ID 为 [param menu_root] 的" -"全局菜单中。\n" -"返回插入项的索引,不保证与 [param index] 值相同。\n" -"可以选择定义一个 [param accelerator],这是一个键盘快捷键,可以按下它来触发菜" -"单按钮,即使该菜单按钮当前没有打开。[param accelerator] 通常是 [enum " -"KeyModifierMask] 和 [enum Key] 使用布尔 OR 的组合,例如 [code]KEY_MASK_CTRL " -"| KEY_A[/code]([kbd]Ctrl + A[/kbd])。\n" -"[b]注意:[/b]单选勾选项只显示一个复选标记,但没有任何内置的勾选行为,必须手动" -"勾选/取消勾选。有关如何控制它的更多信息,请参阅 [method " -"global_menu_set_item_checked]。\n" -"[b]注意:[/b][param callback] 和 [param key_callback] Callable 只需要接受一" -"个 Variant 参数,传递给 Callable 的参数将是传递给 [param tag] 的值。\n" -"[b]注意:[/b] 该方法是在 macOS 上实现的。\n" +"移除 ID 为 [param menu_root] 的全局菜单中的所有菜单项。\n" +"[b]注意:[/b]该方法在 macOS 上实现。\n" "[b]支持的系统菜单 ID:[/b]\n" "[codeblock]\n" "\"_main\" - 主菜单(macOS)。\n" -"\"_dock\" - Dock 弹出菜单(macOS)。\n" +"\"_dock\" - 程序坞弹出菜单(macOS)。\n" "[/codeblock]" msgid "" @@ -24900,8 +26542,36 @@ msgid "" "is focused.\n" "[b]Note:[/b] This method is implemented on macOS." msgstr "" -"返回索引 [param idx] 处项目的加速器。加速器是无论哪个控件获得焦点时激活项目的" -"特殊键组合。\n" +"返回索引为 [param idx] 的菜单项的快捷键。快捷键是能够激活该菜单项的特殊按键组" +"合,无论该控件是否有焦点。\n" +"[b]注意:[/b]该方法在 macOS 上实现。" + +msgid "" +"Returns the callback of the item at index [param idx].\n" +"[b]Note:[/b] This method is implemented on macOS." +msgstr "" +"返回索引为 [param idx] 的菜单项的回调。\n" +"[b]注意:[/b]该方法在 macOS 上实现。" + +msgid "" +"Returns number of items in the global menu with ID [param menu_root].\n" +"[b]Note:[/b] This method is implemented on macOS." +msgstr "" +"返回 ID 为 [param menu_root] 的全局菜单中菜单项的数量。\n" +"[b]注意:[/b]该方法在 macOS 上实现。" + +msgid "" +"Returns the icon of the item at index [param idx].\n" +"[b]Note:[/b] This method is implemented on macOS." +msgstr "" +"返回索引为 [param idx] 的菜单项的图标。\n" +"[b]注意:[/b]该方法在 macOS 上实现。" + +msgid "" +"Returns the horizontal offset of the item at the given [param idx].\n" +"[b]Note:[/b] This method is implemented on macOS." +msgstr "" +"返回索引为 [param idx] 的菜单项的水平偏移量。\n" "[b]注意:[/b]该方法在 macOS 上实现。" msgid "" @@ -24910,8 +26580,8 @@ msgid "" "manually.\n" "[b]Note:[/b] This method is implemented on macOS." msgstr "" -"返回具有指定 [param tag] 的项的索引。索引由引擎自动分配给每个项。索引不能被手" -"动设置。\n" +"返回标签为指定的 [param tag] 的菜单项的索引。引擎会自动为每个菜单项赋予索引。" +"索引无法手动设置。\n" "[b]注意:[/b]该方法在 macOS 上实现。" msgid "" @@ -24920,8 +26590,31 @@ msgid "" "manually.\n" "[b]Note:[/b] This method is implemented on macOS." msgstr "" -"返回具有指定 [param text] 的项的索引。索引由引擎自动分配给每个项。索引不能被" -"手动设置。\n" +"返回文本为指定的 [param text] 的菜单项的索引。引擎会自动为每个菜单项赋予索" +"引。索引无法手动设置。\n" +"[b]注意:[/b]该方法在 macOS 上实现。" + +msgid "" +"Returns the callback of the item accelerator at index [param idx].\n" +"[b]Note:[/b] This method is implemented on macOS." +msgstr "" +"返回索引为 [param idx] 的菜单项的快捷键回调。\n" +"[b]注意:[/b]该方法在 macOS 上实现。" + +msgid "" +"Returns number of states of an multistate item. See [method " +"global_menu_add_multistate_item] for details.\n" +"[b]Note:[/b] This method is implemented on macOS." +msgstr "" +"返回多状态项的状态数。详情见 [method global_menu_add_multistate_item]。\n" +"[b]注意:[/b]该方法在 macOS 上实现。" + +msgid "" +"Returns the state of an multistate item. See [method " +"global_menu_add_multistate_item] for details.\n" +"[b]Note:[/b] This method is implemented on macOS." +msgstr "" +"返回多状态项的状态。详情见 [method global_menu_add_multistate_item]。\n" "[b]注意:[/b]该方法在 macOS 上实现。" msgid "" @@ -24929,20 +26622,53 @@ msgid "" "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。有关如何添加子菜单的更多信息,请参阅 " +"返回索引为 [param idx] 的菜单项的子菜单 ID。关于如何添加子菜单的更多信息见 " "[method global_menu_add_submenu_item]。\n" "[b]注意:[/b]该方法在 macOS 上实现。" msgid "" +"Returns the metadata of the specified item, which might be of any type. You " +"can set it with [method global_menu_set_item_tag], which provides a simple " +"way of assigning context data to items.\n" +"[b]Note:[/b] This method is implemented on macOS." +msgstr "" +"返回指定菜单项的元数据,可能是任何类型。元数据可以使用 [method " +"global_menu_set_item_tag] 设置,可以方法地为菜单项关联上下文数据。\n" +"[b]注意:[/b]该方法在 macOS 上实现。" + +msgid "" +"Returns the text of the item at index [param idx].\n" +"[b]Note:[/b] This method is implemented on macOS." +msgstr "" +"返回索引为 [param idx] 的菜单项的文本。\n" +"[b]注意:[/b]该方法在 macOS 上实现。" + +msgid "" +"Returns [code]true[/code] if the item at index [param idx] is checkable in " +"some way, i.e. if it has a checkbox or radio button.\n" +"[b]Note:[/b] This method is implemented on macOS." +msgstr "" +"如果索引为 [param idx] 的菜单项能够以某种方式选中,即有复选框或单选按钮,则返" +"回 [code]true[/code]。\n" +"[b]注意:[/b]该方法在 macOS 上实现。" + +msgid "" +"Returns [code]true[/code] if the item at index [param idx] is checked.\n" +"[b]Note:[/b] This method is implemented on macOS." +msgstr "" +"如果索引为 [param idx] 的菜单项处于选中状态,则返回 [code]true[/code]。\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" +"如果索引为 [param idx] 的菜单项处于禁用状态,则返回 [code]true[/code]。禁用状" +"态下无法被选中,也无法激活动作。\n" +"关于如何禁用菜单项的更多信息见 [method global_menu_set_item_disabled]。\n" "[b]注意:[/b]该方法在 macOS 上实现。" msgid "" @@ -24952,10 +26678,8 @@ msgid "" "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" +"如果索引为 [param idx] 的菜单项为单选按钮风格,则返回 [code]true[/code]。\n" +"[b]注意:[/b]仅为装饰作用;必须自行为单选组添加选中、取消选中的逻辑。\n" "[b]注意:[/b]该方法在 macOS 上实现。" msgid "" @@ -24965,21 +26689,24 @@ msgid "" "one.\n" "[b]Note:[/b] This method is implemented on macOS." msgstr "" -"从全局菜单 [param menu_root] 中移除索引 [param idx] 处的项。\n" -"[b]注意:[/b]被移除的项之后的项的索引将移动一位。\n" +"从全局菜单 [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" +"Sets whether the item at index [param idx] has a checkbox. If [code]false[/" +"code], sets the type of the item to plain text.\n" "[b]Note:[/b] This method is implemented on macOS." msgstr "" -"设置索引 [param idx] 处项的回调。按下项时发出回调。\n" -"[b]注意:[/b][param callback] Callable 需要恰好接受一个 Variant 参数,传递给 " -"Callable 的参数将是创建菜单项时传递给 tag 参数的值。\n" +"设置索引为 [param idx] 的菜单项是否为复选框。如果为 [code]false[/code],则会" +"将该菜单项的类型设置为纯文本。\n" +"[b]注意:[/b]该方法在 macOS 上实现。" + +msgid "" +"Sets the checkstate status of the item at index [param idx].\n" +"[b]Note:[/b] This method is implemented on macOS." +msgstr "" +"设置索引为 [param idx] 的菜单项的选中状态。\n" "[b]注意:[/b]该方法在 macOS 上实现。" msgid "" @@ -24987,8 +26714,52 @@ msgid "" "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" +"启用/禁用索引为 [param idx] 的菜单项。禁用状态下无法被选中,也无法激活动" +"作。\n" +"[b]注意:[/b]该方法在 macOS 上实现。" + +msgid "" +"Replaces the [Texture2D] icon of the specified [param idx].\n" +"[b]Note:[/b] This method is implemented on macOS.\n" +"[b]Note:[/b] This method is not supported by macOS \"_dock\" menu items." +msgstr "" +"替换指定索引 [param idx] 的 [Texture2D] 图标。\n" +"[b]注意:[/b]该方法在 macOS 上实现。\n" +"[b]注意:[/b]该方法不支持 macOS 的“_dock”菜单项。" + +msgid "" +"Sets the horizontal offset of the item at the given [param idx].\n" +"[b]Note:[/b] This method is implemented on macOS." +msgstr "" +"设置索引为 [param idx] 的菜单项的水平偏移量。\n" +"[b]注意:[/b]该方法在 macOS 上实现。" + +msgid "" +"Sets number of state of an multistate item. See [method " +"global_menu_add_multistate_item] for details.\n" +"[b]Note:[/b] This method is implemented on macOS." +msgstr "" +"设置多状态项的状态数。详情见 [method global_menu_add_multistate_item]。\n" +"[b]注意:[/b]该方法在 macOS 上实现。" + +msgid "" +"Sets the type of the item at the specified index [param idx] to radio " +"button. If [code]false[/code], sets the type of the item to plain text.\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]false[/code]," +"则会将该菜单项的类型设置为纯文本。\n" +"[b]注意:[/b]仅为装饰作用;必须自行为单选组添加选中、取消选中的逻辑。\n" +"[b]注意:[/b]该方法在 macOS 上实现。" + +msgid "" +"Sets the state of an multistate item. See [method " +"global_menu_add_multistate_item] for details.\n" +"[b]Note:[/b] This method is implemented on macOS." +msgstr "" +"设置多状态项的状态。详情见 [method global_menu_add_multistate_item]。\n" "[b]注意:[/b]该方法在 macOS 上实现。" msgid "" @@ -24996,15 +26767,32 @@ msgid "" "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" +"设置索引为 [param idx] 的菜单项的子菜单。子菜单是某个全局菜单根菜单项的 ID," +"点击该菜单项时会显示子菜单。\n" +"[b]注意:[/b]该方法在 macOS 上实现。" + +msgid "" +"Sets the metadata of an item, which may be of any type. You can later get it " +"with [method global_menu_get_item_tag], which provides a simple way of " +"assigning context data to items.\n" +"[b]Note:[/b] This method is implemented on macOS." +msgstr "" +"设置指定菜单项的元数据,可以是任何类型。后续可以使用 [method " +"global_menu_get_item_tag] 获取,可以方法地为菜单项关联上下文数据。\n" +"[b]注意:[/b]该方法在 macOS 上实现。" + +msgid "" +"Sets the text of the item at index [param idx].\n" +"[b]Note:[/b] This method is implemented on macOS." +msgstr "" +"设置索引为 [param idx] 的菜单项的文本。\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" +"设置索引为 [param idx] 的菜单项的工具提示 [String]。\n" "[b]注意:[/b]该方法在 macOS 上实现。" msgid "" @@ -25022,6 +26810,15 @@ msgstr "" "[b]注意:[/b]这个方法在 macOS、Windows 和 Linux(X11)上实现。" msgid "" +"Returns [code]true[/code] if touch events are available (Android or iOS), " +"the capability is detected on the Webplatform or if [member ProjectSettings." +"input_devices/pointing/emulate_touch_from_mouse] is [code]true[/code]." +msgstr "" +"如果触摸事件可用(Android 或 iOS)、在 Web 平台上检测到该功能或如果 [member " +"ProjectSettings.input_devices/pointing/emulate_touch_from_mouse] 为 " +"[code]true[/code] 时,则返回 [code]true[/code]。" + +msgid "" "Returns active keyboard layout index.\n" "[b]Note:[/b] This method is implemented on Linux (X11), macOS and Windows." msgstr "" @@ -25076,6 +26873,67 @@ msgid "Sets the current mouse mode. See also [method mouse_get_mode]." msgstr "设置当前的鼠标模式。另见 [method mouse_get_mode]。" msgid "" +"Returns the dots per inch density of the specified screen. If [param screen] " +"is [constant SCREEN_OF_MAIN_WINDOW] (the default value), a screen with the " +"main window will be used.\n" +"[b]Note:[/b] On macOS, returned value is inaccurate if fractional display " +"scaling mode is used.\n" +"[b]Note:[/b] On Android devices, the actual screen densities are grouped " +"into six generalized densities:\n" +"[codeblock]\n" +" ldpi - 120 dpi\n" +" mdpi - 160 dpi\n" +" hdpi - 240 dpi\n" +" xhdpi - 320 dpi\n" +" xxhdpi - 480 dpi\n" +"xxxhdpi - 640 dpi\n" +"[/codeblock]\n" +"[b]Note:[/b] This method is implemented on Android, Linux (X11), macOS and " +"Windows. Returns [code]72[/code] on unsupported platforms." +msgstr "" +"返回指定屏幕的每英寸点数密度。如果 [param screen] 为 [constant " +"SCREEN_OF_MAIN_WINDOW](默认值),则将使用带有主窗口的屏幕。\n" +"[b]注意:[/b]在 macOS 上,如果使用小数显示缩放模式,则返回值不准确。\n" +"[b]注意:[/b]在 Android 设备上,实际屏幕密度分为六种通用密度:\n" +"[codeblock]\n" +" ldpi - 120 dpi\n" +" mdpi - 160 dpi\n" +" hdpi - 240 dpi\n" +" xhdpi - 320 dpi\n" +" xxhdpi - 480 dpi\n" +"xxxhdpi - 640 dpi\n" +"[/codeblock]\n" +"[b]注意:[/b]该方法在 Android、Linux(X11)、macOS 和 Windows 上实现。在不受支" +"持的平台上返回 [code]72[/code]。" + +msgid "" +"Returns the current refresh rate of the specified screen. If [param screen] " +"is [constant SCREEN_OF_MAIN_WINDOW] (the default value), a screen with the " +"main window will be used.\n" +"[b]Note:[/b] Returns [code]-1.0[/code] if the DisplayServer fails to find " +"the refresh rate for the specified screen. On Web, [method " +"screen_get_refresh_rate] will always return [code]-1.0[/code] as there is no " +"way to retrieve the refresh rate on that platform.\n" +"To fallback to a default refresh rate if the method fails, try:\n" +"[codeblock]\n" +"var refresh_rate = DisplayServer.screen_get_refresh_rate()\n" +"if refresh_rate < 0:\n" +" refresh_rate = 60.0\n" +"[/codeblock]" +msgstr "" +"返回指定屏幕的当前刷新率。如果 [param screen] 为 [constant " +"SCREEN_OF_MAIN_WINDOW](默认值),将使用带有主窗口的屏幕。\n" +"[b]注意:[/b]如果 DisplayServer 未能找到指定屏幕的刷新率,则返回 [code]-1.0[/" +"code]。在 Web 上,[method screen_get_refresh_rate] 将始终返回 [code]-1.0[/" +"code],因为无法在该平台上检索到刷新率。\n" +"要在该方法失败时回退至默认刷新率,请尝试:\n" +"[codeblock]\n" +"var refresh_rate = DisplayServer.screen_get_refresh_rate()\n" +"if refresh_rate < 0:\n" +" refresh_rate = 60.0\n" +"[/codeblock]" + +msgid "" "Sets the [param screen]'s [param orientation]. See also [method " "screen_get_orientation]." msgstr "" @@ -25530,6 +27388,12 @@ msgid "" msgstr "代表主窗口所在的屏幕。如果函数允许指定不同的屏幕,这个值通常是默认值。" msgid "" +"The ID of the main window spawned by the engine, which can be passed to " +"methods expecting a [code]window_id[/code]." +msgstr "" +"主窗口的 ID,可以传给需要 [code]window_id[/code] 的方法,该窗口由引擎生成。" + +msgid "" "The ID that refers to a nonexisting window. This is be returned by some " "[DisplayServer] methods if no window matches the requested result." msgstr "" @@ -25677,6 +27541,19 @@ msgstr "" "水平尺寸调整光标。只在用于悬停的 [Control] 可以用鼠标调整水平大小时显示。另" "见 [constant CURSOR_HSPLIT]。" +msgid "" +"Move cursor. Intended to be displayed when the hovered [Control] can be " +"moved using the mouse." +msgstr "移动光标。应在能够使用鼠标移动被悬停 [Control] 时显示。" + +msgid "" +"Help cursor. On most cursor themes, this displays a question mark icon " +"instead of the mouse cursor. Intended to be used when the user has requested " +"help on the next element that will be clicked." +msgstr "" +"帮助光标。在大多数光标主题中显示为问号图标,不显示为鼠标光标。应在用户请求对" +"下一次点击的元素提供帮助信息时使用。" + msgid "Represents the size of the [enum CursorShape] enum." msgstr "代表 [enum CursorShape] 枚举的大小。" @@ -25700,6 +27577,31 @@ msgstr "" "最大化窗口模式,即 [Window] 会占据整个屏幕区域,任务栏除外,并且会显示边框。" "通常发生在按下最大化按钮时。" +msgid "" +"Full screen mode with full multi-window support.\n" +"Full screen window cover the entire display area of a screen, have no border " +"or decorations. Display video mode is not changed.\n" +"[b]Note:[/b] 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 "" +"具有完整多窗口支持的全屏模式。\n" +"全屏窗口覆盖屏幕的整个显示区域,没有边框或装饰。显示视频模式没有更改。\n" +"[b]注意:[/b] 无论平台如何,启用全屏都会更改窗口大小以匹配显示器的大小。因" +"此,请确保您的项目在启用全屏模式时支持[url=$DOCS_URL/tutorials/rendering/" +"multiple_resolutions.html]多种分辨率[/url]。" + +msgid "" +"The window do not have native title bar and other decorations. This flag is " +"ignored for full-screen windows." +msgstr "该窗口没有原生标题栏和其他装饰。全屏窗口会该标志。" + +msgid "" +"The window is floating on top of all other windows. This flag is ignored for " +"full-screen windows." +msgstr "该窗口悬浮在所有其他窗口之上。全屏窗口会该标志。" + msgid "Max value of the [enum WindowFlags]." msgstr "[enum WindowFlags] 的最大值。" @@ -25778,314 +27680,24 @@ 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]" +"Setup the DTLS server to use the given [param server_options]. See [method " +"TLSOptions.server]." 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]" +"设置 DTLS 服务器以使用给定的 [param server_options]。请参阅 [method " +"TLSOptions.server]。" + +msgid "" +"Try to initiate the DTLS handshake with the given [param udp_peer] which " +"must be already connected (see [method PacketPeerUDP.connect_to_host]).\n" +"[b]Note:[/b] You must check that the state of the return PacketPeerUDP is " +"[constant PacketPeerDTLS.STATUS_HANDSHAKING], as it is normal that 50% of " +"the new connections will be invalid due to cookie exchange." +msgstr "" +"尝试与给定 [param udp_peer] 启动 DTLS 握手,必须已连接到该 [param udp_peer]" +"(请参阅 [method PacketPeerUDP.connect_to_host])。\n" +"[b]注意:[/b]必须检查返回的 PacketPeerUDP 的状态是否为 [constant " +"PacketPeerDTLS.STATUS_HANDSHAKING],因为正常情况下,50% 的新连接会因为 " +"cookie 交换而无效。" msgid "Godot editor's command palette." msgstr "Godot 编辑器的命令面板。" @@ -26131,6 +27743,14 @@ msgid "" "Returns [code]true[/code] if the attached remote instance can be debugged." msgstr "如果附加的远程实例可以调试,则返回 [code]true[/code]。" +msgid "" +"Emitted when the attached remote instance enters a break state. If [param " +"can_debug] is [code]true[/code], the remote instance will enter the debug " +"loop." +msgstr "" +"当连接的远程实例进入中断状态时发出。如果 [param can_debug] 为 [code]true[/" +"code],则远程实例将进入调试循环。" + msgid "Emitted when the attached remote instance exits a break state." msgstr "当连接的远程实例退出中断状态时触发。" @@ -26139,6 +27759,34 @@ msgid "" "becomes active)." msgstr "当一个远程实例连接到该会话时触发(即该会话成为活动状态)。" +msgid "" +"Emitted when a remote instance is detached from this session (i.e. the " +"session becomes inactive)." +msgstr "当一个远程实例从该会话中分离出来时(即该会话变为非活动状态)发出。" + +msgid "" +"Identifies a supported export platform, and internally provides the " +"functionality of exporting to that platform." +msgstr "标识一个支持的导出平台,并在内部提供导出到该平台的功能。" + +msgid "" +"Base resource that provides the functionality of exporting a release build " +"of a project to a platform, from the editor. Stores platform-specific " +"metadata such as the name and supported features of the platform, and " +"performs the exporting of projects, PCK files, and ZIP files. Uses an export " +"template for the platform provided at the time of project exporting.\n" +"Used in scripting by [EditorExportPlugin] to configure platform-specific " +"customization of scenes and resources. See [method EditorExportPlugin." +"_begin_customize_scenes] and [method EditorExportPlugin." +"_begin_customize_resources] for more details." +msgstr "" +"基础资源,提供从编辑器将项目的发布构建导出到平台的功能。存储特定于平台的元数" +"据,例如平台的名称和支持的功能,并执行项目、PCK 文件和 ZIP 文件的导出。使用在" +"项目导出时提供的平台导出模板。\n" +"在 [EditorExportPlugin] 的脚本中用于配置特定于平台的场景和资源的定制。有关详" +"细信息,请参阅 [method EditorExportPlugin._begin_customize_scenes] 和 " +"[method EditorExportPlugin._begin_customize_resources]。" + msgid "A script that is executed when exporting the project." msgstr "在导出项目时执行的脚本。" @@ -26158,11 +27806,111 @@ msgstr "" "注册。" msgid "" +"Return [code]true[/code] if this plugin will customize resources based on " +"the platform and features used.\n" +"When enabled, [method _get_customization_configuration_hash], [method " +"_customize_resource] and [method _customize_scene] will be called and must " +"be implemented." +msgstr "" +"如果该插件将根据所使用的平台和功能自定义资源,则返回 [code]true[/code]。\n" +"启用后,[method _get_customization_configuration_hash]、[method " +"_customize_resource] 和 [method _customize_scene] 将被调用并且必须被实现。" + +msgid "" +"Return true if this plugin will customize scenes based on the platform and " +"features used." +msgstr "如果这个插件会根据所使用的平台和功能来定制场景,则返回 true。" + +msgid "" +"Customize a resource. If changes are made to it, return the same or a new " +"resource. Otherwise, return [code]null[/code].\n" +"The [i]path[/i] argument is only used when customizing an actual file, " +"otherwise this means that this resource is part of another one and it will " +"be empty.\n" +"Implementing this method is required if [method _begin_customize_resources] " +"returns [code]true[/code]." +msgstr "" +"定制一个资源。如果对其进行了修改,则返回相同的或新的资源。否则,返回 " +"[code]null[/code] 。\n" +"[i]path[/i] 参数只在定制一个实际文件时使用,否则这意味着这个资源是另一个资源" +"的一部分,并且它将是空的。\n" +"如果 [method _begin_customize_resources] 返回 [code]true[/code],则需要实现该" +"方法。" + +msgid "" +"Customize a scene. If changes are made to it, return the same or a new " +"scene. Otherwise, return [code]null[/code]. If a new scene is returned, it " +"is up to you to dispose of the old one.\n" +"Implementing this method is required if [method _begin_customize_resources] " +"returns [code]true[/code]." +msgstr "" +"定制一个场景。如果对其进行了修改,则返回相同的或新的场景。否则,返回 " +"[code]null[/code] 。如果返回一个新的场景,则由你来处理旧的场景。\n" +"如果 [method _begin_customize_resources] 返回 [code]true[/code],则需要实现该" +"方法。" + +msgid "This is called when the customization process for resources ends." +msgstr "资源的自定义处理完成时调用。" + +msgid "This is called when the customization process for scenes ends." +msgstr "场景的自定义处理完成时调用。" + +msgid "" +"Virtual method to be overridden by the user. It is called when the export " +"starts and provides all information about the export. [param features] is " +"the list of features for the export, [param is_debug] is [code]true[/code] " +"for debug builds, [param path] is the target path for the exported project. " +"[param flags] is only used when running a runnable profile, e.g. when using " +"native run on Android." +msgstr "" +"由用户重写的虚方法。它在导出开始时调用,并提供有关导出的所有信息。[param " +"features] 是导出的特性列表,[param is_debug] 是 [code]true[/code] 时用于调试" +"构建,[param path] 是导出项目的目标路径。[param flags] 仅在运行可运行配置文件" +"时使用,例如在 Android 上使用本机运行时。" + +msgid "" "Virtual method to be overridden by the user. Called when the export is " "finished." msgstr "可以被用户重写的虚方法。在导出完成后被调用。" msgid "" +"Return a hash based on the configuration passed (for both scenes and " +"resources). This helps keep separate caches for separate export " +"configurations.\n" +"Implementing this method is required if [method _begin_customize_resources] " +"returns [code]true[/code]." +msgstr "" +"根据传入的配置返回一个哈希值(对于场景和资源)。这有助于为单独的导出配置保留" +"单独的缓存。\n" +"如果 [method _begin_customize_resources] 返回 [code]true[/code],则需要实现该" +"方法。" + +msgid "" +"Return a [PackedStringArray] of additional features this preset, for the " +"given [param platform], should have." +msgstr "" +"返回该预设对于给定的 [param platform],应该具有的附加功能的 " +"[PackedStringArray]。" + +msgid "" +"Return the name identifier of this plugin (for future identification by the " +"exporter). The plugins are sorted by name before exporting.\n" +"Implementing this method is required." +msgstr "" +"返回该插件的名称标识符(供导出器将来识别)。插件在导出前按名称排序。\n" +"需要实现该方法。" + +msgid "" +"Adds a custom file to be exported. [param path] is the virtual path that can " +"be used to load the file, [param file] is the binary data of the file. If " +"[param remap] is [code]true[/code], file will not be exported, but instead " +"remapped to the given [param path]." +msgstr "" +"添加一个要导出的自定义文件。[param path] 是可以用来加载文件的虚拟路径," +"[param file]是文件的二进制数据。如果 [param remap] 为 [code]true[/code],则文" +"件将不会被导出,而是被重新映射到给定的 [param path]。" + +msgid "" "Adds a C++ code to the iOS export. The final code is created from the code " "appended by each active export plugin." msgstr "" @@ -26186,6 +27934,29 @@ msgid "Adds a static lib from the given [param path] to the iOS project." msgstr "向 iOS 项目中添加位于给定路径 [param path] 的静态库。" msgid "" +"Adds file or directory matching [param path] to [code]PlugIns[/code] " +"directory of macOS app bundle.\n" +"[b]Note:[/b] This is useful only for macOS exports." +msgstr "" +"将匹配 [param path] 的文件或目录,添加到 macOS 应用程序包的 [code]PlugIns[/" +"code] 目录中。\n" +"[b]注意:[/b]仅适用于 macOS 导出。" + +msgid "" +"Adds a shared object or a directory containing only shared objects with the " +"given [param tags] and destination [param path].\n" +"[b]Note:[/b] In case of macOS exports, those shared objects will be added to " +"[code]Frameworks[/code] directory of app bundle.\n" +"In case of a directory code-sign will error if you place non code object in " +"directory." +msgstr "" +"添加一个共享对象或仅包含具有给定 [param tags] 和目标 [param path] 的共享对象" +"的目录。\n" +"[b]注意:[/b]使用 macOS 导出时,这些共享对象将被添加到应用程序包的 " +"[code]Frameworks[/code] 目录中。\n" +"如果使用的是目录,如果将非代码对象放在该目录中,则代码签名时会报错。" + +msgid "" "To be called inside [method _export_file]. Skips the current file, so it's " "not included in the export." msgstr "在 [method _export_file] 中调用。跳过当前文件,因此它不包括在导出中。" @@ -26215,6 +27986,41 @@ msgid "Returns the specified [param feature]'s human-readable name." msgstr "返回指定特性 [param feature] 的人类可读名称。" msgid "" +"Returns [code]true[/code] if the class specified by [param class_name] is " +"disabled. When disabled, the class won't appear in the Create New Node " +"dialog." +msgstr "" +"如果 [param class_name] 指定的类被禁用,则返回 [code]true[/code]。被禁用时," +"该类不会出现在“创建 Node”对话框中。" + +msgid "" +"Returns [code]true[/code] if editing for the class specified by [param " +"class_name] is disabled. When disabled, the class will still appear in the " +"Create New Node dialog but the Inspector will be read-only when selecting a " +"node that extends the class." +msgstr "" +"如果由 [param class_name] 指定的类的编辑被禁用,则返回 [code]true[/code]。被" +"禁用时,该类仍会出现在“创建 Node”对话框中,但在选择继承该类的节点时,检查器将" +"是只读的。" + +msgid "" +"Returns [code]true[/code] if [param property] is disabled in the class " +"specified by [param class_name]. When a property is disabled, it won't " +"appear in the Inspector when selecting a node that extends the class " +"specified by [param class_name]." +msgstr "" +"如果在 [param class_name] 指定的类中禁用 [param property],则返回 " +"[code]true[/code]。当属性被禁用时,在选择继承由 [param class_name] 指定的类的" +"节点时,该属性将不会出现在检查器中。" + +msgid "" +"Returns [code]true[/code] if the [param feature] is disabled. When a feature " +"is disabled, it will disappear from the editor entirely." +msgstr "" +"如果 [param feature] 被禁用,则返回 [code]true[/code]。当一个功能被禁用时,它" +"将从编辑器中完全消失。" + +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." @@ -26321,6 +28127,26 @@ msgstr "" "[EditorFileDialog] 是 [FileDialog] 的增强版,只对编辑器插件可用。额外的功能包" "括收藏/最近文件列表和以缩略图网格而不是列表的形式查看文件的能力。" +msgid "" +"Adds a comma-delimited file name [param filter] option to the " +"[EditorFileDialog] with an optional [param description], which restricts " +"what files can be picked.\n" +"A [param filter] should be of the form [code]\"filename.extension\"[/code], " +"where filename and extension can be [code]*[/code] to match any string. " +"Filters starting with [code].[/code] (i.e. empty filenames) are not " +"allowed.\n" +"For example, a [param filter] of [code]\"*.tscn, *.scn\"[/code] and a [param " +"description] of [code]\"Scenes\"[/code] results in filter text \"Scenes (*." +"tscn, *.scn)\"." +msgstr "" +"将一个逗号分隔的文件名 [param filter] 且带有可选 [param description] 的选项添" +"加到的 [EditorFileDialog],这限制了可以选择的文件。\n" +"[param filter] 的格式应为 [code]\"文件名.扩展名\"[/code],其中文件名和扩展名" +"可以是 [code]*[/code],以匹配任意字符串。不允许使用以 [code].[/code] 开头的过" +"滤器(即空文件名)。\n" +"例如,[code]\"*.tscn, *.scn\"[/code] 的 [param filter] 和 [code]\"场景\"[/" +"code] 的 [param description] 会产生过滤文本“场景 (* .tscn, *.scn)”。" + msgid "Removes all filters except for \"All Files (*)\"." msgstr "移除“All Files(*)”筛选器之外的所有筛选器。" @@ -26377,6 +28203,20 @@ msgid "" "user." msgstr "[EditorFileDialog] 向用户显示资源的视图格式。" +msgid "" +"The dialog's open or save mode, which affects the selection behavior. See " +"[enum FileMode]." +msgstr "对话框的打开或保存模式,会影响选择行为。见 [enum FileMode]。" + +msgid "" +"If [code]true[/code], hidden files and directories will be visible in the " +"[EditorFileDialog]. This property is synchronized with [member " +"EditorSettings.filesystem/file_dialog/show_hidden_files]." +msgstr "" +"如果为 [code]true[/code],隐藏的文件和目录将在 [EditorFileDialog] 中可见。该" +"属性与 [member EditorSettings.filesystem/file_dialog/show_hidden_files] 同" +"步。" + msgid "Emitted when a directory is selected." msgstr "选择目录时触发。" @@ -26526,6 +28366,14 @@ msgid "Returns the path to the file at index [param idx]." msgstr "返回索引 [param idx] 处的文件所在路径。" msgid "" +"Returns the name of the script class defined in the file at index [param " +"idx]. If the file doesn't define a script class using the [code]class_name[/" +"code] syntax, this will return an empty string." +msgstr "" +"返回索引 [param idx] 处文件中定义的脚本类的名称。如果文件没有使用 " +"[code]class_name[/code] 语法定义脚本类,这将返回一个空字符串。" + +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]." @@ -26553,6 +28401,9 @@ msgstr "返回在索引 [param idx] 处的子目录。" msgid "Returns the number of subdirectories in this directory." msgstr "返回这个目录的子目录的数量。" +msgid "Used to query and configure import format support." +msgstr "用于查询和配置导入格式支持。" + msgid "" "This class is used to query and configure a certain import format. It is " "used in conjunction with asset format import plugins." @@ -26564,6 +28415,9 @@ msgstr "返回支持的文件扩展名。" msgid "Return whether this importer is active." msgstr "返回此导入器是否处于活动状态。" +msgid "Query support. Return false if import must not continue." +msgstr "查询支持。如果不能继续导入,则返回 false。" + msgid "" "Registers a custom resource importer in the editor. Use the class to parse " "any file and import it as a new resource type." @@ -27058,6 +28912,37 @@ msgstr "检查器插件" msgid "Returns [code]true[/code] if this object can be handled by this plugin." msgstr "如果此插件可以处理此对象返回 [code]true[/code]。" +msgid "" +"Called to allow adding controls at the beginning of the property list for " +"[param object]." +msgstr "可以将控件添加在 [param object] 的属性列表开头时调用。" + +msgid "" +"Called to allow adding controls at the beginning of a category in the " +"property list for [param object]." +msgstr "可以将控件添加在 [param object] 属性列表中的某个分类开头时调用。" + +msgid "" +"Called to allow adding controls at the end of the property list for [param " +"object]." +msgstr "可以将控件添加在 [param object] 的属性列表末尾时调用。" + +msgid "" +"Called to allow adding controls at the beginning of a group or a sub-group " +"in the property list for [param object]." +msgstr "" +"可以将控件添加在 [param object] 属性列表的某个分组或子分组的开头时调用。" + +msgid "" +"Called to allow adding property-specific editors to the property list for " +"[param object]. The added editor control must extend [EditorProperty]. " +"Returning [code]true[/code] removes the built-in editor for this property, " +"otherwise allows to insert a custom editor before the built-in one." +msgstr "" +"可以为 [param object] 的属性列表添加针对属性的编辑器时调用。这些编辑器必须继" +"承 [EditorProperty]。返回 [code]true[/code] 会移除该属性的内置编辑器,否则会" +"在内置编辑器之前插入自定义编辑器。" + msgid "Adds a custom control, which is not necessarily a property editor." msgstr "添加自定义控件,它不一定是属性编辑器。" @@ -27219,12 +29104,27 @@ msgstr "" "inspector_only] 为 [code]true[/code] ,插件将不会试图编辑 [param object]。" msgid "" +"Returns [code]true[/code] if Movie Maker mode is enabled in the editor. See " +"also [method set_movie_maker_enabled]. See [MovieWriter] for more " +"information." +msgstr "" +"如果编辑器启用了 Movie Maker 模式,则返回 [code]true[/code]。另见 [method " +"set_movie_maker_enabled]。详情见 [MovieWriter]。" + +msgid "" "Returns [code]true[/code] if a scene is currently being played, [code]false[/" "code] otherwise. Paused scenes are considered as being played." msgstr "" "如果场景正在播放,返回 [code]true[/code],否则返回 [code]false[/code]。暂停的" "场景将被视为正在播放。" +msgid "" +"Returns [code]true[/code] if the specified [param plugin] is enabled. The " +"plugin name is the same as its directory name." +msgstr "" +"如果启用了指定的 [param plugin],则返回 [code]true[/code]。插件名称与其目录名" +"称相同。" + msgid "Opens the scene at the given path." msgstr "打开给定路径中的场景。" @@ -27261,6 +29161,22 @@ msgid "" msgstr "在文件系统面板中选中文件,路径由 [param file] 提供。" msgid "" +"Sets the editor's current main screen to the one specified in [param name]. " +"[param name] must match the text of the tab in question exactly ([code]2D[/" +"code], [code]3D[/code], [code]Script[/code], [code]AssetLib[/code])." +msgstr "" +"将编辑器的当前主屏幕设置为 [param name] 中指定的屏幕。[param name] 必须与相关" +"选项卡的文本完全匹配([code]2D[/code]、[code]3D[/code]、[code]Script[/code]、" +"[code]AssetLib[/code])。" + +msgid "" +"Sets whether Movie Maker mode is enabled in the editor. See also [method " +"is_movie_maker_enabled]. See [MovieWriter] for more information." +msgstr "" +"设置是否在编辑器中启用 Movie Maker 模式。参见 [method " +"is_movie_maker_enabled]。有关详细信息,请参阅 [MovieWriter]。" + +msgid "" "Sets the enabled status of a plugin. The plugin name is the same as its " "directory name." msgstr "设置插件的启用状态。插件名称与其目录名称相同。" @@ -27289,6 +29205,82 @@ msgstr "" "[EditorNode3DGizmoPlugin]。" msgid "" +"Override this method to commit a handle being edited (handles must have been " +"previously added by [method add_handles]). This usually means creating an " +"[UndoRedo] action for the change, using the current handle value as \"do\" " +"and the [param restore] argument as \"undo\".\n" +"If the [param cancel] argument is [code]true[/code], the [param restore] " +"value should be directly set, without any [UndoRedo] action.\n" +"The [param secondary] argument is [code]true[/code] when the committed " +"handle is secondary (see [method add_handles] for more information)." +msgstr "" +"重写该方法以提交一个正在编辑的控柄(控柄必须是之前通过 [method add_handles] " +"添加的)。这通常意味着为该修改创建一个 [UndoRedo] 动作,将当前控柄值用" +"作“做”,并将 [param restore] 参数用作“撤销”。\n" +"如果 [param cancel] 参数为 [code]true[/code],则应直接设置 [param restore] " +"值,而不需要任何 [UndoRedo] 动作。\n" +"当提交的控柄为次要时,[param secondary] 参数为 [code]true[/code](有关更多信" +"息,请参阅 [method add_handles])。" + +msgid "" +"Override this method to commit a group of subgizmos being edited (see " +"[method _subgizmos_intersect_ray] and [method " +"_subgizmos_intersect_frustum]). This usually means creating an [UndoRedo] " +"action for the change, using the current transforms as \"do\" and the [param " +"restores] transforms as \"undo\".\n" +"If the [param cancel] argument is [code]true[/code], the [param restores] " +"transforms should be directly set, without any [UndoRedo] action." +msgstr "" +"重写该方法以提交一组正在编辑的子小工具(参见 [method " +"_subgizmos_intersect_ray] 和 [method _subgizmos_intersect_frustum])。这通常" +"意味着为该更改创建一个 [UndoRedo] 动作,将当前变换用作“做”,并将 [param " +"restores] 变换用作“撤消”。\n" +"如果 [param cancel] 参数为 [code]true[/code],则应直接设置 [param restores] " +"变换,而无需任何 [UndoRedo] 动作。" + +msgid "" +"Override this method to return the name of an edited handle (handles must " +"have been previously added by [method add_handles]). Handles can be named " +"for reference to the user when editing.\n" +"The [param secondary] argument is [code]true[/code] when the requested " +"handle is secondary (see [method add_handles] for more information)." +msgstr "" +"重写该方法以返回编辑的控柄的名称(控柄必须先前通过 [method add_handles] 添加" +"的)。可以命名控柄以供用户在编辑时引用。\n" +"当请求的控柄是次要手柄时,[param secondary] 参数为 [code]true[/code](有关更" +"多信息,请参阅 [method add_handles])。" + +msgid "" +"Override this method to return the current value of a handle. This value " +"will be requested at the start of an edit and used as the [code]restore[/" +"code] argument in [method _commit_handle].\n" +"The [param secondary] argument is [code]true[/code] when the requested " +"handle is secondary (see [method add_handles] for more information)." +msgstr "" +"重写该方法以返回一个控柄的当前值。该值将在编辑开始时被请求,并用作 [method " +"_commit_handle] 中的 [code]restore[/code] 参数。\n" +"当请求的控柄是次要控柄时,[param secondary] 参数为 [code]true[/code](有关更" +"多信息,请参阅 [method add_handles])。" + +msgid "" +"Override this method to return the current transform of a subgizmo. This " +"transform will be requested at the start of an edit and used as the " +"[code]restore[/code] argument in [method _commit_subgizmos]." +msgstr "" +"重写该方法以返回子小工具的当前变换。该变换将在编辑开始时被请求,并用作 " +"[method _commit_subgizmos] 中的 [code]restore[/code] 参数。" + +msgid "" +"Override this method to update the node properties during subgizmo editing " +"(see [method _subgizmos_intersect_ray] and [method " +"_subgizmos_intersect_frustum]). The [param transform] is given in the " +"Node3D's local coordinate system." +msgstr "" +"重写该方法以在子小工具编辑期间更新节点属性(参见 [method " +"_subgizmos_intersect_ray] 和 [method _subgizmos_intersect_frustum])。[param " +"transform] 是在 Node3D 的局部坐标系中给出的。" + +msgid "" "Adds lines to the gizmo (as sets of 2 points), with a given material. The " "lines are used for visualizing the gizmo. Call this method during [method " "_redraw]." @@ -27330,6 +29322,11 @@ msgstr "" "设置该小工具的隐藏状态。如果为 [code]true[/code],则该小工具将被隐藏。如果为 " "[code]false[/code] 则会显示。" +msgid "" +"Sets the reference [Node3D] node for the gizmo. [param node] must inherit " +"from [Node3D]." +msgstr "设置该小工具参考的 [Node3D] 节点。[parma node] 必须继承自 [Node3D]。" + msgid "Used by the editor to define Node3D gizmo types." msgstr "被编辑器用来定义 Node3D 小工具类型。" @@ -27385,6 +29382,73 @@ msgstr "编辑器专用单例,返回特定于操作系统的各种数据文件 msgid "File paths in Godot projects" msgstr "Godot 项目中的文件路径" +msgid "" +"Returns the absolute path to the user's cache folder. This folder should be " +"used for temporary data that can be removed safely whenever the editor is " +"closed (such as generated resource thumbnails).\n" +"[b]Default paths per platform:[/b]\n" +"[codeblock]\n" +"- Windows: %LOCALAPPDATA%\\Godot\\\n" +"- macOS: ~/Library/Caches/Godot/\n" +"- Linux: ~/.cache/godot/\n" +"[/codeblock]" +msgstr "" +"返回用户缓存文件夹的绝对路径。该文件夹应该用于临时数据,关闭编辑器时应该能够" +"安全地移除这些数据(例如生成的资源预览图)。\n" +"[b]各平台的默认路径:[/b]\n" +"[codeblock]\n" +"- Windows: %LOCALAPPDATA%\\Godot\\\n" +"- macOS: ~/Library/Caches/Godot/\n" +"- Linux: ~/.cache/godot/\n" +"[/codeblock]" + +msgid "" +"Returns the absolute path to the user's configuration folder. This folder " +"should be used for [i]persistent[/i] user configuration files.\n" +"[b]Default paths per platform:[/b]\n" +"[codeblock]\n" +"- Windows: %APPDATA%\\Godot\\ (same as `get_data_dir()`)\n" +"- macOS: ~/Library/Application Support/Godot/ (same as `get_data_dir()`)\n" +"- Linux: ~/.config/godot/\n" +"[/codeblock]" +msgstr "" +"返回用户配置文件夹的绝对路径。该文件夹应该用于[i]持久化[/i]的用户配置文件。\n" +"[b]各平台的默认路径:[/b]\n" +"[codeblock]\n" +"- Windows: %APPDATA%\\Godot\\ (同 `get_data_dir()`)\n" +"- macOS: ~/Library/Application Support/Godot/ (同 `get_data_dir()`)\n" +"- Linux: ~/.config/godot/\n" +"[/codeblock]" + +msgid "" +"Returns the absolute path to the user's data folder. This folder should be " +"used for [i]persistent[/i] user data files such as installed export " +"templates.\n" +"[b]Default paths per platform:[/b]\n" +"[codeblock]\n" +"- Windows: %APPDATA%\\Godot\\ (same as " +"`get_config_dir()`)\n" +"- macOS: ~/Library/Application Support/Godot/ (same as `get_config_dir()`)\n" +"- Linux: ~/.local/share/godot/\n" +"[/codeblock]" +msgstr "" +"返回用户数据文件夹的绝对路径。该文件夹应该用于[i]持久化[/i]的用户数据文件,例" +"如已安装的导出模板。\n" +"[b]各平台的默认路径:[/b]\n" +"[codeblock]\n" +"- Windows:%APPDATA%\\Godot\\ (同 `get_config_dir()` )\n" +"- macOS:~/Library/Application Support/Godot/ (同 `get_config_dir()` )\n" +"- Linux:~/.local/share/godot/\n" +"[/codeblock]" + +msgid "" +"Returns the project-specific editor settings path. Projects all have a " +"unique subdirectory inside the settings path where project-specific editor " +"settings are saved." +msgstr "" +"返回针对项目的编辑器设置路径。各个项目在设置路径中都有一个独立的子目录,用于" +"保存针对项目的编辑器设置。" + msgid "Used by the editor to extend its functionality." msgstr "由编辑器使用,用于扩展其功能。" @@ -27840,6 +29904,9 @@ msgstr "" "这个方法在编辑器保存项目后或关闭项目时被调用,它要求插件保存编辑的外部场景/资" "源。" +msgid "Adds a script at [param path] to the Autoload list as [param name]." +msgstr "将 [param path] 处的脚本作为 [param name] 添加到自动加载列表中。" + msgid "" "Adds a control to the bottom panel (together with Output, Debug, Animation, " "etc). Returns a reference to the button added. It's up to you to hide/show " @@ -28136,6 +30203,17 @@ msgstr "" "如果添加的任何控件可以获得键盘焦点,将其添加到此处。这样可以确保在检查器被刷" "新时恢复焦点。" +msgid "" +"If one or several properties have changed, this must be called. [param " +"field] is used in case your editor can modify fields separately (as an " +"example, Vector3.x). The [param changing] argument avoids the editor " +"requesting this property to be refreshed (leave as [code]false[/code] if " +"unsure)." +msgstr "" +"如果一个或几个属性发生了变化,必然会调用这个函数。[param field] 用于您的编辑" +"器可以单独修改字段的情况(例如,Vector3.x)。[param changing] 参数可以避免编" +"辑器请求刷新该属性(如果不确定,请保留为 [code]false[/code])。" + msgid "Gets the edited object." msgstr "获取编辑后的对象。" @@ -28223,6 +30301,19 @@ msgstr "" "身或子检查器控制的。" msgid "" +"This virtual method is called when updating the context menu of " +"[EditorResourcePicker]. Implement this method to override the \"New ...\" " +"items with your own options. [param menu_node] is a reference to the " +"[PopupMenu] node.\n" +"[b]Note:[/b] Implement [method _handle_menu_selected] to handle these custom " +"items." +msgstr "" +"在更新 [EditorResourcePicker] 的上下文菜单时调用该虚方法。实现该方法以使用您" +"自己的选项覆盖“新建 ...”项目。[param menu_node] 是对 [PopupMenu] 节点的引" +"用。\n" +"[b]注意:[/b]实现 [method _handle_menu_selected] 来处理这些自定义项。" + +msgid "" "Returns a list of all allowed types and subtypes corresponding to the " "[member base_type]. If the [member base_type] is empty, an empty list is " "returned." @@ -28258,6 +30349,14 @@ msgstr "" msgid "Emitted when the value of the edited resource was changed." msgstr "当正在编辑的资源改变值时发出。" +msgid "" +"Emitted when the resource value was set and user clicked to edit it. When " +"[param inspect] is [code]true[/code], the signal was caused by the context " +"menu \"Edit\" or \"Inspect\" option." +msgstr "" +"当资源值被设置,并且用户点击它编辑时触发。当 [param inspect] 为 [code]true[/" +"code] 时,该信号是由上下文菜单“编辑”或“检查”选项引起的。" + msgid "Helper to generate previews of resources or files." msgstr "帮助生成资源或文件的预览。" @@ -28279,6 +30378,42 @@ msgid "" "corresponding signal emitted." msgstr "检查资源是否发生变化,如果发生变化,则无效,并发出相应的信号。" +msgid "" +"Queue the [param resource] being edited for preview. Once the preview is " +"ready, the [param receiver]'s [param receiver_func] will be called. The " +"[param receiver_func] must take the following four arguments: [String] path, " +"[Texture2D] preview, [Texture2D] thumbnail_preview, [Variant] userdata. " +"[param userdata] can be anything, and will be returned when [param " +"receiver_func] is called.\n" +"[b]Note:[/b] If it was not possible to create the preview the [param " +"receiver_func] will still be called, but the preview will be null." +msgstr "" +"将正在编辑的 [param resource] 排队以供预览。预览准备就绪后,将调用 [param " +"receiver] 的 [param receiver_func]。[param receiver_func] 必须接受以下四个参" +"数:[String] path、[Texture2D] preview、[Texture2D] thumbnail_preview、" +"[Variant] userdata。[param userdata] 可以是任何东西,并将在调用 [param " +"receiver_func] 时返回。\n" +"[b]注意:[/b]如果无法创建预览,[param receiver_func] 仍将被调用,但 preview " +"将为 null。" + +msgid "" +"Queue a resource file located at [param path] for preview. Once the preview " +"is ready, the [param receiver]'s [param receiver_func] will be called. The " +"[param receiver_func] must take the following four arguments: [String] path, " +"[Texture2D] preview, [Texture2D] thumbnail_preview, [Variant] userdata. " +"[param userdata] can be anything, and will be returned when [param " +"receiver_func] is called.\n" +"[b]Note:[/b] If it was not possible to create the preview the [param " +"receiver_func] will still be called, but the preview will be null." +msgstr "" +"将位于 [param path] 的资源文件排队以供预览。预览准备就绪后,将调用 [param " +"receiver] 的 [param receiver_func]。[param receiver_func] 必须接受以下四个参" +"数:[String] path、[Texture2D] preview、[Texture2D] thumbnail_preview、" +"[Variant] userdata。[param userdata] 可以是任何东西,并将在调用 [param " +"receiver_func] 时返回。\n" +"[b]注意:[/b]如果无法创建预览,[param receiver_func] 仍将被调用,但 preview " +"将为 null。" + msgid "Removes a custom preview generator." msgstr "移除自定义预览生成器。" @@ -28305,6 +30440,12 @@ msgstr "" "返回空纹理是失败的好方法,并让另一个生成器负责。\n" "注意!,因为始终从线程(而不是主线程)调用此函数。" +msgid "" +"Returns [code]true[/code] if your generator supports the resource of type " +"[param type]." +msgstr "" +"如果您的生成器支持类型为 [param type] 的资源,则返回 [code]true[/code]。" + msgid "Imports scenes from third-parties' 3D files." msgstr "从第三方的 3D 文件中导入场景。" @@ -28439,6 +30580,22 @@ msgstr "返回导入的源文件路径(如[code]res://scene.dae[/code])。" msgid "Plugin to control and modifying the process of importing a scene." msgstr "用于控制和修改导入场景的过程的插件。" +msgid "" +"Return true or false whether a given option should be visible. Return null " +"to ignore." +msgstr "返回给定的选项是否应该可见。忽略时返回 null。" + +msgid "" +"Post process the scene. This function is called after the final scene has " +"been configured." +msgstr "对场景进行后期处理。该方法会在最终场景配置完成后调用。" + +msgid "" +"Pre Process the scene. This function is called right after the scene format " +"loader loaded the scene and no changes have been made." +msgstr "" +"对场景进行预处理。该方法会在场景格式加载器加载场景后、尚未进行更改时调用。" + msgid "Base script that can be used to add extension functions to the editor." msgstr "可用于为编辑器添加扩展功能的基础脚本。" @@ -28513,6 +30670,13 @@ msgstr "" msgid "This method is executed by the Editor when [b]File > Run[/b] is used." msgstr "当使用[b]文件 > 运行[/b]时,此方法由编辑器执行。" +msgid "" +"Adds [param node] as a child of the root node in the editor context.\n" +"[b]Warning:[/b] The implementation of this method is currently disabled." +msgstr "" +"在编辑器上下文中,将 [param node] 添加为根节点的子节点。\n" +"[b]警告:[/b]该方法的实现目前已被禁用。" + msgid "Returns the [EditorInterface] singleton instance." msgstr "返回 [EditorInterface] 单例的实例。" @@ -28590,23 +30754,111 @@ msgstr "更改选择时发出。" msgid "Object that holds the project-independent editor settings." msgstr "保存与项目无关的编辑器设置的对象。" +msgid "" +"Checks if any settings with the prefix [param setting_prefix] exist in the " +"set of changed settings. See also [method get_changed_settings]." +msgstr "" +"检查已改变的设置中是否存在前缀为 [param setting_prefix] 的设置项。另见 " +"[method get_changed_settings]。" + +msgid "Erases the setting whose name is specified by [param property]." +msgstr "擦除名称为 [param property] 的设置项。" + msgid "Returns the list of favorite files and directories for this project." msgstr "返回本项目最收藏的文件和目录列表。" msgid "" +"Returns project-specific metadata for the [param section] and [param key] " +"specified. If the metadata doesn't exist, [param default] will be returned " +"instead. See also [method set_project_metadata]." +msgstr "" +"返回由 [param section]、[param key]、[param data] 指定的针对项目的元数据。如" +"果该元数据不存在,则返回 [param default]。另见 [method " +"set_project_metadata]。" + +msgid "" "Returns the list of recently visited folders in the file dialog for this " "project." msgstr "返回此项目文件对话框中最近访问的文件夹列表。" +msgid "" +"Returns the value of the setting specified by [param name]. This is " +"equivalent to using [method Object.get] on the EditorSettings instance." +msgstr "" +"返回由 [param name] 指定的设置项的值。等价于在 EditorSettings 实例上使用 " +"[method Object.get]。" + +msgid "" +"Returns [code]true[/code] if the setting specified by [param name] exists, " +"[code]false[/code] otherwise." +msgstr "" +"如果由 [param name] 指定的设置项存在则返回 [code]true[/code],否则返回 " +"[code]false[/code]。" + +msgid "" +"Marks the passed editor setting as being changed, see [method " +"get_changed_settings]. Only settings which exist (see [method has_setting]) " +"will be accepted." +msgstr "" +"将传入的编辑器设置项标记为已更改,见 [method get_changed_settings]。仅接受存" +"在的设置项(见 [method has_setting])。" + +msgid "" +"Overrides the built-in editor action [param name] with the input actions " +"defined in [param actions_list]." +msgstr "" +"使用 [param actions_list] 中定义的输入动作覆盖内置的编辑器动作 [param name]。" + msgid "Sets the list of favorite files and directories for this project." msgstr "设置此项目为收藏的文件和目录列表。" msgid "" +"Sets the initial value of the setting specified by [param name] to [param " +"value]. This is used to provide a value for the Revert button in the Editor " +"Settings. If [param update_current] is true, the current value of the " +"setting will be set to [param value] as well." +msgstr "" +"将由 [param name] 指定的设置项的初始值设置为 [param value]。用于在“编辑器设" +"置”中为“恢复”按钮提供值。如果 [param update_current] 为 true,则该设置的当前" +"值也会被设为 [param value]。" + +msgid "" +"Sets project-specific metadata with the [param section], [param key] and " +"[param data] specified. This metadata is stored outside the project folder " +"and therefore won't be checked into version control. See also [method " +"get_project_metadata]." +msgstr "" +"设置由 [param section]、[param key]、[param data] 指定的针对项目的元数据。该" +"元数据保存在项目文件夹之外,因此不会加入到版本控制中。另见 [method " +"get_project_metadata]。" + +msgid "" "Sets the list of recently visited folders in the file dialog for this " "project." msgstr "在文件对话框中设置本项目最近访问过的文件夹列表。" msgid "" +"Sets the [param value] of the setting specified by [param name]. This is " +"equivalent to using [method Object.set] on the EditorSettings instance." +msgstr "" +"将有 [param name] 指定的设置项设置为 [param value]。等价于在 EditorSettings " +"实例上使用 [method Object.set]。" + +msgid "" +"List of file extensions to consider as editable text files in the FileSystem " +"dock (by double-clicking on the files)." +msgstr "" +"文件扩展名列表,“文件系统”面板会将这些文件认为是可编辑的文本文件(在文件上双" +"击编辑)。" + +msgid "" +"The thumbnail size to use in the FileSystem dock (in pixels). See also " +"[member filesystem/file_dialog/thumbnail_size]." +msgstr "" +"“文件系统”面板中使用的缩略图尺寸(单位为像素)。另见 [member filesystem/" +"file_dialog/thumbnail_size]。" + +msgid "" "The refresh interval to use for the Inspector dock's properties. The effect " "of this setting is mainly noticeable when adjusting gizmos in the 2D/3D " "editor and looking at the inspector at the same time. Lower values make the " @@ -28667,6 +30919,18 @@ msgstr "" "2D 骨架编辑器中的骨骼宽度(单位为像素)。另见 [member editors/2d/" "bone_outline_size]。" +msgid "" +"If [code]true[/code], prevents the 2D editor viewport from leaving the " +"scene. Limits are calculated dynamically based on nodes present in the " +"current scene. If [code]false[/code], the 2D editor viewport will be able to " +"move freely, but you risk getting lost when zooming out too far. You can " +"refocus on the scene by selecting a node then pressing [kbd]F[/kbd]." +msgstr "" +"如果为 [code]true[/code],则防止 2D 编辑器视图离开场景。限制是根据当前场景中" +"存在的节点动态计算的。如果为 [code]false[/code],则 2D 编辑器视图将能够自由移" +"动,但如果缩得太小就可能会迷失方向。要重新聚焦场景,你可以选中某节点并按 " +"[kbd]F[/kbd] 键。" + msgid "The grid color to use in the 2D editor." msgstr "2D 编辑器使用的栅格颜色。" @@ -28676,6 +30940,35 @@ msgid "" msgstr "2D 编辑器使用的参考线颜色。可以通过从标尺上拖动鼠标光标来创建参考线。" msgid "" +"The navigation scheme to use when freelook is enabled in the 3D editor. Some " +"of the navigation schemes below may be more convenient when designing " +"specific levels in the 3D editor.\n" +"- [b]Default:[/b] The \"Freelook Forward\", \"Freelook Backward\", " +"\"Freelook Up\" and \"Freelook Down\" keys will move relative to the camera, " +"taking its pitch angle into account for the movement.\n" +"- [b]Partially Axis-Locked:[/b] The \"Freelook Forward\" and \"Freelook " +"Backward\" keys will move relative to the camera, taking its pitch angle " +"into account for the movement. The \"Freelook Up\" and \"Freelook Down\" " +"keys will move in an \"absolute\" manner, [i]not[/i] taking the camera's " +"pitch angle into account for the movement.\n" +"- [b]Fully Axis-Locked:[/b] The \"Freelook Forward\", \"Freelook Backward\", " +"\"Freelook Up\" and \"Freelook Down\" keys will move in an \"absolute\" " +"manner, [i]not[/i] taking the camera's pitch angle into account for the " +"movement.\n" +"See also [member editors/3d/navigation/navigation_scheme]." +msgstr "" +"在 3D 编辑器中启用自由观看时使用的导航方案。在 3D 编辑器中设计特定关卡时,下" +"面的一些导航方案可能会更方便。\n" +"- [b]默认值:[/b]“自由观看向前”、“自由观看向后”、“自由观看向上”和“自由观看向" +"下”键将相对于相机移动,运动时考虑相机的俯仰角。\n" +"- [b]部分轴锁定:[/b]“自由观看向前”和“自由观看向后”键将相对于相机移动,运动时" +"考虑相机的俯仰角。“自由观看向上”和“自由观看向下”键将以“绝对的”方式移动,运动" +"时[i]不[/i]考虑相机的俯仰角。\n" +"- [b]完全轴锁定:[/b]“自由观看向前”、“自由观看向后”、“自由观看向上”和“自由观" +"看向下”键将以“绝对的”方式移动,运动时[i]不[/i]考虑相机的俯仰角。\n" +"另见 [member editors/3d/navigation/navigation_scheme]。" + +msgid "" "If [code]true[/code], render the grid on an XY plane. This can be useful for " "3D side-scrolling games." msgstr "" @@ -28743,6 +31036,37 @@ msgstr "" "未指定,则该文件会使用系统默认的程序打开。" msgid "" +"The display mode to use in the editor's file dialogs.\n" +"- [b]Thumbnails[/b] takes more space, but displays dynamic resource " +"thumbnails, making resources easier to preview without having to open them.\n" +"- [b]List[/b] is more compact but doesn't display dynamic resource " +"thumbnails. Instead, it displays static icons based on the file extension." +msgstr "" +"编辑器的文件对话框所使用的显示模式。\n" +"- [b]Thumbnails[/b](缩略图)占据更多空间,但可以显示动态资源缩略图,无需打开" +"也能够方便地预览资源。\n" +"- [b]List[/b](列表)更紧凑,但不显示动态资源缩略图,而是根据文件扩展名显示静" +"态图标。" + +msgid "" +"If [code]true[/code], display hidden files in the editor's file dialogs. " +"Files that have names starting with [code].[/code] are considered hidden (e." +"g. [code].hidden_file[/code])." +msgstr "" +"如果为 [code]true[/code],则在编辑器的文件对话框中显示隐藏文件。名称以 " +"[code].[/code] 开头的文件被视为隐藏文件(例如 [code].hidden_file[/code])。" + +msgid "" +"The thumbnail size to use in the editor's file dialogs (in pixels). See also " +"[member docks/filesystem/thumbnail_size]." +msgstr "" +"编辑器的文件对话框中使用的缩略图尺寸(单位为像素)。另见 [member docks/" +"filesystem/thumbnail_size]。" + +msgid "If [code]true[/code], uses lossless compression for binary resources." +msgstr "如果为 [code]true[/code],则对二进制资源使用无损压缩。" + +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 "" @@ -28852,6 +31176,22 @@ msgstr "" "[b]注意:[/b]在触摸屏设备上默认为 [code]true[/code]。" msgid "" +"If [code]true[/code], enable two finger pan and scale gestures on " +"touchscreen devices.\n" +"[b]Note:[/b] Defaults to [code]true[/code] on touchscreen devices." +msgstr "" +"如果为 [code]true[/code],则在触摸屏设备上启用两指平移和缩放手势。\n" +"[b]注意:[/b]在触摸屏设备上默认为 [code]true[/code]。" + +msgid "" +"If [code]true[/code], increases the scrollbar touch area to improve " +"usability on touchscreen devices.\n" +"[b]Note:[/b] Defaults to [code]true[/code] on touchscreen devices." +msgstr "" +"如果为 [code]true[/code],则增加滚动条触摸区域以提高触摸屏设备的可用性。\n" +"[b]注意:[/b]在触摸屏设备上默认为 [code]true[/code]。" + +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 " @@ -28914,6 +31254,12 @@ msgstr "如果为 [code]true[/code],则会在左侧的边栏中显示行号。 msgid "The width of the minimap in the script editor (in pixels)." msgstr "脚本编辑器中小地图的宽度(单位为像素)。" +msgid "If [code]true[/code], draws space characters as centered points." +msgstr "如果为 [code]true[/code],则会将空格字符绘制为居中的点。" + +msgid "If [code]true[/code], draws tab characters as chevrons." +msgstr "如果为 [code]true[/code],则会将制表符绘制为人字形。" + msgid "If [code]true[/code], allows scrolling past the end of the file." msgstr "如果为 [code]true[/code],则允许滚动越过文件的末尾。" @@ -28942,6 +31288,35 @@ msgid "" "reference)." msgstr "编辑器帮助(内置类参考)中标题的字体大小。" +msgid "" +"If [code]true[/code], displays a table of contents at the left of the editor " +"help (at the location where the members overview would appear when editing a " +"script)." +msgstr "" +"如果为 [code]true[/code],则在编辑器帮助的左侧显示目录(编辑脚本时出现成员概" +"览的位置)。" + +msgid "" +"If [code]true[/code], displays an overview of the current script's member " +"variables and functions at the left of the script editor. See also [member " +"text_editor/script_list/sort_members_outline_alphabetically]." +msgstr "" +"如果为 [code]true[/code],则在脚本编辑器的左侧显示当前脚本的成员变量和函数的" +"概览。另见 [member text_editor/script_list/" +"sort_members_outline_alphabetically]。" + +msgid "" +"The script editor's background color. If set to a translucent color, the " +"editor theme's base color will be visible behind." +msgstr "" +"脚本编辑器的背景色。如果设置为半透明的颜色,会透出后面的编辑器主题的基础色。" + +msgid "" +"The script editor's base type color (used for types like [Vector2], " +"[Vector3], [Color], ...)." +msgstr "" +"脚本编辑器的基础类型颜色(用于 [Vector2]、[Vector3]、[Color] 等类型)。" + msgid "The script editor's bookmark icon color (displayed in the gutter)." msgstr "脚本编辑器的书签图标颜色(在边栏中显示)。" @@ -28970,6 +31345,16 @@ msgid "" "gutter)." msgstr "脚本编辑器的代码折叠图标颜色(在边栏中显示)。" +msgid "" +"The script editor's comment color.\n" +"[b]Note:[/b] In GDScript, unlike Python, multiline strings are not " +"considered to be comments, and will use the string highlighting color " +"instead." +msgstr "" +"脚本编辑器的注释颜色。\n" +"[b]注意:[/b]在 GDScript 中,与 Python 不同,多行字符串不被视为注释,而是使用" +"字符串突出显示颜色。" + msgid "The script editor's autocompletion box background color." msgstr "脚本编辑器的自动补全框的背景色。" @@ -29022,9 +31407,27 @@ msgstr "" "这个 [Control] 节点在编辑器的检查器面板中使用,允许编辑数值。可以与 " "[EditorInspectorPlugin] 一起使用,以重新创建相同的行为。" +msgid "If [code]true[/code], the slider will not draw background." +msgstr "如果为 [code]true[/code],则滑动条不会绘制背景。" + msgid "If [code]true[/code], the slider is hidden." msgstr "如果为 [code]true[/code],则隐藏滑动条。" +msgid "The text that displays to the left of the value." +msgstr "在值的左侧显示的文本。" + +msgid "If [code]true[/code], the slider can't be interacted with." +msgstr "如果为 [code]true[/code],则无法与滑动条交互。" + +msgid "Emitted when the value form gains focus." +msgstr "值表单获得焦点时发出。" + +msgid "Emitted when the value form loses focus." +msgstr "值表单丢失焦点时发出。" + +msgid "Base Syntax highlighter resource for the [ScriptEditor]." +msgstr "用于 [ScriptEditor] 的基础语法高亮器资源。" + msgid "" "Virtual method which can be overridden to return the syntax highlighter name." msgstr "虚函数,可以在覆盖后返回语法高亮器的名称。" @@ -29279,6 +31682,11 @@ msgstr "" "要使用 [EditorTranslationParserPlugin],请先使用 [method EditorPlugin." "add_translation_parser_plugin] 方法注册它。" +msgid "" +"Gets the list of file extensions to associate with this parser, e.g. [code]" +"[\"csv\"][/code]." +msgstr "获取与该解析器关联的文件扩展名列表,例如 [code][\"csv\"][/code]。" + msgid "Manages undo history of scenes opened in the editor." msgstr "管理编辑器中打开场景的撤销历史。" @@ -29349,6 +31757,9 @@ msgstr "提交当前暂存的修改,并对提交应用提交信息 [code]msg[/ msgid "Creates a new branch named [code]branch_name[/code] in the VCS." msgstr "在 VCS 中新建名为 [code]branch_name[/code] 的分支。" +msgid "Discards the changes made in a file present at [code]file_path[/code]." +msgstr "丢弃对位于 [code]file_path[/code] 的文件进行的修改。" + msgid "" "Fetches new changes from the remote, but doesn't write changes to the " "current working directory. Equivalent to [code]git fetch[/code]." @@ -29560,6 +31971,21 @@ msgstr "调整主机的带宽限制。" msgid "Destroys the host and all resources associated with it." msgstr "销毁主机和与其关联的所有资源。" +msgid "" +"Configure this ENetHost to use the custom Godot extension allowing DTLS " +"encryption for ENet clients. Call this before [method connect_to_host] to " +"have ENet connect using DTLS validating the server certificate against " +"[code]hostname[/code]. You can pass the optional [param client_options] " +"parameter to customize the trusted certification authorities, or disable the " +"common name verification. See [method TLSOptions.client] and [method " +"TLSOptions.client_unsafe]." +msgstr "" +"配置此 ENetHost 以使用允许对 ENet 客户端进行 DTLS 加密的自定义 Godot 扩展。" +"在 [method connect_to_host] 之前调用它,让 ENet 连接使用 DTLS 根据 " +"[code]hostname[/code] 验证服务器证书。可以通过可选的 [param client_options] " +"参数来自定义受信任的证书颁发机构,或禁用通用名称验证。请参阅 [method " +"TLSOptions.client] 和 [method TLSOptions.client_unsafe]。" + msgid "Returns the local port to which this peer is bound." msgstr "返回该对等体绑定到的本地端口。" @@ -29621,10 +32047,54 @@ msgstr "接收数据的总数。" msgid "Total UDP packets received." msgstr "接收 UDP 数据包的总数。" +msgid "" +"A MultiplayerPeer implementation using the [url=http://enet.bespin.org/index." +"html]ENet[/url] library." +msgstr "" +"使用 [url=http://enet.bespin.org/index.html]ENet[/url] 库实现的 " +"MultiplayerPeer。" + msgid "High-level multiplayer" msgstr "高级多人游戏" msgid "" +"Create client that connects to a server at [code]address[/code] using " +"specified [code]port[/code]. The given address needs to be either a fully " +"qualified domain name (e.g. [code]\"www.example.com\"[/code]) or an IP " +"address in IPv4 or IPv6 format (e.g. [code]\"192.168.1.1\"[/code]). The " +"[code]port[/code] is the port the server is listening on. The " +"[code]channel_count[/code] parameter can be used to specify the number of " +"ENet channels allocated for the connection. The [code]in_bandwidth[/code] " +"and [code]out_bandwidth[/code] parameters can be used to limit the incoming " +"and outgoing bandwidth to the given number of bytes per second. The default " +"of 0 means unlimited bandwidth. Note that ENet will strategically drop " +"packets on specific sides of a connection between peers to ensure the peer's " +"bandwidth is not overwhelmed. The bandwidth parameters also determine the " +"window size of a connection which limits the amount of reliable packets that " +"may be in transit at any given time. Returns [constant OK] if a client was " +"created, [constant ERR_ALREADY_IN_USE] if this ENetMultiplayerPeer instance " +"already has an open connection (in which case you need to call [method " +"MultiplayerPeer.close] first) or [constant ERR_CANT_CREATE] if the client " +"could not be created. If [code]local_port[/code] is specified, the client " +"will also listen to the given port; this is useful for some NAT traversal " +"techniques." +msgstr "" +"创建客户端,该客户端使用指定的 [code]port[/code] 连接到位于 [code]address[/" +"code] 的服务器。给定的地址必须是完全限定的域名(例如 [code]\"www.example." +"com\"[/code]),或 IPv4 或 IPv6 格式的 IP 地址(例如 [code]\"192.168.1.1\"[/" +"code])。[code]port[/code] 是服务器监听的端口。[code]channel_count[/code] 参" +"数可用于指定为连接分配的 ENet 通道数。[code]in_bandwidth[/code] 和 " +"[code]out_bandwidth[/code] 参数可用于将传入和传出带宽限制为给定的每秒字节数。" +"默认值 0 表示无限制的带宽。请注意,ENet 将对在对等体之间的连接的特定端,策略" +"性地丢弃数据包,以确保对等体的带宽不会被淹没。带宽参数还决定了连接的窗口大" +"小,它限制了在任何给定时间可能正在传输的可靠数据包的数量。如果创建了一个客户" +"端,则返回 [constant OK];如果该 ENetMultiplayerPeer 实例已经有一个打开的连接" +"(在这种情况下,需要先调用 [method MultiplayerPeer.close]),则返回 " +"[constant ERR_ALREADY_IN_USE];如果不能被创建客户端,则返回 [constant " +"ERR_CANT_CREATE]。如果指定了 [code]local_port[/code],客户端也会监听给定的端" +"口;这对一些 NAT 穿越技术很有用。" + +msgid "" "The IP used when creating a server. This is set to the wildcard [code]\"*\"[/" "code] by default, which binds to all available interfaces. The given IP " "needs to be in IPv4 or IPv6 address format, for example: " @@ -29725,6 +32195,31 @@ msgstr "该对等体正在断开连接。" msgid "The peer has acknowledged the disconnection request." msgstr "该对等体已确认断开请求。" +msgid "" +"The peer has lost connection, but is not considered truly disconnected (as " +"the peer didn't acknowledge the disconnection request)." +msgstr "" +"该对等体已丢失连接,但并未真正断开连接(因为该对等体还没有对断开连接请求进行" +"确认)。" + +msgid "Packet loss variance." +msgstr "丢包方差。" + +msgid "Mean packet round trip time for reliable packets." +msgstr "可靠数据包的平均往返时间。" + +msgid "Variance of the mean round trip time." +msgstr "平均往返时间方差。" + +msgid "Last recorded round trip time for a reliable packet." +msgstr "可靠数据包的记录的上次行程时间。" + +msgid "Variance of the last trip time recorded." +msgstr "记录的上次行程时间方差。" + +msgid "The peer's current throttle status." +msgstr "该对等体的当前节流状态。" + msgid "Mark the packet to be sent as reliable." msgstr "将要发送的数据包标记为可靠。" @@ -29748,6 +32243,56 @@ msgstr "" "[Engine] 单例使您可以查询和修改项目的运行时参数,例如每秒帧数,时间范围等。" msgid "" +"Returns the name of the CPU architecture the Godot binary was built for. " +"Possible return values are [code]x86_64[/code], [code]x86_32[/code], " +"[code]arm64[/code], [code]armv7[/code], [code]rv64[/code], [code]riscv[/" +"code], [code]ppc64[/code], [code]ppc[/code], [code]wasm64[/code] and " +"[code]wasm32[/code].\n" +"To detect whether the current CPU architecture is 64-bit, you can use the " +"fact that all 64-bit architecture names have [code]64[/code] in their name:\n" +"[codeblocks]\n" +"[gdscript]\n" +"if \"64\" in Engine.get_architecture_name():\n" +" print(\"Running on 64-bit CPU.\")\n" +"else:\n" +" print(\"Running on 32-bit CPU.\")\n" +"[/gdscript]\n" +"[csharp]\n" +"if (Engine.GetArchitectureName().Contains(\"64\"))\n" +" GD.Print(\"Running on 64-bit CPU.\");\n" +"else\n" +" GD.Print(\"Running on 32-bit CPU.\");\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Note:[/b] [method get_architecture_name] does [i]not[/i] return the name " +"of the host CPU architecture. For example, if running an x86_32 Godot binary " +"on a x86_64 system, the returned value will be [code]x86_32[/code]." +msgstr "" +"返回构建 Godot 二进制文件所针对的 CPU 体系结构的名称。可能的返回值有 " +"[code]x86_64[/code]、[code]x86_32[/code]、[code]arm64[/code]、[code]armv7[/" +"code]、[code]rv64[/code]、[code]riscv[/code]、[code]ppc64[/code]、[code]ppc[/" +"code]、[code]wasm64[/code] 和 [code]wasm32[/code]。\n" +"要检测当前 CPU 架构是否为 64 位,可以利用所有 64 位架构名称中都包含 " +"[code]64[/code]:\n" +"[codeblocks]\n" +"[gdscript]\n" +"if \"64\" in Engine.get_architecture_name():\n" +" print(\"正运行在 64 位 CPU 上。\")\n" +"else:\n" +" print(\"正运行在 32 位 CPU 上。\")\n" +"[/gdscript]\n" +"[csharp]\n" +"if (Engine.GetArchitectureName().Contains(\"64\"))\n" +" GD.Print(\"正运行在 64 位 CPU 上。\");\n" +"else\n" +" GD.Print(\"正运行在 32 位 CPU 上。\");\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]注意:[/b][method get_architecture_name] [i]不[/i]返回主机 CPU 体系结构的" +"名称。例如,如果在 x86_64 系统上运行 x86_32 Godot 二进制文件,返回值将是 " +"[code]x86_32[/code]。" + +msgid "" "Returns engine author information in a Dictionary.\n" "[code]lead_developers[/code] - Array of Strings, lead developer names\n" "[code]founders[/code] - Array of Strings, founder names\n" @@ -29903,10 +32448,30 @@ msgstr "" "[/csharp]\n" "[/codeblocks]" +msgid "Returns an instance of a [ScriptLanguage] with the given index." +msgstr "返回给定索引处的 [ScriptLanguage] 实例。" + +msgid "" +"Returns the number of available script languages. Use with [method " +"get_script_language]." +msgstr "返回可用脚本语言的数量。请配合 [method get_script_language] 使用。" + +msgid "" +"Returns a global singleton with given [param name]. Often used for plugins, " +"e.g. GodotPayments." +msgstr "" +"返回具有给定名称 [param name] 的全局单例。常用于插件,例如 GodotPayments。" + msgid "Returns a list of available global singletons." msgstr "返回可用全局单例的列表。" msgid "" +"Returns [code]true[/code] if a singleton with given [param name] exists in " +"global scope." +msgstr "" +"如果全局范围内存在具有给定 [param name] 的单例,则返回 [code]true[/code]。" + +msgid "" "Returns [code]true[/code] if the script is currently running inside the " "editor, [code]false[/code] otherwise. This is useful for [code]@tool[/code] " "scripts to conditionally draw editor helpers, or prevent accidentally " @@ -29966,6 +32531,50 @@ msgid "" msgstr "如果游戏在游戏循环的固定过程和物理阶段内,返回 [code]true[/code]。" msgid "" +"Registers a [ScriptLanguage] instance to be available with " +"[code]ScriptServer[/code].\n" +"Returns:\n" +"- [constant OK] on success\n" +"- [constant ERR_UNAVAILABLE] if [code]ScriptServer[/code] has reached it " +"limit and cannot register any new language\n" +"- [constant ERR_ALREADY_EXISTS] if [code]ScriptServer[/code] already " +"contains a language with similar extension/name/type" +msgstr "" +"注册一个 [ScriptLanguage] 实例以供 [code]ScriptServer[/code] 使用。\n" +"返回:\n" +"- [constant OK] 成功\n" +"- [constant ERR_UNAVAILABLE] 如果 [code]ScriptServer[/code] 已达到限制,并且" +"无法注册任何新语言\n" +"- [constant ERR_ALREADY_EXISTS] 如果 [code]ScriptServer[/code] 已经包含一个具" +"有相似扩展名/名称/类型的语言" + +msgid "" +"Registers the given object as a singleton, globally available under [param " +"name]." +msgstr "将给定的对象注册为单例,名称 [param name] 全局可用。" + +msgid "" +"Unregisters the [ScriptLanguage] instance from [code]ScriptServer[/code].\n" +"Returns:\n" +"- [constant OK] on success\n" +"- [constant ERR_DOES_NOT_EXIST] if the language is already not registered in " +"[code]ScriptServer[/code]" +msgstr "" +"从 [code]ScriptServer[/code] 注销该 [ScriptLanguage] 实例。\n" +"返回:\n" +"- [constant OK] 成功\n" +"- [constant ERR_DOES_NOT_EXIST] 如果该语言尚未在 [code]ScriptServer[/code] 中" +"注册" + +msgid "" +"Unregisters the singleton registered under [param name]. The singleton " +"object is not freed. Only works with user-defined singletons created with " +"[method register_singleton]." +msgstr "" +"将名称为 [param name] 的单例解除注册。该单例对象不会被释放。仅能够对通过 " +"[method register_singleton] 创建的用户定义单例使用。" + +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 " @@ -30043,10 +32652,60 @@ msgstr "" msgid "Exposes the internal debugger." msgstr "暴露内部调试器。" +msgid "" +"[EngineDebugger] handles the communication between the editor and the " +"running game. It is active in the running game. Messages can be sent/" +"received through it. It also manages the profilers." +msgstr "" +"[EngineDebugger] 处理编辑器与正在运行的游戏之间的通信。它会在运行游戏时激活," +"可以通过它收发消息,还负责管理性能分析器。" + +msgid "" +"Returns [code]true[/code] if a capture with the given name is present " +"otherwise [code]false[/code]." +msgstr "" +"如果存在具有给定名称的捕获,则返回 [code]true[/code],否则返回 [code]false[/" +"code]。" + +msgid "" +"Returns [code]true[/code] if a profiler with the given name is present " +"otherwise [code]false[/code]." +msgstr "" +"如果存在具有给定名称的分析器,则返回 [code]true[/code],否则返回 " +"[code]false[/code]。" + +msgid "" +"Returns [code]true[/code] if the debugger is active otherwise [code]false[/" +"code]." +msgstr "" +"如果调试器处于活动状态,则返回 [code]true[/code],否则返回 [code]false[/" +"code]。" + +msgid "" +"Returns [code]true[/code] if a profiler with the given name is present and " +"active otherwise [code]false[/code]." +msgstr "" +"如果存在具有给定名称的分析器,并且该分析器处于活动状态,则返回 [code]true[/" +"code],否则返回 [code]false[/code]。" + +msgid "Unregisters the message capture with given [param name]." +msgstr "将具有给定名称 [param name] 的消息捕获解除注册。" + +msgid "Unregisters a profiler with given [param name]." +msgstr "将具有给定名称 [param name] 的分析器解除注册。" + msgid "Base class for creating custom profilers." msgstr "用于创建自定义分析器的基类。" msgid "" +"This class can be used to implement custom profilers that are able to " +"interact with the engine and editor debugger.\n" +"See [EngineDebugger] and [EditorDebuggerPlugin] for more information." +msgstr "" +"这个类可用于实现自定义分析器,能够与引擎和编辑器调试器进行交互。\n" +"有关详细信息,请参阅 [EngineDebugger] 和 [EditorDebuggerPlugin]。" + +msgid "" "Resource for environment nodes (like [WorldEnvironment]) that define " "multiple rendering options." msgstr "定义渲染选项的资源,用于环境节点(例如 [WorldEnvironment])。" @@ -30321,6 +32980,22 @@ msgid "" "(blurriest)." msgstr "第 7 级辉光的强度。这是最“全局”的级别(最模糊)。" +msgid "" +"If [code]true[/code], glow levels will be normalized so that summed together " +"their intensities equal [code]1.0[/code]." +msgstr "" +"如果为 [code]true[/code],则辉光级别将被归一化,使强度的总和等于 [code]1.0[/" +"code]。" + +msgid "" +"The strength of the glow effect. This applies as the glow is blurred across " +"the screen and increases the distance and intensity of the blur. When using " +"the Mobile rendering method, this should be increased to compensate for the " +"lower dynamic range." +msgstr "" +"辉光效果的强度。适用于屏幕上的辉光模糊,能够增加模糊的距离和强度。使用 " +"Mobile 渲染方法时应将其提高,对低动态范围进行补偿。" + msgid "The reflected (specular) light source." msgstr "反射(镜面反射)光源。" @@ -30447,11 +33122,42 @@ msgid "" "slower." msgstr "屏幕空间反射的最大步数。数值越高,速度越慢。" +msgid "" +"The default exposure used for tonemapping. Higher values result in a " +"brighter image. See also [member tonemap_white]." +msgstr "色调映射的默认曝光。值越高,图像越亮。另见 [member tonemap_white]。" + +msgid "" +"The tonemapping mode to use. Tonemapping is the process that \"converts\" " +"HDR values to be suitable for rendering on a LDR display. (Godot doesn't " +"support rendering on HDR displays yet.)" +msgstr "" +"要使用的色调映射模式。色调映射是对 HDR 值进行“转换”的过程,转换后的值适合在 " +"LDR 显示器上渲染。(Godot 尚不支持在 HDR 显示器上进行渲染。)" + +msgid "" +"The white reference value for tonemapping (also called \"whitepoint\"). " +"Higher values can make highlights look less blown out, and will also " +"slightly darken the whole scene as a result. Only effective if the [member " +"tonemap_mode] isn't set to [constant TONE_MAPPER_LINEAR]. See also [member " +"tonemap_exposure]." +msgstr "" +"色调映射的白色参考值(也称为“白点”)。值越高,高光处的过曝越不明显,并且整个" +"场景也会因此而略微变暗。仅当 [member tonemap_mode] 未设置为 [constant " +"TONE_MAPPER_LINEAR] 时有效。另见 [member tonemap_exposure]。" + msgid "The brightness of the emitted light from the volumetric fog." msgstr "从体积雾发出的光的亮度。" +msgid "" +"Clears the background using the clear color defined in [member " +"ProjectSettings.rendering/environment/defaults/default_clear_color]." +msgstr "" +"使用 [member ProjectSettings.rendering/environment/defaults/" +"default_clear_color] 中定义的清除颜色来清除背景。" + msgid "Clears the background using a custom clear color." -msgstr "使用自定义的底色清除背景。" +msgstr "使用自定义的清除颜色来清除背景。" msgid "Displays a user-defined sky in the background." msgstr "在背景中显示用户自定义的天空。" @@ -30492,6 +33198,21 @@ msgstr "" "TONE_MAPPER_REINHARDT] 更鲜艳。" msgid "" +"Use the Academy Color Encoding System tonemapper. ACES is slightly more " +"expensive than other options, but it handles bright lighting in a more " +"realistic fashion by desaturating it as it becomes brighter. ACES typically " +"has a more contrasted output compared to [constant TONE_MAPPER_REINHARDT] " +"and [constant TONE_MAPPER_FILMIC].\n" +"[b]Note:[/b] This tonemapping operator is called \"ACES Fitted\" in Godot 3." +"x." +msgstr "" +"使用学院色彩编码系统(Academy Color Encoding System)色调映射器。ACES 比其他" +"选项消耗略高,但对于较亮光照的处理更真实,越亮饱和度越低。ACES 的输出在对比度" +"方面通常比 [constant TONE_MAPPER_REINHARDT] 和 [constant TONE_MAPPER_FILMIC] " +"更高。\n" +"[b]注意:[/b]Godot 3.x 将该色调映射运算符称为“ACES Fitted”。" + +msgid "" "Additive glow blending mode. Mostly used for particles, glows (bloom), lens " "flare, bright sources." msgstr "添加辉光混合模式。主要用于粒子、辉光(泛光)、镜头眩光、亮源。" @@ -30623,15 +33344,32 @@ msgstr "" "如果你在 [method parse] 中定义了输入变量,你可以在输入数组中以同样的顺序指定" "它们的值。" +msgid "" +"Returns the error text if [method parse] or [method execute] has failed." +msgstr "如果 [method parse] 或 [method execute] 失败,则返回错误文本。" + msgid "Returns [code]true[/code] if [method execute] has failed." msgstr "如果 [method execute] 失败,返回 [code]true[/code]。" +msgid "" +"Parses the expression and returns an [enum Error] code.\n" +"You can optionally specify names of variables that may appear in the " +"expression with [param input_names], so that you can bind them when it gets " +"executed." +msgstr "" +"解析表达式并返回 [enum Error] 代码。\n" +"你也可以选择用 [param input_names] 来指定可能出现在表达式中的变量名称,这样就" +"可以在执行表达式时进行绑定。" + msgid "Generates noise using the FastNoiseLite library." msgstr "使用 FastNoiseLite 库生成噪声。" msgid "The noise algorithm used. See [enum NoiseType]." msgstr "所使用的噪声算法。见 [enum NoiseType]。" +msgid "Translate the noise input coordinates by the given [Vector3]." +msgstr "使用给定的 [Vector3] 对噪声输入坐标进行平移。" + msgid "The random number seed for all noise types." msgstr "所有噪声类型的随机数种子。" @@ -30642,6 +33380,19 @@ msgstr "" "与 [constant TYPE_PERLIN] 不同,渐变存在于单纯形点阵中,而不是网格点阵中,从" "而避免了定向伪影。" +msgid "" +"Modified, higher quality version of [constant TYPE_SIMPLEX], but slower." +msgstr "对 [constant TYPE_SIMPLEX] 修改后得到的更高质量版本,但速度较慢。" + +msgid "Euclidean distance to the nearest point." +msgstr "到最近点的欧几里得距离。" + +msgid "Squared Euclidean distance to the nearest point." +msgstr "到最近点的欧几里得距离的平方。" + +msgid "Manhattan distance (taxicab metric) to the nearest point." +msgstr "到最近点的曼哈顿距离(出租车度量法)。" + msgid "Type to handle file reading and writing operations." msgstr "用于处理文件读写操作的类型。" @@ -30782,6 +33533,41 @@ msgstr "" "[code]using[/code] 语句或直接调用 [code]Dispose[/code] 方法。" msgid "" +"Returns [code]true[/code] if the file cursor has already read past the end " +"of the file.\n" +"[b]Note:[/b] [code]eof_reached() == false[/code] cannot be used to check " +"whether there is more data available. To loop while there is more data " +"available, use:\n" +"[codeblocks]\n" +"[gdscript]\n" +"while file.get_position() < file.get_length():\n" +" # Read data\n" +"[/gdscript]\n" +"[csharp]\n" +"while (file.GetPosition() < file.GetLength())\n" +"{\n" +" // Read data\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"如果文件光标已经读到了文件末尾,则返回 [code]true[/code]。\n" +"[b]注意:[/b] [code]eof_reached() == false[/code] 不能用于检查是否有更多可用" +"数据。要在有更多可用数据时循环,请使用:\n" +"[codeblocks]\n" +"[gdscript]\n" +"while file.get_position() < file.get_length():\n" +" # 读取数据\n" +"[/gdscript]\n" +"[csharp]\n" +"while (file.GetPosition() < file.GetLength())\n" +"{\n" +" // 读取数据\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" "Returns [code]true[/code] if the file exists in the given path.\n" "[b]Note:[/b] Many resources types are imported (e.g. textures or sound " "files), and their source asset will not be included in the exported game, as " @@ -30796,6 +33582,21 @@ msgstr "" "对于非静态的相对等效项,请使用 [method DirAccess.file_exists]。" msgid "" +"Writes the file's buffer to disk. Flushing is automatically performed when " +"the file is closed. This means you don't need to call [method flush] " +"manually before closing a file. Still, calling [method flush] can be used to " +"ensure the data is safe even if the project crashes instead of being closed " +"gracefully.\n" +"[b]Note:[/b] Only call [method flush] when you actually need it. Otherwise, " +"it will decrease performance due to constant disk writes." +msgstr "" +"将文件的缓冲区写入磁盘。当关闭文件时,会自动进行刷新。这意味着你不需要在关闭" +"文件前手动调用 [method flush]。尽管如此,即使项目崩溃而不是正常关闭,调用 " +"[method flush] 仍可用于确保数据安全。\n" +"[b]注意:[/b] 只有在你真正需要的时候才调用 [method flush]。否则,它会因不断的" +"磁盘写入而降低性能。" + +msgid "" "Returns the next 16 bits from the file as an integer. See [method store_16] " "for details on what values can be stored and retrieved this way." msgstr "" @@ -30823,9 +33624,58 @@ msgstr "" "以整数形式返回文件中接下来的 8 位。请参阅 [method store_8],详细了解哪些值可" "以通过这种方式存储和检索。" +msgid "" +"Returns the whole file as a [String]. Text is interpreted as being UTF-8 " +"encoded.\n" +"If [param skip_cr] is [code]true[/code], carriage return characters " +"([code]\\r[/code], CR) will be ignored when parsing the UTF-8, so that only " +"line feed characters ([code]\\n[/code], LF) represent a new line (Unix " +"convention)." +msgstr "" +"以 [String] 形式返回整个文件。文本会按照 UTF-8 编码解析。\n" +"如果 [param skip_cr] 为 [code]true[/code],解析 UTF-8 时会忽略回车符" +"([code]\\r[/code],CR),因此只使用换行符([code]\\n[/code],LF)表示新一行" +"的开始(Unix 规范)。" + msgid "Returns next [param length] bytes of the file as a [PackedByteArray]." msgstr "将文件中接下来的 [param length] 个字节作为 [PackedByteArray] 返回。" +msgid "" +"Returns the next value of the file in CSV (Comma-Separated Values) format. " +"You can pass a different delimiter [param delim] to use other than the " +"default [code]\",\"[/code] (comma). This delimiter must be one-character " +"long, and cannot be a double quotation mark.\n" +"Text is interpreted as being UTF-8 encoded. Text values must be enclosed in " +"double quotes if they include the delimiter character. Double quotes within " +"a text value can be escaped by doubling their occurrence.\n" +"For example, the following CSV lines are valid and will be properly parsed " +"as two strings each:\n" +"[codeblock]\n" +"Alice,\"Hello, Bob!\"\n" +"Bob,Alice! What a surprise!\n" +"Alice,\"I thought you'd reply with \"\"Hello, world\"\".\"\n" +"[/codeblock]\n" +"Note how the second line can omit the enclosing quotes as it does not " +"include the delimiter. However it [i]could[/i] very well use quotes, it was " +"only written without for demonstration purposes. The third line must use " +"[code]\"\"[/code] for each quotation mark that needs to be interpreted as " +"such instead of the end of a text value." +msgstr "" +"以 CSV(逗号分隔值)格式返回文件的下一个值。可以传递不同的分隔符 [param " +"delim],以使用默认 [code]\",\"[/code](逗号)以外的其他分隔符。这个分隔符必须" +"为一个字符长,且不能是双引号。\n" +"文本被解析为 UTF-8 编码。如果文本值包含分隔符,则它们必须用双引号引起来。文本" +"值中的双引号可以通过将它们的出现次数加倍来转义。\n" +"例如,以下 CSV 行是有效的,每行将被正确解析为两个字符串:\n" +"[codeblock]\n" +"Alice,\"Hello, Bob!\"\n" +"Bob,Alice! What a surprise!\n" +"Alice,\"I thought you'd reply with \"\"Hello, world\"\".\"\n" +"[/codeblock]\n" +"请注意第二行如何省略封闭的引号,因为它不包含分隔符。然而它[i]可以[/i]很好地使" +"用引号,它只是为了演示目的而没有编写。第三行必须为每个需要被解析为引号而不是" +"文本值的末尾而使用 [code]\"\"[/code]。" + msgid "Returns the next 64 bits from the file as a floating-point number." msgstr "将文件中接下来的 64 位作为浮点数返回。" @@ -30868,6 +33718,14 @@ msgid "" msgstr "返回一个给定路径文件的 MD5 字符串,如果失败则返回一个空的 [String]。" msgid "" +"Returns the last time the [param file] was modified in Unix timestamp format " +"or returns a [String] \"ERROR IN [code]file[/code]\". This Unix timestamp " +"can be converted to another format using the [Time] singleton." +msgstr "" +"以 Unix 时间戳格式返回 [param file]的最后修改时间,或者返回一个 [String] “在 " +"[code]file[/code] 中出错”。这个Unix 时间戳可以用 [Time] 单例转换为其他格式。" + +msgid "" "Returns a [String] saved in Pascal format from the file.\n" "Text is interpreted as being UTF-8 encoded." msgstr "" @@ -30911,6 +33769,17 @@ msgid "Returns [code]true[/code] if the file is currently opened." msgstr "如果文件当前被打开,返回 [code]true[/code]。" msgid "" +"Creates a new [FileAccess] object and opens the file for writing or reading, " +"depending on the flags.\n" +"Returns [code]null[/code] if opening the file failed. You can use [method " +"get_open_error] to check the error that occurred." +msgstr "" +"创建一个新的 [FileAccess] 对象,会根据标志来确定以写入还是读取模式打开文" +"件。\n" +"如果打开文件失败,则返回 [code]null[/code] 。你可以使用 [method " +"get_open_error] 来检查发生的错误。" + +msgid "" "Creates a new [FileAccess] object and opens a compressed file for reading or " "writing.\n" "[b]Note:[/b] [method open_compressed] can only read files that were saved by " @@ -30940,6 +33809,17 @@ msgstr "" "来检查发生的错误。" msgid "" +"Creates a new [FileAccess] object and opens an encrypted file in write or " +"read mode. You need to pass a password to encrypt/decrypt it.\n" +"Returns [code]null[/code] if opening the file failed. You can use [method " +"get_open_error] to check the error that occurred." +msgstr "" +"创建一个新的 [FileAccess] 对象,以写或读的模式打开一个加密文件。你需要传递一" +"个密码来加密/解密它。\n" +"如果打开文件失败,则返回 [code]null[/code] 。你可以使用 [method " +"get_open_error] 来检查发生的错误。" + +msgid "" "Changes the file reading/writing cursor to the specified position (in bytes " "from the beginning of the file)." msgstr "将文件的读/写光标改变到指定的位置(从文件开始的字节数)。" @@ -31074,6 +33954,18 @@ msgstr "" msgid "Stores the given array of bytes in the file." msgstr "在文件中存储给定的字节数组。" +msgid "" +"Store the given [PackedStringArray] in the file as a line formatted in the " +"CSV (Comma-Separated Values) format. You can pass a different delimiter " +"[param delim] to use other than the default [code]\",\"[/code] (comma). This " +"delimiter must be one-character long.\n" +"Text will be encoded as UTF-8." +msgstr "" +"将给定的 [PackedStringArray] 作为 CSV(逗号分隔值)格式的行存储在文件中。你可" +"以传递不同的分隔符 [param delim] 以使用默认 [code]\",\"[/code](逗号)以外的" +"其他分隔符。此分隔符的长度必须为一个字符。\n" +"将使用 UTF-8 编码文本。" + msgid "Stores a floating-point number as 64 bits in the file." msgstr "将一个浮点数以 64 位形式存储在文件中。" @@ -31081,6 +33973,13 @@ msgid "Stores a floating-point number as 32 bits in the file." msgstr "将一个浮点数以 32 位形式存储在文件中。" msgid "" +"Appends [param line] to the file followed by a line return character " +"([code]\\n[/code]), encoding the text as UTF-8." +msgstr "" +"将 [param line] 附加到文件末尾,并在后面加上一个换行符([code]\\n[/code])," +"将使用 UTF-8 编码文本。" + +msgid "" "Stores the given [String] as a line in the file in Pascal format (i.e. also " "store the length of the string).\n" "Text will be encoded as UTF-8." @@ -31168,6 +34067,26 @@ msgstr "" "题,请将 [member mode_overrides_title] 设置为 [code]false[/code],禁用此功" "能。" +msgid "" +"Adds a comma-delimited file name [param filter] option to the [FileDialog] " +"with an optional [param description], which restricts what files can be " +"picked.\n" +"A [param filter] should be of the form [code]\"filename.extension\"[/code], " +"where filename and extension can be [code]*[/code] to match any string. " +"Filters starting with [code].[/code] (i.e. empty filenames) are not " +"allowed.\n" +"For example, a [param filter] of [code]\"*.png, *.jpg\"[/code] and a [param " +"description] of [code]\"Images\"[/code] results in filter text \"Images (*." +"png, *.jpg)\"." +msgstr "" +"将一个逗号分隔的文件名 [param filter] 且带有可选 [param description] 的选项添" +"加到的 [FileDialog],这限制了可以选择的文件。\n" +"[param filter] 的格式应为 [code]\"文件名.扩展名\"[/code],其中文件名和扩展名" +"可以是 [code]*[/code],以匹配任意字符串。不允许使用以 [code].[/code] 开头的过" +"滤器(即空文件名)。\n" +"例如,[code]\"*.png, *.jpg\"[/code] 的 [param filter] 和 [code]\"图像\"[/" +"code] 的 [param description] 会产生过滤器文本“图像 (* .png, *.jpg)”。" + msgid "Clear all the added filters in the dialog." msgstr "清除对话框中所有添加的过滤器。" @@ -31549,6 +34468,21 @@ msgstr "子节点的水平分隔量。" msgid "The vertical separation of children nodes." msgstr "子节点的垂直分隔量。" +msgid "" +"[Material] used with a [FogVolume] to draw things with the volumetric fog " +"effect." +msgstr "[FogVolume] 使用的 [Material],用于绘制具有体积雾效果的东西。" + +msgid "" +"A [Material] resource that can be used by [FogVolume]s to draw volumetric " +"effects.\n" +"If you need more advanced effects, use a custom [url=$DOCS_URL/tutorials/" +"shaders/shader_reference/fog_shader.html]fog shader[/url]." +msgstr "" +"[FogVolume] 使用的 [Material] 资源,用于绘制体积效果。\n" +"如果你需要更高阶的效果,请使用自定义[url=$DOCS_URL/tutorials/shaders/" +"shader_reference/fog_shader.html]雾着色器[/url]。" + msgid "Base class for fonts and font variations." msgstr "字体和字体变体的基类。" @@ -31565,9 +34499,9 @@ msgid "" "[b]Note:[/b] Do not use this function to draw strings character by " "character, use [method draw_string] or [TextLine] instead." msgstr "" -"使用该字体在画布项目中绘制单个 Unicode 字符 [param char],使用给定的位置,颜" -"色为 [param modulate]。[param pos] 指定的是基线位置而不是顶部。如果要按顶部位" -"置绘制,则必须在 Y 轴中加入[i]升部[/i]。\n" +"使用该字体将单个 Unicode 字符 [param char] 绘制在画布项目中的给定的位置,颜色" +"为 [param modulate]。[param pos] 指定的是基线位置而不是顶部。如果要按顶部位置" +"绘制,则必须在 Y 轴中加入[i]升部[/i]。\n" "[b]注意:[/b]请勿使用这个方法进行逐字符的绘制,请改用 [method draw_string] " "或 [TextLine]。" @@ -31579,12 +34513,69 @@ msgid "" "[b]Note:[/b] Do not use this function to draw strings character by " "character, use [method draw_string] or [TextLine] instead." msgstr "" -"使用该字体在画布项目中绘制单个 Unicode 字符 [param char] 的轮廓,使用给定的位" +"使用该字体将单个 Unicode 字符 [param char] 的轮廓绘制在画布项目中的给定的位" "置,颜色为 [param modulate]。[param pos] 指定的是基线位置而不是顶部。如果要按" "顶部位置绘制,则必须在 Y 轴中加入[i]升部[/i]。\n" "[b]注意:[/b]请勿使用这个方法进行逐字符的绘制,请改用 [method draw_string] " "或 [TextLine]。" +msgid "" +"Breaks [param text] into lines using rules specified by [param brk_flags] " +"and draws it into a canvas item using the font, at a given position, with " +"[param modulate] color, optionally clipping the width and aligning " +"horizontally. [param pos] specifies the baseline of the first line, not the " +"top. To draw from the top, [i]ascent[/i] must be added to the Y axis.\n" +"See also [method CanvasItem.draw_multiline_string]." +msgstr "" +"使用 [param brk_flags] 指定的规则对 [param text] 进行断行,并使用该字体将其绘" +"制在画布项目中的给定位置,颜色为 [param modulate],也可以指定裁剪宽度并进行水" +"平对齐。[param pos] 指定的是基线位置而不是顶部。如果要按顶部位置绘制,则必须" +"在 Y 轴中加入[i]升部[/i]。\n" +"另见 [method CanvasItem.draw_multiline_string]。" + +msgid "" +"Breaks [param text] to the lines using rules specified by [param brk_flags] " +"and draws text outline into a canvas item using the font, at a given " +"position, with [param modulate] color and [param size] outline size, " +"optionally clipping the width and aligning horizontally. [param pos] " +"specifies the baseline of the first line, not the top. To draw from the top, " +"[i]ascent[/i] must be added to the Y axis.\n" +"See also [method CanvasItem.draw_multiline_string_outline]." +msgstr "" +"使用 [param brk_flags] 指定的规则对 [param text] 进行断行,并使用该字体将其轮" +"廓绘制在画布项目中的给定位置,颜色为 [param modulate],也可以指定裁剪宽度并进" +"行水平对齐。[param pos] 指定的是基线位置而不是顶部。如果要按顶部位置绘制,则" +"必须在 Y 轴中加入[i]升部[/i]。\n" +"另见 [method CanvasItem.draw_multiline_string_outline]。" + +msgid "" +"Draw [param text] into a canvas item using the font, at a given position, " +"with [param modulate] color, optionally clipping the width and aligning " +"horizontally. [param pos] specifies the baseline, not the top. To draw from " +"the top, [i]ascent[/i] must be added to the Y axis.\n" +"See also [method CanvasItem.draw_string]." +msgstr "" +"使用该字体将 [param text] 绘制在画布项目中的给定位置,颜色为 [param " +"modulate],也可以指定裁剪宽度并进行水平对齐。[param pos] 指定的是基线位置而不" +"是顶部。如果要按顶部位置绘制,则必须在 Y 轴中加入[i]升部[/i]。\n" +"另见 [method CanvasItem.draw_string]。" + +msgid "" +"Draw [param text] outline into a canvas item using the font, at a given " +"position, with [param modulate] color and [param size] outline size, " +"optionally clipping the width and aligning horizontally. [param pos] " +"specifies the baseline, not the top. To draw from the top, [i]ascent[/i] " +"must be added to the Y axis.\n" +"See also [method CanvasItem.draw_string_outline]." +msgstr "" +"使用该字体将 [param text] 的轮廓绘制在画布项目中的给定位置,颜色为 [param " +"modulate],也可以指定裁剪宽度并进行水平对齐。[param pos] 指定的是基线位置而不" +"是顶部。如果要按顶部位置绘制,则必须在 Y 轴中加入[i]升部[/i]。\n" +"另见 [method CanvasItem.draw_string]。" + +msgid "Returns number of faces in the TrueType / OpenType collection." +msgstr "返回 TrueType / OpenType 集合中的字体数。" + msgid "Returns array of fallback [Font]s." msgstr "返回回退 [Font] 数组。" @@ -31680,6 +34671,9 @@ msgstr "字体源数据和预渲染字形的缓存,从动态字体或位图字 msgid "Removes all font cache entries." msgstr "移除所有字体缓存条目。" +msgid "Removes all font sizes from the cache entry" +msgstr "从缓存条目中移除所有字体大小" + msgid "Returns the font ascent (number of pixels above the baseline)." msgstr "返回字体的上升幅度(超出基线的像素数)。" @@ -31689,15 +34683,36 @@ msgstr "返回字体缓存条目的数量。" msgid "Returns the font descent (number of pixels below the baseline)." msgstr "返回字体的减少量(低于基线的像素数)。" +msgid "Returns thickness of the underline in pixels." +msgstr "返回下划线的粗细度,单位为像素。" + +msgid "Recturns an active face index in the TrueType / OpenType collection." +msgstr "返回 TrueType / OpenType 集合中的活动字体索引。" + +msgid "Returns list of rendered glyphs in the cache entry." +msgstr "返回缓存条目中的已渲染字形列表。" + msgid "Returns glyph size." msgstr "返回字形大小。" +msgid "Returns index of the cache texture containing the glyph." +msgstr "返回包含该字形的缓存纹理的索引。" + +msgid "Returns rectangle in the cache texture containing the glyph." +msgstr "返回包含该字形的缓存纹理中的矩形。" + msgid "Returns list of language support overrides." msgstr "返回语言支持覆盖的列表。" msgid "Returns list of script support overrides." msgstr "返回文字支持覆盖的列表。" +msgid "Returns number of textures used by font cache entry." +msgstr "返回字体缓存条目所使用的纹理数。" + +msgid "Returns a copy of the font cache texture image." +msgstr "返回字体缓存纹理图像的副本。" + msgid "Removes specified font cache entry." msgstr "删除指定的字体缓存条目。" @@ -31707,12 +34722,29 @@ msgstr "移除语言支持覆盖。" msgid "Removes script support override." msgstr "移除文字支持覆盖。" +msgid "Removes specified font size from the cache entry." +msgstr "从缓存条目中移除指定的字体大小。" + msgid "Sets the font ascent (number of pixels above the baseline)." msgstr "设置字体的升部(基线上方的像素数)。" msgid "Sets the font descent (number of pixels below the baseline)." msgstr "设置字体的降部(基线下方的像素数)。" +msgid "Sets scaling factor of the color bitmap font." +msgstr "设置彩色位图字体的缩放系数。" + +msgid "Sets thickness of the underline in pixels." +msgstr "设置下划线的粗细度,单位为像素。" + +msgid "" +"Sets embolden strength, if is not equal to zero, emboldens the font " +"outlines. Negative values reduce the outline thickness." +msgstr "设置加粗强度,如果不等于零,则会加粗字体的轮廓。负值会减小轮廓的厚度。" + +msgid "Sets an active face index in the TrueType / OpenType collection." +msgstr "在 TrueType / OpenType 集合中设置活动字体索引。" + msgid "Sets glyph offset from the baseline." msgstr "设置字形相对于基线的偏移量。" @@ -31749,15 +34781,40 @@ msgstr "字体样式标志,见 [enum TextServer.FontStyle]。" msgid "Font hinting mode. Used by dynamic fonts only." msgstr "字体微调模式。仅由动态字体使用。" +msgid "" +"The width of the range around the shape between the minimum and maximum " +"representable signed distance. If using font outlines, [member " +"msdf_pixel_range] must be set to at least [i]twice[/i] the size of the " +"largest font outline. The default [member msdf_pixel_range] value of " +"[code]16[/code] allows outline sizes up to [code]8[/code] to look correct." +msgstr "" +"最小和最大可表示的有符号距离之间的形状周围的范围宽度。如果使用字体轮廓," +"[member msdf_pixel_range] 必须至少设置为最大字体轮廓大小的[i]两倍[/i]。" +"[member msdf_pixel_range] 的默认值为 [code]16[/code],允许大小最大到 " +"[code]8[/code] 的轮廓看起来正确。" + msgid "Font OpenType feature set override." msgstr "字体 OpenType 特性集覆盖。" +msgid "" +"Font oversampling factor. If set to [code]0.0[/code], the global " +"oversampling factor is used instead. Used by dynamic fonts only (MSDF fonts " +"ignore oversampling)." +msgstr "" +"字体过采样系数。如果设置为 [code]0.0[/code] ,则使用全局过采样系数。仅由动态" +"字体使用(MSDF 字体忽略过采样)。" + msgid "Font style name." msgstr "字体样式名称。" msgid "Variation of the [Font]." msgstr "[Font] 的变体。" +msgid "" +"Base font used to create a variation. If not set, default [Theme] font is " +"used." +msgstr "用于创建变体的基础字体。如果未设置,则使用默认的 [Theme] 字体。" + msgid "Extra spacing at the bottom of the line in pixels." msgstr "行底部的额外间距,单位为像素。" @@ -31770,6 +34827,19 @@ msgstr "空格字形的额外宽度。" msgid "Extra spacing at the top of the line in pixels." msgstr "行顶部的额外间距,单位为像素。" +msgid "" +"If is not equal to zero, emboldens the font outlines. Negative values reduce " +"the outline thickness.\n" +"[b]Note:[/b] Emboldened fonts might have self-intersecting outlines, which " +"will prevent MSDF fonts and [TextMesh] from working correctly." +msgstr "" +"如果不等于零,则加粗字体轮廓。负值会减小轮廓厚度。\n" +"[b]注意:[/b] 加粗字体可能有自相交的轮廓,这将阻止 MSDF 字体和 [TextMesh] 正" +"常工作。" + +msgid "Active face index in the TrueType / OpenType collection file." +msgstr "在 TrueType / OpenType 集合文件中的活动字体索引。" + msgid "A script implemented in the GDScript programming language." msgstr "用 GDScript 编程语言实现的脚本。" @@ -32149,6 +35219,9 @@ msgstr "如果启用,则存在跨这些轴的线性马达。" msgid "Represents the size of the [enum Flag] enum." msgstr "代表 [enum Flag] 枚举的大小。" +msgid "Helper node to calculate generic geometry operations in 2D space." +msgstr "辅助节点,用于计算 2D 空间中的通用几何体操作。" + msgid "" "Given an array of [Vector2]s, returns the convex hull as a list of points in " "counterclockwise order. The last point is the same as the first one." @@ -32157,6 +35230,68 @@ msgstr "" "个点相同。" msgid "" +"Returns the 2D point on the 2D segment ([param s1], [param s2]) that is " +"closest to [param point]. The returned point will always be inside the " +"specified segment." +msgstr "" +"返回 2D 线段 ([param s1], [param s2]) 上与 [param point] 最接近的 2D 点。返回" +"的点始终在指定的线段上。" + +msgid "" +"Returns the 2D point on the 2D line defined by ([param s1], [param s2]) that " +"is closest to [param point]. The returned point can be inside the segment " +"([param s1], [param s2]) or outside of it, i.e. somewhere on the line " +"extending from the segment." +msgstr "" +"返回 2D 直线 ([param s1], [param s2]) 上与 [param point] 最接近的 2D 点。返回" +"的点可能在 ([param s1], [param s2]) 线段上,也有可能不在,即直线上该线段之外" +"的部分。" + +msgid "" +"Given the two 2D segments ([param p1], [param q1]) and ([param p2], [param " +"q2]), finds those two points on the two segments that are closest to each " +"other. Returns a [PackedVector2Array] that contains this point on ([param " +"p1], [param q1]) as well the accompanying point on ([param p2], [param q2])." +msgstr "" +"给定两个 2D 线段 ([param p1], [param q1]) 和 ([param p2], [param q2]),找出这" +"两个线段见距离最近的两个点。返回 [PackedVector2Array],包含 ([param p1], " +"[param q1]) 和 ([param p2], [param q2]) 上的点。" + +msgid "" +"Returns [code]true[/code] if [param point] is inside the circle or if it's " +"located exactly [i]on[/i] the circle's boundary, otherwise returns " +"[code]false[/code]." +msgstr "" +"如果 [param point] 在圆内或恰好位于圆的边界[i]上[/i],则返回 [code]true[/" +"code];否则返回 [code]false[/code]。" + +msgid "" +"Returns [code]true[/code] if [param point] is inside [param polygon] or if " +"it's located exactly [i]on[/i] polygon's boundary, otherwise returns " +"[code]false[/code]." +msgstr "" +"如果 [param point] 在 [param polygon] 内或者它恰好位于多边形的边界[i]上[/i]," +"则返回 [code]true[/code];否则返回 [code]false[/code]。" + +msgid "" +"Returns [code]true[/code] if [param polygon]'s vertices are ordered in " +"clockwise order, otherwise returns [code]false[/code]." +msgstr "" +"如果 [param polygon] 的顶点按顺时针顺序排序,则返回 [code]true[/code];否则返" +"回 [code]false[/code]。" + +msgid "" +"Checks if the two lines ([param from_a], [param dir_a]) and ([param from_b], " +"[param dir_b]) intersect. If yes, return the point of intersection as " +"[Vector2]. If no intersection takes place, returns [code]null[/code].\n" +"[b]Note:[/b] The lines are specified using direction vectors, not end points." +msgstr "" +"检查两条直线 ([param from_a], [param dir_a]) 和 ([param from_b], [param " +"dir_b]) 是否相交。如果相交,则返回交点 [Vector2]。如果不相交,则返回 " +"[code]null[/code]。\n" +"[b]注意:[/b]直线使用方向向量指定,而不是终点。" + +msgid "" "Inflates or deflates [param polygon] by [param delta] units (pixels). If " "[param delta] is positive, makes the polygon grow outward. If [param delta] " "is negative, shrinks the polygon inward. Returns an array of polygons " @@ -32217,6 +35352,64 @@ msgstr "" "[/codeblocks]" msgid "" +"Returns if [param point] is inside the triangle specified by [param a], " +"[param b] and [param c]." +msgstr "" +"返回 [param point] 是否位于由 [param a]、[param b]、[param c] 指定的三角形" +"中。" + +msgid "" +"Given the 2D segment ([param segment_from], [param segment_to]), returns the " +"position on the segment (as a number between 0 and 1) at which the segment " +"hits the circle that is located at position [param circle_position] and has " +"radius [param circle_radius]. If the segment does not intersect the circle, " +"-1 is returned (this is also the case if the line extending the segment " +"would intersect the circle, but the segment does not)." +msgstr "" +"给定 2D 线段 ([param segment_from], [param segment_to]),返回该线段与圆相交的" +"位置(0 和 1 之间的数),这个圆位于 [param circle_position],半径为 [param " +"circle_radius]。如果该线段与圆不相交,则返回 -1(同样也适用于这条线段的延长线" +"所在的直线与圆相交,而线段本身不相交的情况)。" + +msgid "" +"Checks if the two segments ([param from_a], [param to_a]) and ([param " +"from_b], [param to_b]) intersect. If yes, return the point of intersection " +"as [Vector2]. If no intersection takes place, returns [code]null[/code]." +msgstr "" +"检查两条线段 ([param from_a], [param to_a]) 和 ([param from_b], [param " +"to_b]) 是否相交。如果相交,则返回交点 [Vector2]。如果不相交,则返回 " +"[code]null[/code]。" + +msgid "" +"Triangulates the area specified by discrete set of [param points] such that " +"no point is inside the circumcircle of any resulting triangle. Returns a " +"[PackedInt32Array] where each triangle consists of three consecutive point " +"indices into [param points] (i.e. the returned array will have [code]n * 3[/" +"code] elements, with [code]n[/code] being the number of found triangles). If " +"the triangulation did not succeed, an empty [PackedInt32Array] is returned." +msgstr "" +"对由离散的 [param points] 集指定的区域进行三角化,使得任何点都不在任何生成的" +"三角形的外接圆内。返回一个 [PackedInt32Array],其中每个三角形由 [param " +"points] 中的三个连续点的索引组成(即返回的数组将具有 [code]n * 3[/code] 个元" +"素,其中 [code]n[/code] 是找到的三角形的数量)。如果三角化没有成功,则返回一" +"个空的 [PackedInt32Array]。" + +msgid "" +"Triangulates the polygon specified by the points in [param polygon]. Returns " +"a [PackedInt32Array] where each triangle consists of three consecutive point " +"indices into [param polygon] (i.e. the returned array will have [code]n * 3[/" +"code] elements, with [code]n[/code] being the number of found triangles). " +"Output triangles will always be counter clockwise, and the contour will be " +"flipped if it's clockwise. If the triangulation did not succeed, an empty " +"[PackedInt32Array] is returned." +msgstr "" +"对由 [param polygon] 中的点指定的多边形进行三角化。 返回一个 " +"[PackedInt32Array],其中每个三角形由 [param polygon] 中的三个连续点的索引组成" +"(即返回的数组将具有 [code]n * 3[/code] 个元素,其中 [code]n[/code] 是找到的" +"三角形的数量)。输出三角形将始终为逆时针旋转,如果为顺时针旋转,则轮廓将翻" +"转。如果三角化没有成功,则返回一个空的 [PackedInt32Array]。" + +msgid "" "Create regions where either subject or clip polygons (or both) are filled." msgstr "创建区域,其中主体或剪辑多边形(或两者)被填充。" @@ -32273,6 +35466,90 @@ msgstr "端点被平方化并扩展了 [code]delta[/code] 单位。" msgid "Endpoints are rounded off and extended by [code]delta[/code] units." msgstr "端点被四舍五入,并以 [code]delta[/code] 为单位进行扩展。" +msgid "Helper node to calculate generic geometry operations in 3D space." +msgstr "辅助节点,用于计算 3D 空间中的通用几何体操作。" + +msgid "" +"Returns the 3D point on the 3D segment ([param s1], [param s2]) that is " +"closest to [param point]. The returned point will always be inside the " +"specified segment." +msgstr "" +"返回 3D 线段 ([param s1], [param s2]) 上与 [param point] 最近的 3D 点。返回的" +"点始终在指定的线段内部。" + +msgid "" +"Returns the 3D point on the 3D line defined by ([param s1], [param s2]) that " +"is closest to [param point]. The returned point can be inside the segment " +"([param s1], [param s2]) or outside of it, i.e. somewhere on the line " +"extending from the segment." +msgstr "" +"返回直线上与 [param point] 最近的 3D 点,该直线由 ([param s1], [param s2]) 定" +"义。返回的点可能在线段 ([param s1], [param s2]) 上,也可能不在,即位于线段的" +"延长线上。" + +msgid "" +"Given the two 3D segments ([param p1], [param p2]) and ([param q1], [param " +"q2]), finds those two points on the two segments that are closest to each " +"other. Returns a [PackedVector3Array] that contains this point on ([param " +"p1], [param p2]) as well the accompanying point on ([param q1], [param q2])." +msgstr "" +"给定两个 3D 线段 ([param p1], [param p2]) 和 ([param q1], [param q2]),找出这" +"两个线段见距离最近的两个点。返回 [PackedVector3Array],包含 ([param p1], " +"[param q1]) 和 ([param p2], [param q2]) 上的点。" + +msgid "" +"Tests if the 3D ray starting at [param from] with the direction of [param " +"dir] intersects the triangle specified by [param a], [param b] and [param " +"c]. If yes, returns the point of intersection as [Vector3]. If no " +"intersection takes place, returns [code]null[/code]." +msgstr "" +"测试起始于 [param from]、方向为 [param dir] 的 3D 射线是否与 [param a]、" +"[param b]、[param c] 构成的三角形相交。如果相交则返回交点 [Vector3]。如果不相" +"交则返回 [code]null[/code]。" + +msgid "" +"Given a convex hull defined though the [Plane]s in the array [param planes], " +"tests if the segment ([param from], [param to]) intersects with that hull. " +"If an intersection is found, returns a [PackedVector3Array] containing the " +"point the intersection and the hull's normal. Otherwise, returns an empty " +"array." +msgstr "" +"给定一个通过数组 [param planes] 中的 [Plane] 定义的凸面体,测试线段([param " +"from],[param to])是否与该面体相交。如果找到交点,则返回一个 " +"[PackedVector3Array],其中包含交点和凸面体的法线。否则,返回一个空数组。" + +msgid "" +"Checks if the segment ([param from], [param to]) intersects the cylinder " +"with height [param height] that is centered at the origin and has radius " +"[param radius]. If no, returns an empty [PackedVector3Array]. If an " +"intersection takes place, the returned array contains the point of " +"intersection and the cylinder's normal at the point of intersection." +msgstr "" +"检查线段([param from],[param to])是否与以原点为中心且高度为 [param " +"height]、半径为 [param radius] 的圆柱相交。如果不相交,则返回一个空的 " +"[PackedVector3Array]。如果相交,则返回的数组包含交点和圆柱体在交点处的法线。" + +msgid "" +"Checks if the segment ([param from], [param to]) intersects the sphere that " +"is located at [param sphere_position] and has radius [param sphere_radius]. " +"If no, returns an empty [PackedVector3Array]. If yes, returns a " +"[PackedVector3Array] containing the point of intersection and the sphere's " +"normal at the point of intersection." +msgstr "" +"检查线段([param from],[param to])是否与球心位于 [param sphere_position] 且" +"半径为 [param sphere_radius] 的球体相交。如果不相交,则返回一个空的 " +"[PackedVector3Array]。如果相交,则返回一个 [PackedVector3Array],其中包含交点" +"和球体在交点处的法线。" + +msgid "" +"Tests if the segment ([param from], [param to]) intersects the triangle " +"[param a], [param b], [param c]. If yes, returns the point of intersection " +"as [Vector3]. If no intersection takes place, returns [code]null[/code]." +msgstr "" +"测试线段([param from],[param to])是否与三角形 [param a]、[param b]、" +"[param c] 相交。如果相交,则将交点作为 [Vector3] 返回。如果不相交,则返回 " +"[code]null[/code]。" + msgid "Base node for geometry-based visual instances." msgstr "基于几何图形的视觉实例的基础节点。" @@ -32283,6 +35560,32 @@ msgstr "" "基于几何图形的视觉实例的基础节点。分享一些共同的机制,如可见性和自定义材质。" msgid "" +"Set the value of a shader uniform for this instance only ([url=$DOCS_URL/" +"tutorials/shaders/shader_reference/shading_language.html#per-instance-" +"uniforms]per-instance uniform[/url]). See also [method ShaderMaterial." +"set_shader_parameter] to assign a uniform on all instances using the same " +"[ShaderMaterial].\n" +"[b]Note:[/b] For a shader uniform to be assignable on a per-instance basis, " +"it [i]must[/i] be defined with [code]instance uniform ...[/code] rather than " +"[code]uniform ...[/code] in the shader code.\n" +"[b]Note:[/b] [param name] is case-sensitive and must match the name of the " +"uniform in the code exactly (not the capitalized name in the inspector).\n" +"[b]Note:[/b] Per-instance shader uniforms are currently only available in " +"3D, so there is no 2D equivalent of this method." +msgstr "" +"仅为该实例设置一个着色器 uniform 值([url=$DOCS_URL/tutorials/shaders/" +"shader_reference/shading_language.html#per-instance-uniforms]每实例 uniform[/" +"url]) 。另请参阅 [method ShaderMaterial.set_shader_parameter] 以使用相同的 " +"[ShaderMaterial] 在所有实例上分配一个 uniform。\n" +"[b]注意:[/b]要在每个实例的基础上分配一个着色器 uniform,则[i]必须[/i]在着色" +"器代码中,使用 [code]instance uniform ...[/code],而不是 [code]uniform ...[/" +"code] 来定义。\n" +"[b]注意:[/b][param name] 是区分大小写的,并且必须与代码中的 uniform 名称完全" +"匹配(而不是检查器中大写的名称)。\n" +"[b]注意:[/b]逐实例着色器 uniform 目前仅在 3D 中可用,因此没有该方法的 2D 等" +"效方法。" + +msgid "" "The selected shadow casting flag. See [enum ShadowCastingSetting] for " "possible values." msgstr "选择的阴影投射标志。可能的取值见 [enum ShadowCastingSetting]。" @@ -32330,6 +35633,9 @@ msgstr "" "只显示从这个物体投射出来的阴影。\n" "换句话说,实际的网格将不可见,只有网格投影可见。" +msgid "The standard texel density for lightmapping with [LightmapGI]." +msgstr "使用 [LightmapGI] 进行光照贴图的标准纹素密度。" + msgid "Represents the size of the [enum LightmapScale] enum." msgstr "代表 [enum LightmapScale] 枚举的大小。" @@ -32400,15 +35706,35 @@ msgstr "" "Godot 使用的是直径的米数。映射到 GLTF 的 [code]ymag[/code] 属性。只在正交相机" "中使用,即 [member perspective] 为 false 时。" +msgid "Unregisters the given [GLTFDocumentExtension] instance." +msgstr "将给定的 [GLTFDocumentExtension] 实例取消注册。" + msgid "[GLTFDocument] extension class." msgstr "[GLTFDocument] 扩展类。" msgid "Represents a GLTF light." -msgstr "代表 GLTF 灯。" +msgstr "代表 GLTF 灯光。" + +msgid "" +"Represents a light as defined by the [code]KHR_lights_punctual[/code] GLTF " +"extension." +msgstr "代表由 [code]KHR_lights_punctual[/code] GLTF 扩展定义的灯光。" msgid "KHR_lights_punctual GLTF extension spec" msgstr "KHR_lights_punctual GLTF 扩展规格" +msgid "Creates a new GLTFLight instance by parsing the given [Dictionary]." +msgstr "通过解析给定的 [Dictionary] 新建 GLTFLight 实例。" + +msgid "Create a new GLTFLight instance from the given Godot [Light3D] node." +msgstr "从给定的 Godot [Light3D] 节点新建 GLTFLight 实例。" + +msgid "Serializes this GLTFLight instance into a [Dictionary]." +msgstr "将这个 GLTFLight 实例序列化为 [Dictionary]。" + +msgid "Converts this GLTFLight instance into a Godot [Light3D] node." +msgstr "将这个 GLTFLight 实例转换为 Godot [Light3D] 节点。" + msgid "" "The [Color] of the light. Defaults to white. A black color causes the light " "to have no effect." @@ -32434,12 +35760,43 @@ msgstr "" msgid "GLTF node class." msgstr "GLTF 节点类。" +msgid "GLTF scene and node spec" +msgstr "GLTF 场景和节点规格" + msgid "The diffuse texture." msgstr "漫反射纹理。" +msgid "Discards all embedded textures and uses untextured materials." +msgstr "丢弃所有内嵌的纹理,并使用无纹理的材质。" + +msgid "" +"Extracts embedded textures to be reimported and compressed. Editor only. " +"Acts as uncompressed at runtime." +msgstr "提取内嵌的纹理以重新导入和压缩。仅限编辑器。在运行时充当未压缩的。" + +msgid "" +"Embeds textures VRAM compressed with Basis Universal into the generated " +"scene." +msgstr "将使用 Basis Universal 压缩的纹理 VRAM 嵌入到生成的场景中。" + +msgid "" +"Embeds textures compressed losslessly into the generated scene, matching old " +"behavior." +msgstr "将无损压缩的纹理嵌入到生成的场景中,匹配旧行为。" + msgid "Represents a GLTF texture sampler" msgstr "代表 GLTF 纹理采样器" +msgid "" +"Texture's magnification filter, used when texture appears larger on screen " +"than the source image." +msgstr "纹理的放大滤镜,当纹理在屏幕上看起来比源图像大时使用。" + +msgid "" +"Texture's minification filter, used when the texture appears smaller on " +"screen than the source image." +msgstr "纹理的缩小滤镜,当纹理在屏幕上看起来比源图像小时使用。" + msgid "Bridge between Godot and the Mono runtime (Mono-enabled builds only)." msgstr "Godot 和 Mono 运行时之间的桥梁(仅支持 Mono 的构建)。" @@ -32453,6 +35810,13 @@ msgstr "" "Mono 的 Godot 构建中可用。\n" "参阅 [CSharpScript] 。" +msgid "" +"Returns [code]true[/code] if the .NET runtime is initialized, [code]false[/" +"code] otherwise." +msgstr "" +"如果 .NET 运行时已初始化,则返回 [code]true[/code],否则返回 [code]false[/" +"code]。" + msgid "2D particle emitter." msgstr "2D 粒子发射器。" @@ -32481,6 +35845,23 @@ msgstr "" "如果当节点进入/退出屏幕时粒子突然出现/消失,则增长矩形。[Rect2] 可以通过代码" "或使用 [b]Particles → Generate Visibility Rect[/b] 编辑器工具生成。" +msgid "Particle starts at the specified position." +msgstr "粒子在指定位置开始。" + +msgid "Particle starts with specified rotation and scale." +msgstr "粒子以指定的旋转和缩放开始。" + +msgid "" +"Particle starts with the specified velocity vector, which defines the " +"emission direction and speed." +msgstr "粒子从指定的速度向量开始,该向量定义了发射方向和速度。" + +msgid "Particle starts with specified color." +msgstr "粒子以指定的颜色开始。" + +msgid "Particle starts with specified [code]CUSTOM[/code] data." +msgstr "粒子以指定的 [code]CUSTOM[/code] 数据开始。" + msgid "3D particle emitter." msgstr "3D 粒子发射器。" @@ -32492,9 +35873,15 @@ msgid "" "are active in the current frame." msgstr "返回包含当前帧中所有活动粒子的轴对齐包围盒。" +msgid "Returns the [Mesh] that is drawn at index [param pass]." +msgstr "返回在索引 [param pass] 处绘制的 [Mesh] 。" + msgid "Restarts the particle emission, clearing existing particles." msgstr "重新发射粒子,清除现有的粒子。" +msgid "Sets the [Mesh] that is drawn at index [param pass]." +msgstr "设置在索引 [param pass] 处绘制的 [Mesh] 。" + msgid "Number of particles to emit." msgstr "要发射的粒子数。" @@ -32542,6 +35929,111 @@ msgid "Maximum number of draw passes supported." msgstr "支持的最大绘制阶段数。" msgid "" +"Abstract class for 3D particle attractors affecting [GPUParticles3D] nodes." +msgstr "3D 粒子吸引器的抽象类,会影响 [GPUParticles3D] 节点。" + +msgid "" +"Particle attractors can be used to attract particles towards the attractor's " +"origin, or to push them away from the attractor's origin.\n" +"Particle attractors work in real-time and can be moved, rotated and scaled " +"during gameplay. Unlike collision shapes, non-uniform scaling of attractors " +"is also supported.\n" +"Attractors can be temporarily disabled by hiding them, or by setting their " +"[member strength] to [code]0.0[/code].\n" +"[b]Note:[/b] Particle attractors only affect [GPUParticles3D], not " +"[CPUParticles3D]." +msgstr "" +"粒子吸引器可以将粒子朝吸引器的原点吸,也可以将粒子推离吸引器的原点。\n" +"粒子吸引器是实时进行的,可以在游戏过程中进行移动、旋转、缩放。与碰撞形状不" +"同,吸引器支持不统一的缩放。\n" +"临时禁用吸引器的方法是将其隐藏,也可以将 [member strength] 设置为 [code]0.0[/" +"code]。\n" +"[b]注意:[/b]粒子吸引器只会影响 [GPUParticles3D],不影响 [CPUParticles3D]。" + +msgid "Box-shaped 3D particle attractor affecting [GPUParticles3D] nodes." +msgstr "盒状 3D 粒子吸引器,会影响 [GPUParticles3D] 节点。" + +msgid "" +"Box-shaped 3D particle attractor affecting [GPUParticles3D] nodes.\n" +"[b]Note:[/b] Particle attractors only affect [GPUParticles3D], not " +"[CPUParticles3D]." +msgstr "" +"盒状 3D 粒子吸引器,会影响 [GPUParticles3D] 节点。\n" +"[b]注意:[/b]粒子吸引器只会影响 [GPUParticles3D],不影响 [CPUParticles3D]。" + +msgid "The attractor box's size in 3D units." +msgstr "吸引器盒的尺寸,使用 3D 单位。" + +msgid "Ellipse-shaped 3D particle attractor affecting [GPUParticles3D] nodes." +msgstr "椭圆形 3D 粒子吸引器,会影响 [GPUParticles3D] 节点。" + +msgid "" +"Ellipse-shaped 3D particle attractor affecting [GPUParticles3D] nodes.\n" +"[b]Note:[/b] Particle attractors only affect [GPUParticles3D], not " +"[CPUParticles3D]." +msgstr "" +"椭圆形 3D 粒子吸引器,会影响 [GPUParticles3D] 节点。\n" +"[b]注意:[/b]粒子吸引器只会影响 [GPUParticles3D],不影响 [CPUParticles3D]。" + +msgid "" +"The attractor sphere's radius in 3D units.\n" +"[b]Note:[/b] Stretched ellipses can be obtained by using non-uniform scaling " +"on the [GPUParticlesAttractorSphere3D] node." +msgstr "" +"吸引器球体的半径,使用 3D 单位。\n" +"[b]注意:[/b]要得到拉伸椭圆形,可以对 [GPUParticlesAttractorSphere3D] 节点使" +"用非统一缩放。" + +msgid "" +"Box-shaped 3D particle attractor with strength varying within the box, " +"affecting [GPUParticles3D] nodes." +msgstr "盒状 3D 粒子吸引器,内部存在强度变化,会影响 [GPUParticles3D] 节点。" + +msgid "" +"Box-shaped 3D particle attractor with strength varying within the box, " +"affecting [GPUParticles3D] nodes.\n" +"Unlike [GPUParticlesAttractorBox3D], [GPUParticlesAttractorVectorField3D] " +"uses a [member texture] to affect attraction strength within the box. This " +"can be used to create complex attraction scenarios where particles travel in " +"different directions depending on their location. This can be useful for " +"weather effects such as sandstorms.\n" +"[b]Note:[/b] Particle attractors only affect [GPUParticles3D], not " +"[CPUParticles3D]." +msgstr "" +"盒状 3D 粒子吸引器,内部存在强度变化,会影响 [GPUParticles3D] 节点。\n" +"与 [GPUParticlesAttractorBox3D] 不同,[GPUParticlesAttractorVectorField3D] 使" +"用 [member texture] 来影响盒子内的吸引力强度。可用于创建复杂的吸引场景,其中" +"粒子根据其位置向不同方向移动。这对于沙尘暴等天气影响很有用。\n" +"[b]注意:[/b]粒子吸引器只会影响 [GPUParticles3D],不影响 [CPUParticles3D]。" + +msgid "The size of the vector field box in 3D units." +msgstr "向量场盒子的尺寸,使用 3D 单位。" + +msgid "" +"The 3D texture to be used. Values are linearly interpolated between the " +"texture's pixels.\n" +"[b]Note:[/b] To get better performance, the 3D texture's resolution should " +"reflect the [member size] of the attractor. Since particle attraction is " +"usually low-frequency data, the texture can be kept at a low resolution such " +"as 64×64×64." +msgstr "" +"要使用的 3D 纹理。会在纹理像素之间进行线性插值。\n" +"[b]注意:[/b]为了获得更好的性能,3D 纹理的分辨率应该反映该吸引器的 [member " +"extents]。由于粒子吸引力通常是低频数据,因此可以将纹理保持在较低分辨率,例如 " +"64×64×64。" + +msgid "The collision box's size in 3D units." +msgstr "碰撞框的范围,使用 3D 单位。" + +msgid "" +"Real-time heightmap-shaped 3D particle attractor affecting [GPUParticles3D] " +"nodes." +msgstr "实时高度图状的 3D 粒子吸引器,影响 [GPUParticles3D] 节点。" + +msgid "The update policy to use for the generated heightmap." +msgstr "生成的高度图的更新策略。" + +msgid "" "Generate a 256×256 heightmap. Intended for small-scale scenes, or larger " "scenes with no distant particles." msgstr "生成 256×256 的高度图。适用于小规模场景,或没有远景粒子的较大场景。" @@ -32575,6 +36067,9 @@ msgstr "生成 8192×8192 的高度图。适用于具有远景粒子的巨大场 msgid "Represents the size of the [enum Resolution] enum." msgstr "代表 [enum Resolution] 枚举的大小。" +msgid "The 3D texture representing the signed distance field." +msgstr "代表有符号距离场的 3D 纹理。" + msgid "" "Bake a 16×16×16 signed distance field. This is the fastest option, but also " "the least precise." @@ -32597,6 +36092,10 @@ msgid "" "also the most precise." msgstr "烘焙 512×512×512 的有符号距离场。这是最慢的选项,但也是最精确的。" +msgid "" +"Sphere-shaped 3D particle collision shape affecting [GPUParticles3D] nodes." +msgstr "球状的 3D 粒子碰撞形状,影响 [GPUParticles3D] 节点。" + msgid "The collision sphere's radius in 3D units." msgstr "碰撞球的半径,以 3D 单位表示。" @@ -32621,15 +36120,42 @@ msgstr "" "的偏移量 1 处。\n" "另请参阅 [Curve],支持更多复杂的缓动函数,但不支持颜色。" +msgid "Returns the color of the gradient color at index [param point]." +msgstr "返回渐变色在索引 [param point] 处的颜色。" + +msgid "Returns the offset of the gradient color at index [param point]." +msgstr "返回渐变色在索引 [param point] 处的偏移。" + +msgid "Returns the number of colors in the gradient." +msgstr "返回渐变中的颜色数。" + +msgid "Removes the color at the index [param point]." +msgstr "移除索引 [param point] 处的颜色。" + +msgid "Reverses/mirrors the gradient." +msgstr "将渐变进行反转/镜像。" + msgid "Returns the interpolated color specified by [code]offset[/code]." msgstr "返回由偏移 [code]offset[/code] 指定的插值颜色。" +msgid "Sets the color of the gradient color at index [param point]." +msgstr "设置渐变色在索引 [param point] 处的颜色。" + +msgid "Sets the offset for the gradient color at index [param point]." +msgstr "设置渐变色在索引 [param point] 处的偏移。" + +msgid "Gradient's colors returned as a [PackedColorArray]." +msgstr "将渐变色中的颜色以 [PackedColorArray] 的形式返回。" + msgid "" "Defines how the colors between points of the gradient are interpolated. See " "[enum InterpolationMode] for available modes." msgstr "" "定义如何在渐变点之间对颜色进行插值。可用的模式见 [enum InterpolationMode]。" +msgid "Gradient's offsets returned as a [PackedFloat32Array]." +msgstr "将渐变色中的偏移以 [PackedFloat32Array] 的形式返回。" + msgid "" "Constant interpolation, color changes abruptly at each point and stays " "uniform between. This might cause visible aliasing when used for a gradient " @@ -32824,6 +36350,14 @@ msgstr "" "[b]警告:[/b]这是一个必需的内部节点,删除和释放它可能会导致崩溃。如果你希望隐" "藏它或其任何子项,请使用它们的 [member CanvasItem.visible] 属性。" +msgid "" +"Returns [code]true[/code] if the [param from_port] of the [param from_node] " +"[GraphNode] is connected to the [param to_port] of the [param to_node] " +"[GraphNode]." +msgstr "" +"如果 [param from_node] [GraphNode] 的 [param from_port] 连接到 [param " +"to_node] [GraphNode] 的 [param to_port],则返回 [code]true[/code]。" + msgid "If [code]true[/code], the minimap is visible." msgstr "如果为 [code]true[/code],小图是可见的。" @@ -32871,6 +36405,12 @@ msgstr "每个缩放级别的步长。" msgid "Emitted at the beginning of a GraphNode movement." msgstr "在 GraphNode 移动开始时发出。" +msgid "Emitted at the end of a connection drag." +msgstr "在连接拖动结束时发出。" + +msgid "Emitted at the beginning of a connection drag." +msgstr "在连接拖动开始时发出。" + msgid "" "Emitted when a GraphNode is attempted to be removed from the GraphEdit. " "Provides a list of node names to be removed (all selected nodes, excluding " @@ -32906,6 +36446,12 @@ msgstr "选定的矩形的填充颜色。" msgid "The outline color of the selection rectangle." msgstr "选择的矩形的轮廓颜色。" +msgid "The horizontal range within which a port can be grabbed (inner side)." +msgstr "能够抓取端口的(内侧)横向范围。" + +msgid "The horizontal range within which a port can be grabbed (outer side)." +msgstr "能够抓取端口的(外侧)横向范围。" + msgid "The icon for the zoom out button." msgstr "缩小按钮的图标。" @@ -33019,9 +36565,40 @@ msgstr "返回索引为 [param slot_index] 的插槽的左侧(输入)类型 msgid "Returns the right (output) type of the slot [param slot_index]." msgstr "返回索引为 [param slot_index] 的插槽的右侧(输出)类型。" +msgid "" +"Returns [code]true[/code] if left (input) side of the slot [param " +"slot_index] is enabled." +msgstr "" +"如果插槽 [param slot_index] 的左侧(输入)被启用,则返回 [code]true[/code]。" + +msgid "" +"Returns [code]true[/code] if right (output) side of the slot [param " +"slot_index] is enabled." +msgstr "" +"如果插槽 [param slot_index] 的右侧(输出)被启用,则返回 [code]true[/code]。" + +msgid "" +"Toggles the left (input) side of the slot [param slot_index]. If [param " +"enable] is [code]true[/code], a port will appear on the left side and the " +"slot will be able to be connected from this side." +msgstr "" +"切换插槽 [param slot_index] 的左侧(输入)端口。如果[param enable] 为" +"[code]true[/code],则左侧会出现一个端口,插槽可以从这一侧连接。" + +msgid "" +"Toggles the right (output) side of the slot [param slot_index]. If [param " +"enable] is [code]true[/code], a port will appear on the right side and the " +"slot will be able to be connected from this side." +msgstr "" +"切换插槽 [param slot_index] 的右侧(输出)端口。如果[param enable] 为" +"[code]true[/code],则右侧会出现一个端口,插槽可以从这一侧连接。" + msgid "If [code]true[/code], the GraphNode is a comment node." msgstr "如果为 [code]true[/code],则该 GraphNode 是注释节点。" +msgid "If [code]true[/code], the user can drag the GraphNode." +msgstr "如果为 [code]true[/code],则用户能够拖动该 GraphNode。" + msgid "Sets the overlay shown above the GraphNode. See [enum Overlay]." msgstr "设置在 GraphNode 上方显示的叠加层。见 [enum Overlay]。" @@ -33034,6 +36611,9 @@ msgstr "" "[b]注意:[/b]拖动手柄只会发出 [signal resize_request] 信号,GraphNode 需要手" "动调整大小。" +msgid "If [code]true[/code], the user can select the GraphNode." +msgstr "如果为 [code]true[/code],则用户能够选中该 GraphNode。" + msgid "If [code]true[/code], the GraphNode is selected." msgstr "如果为 [code]true[/code],则该 GraphNode 被选中。" @@ -33059,6 +36639,12 @@ msgstr "" msgid "Emitted when the GraphNode is dragged." msgstr "当 GraphNode 被拖动时发出。" +msgid "Emitted when the GraphNode is deselected." +msgstr "当 GraphNode 被取消选择时发出。" + +msgid "Emitted when the GraphNode is selected." +msgstr "当 GraphNode 被选中时发出。" + msgid "Emitted when the GraphNode is moved." msgstr "当 GraphNode 被移动时触发。" @@ -33082,6 +36668,12 @@ msgstr "当任何图形节点的插槽更新时发出。" msgid "No overlay is shown." msgstr "没有显示覆盖层。" +msgid "Show overlay set in the [theme_item breakpoint] theme property." +msgstr "显示在主题属性 [theme_item breakpoint] 中设置的覆盖层。" + +msgid "Show overlay set in the [theme_item position] theme property." +msgstr "显示在主题属性 [theme_item position] 中设置的覆盖层。" + msgid "The color modulation applied to the close button icon." msgstr "应用于关闭按钮图标的颜色调制。" @@ -33100,6 +36692,9 @@ msgstr "端口的水平偏移量。" msgid "The vertical distance between ports." msgstr "端口之间的垂直距离。" +msgid "Horizontal offset of the title text." +msgstr "标题文本的水平偏移量。" + msgid "Vertical offset of the title text." msgstr "标题文本的垂直偏移量。" @@ -33142,6 +36737,9 @@ msgstr "当 [member overlay] 设置为 [constant OVERLAY_POSITION] 时使用的 msgid "The background used when the [GraphNode] is selected." msgstr "[GraphNode] 被选中时使用的背景。" +msgid "The [StyleBox] used for each slot of the [GraphNode]." +msgstr "用于 [GraphNode] 的每个插槽的 [StyleBox]。" + msgid "" "Grid container used to arrange Control-derived children in a grid like " "layout." @@ -33407,6 +37005,13 @@ msgstr "" msgid "Closes the current context, and return the computed hash." msgstr "关闭当前上下文,并返回计算出的哈希值。" +msgid "" +"Starts a new hash computation of the given [param type] (e.g. [constant " +"HASH_SHA256] to start computation of a SHA-256)." +msgstr "" +"开始对给定类型 [param type] 的哈希计算(例如 [constant HASH_SHA256] 会开始计" +"算 SHA-256)。" + msgid "Updates the computation with the given [param chunk] of data." msgstr "使用给定的数据块 [param chunk] 更新计算。" @@ -33967,6 +37572,74 @@ msgid "Reads one chunk from the response." msgstr "从响应中读取一块数据。" msgid "" +"Sends a request to the connected host.\n" +"The URL parameter is usually just the part after the host, so for " +"[code]https://somehost.com/index.php[/code], it is [code]/index.php[/code]. " +"When sending requests to an HTTP proxy server, it should be an absolute URL. " +"For [constant HTTPClient.METHOD_OPTIONS] requests, [code]*[/code] is also " +"allowed. For [constant HTTPClient.METHOD_CONNECT] requests, it should be the " +"authority component ([code]host:port[/code]).\n" +"Headers are HTTP request headers. For available HTTP methods, see [enum " +"Method].\n" +"To create a POST request with query strings to push to the server, do:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var fields = {\"username\" : \"user\", \"password\" : \"pass\"}\n" +"var query_string = http_client.query_string_from_dict(fields)\n" +"var headers = [\"Content-Type: application/x-www-form-urlencoded\", " +"\"Content-Length: \" + str(query_string.length())]\n" +"var result = http_client.request(http_client.METHOD_POST, \"/index.php\", " +"headers, query_string)\n" +"[/gdscript]\n" +"[csharp]\n" +"var fields = new Godot.Collections.Dictionary { { \"username\", \"user\" }, " +"{ \"password\", \"pass\" } };\n" +"string queryString = new HTTPClient().QueryStringFromDict(fields);\n" +"string[] headers = { \"Content-Type: application/x-www-form-urlencoded\", $" +"\"Content-Length: {queryString.Length}\" };\n" +"var result = new HTTPClient().Request(HTTPClient.Method.Post, \"index.php\", " +"headers, queryString);\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Note:[/b] The [param body] parameter is ignored if [param method] is " +"[constant HTTPClient.METHOD_GET]. This is because GET methods can't contain " +"request data. As a workaround, you can pass request data as a query string " +"in the URL. See [method String.uri_encode] for an example." +msgstr "" +"向连接的服务器发送请求。\n" +"URL 参数通常只是主机名后面的部分,所以对于 [code]https://somehost.com/index." +"php[/code] 来说就是 [code]/index.php[/code]。当向 HTTP 代理服务器发送请求时," +"它应该是一个绝对 URL。对于 [constant HTTPClient.METHOD_OPTIONS] 请求," +"[code]*[/code] 也是允许的。对于 [constant HTTPClient.METHOD_CONNECT] 请求,它" +"应该是权限组件 ([code]host:port[/code])。\n" +"Headers 参数是 HTTP 请求的报头。有关可用的 HTTP 方法,请参阅 [enum " +"Method]。\n" +"要创建带有查询字符串的 POST 请求以推送到服务器,请执行以下操作:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var fields = {\"username\" : \"user\", \"password\" : \"pass\"}\n" +"var query_string = http_client.query_string_from_dict(fields)\n" +"var headers = [\"Content-Type: application/x-www-form-urlencoded\", " +"\"Content-Length: \" + str(query_string.length())]\n" +"var result = http_client.request(http_client.METHOD_POST, \"/index.php\", " +"headers, query_string)\n" +"[/gdscript]\n" +"[csharp]\n" +"var fields = new Godot.Collections.Dictionary { { \"username\", \"user\" }, " +"{ \"password\", \"pass\" } };\n" +"string queryString = new HTTPClient().QueryStringFromDict(fields);\n" +"string[] headers = { \"Content-Type: application/x-www-form-urlencoded\", $" +"\"Content-Length: {queryString.Length}\" };\n" +"var result = new HTTPClient().Request(HTTPClient.Method.Post, \"index.php\", " +"headers, queryString);\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]注意:[/b]如果 [param method] 是 [constant HTTPClient.METHOD_GET],则忽略 " +"[param body] 参数。这是因为 GET 方法不能包含请求数据。解决方法是,可以将请求" +"数据作为 URL 中的查询字符串传递。有关示例,请参见 [method String." +"uri_encode]。" + +msgid "" "Sets the proxy server for HTTP requests.\n" "The proxy server is unset if [param host] is empty or [param port] is -1." msgstr "" @@ -34612,6 +38285,337 @@ msgstr "" msgid "A node with the ability to send HTTP(S) requests." msgstr "具有发送 HTTP(S) 请求能力的节点。" +msgid "" +"A node with the ability to send HTTP requests. Uses [HTTPClient] " +"internally.\n" +"Can be used to make HTTP requests, i.e. download or upload files or web " +"content via HTTP.\n" +"[b]Warning:[/b] See the notes and warnings on [HTTPClient] for limitations, " +"especially regarding TLS security.\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.\n" +"[b]Example of contacting a REST API and printing one of its returned fields:" +"[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _ready():\n" +" # Create an HTTP request node and connect its completion signal.\n" +" var http_request = HTTPRequest.new()\n" +" add_child(http_request)\n" +" http_request.request_completed.connect(self._http_request_completed)\n" +"\n" +" # Perform a GET request. The URL below returns JSON as of writing.\n" +" var error = http_request.request(\"https://httpbin.org/get\")\n" +" if error != OK:\n" +" push_error(\"An error occurred in the HTTP request.\")\n" +"\n" +" # Perform a POST request. The URL below returns JSON as of writing.\n" +" # Note: Don't make simultaneous requests using a single HTTPRequest " +"node.\n" +" # The snippet below is provided for reference only.\n" +" var body = JSON.new().stringify({\"name\": \"Godette\"})\n" +" error = http_request.request(\"https://httpbin.org/post\", [], true, " +"HTTPClient.METHOD_POST, body)\n" +" if error != OK:\n" +" push_error(\"An error occurred in the HTTP request.\")\n" +"\n" +"# Called when the HTTP request is completed.\n" +"func _http_request_completed(result, response_code, headers, body):\n" +" var json = JSON.new()\n" +" json.parse(body.get_string_from_utf8())\n" +" var response = json.get_data()\n" +"\n" +" # Will print the user agent string used by the HTTPRequest node (as " +"recognized by httpbin.org).\n" +" print(response.headers[\"User-Agent\"])\n" +"[/gdscript]\n" +"[csharp]\n" +"public override void _Ready()\n" +"{\n" +" // Create an HTTP request node and connect its completion signal.\n" +" var httpRequest = new HTTPRequest();\n" +" AddChild(httpRequest);\n" +" httpRequest.RequestCompleted += HttpRequestCompleted;\n" +"\n" +" // Perform a GET request. The URL below returns JSON as of writing.\n" +" Error error = httpRequest.Request(\"https://httpbin.org/get\");\n" +" if (error != Error.Ok)\n" +" {\n" +" GD.PushError(\"An error occurred in the HTTP request.\");\n" +" }\n" +"\n" +" // Perform a POST request. The URL below returns JSON as of writing.\n" +" // Note: Don't make simultaneous requests using a single HTTPRequest " +"node.\n" +" // The snippet below is provided for reference only.\n" +" string body = new Json().Stringify(new Godot.Collections.Dictionary\n" +" {\n" +" { \"name\", \"Godette\" }\n" +" });\n" +" error = httpRequest.Request(\"https://httpbin.org/post\", null, true, " +"HTTPClient.Method.Post, body);\n" +" if (error != Error.Ok)\n" +" {\n" +" GD.PushError(\"An error occurred in the HTTP request.\");\n" +" }\n" +"}\n" +"\n" +"// Called when the HTTP request is completed.\n" +"private void HttpRequestCompleted(long result, long responseCode, string[] " +"headers, byte[] body)\n" +"{\n" +" var json = new Json();\n" +" json.Parse(body.GetStringFromUtf8());\n" +" var response = json.GetData().AsGodotDictionary();\n" +"\n" +" // Will print the user agent string used by the HTTPRequest node (as " +"recognized by httpbin.org).\n" +" GD.Print((response[\"headers\"].AsGodotDictionary())[\"User-Agent\"]);\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Example of loading and displaying an image using HTTPRequest:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _ready():\n" +" # Create an HTTP request node and connect its completion signal.\n" +" var http_request = HTTPRequest.new()\n" +" add_child(http_request)\n" +" http_request.request_completed.connect(self._http_request_completed)\n" +"\n" +" # Perform the HTTP request. The URL below returns a PNG image as of " +"writing.\n" +" var error = http_request.request(\"https://via.placeholder.com/512\")\n" +" if error != OK:\n" +" push_error(\"An error occurred in the HTTP request.\")\n" +"\n" +"# Called when the HTTP request is completed.\n" +"func _http_request_completed(result, response_code, headers, body):\n" +" if result != HTTPRequest.RESULT_SUCCESS:\n" +" push_error(\"Image couldn't be downloaded. Try a different image." +"\")\n" +"\n" +" var image = Image.new()\n" +" var error = image.load_png_from_buffer(body)\n" +" if error != OK:\n" +" push_error(\"Couldn't load the image.\")\n" +"\n" +" var texture = ImageTexture.create_from_image(image)\n" +"\n" +" # Display the image in a TextureRect node.\n" +" var texture_rect = TextureRect.new()\n" +" add_child(texture_rect)\n" +" texture_rect.texture = texture\n" +"[/gdscript]\n" +"[csharp]\n" +"public override void _Ready()\n" +"{\n" +" // Create an HTTP request node and connect its completion signal.\n" +" var httpRequest = new HTTPRequest();\n" +" AddChild(httpRequest);\n" +" httpRequest.RequestCompleted += HttpRequestCompleted;\n" +"\n" +" // Perform the HTTP request. The URL below returns a PNG image as of " +"writing.\n" +" Error error = httpRequest.Request(\"https://via.placeholder.com/512\");\n" +" if (error != Error.Ok)\n" +" {\n" +" GD.PushError(\"An error occurred in the HTTP request.\");\n" +" }\n" +"}\n" +"\n" +"// Called when the HTTP request is completed.\n" +"private void HttpRequestCompleted(long result, long responseCode, string[] " +"headers, byte[] body)\n" +"{\n" +" if (result != (long)HTTPRequest.Result.Success)\n" +" {\n" +" GD.PushError(\"Image couldn't be downloaded. Try a different image." +"\");\n" +" }\n" +" var image = new Image();\n" +" Error error = image.LoadPngFromBuffer(body);\n" +" if (error != Error.Ok)\n" +" {\n" +" GD.PushError(\"Couldn't load the image.\");\n" +" }\n" +"\n" +" var texture = ImageTexture.CreateFromImage(image);\n" +"\n" +" // Display the image in a TextureRect node.\n" +" var textureRect = new TextureRect();\n" +" AddChild(textureRect);\n" +" textureRect.Texture = texture;\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Gzipped response bodies[/b]: HTTPRequest will automatically handle " +"decompression of response bodies. A [code]Accept-Encoding[/code] header will " +"be automatically added to each of your requests, unless one is already " +"specified. Any response with a [code]Content-Encoding: gzip[/code] header " +"will automatically be decompressed and delivered to you as uncompressed " +"bytes." +msgstr "" +"一种具有发送 HTTP 请求能力的节点。内部使用 [HTTPClient]。\n" +"可用于发出 HTTP 请求,即通过 HTTP 下载或上传文件或网络内容。\n" +"[b]警告:[/b]请参阅 [HTTPClient] 中的注释和警告以了解限制,尤其是有关 TLS 安" +"全性的限制。\n" +"[b]注意:[/b]导出到 Android 时,在导出项目或使用一键部署前,请确保在 Android " +"导出预设中启用 [code]INTERNET[/code] 权限。否则,任何类型的网络通信都将被 " +"Android 阻止。\n" +"[b]联系 REST API 并打印其返回字段之一的示例:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _ready():\n" +" # 创建一个 HTTP 请求节点并连接其完成信号。\n" +" var http_request = HTTPRequest.new()\n" +" add_child(http_request)\n" +" http_request.request_completed.connect(self._http_request_completed)\n" +"\n" +" # 执行一个 GET 请求。以下 URL 会将写入作为 JSON 返回。\n" +" var error = http_request.request(\"https://httpbin.org/get\")\n" +" if error != OK:\n" +" push_error(\"在HTTP请求中发生了一个错误。\")\n" +"\n" +" # 执行一个 POST 请求。 以下 URL 会将写入作为 JSON 返回。\n" +" # 注意:不要使用单个 HTTPRequest 节点同时发出请求。\n" +" # 下面的代码片段仅供参考。\n" +" var body = JSON.new().stringify({\"name\": \"Godette\"})\n" +" error = http_request.request(\"https://httpbin.org/post\", [], true, " +"HTTPClient.METHOD_POST, body)\n" +" if error != OK:\n" +" push_error(\"在HTTP请求中发生了一个错误。\")\n" +"\n" +"# 当 HTTP 请求完成时调用。\n" +"func _http_request_completed(result, response_code, headers, body):\n" +" var json = JSON.new()\n" +" json.parse(body.get_string_from_utf8())\n" +" var response = json.get_data()\n" +"\n" +" # 将打印 HTTPRequest 节点使用的用户代理字符串(由 httpbin.org 识别)。\n" +" print(response.headers[\"User-Agent\"])\n" +"[/gdscript]\n" +"[csharp]\n" +"public override void _Ready()\n" +"{\n" +" // 创建一个 HTTP 请求节点并连接其完成信号。\n" +" var httpRequest = new HTTPRequest();\n" +" AddChild(httpRequest);\n" +" httpRequest.RequestCompleted += HttpRequestCompleted;\n" +"\n" +" // 执行一个 GET 请求。以下 URL 会将写入作为 JSON 返回。\n" +" Error error = httpRequest.Request(\"https://httpbin.org/get\");\n" +" if (error != Error.Ok)\n" +" {\n" +" GD.PushError(\"在HTTP请求中发生了一个错误。\");\n" +" }\n" +"\n" +" // 执行一个 POST 请求。 以下 URL 会将写入作为 JSON 返回。\n" +" // 注意:不要使用单个 HTTPRequest 节点同时发出请求。\n" +" // 下面的代码片段仅供参考。\n" +" string body = new Json().Stringify(new Godot.Collections.Dictionary\n" +" {\n" +" { \"name\", \"Godette\" }\n" +" });\n" +" error = httpRequest.Request(\"https://httpbin.org/post\", null, true, " +"HTTPClient.Method.Post, body);\n" +" if (error != Error.Ok)\n" +" {\n" +" GD.PushError(\"在HTTP请求中发生了一个错误。\");\n" +" }\n" +"}\n" +"\n" +"// 当 HTTP 请求完成时调用。\n" +"private void HttpRequestCompleted(long result, long responseCode, string[] " +"headers, byte[] body)\n" +"{\n" +" var json = new Json();\n" +" json.Parse(body.GetStringFromUtf8());\n" +" var response = json.GetData().AsGodotDictionary();\n" +"\n" +" // 将打印 HTTPRequest 节点使用的用户代理字符串(由 httpbin.org 识别)。\n" +" GD.Print((response[\"headers\"].AsGodotDictionary())[\"User-Agent\"]);\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]使用 HTTPRequest 加载和显示图像的示例:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _ready():\n" +" # 创建一个 HTTP 请求节点并连接其完成信号。\n" +" var http_request = HTTPRequest.new()\n" +" add_child(http_request)\n" +" http_request.request_completed.connect(self._http_request_completed)\n" +"\n" +" # 执行一个 HTTP 请求。下面的 URL 将写入作为一个 PNG 图像返回。\n" +" var error = http_request.request(\"https://via.placeholder.com/512\")\n" +" if error != OK:\n" +" push_error(\"在HTTP请求中发生了一个错误。\")\n" +"\n" +"# 当 HTTP 请求完成时调用。\n" +"func _http_request_completed(result, response_code, headers, body):\n" +" if result != HTTPRequest.RESULT_SUCCESS:\n" +" push_error(\"无法下载图像。尝试一个不同的图像。\")\n" +"\n" +" var image = Image.new()\n" +" var error = image.load_png_from_buffer(body)\n" +" if error != OK:\n" +" push_error(\"无法加载图像。\")\n" +"\n" +" var texture = ImageTexture.create_from_image(image)\n" +"\n" +" # 在 TextureRect 节点中显示图像。\n" +" var texture_rect = TextureRect.new()\n" +" add_child(texture_rect)\n" +" texture_rect.texture = texture\n" +"[/gdscript]\n" +"[csharp]\n" +"public override void _Ready()\n" +"{\n" +" // 创建一个 HTTP 请求节点并连接其完成信号。\n" +" var httpRequest = new HTTPRequest();\n" +" AddChild(httpRequest);\n" +" httpRequest.RequestCompleted += HttpRequestCompleted;\n" +"\n" +" // 执行一个 HTTP 请求。下面的 URL 将写入作为一个 PNG 图像返回。\n" +" Error error = httpRequest.Request(\"https://via.placeholder.com/512\");\n" +" if (error != Error.Ok)\n" +" {\n" +" GD.PushError(\"在HTTP请求中发生了一个错误。\");\n" +" }\n" +"}\n" +"\n" +"// 当 HTTP 请求完成时调用。\n" +"private void HttpRequestCompleted(long result, long responseCode, string[] " +"headers, byte[] body)\n" +"{\n" +" if (result != (long)HTTPRequest.Result.Success)\n" +" {\n" +" GD.PushError(\"无法下载图像。尝试一个不同的图像。\");\n" +" }\n" +" var image = new Image();\n" +" Error error = image.LoadPngFromBuffer(body);\n" +" if (error != Error.Ok)\n" +" {\n" +" GD.PushError(\"无法加载图像。\");\n" +" }\n" +"\n" +" var texture = ImageTexture.CreateFromImage(image);\n" +"\n" +" // 在 TextureRect 节点中显示图像。\n" +" var textureRect = new TextureRect();\n" +" AddChild(textureRect);\n" +" textureRect.Texture = texture;\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Gzipped 响应体[/b]:HTTPRequest 将自动处理响应体的解压缩。除非已经指定了一" +"个,否则 [code]Accept-Encoding[/code] 报头将自动添加到您的每个请求中。任何带" +"有 [code]Content-Encoding: gzip[/code] 报头的响应都将自动解压,并作为未压缩的" +"字节传送给您。" + msgid "Making HTTP requests" msgstr "发出 HTTP 请求" @@ -34637,6 +38641,43 @@ msgid "" msgstr "返回内部 [HTTPClient] 的当前状态。见 [enum HTTPClient.Status]。" msgid "" +"Creates request on the underlying [HTTPClient]. If there is no configuration " +"errors, it tries to connect using [method HTTPClient.connect_to_host] and " +"passes parameters onto [method HTTPClient.request].\n" +"Returns [constant OK] if request is successfully created. (Does not imply " +"that the server has responded), [constant ERR_UNCONFIGURED] if not in the " +"tree, [constant ERR_BUSY] if still processing previous request, [constant " +"ERR_INVALID_PARAMETER] if given string is not a valid URL format, or " +"[constant ERR_CANT_CONNECT] if not using thread and the [HTTPClient] cannot " +"connect to host.\n" +"[b]Note:[/b] When [param method] is [constant HTTPClient.METHOD_GET], the " +"payload sent via [param request_data] might be ignored by the server or even " +"cause the server to reject the request (check [url=https://datatracker.ietf." +"org/doc/html/rfc7231#section-4.3.1]RFC 7231 section 4.3.1[/url] for more " +"details). As a workaround, you can send data as a query string in the URL " +"(see [method String.uri_encode] for an example).\n" +"[b]Note:[/b] It's recommended to use transport encryption (TLS) and to avoid " +"sending sensitive information (such as login credentials) in HTTP GET URL " +"parameters. Consider using HTTP POST requests or HTTP headers for such " +"information instead." +msgstr "" +"在底层的 [HTTPClient] 上创建请求。如果没有配置错误,它会尝试使用 [method " +"HTTPClient.connect_to_host] 连接并将参数传递给 [method HTTPClient." +"request]。\n" +"如果成功创建请求,则返回 [constant OK]。(并不意味着服务器已响应),如果不在" +"树中,则返回 [constant ERR_UNCONFIGURED];如果仍在处理先前的请求,则返回 " +"[constant ERR_BUSY];如果给定的字符串不是有效的 URL 格式,则返回 [constant " +"ERR_INVALID_PARAMETER];或者如果不使用线程并且 [HTTPClient] 无法连接到主机," +"则返回 [constant ERR_CANT_CONNECT]。\n" +"[b]注意:[/b]当 [param method] 为 [constant HTTPClient.METHOD_GET] 时,通过 " +"[param request_data] 发送的有效载荷可能会被服务器忽略,甚至导致服务器拒绝请求" +"(参阅 [url= https://datatracker.ietf.org/doc/html/rfc7231#section-4.3.1]RFC " +"7231 第 4.3.1 节[/url]了解更多详情)。作为一种变通方法,可以在 URL 中将数据作" +"为查询字符串发送(有关示例,请参见 [method String.uri_encode])。\n" +"[b]注意:[/b]建议使用传输加密(TLS)并避免在 HTTP GET URL 参数中发送敏感信息" +"(例如登录凭据)。考虑改用 HTTP POST 请求或 HTTP 报头来获取此类信息。" + +msgid "" "Creates request on the underlying [HTTPClient] using a raw array of bytes " "for the request body. If there is no configuration errors, it tries to " "connect using [method HTTPClient.connect_to_host] and passes parameters onto " @@ -34742,6 +38783,62 @@ msgid "Importing images" msgstr "导入图像" msgid "" +"Alpha-blends [param src_rect] from [param src] image to this image at " +"coordinates [param dst], clipped accordingly to both image bounds. This " +"image and [param src] image [b]must[/b] have the same format. [param " +"src_rect] with non-positive size is treated as empty." +msgstr "" +"将 [param src] 图像上的 [param src_rect] 与该图像的坐标 [param dst] 处进行 " +"Alpha 混合,将根据两个图像的边界进行裁剪。该图像和 [param src] 图像[b]必须[/" +"b]具有相同的格式。具有非正大小的 [param src_rect] 将被视为空。" + +msgid "" +"Alpha-blends [param src_rect] from [param src] image to this image using " +"[param mask] image at coordinates [param dst], clipped accordingly to both " +"image bounds. Alpha channels are required for both [param src] and [param " +"mask]. [param dst] pixels and [param src] pixels will blend if the " +"corresponding mask pixel's alpha value is not 0. This image and [param src] " +"image [b]must[/b] have the same format. [param src] image and [param mask] " +"image [b]must[/b] have the same size (width and height) but they can have " +"different formats. [param src_rect] with non-positive size is treated as " +"empty." +msgstr "" +"使用遮罩图 [param mask],将源图像 [param src] 中的 [param src_rect] 区域的图" +"像,Alpha 混合到本图像从坐标 [param dst] 起的区域,会根据两者的图像区域进行裁" +"剪。[param src] 和 [param mask] 都需要有 Alpha 通道。如果遮罩图 mask 上某个像" +"素的 Alpha 值非 0,则相应的 [param dst] 的像素和 [param src] 的像素将混合。这" +"张图像和 [param src] 图像的格式[b]必须[/b]一致。[param src] 图像和 [param " +"mask] 图像的大小(宽度和高度)[b]必须[/b]相同,格式可以不同。[param " +"src_rect] 的大小如果非正,则会作为空矩形处理。" + +msgid "" +"Copies [param src_rect] from [param src] image to this image at coordinates " +"[param dst], clipped accordingly to both image bounds. This image and [param " +"src] image [b]must[/b] have the same format. [param src_rect] with non-" +"positive size is treated as empty." +msgstr "" +"将 [param src] 图像上的 [param src_rect] 复制到该图像的坐标 [param dst] 处," +"并根据两个图像边界进行裁剪。该图像和 [param src] 图像[b]必须[/b]具有相同的格" +"式。具有非正大小的 [param src_rect] 将被视为空矩形。" + +msgid "" +"Blits [param src_rect] area from [param src] image to this image at the " +"coordinates given by [param dst], clipped accordingly to both image bounds. " +"[param src] pixel is copied onto [param dst] if the corresponding [param " +"mask] pixel's alpha value is not 0. This image and [param src] image " +"[b]must[/b] have the same format. [param src] image and [param mask] image " +"[b]must[/b] have the same size (width and height) but they can have " +"different formats. [param src_rect] with non-positive size is treated as " +"empty." +msgstr "" +"将源图像 [param src] 上的矩形区域 [param src_rect] 复制到本图像从坐标 [param " +"dst] 起的区域,会根据两者的图像区域进行裁剪。如果遮罩图 [param mask] 上某个像" +"素的 Alpha 值非 0,就会把 [param src] 上对应的像素复制到 [param dst] 上。这张" +"图像和 [param src] 图像的格式[b]必须[/b]一致。[param src] 图像和 [param " +"mask] 图像的大小(宽度和高度)[b]必须[/b]相同,格式可以不同。[param " +"src_rect] 的大小如果非正,则会作为空矩形处理。" + +msgid "" "Converts a bump map to a normal map. A bump map provides a height offset per-" "pixel, while a normal map provides a normal direction per pixel." msgstr "" @@ -34751,6 +38848,35 @@ msgstr "" msgid "Removes the image's mipmaps." msgstr "删除图像的多级渐远纹理。" +msgid "" +"Compresses the image to use less memory. Can not directly access pixel data " +"while the image is compressed. Returns error if the chosen compression mode " +"is not available.\n" +"The [param mode] parameter helps to pick the best compression method for DXT " +"and ETC2 formats. It is ignored for ASTC compression.\n" +"For ASTC compression, the [param astc_format] parameter must be supplied." +msgstr "" +"压缩图像以减少内存的使用。当图像被压缩时,不能直接访问像素数据。如果选择的压" +"缩模式不可用,则返回错误。\n" +"[param mode] 参数有助于为 DXT 和 ETC2 格式选择最佳压缩方法。对于 ASTC 压缩," +"它会被忽略。\n" +"对于 ASTC 压缩,必须提供 [param astc_format] 参数。" + +msgid "" +"Compresses the image to use less memory. Can not directly access pixel data " +"while the image is compressed. Returns error if the chosen compression mode " +"is not available.\n" +"This is an alternative to [method compress] that lets the user supply the " +"channels used in order for the compressor to pick the best DXT and ETC2 " +"formats. For other formats (non DXT or ETC2), this argument is ignored.\n" +"For ASTC compression, the [param astc_format] parameter must be supplied." +msgstr "" +"压缩图像以减少内存的使用。当图像被压缩时,不能直接访问像素数据。如果选择的压" +"缩模式不可用,则返回错误。\n" +"这是 [method compress] 的一种替代方法,允许用户提供使用的通道,以便压缩器选择" +"最佳的 DXT 和 ETC2 格式。对于其他格式(非 DXT 或 ETC2),将忽略此参数。\n" +"对于 ASTC 压缩,必须提供 [param astc_format] 参数。" + msgid "Converts the image's format. See [enum Format] constants." msgstr "转换图像的格式。请参阅 [enum Format] 常量。" @@ -34758,6 +38884,25 @@ msgid "Copies [param src] image to this image." msgstr "将源图像 [param src] 复制到本图像。" msgid "" +"Creates an empty image of given size and format. See [enum Format] " +"constants. If [param use_mipmaps] is [code]true[/code], then generate " +"mipmaps for this image. See the [method generate_mipmaps]." +msgstr "" +"创建一个给定大小和格式的空图像。请参阅 [enum Format] 常量。如果 [param " +"use_mipmaps] 为 [code]true[/code],则为该图像生成 Mipmaps。请参阅 [method " +"generate_mipmaps]。" + +msgid "" +"Creates a new image of given size and format. See [enum Format] constants. " +"Fills the image with the given raw data. If [param use_mipmaps] is " +"[code]true[/code] then loads mipmaps for this image from [param data]. See " +"[method generate_mipmaps]." +msgstr "" +"创建一个给定大小和格式的新图像。请参阅 [enum Format] 常量。用给定的原始数据填" +"充图像。如果 [param use_mipmaps] 为 [code]true[/code],则从 [param data] 为该" +"图像加载 Mipmaps。请参阅 [method generate_mipmaps]。" + +msgid "" "Returns [constant ALPHA_BLEND] if the image has data for alpha values. " "Returns [constant ALPHA_BIT] if all the alpha values are stored in a single " "bit. Returns [constant ALPHA_NONE] if no data for alpha values is found." @@ -34781,6 +38926,18 @@ msgstr "水平翻转图像。" msgid "Flips the image vertically." msgstr "垂直翻转图像。" +msgid "" +"Generates mipmaps for the image. Mipmaps are precalculated lower-resolution " +"copies of the image that are automatically used if the image needs to be " +"scaled down when rendered. They help improve image quality and performance " +"when rendering. This method returns an error if the image is compressed, in " +"a custom format, or if the image's width/height is [code]0[/code]." +msgstr "" +"为图像生成 Mipmap。Mipmap 是预先计算好的图像的低分辨率副本,如果图像在渲染时" +"需要按比例缩小,则会自动使用这些副本。它们有助于在渲染时提高图像质量和性能。" +"如果图像被压缩,或采用自定义格式,或图像的宽度或高度为 [code]0[/code],则该方" +"法返回错误。" + msgid "Returns a copy of the image's raw data." msgstr "返回图像原始数据的副本。" @@ -34790,6 +38947,21 @@ msgstr "返回图像的格式。参阅 [enum Format] 常量。" msgid "Returns the image's height." msgstr "返回图像的高度。" +msgid "" +"Returns the offset where the image's mipmap with index [param mipmap] is " +"stored in the [code]data[/code] dictionary." +msgstr "" +"返回存储在图像的 [code]data[/code] 字典中的索引为 [param mipmap] 的多级渐远纹" +"理的偏移量。" + +msgid "" +"Returns the color of the pixel at [param point].\n" +"This is the same as [method get_pixel], but with a [Vector2i] argument " +"instead of two integer arguments." +msgstr "" +"返回 [param point] 处像素的颜色。\n" +"这与 [method get_pixel] 相同,只是用一个 [Vector2i] 参数代替了两个整数参数。" + msgid "Returns the image's size (width and height)." msgstr "返回图像的大小(宽度和高度)。" @@ -34813,6 +38985,22 @@ msgstr "" "的 Alpha 高于 0,则返回 [code]false[/code]。" msgid "" +"Loads an image from file [param path]. See [url=$DOCS_URL/tutorials/" +"assets_pipeline/importing_images.html#supported-image-formats]Supported " +"image formats[/url] for a list of supported image formats and limitations.\n" +"[b]Warning:[/b] This method should only be used in the editor or in cases " +"when you need to load external images at run-time, such as images located at " +"the [code]user://[/code] directory, and may not work in exported projects.\n" +"See also [ImageTexture] description for usage examples." +msgstr "" +"从文件 [param path] 加载图像。有关支持的图像格式的列表和限制,请参阅" +"[url=$DOCS_URL/tutorials/assets_pipeline/importing_images.html#supported-" +"image-formats]支持的图像格式[/url]。\n" +"[b]警告:[/b]该方法只能用于编辑器,或需要在运行时加载外部图像的情况,例如位" +"于 [code]user://[/code] 目录的图像,并且可能不适用于导出的项目。\n" +"另请参阅 [ImageTexture] 说明,以获取使用示例。" + +msgid "" "Loads an image from the binary contents of a BMP file.\n" "[b]Note:[/b] Godot's BMP module doesn't support 16-bit per pixel images. " "Only 1-bit, 4-bit, 8-bit, 24-bit, and 32-bit per pixel images are supported." @@ -34841,9 +39029,141 @@ msgstr "" "code]。" msgid "" +"Resizes the image to the nearest power of 2 for the width and height. If " +"[param square] is [code]true[/code] then set width and height to be the " +"same. New pixels are calculated using the [param interpolation] mode defined " +"via [enum Interpolation] constants." +msgstr "" +"将图像的宽度和高度调整为最接近的 2 的幂。如果 [param square] 为 [code]true[/" +"code],则将宽度和高度设置为相同。新像素将通过使用 [enum Interpolation] 常量定" +"义的 [param interpolation] 模式计算。" + +msgid "" "Converts a standard RGBE (Red Green Blue Exponent) image to an sRGB image." msgstr "将标准 RGBE(红绿蓝指数)图像转换为 sRGB 图像。" +msgid "" +"Saves the image as an EXR file to [param path]. If [param grayscale] is " +"[code]true[/code] and the image has only one channel, it will be saved " +"explicitly as monochrome rather than one red channel. This function will " +"return [constant ERR_UNAVAILABLE] if Godot was compiled without the TinyEXR " +"module.\n" +"[b]Note:[/b] The TinyEXR module is disabled in non-editor builds, which " +"means [method save_exr] will return [constant ERR_UNAVAILABLE] when it is " +"called from an exported project." +msgstr "" +"将图像作为 EXR 文件保存到 [param path]。如果 [param grayscale] 为 " +"[code]true[/code],并且图像只有一个通道,它将被明确地保存为单色而不是一个红色" +"通道。如果 Godot 是在没有 TinyEXR 模块的情况下编译的,则该函数将返回 " +"[constant ERR_UNAVAILABLE]。\n" +"[b]注意:[/b]TinyEXR 模块在非编辑器构建中被禁用,这意味着当 [method " +"save_exr] 从导出的项目中被调用时将返回 [constant ERR_UNAVAILABLE]。" + +msgid "" +"Saves the image as an EXR file to a byte array. If [param grayscale] is " +"[code]true[/code] and the image has only one channel, it will be saved " +"explicitly as monochrome rather than one red channel. This function will " +"return an empty byte array if Godot was compiled without the TinyEXR " +"module.\n" +"[b]Note:[/b] The TinyEXR module is disabled in non-editor builds, which " +"means [method save_exr] will return an empty byte array when it is called " +"from an exported project." +msgstr "" +"将图像作为 EXR 文件保存到一个字节数组。如果 [param grayscale] 为 [code]true[/" +"code] 并且图像只有一个通道,它将被明确地保存为单色而不是一个红色通道。如果 " +"Godot 是在没有 TinyEXR 模块的情况下编译的,则该函数将返回一个空字节数组。\n" +"[b]注意:[/b]TinyEXR 模块在非编辑器构建中被禁用,这意味着当 [method " +"save_exr] 从导出的项目中被调用时将返回一个空字节数组。" + +msgid "" +"Sets the [Color] of the pixel at [code](x, y)[/code] to [param color].\n" +"[b]Example:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"var img_width = 10\n" +"var img_height = 5\n" +"var img = Image.create(img_width, img_height, false, Image.FORMAT_RGBA8)\n" +"\n" +"img.set_pixel(1, 2, Color.RED) # Sets the color at (1, 2) to red.\n" +"[/gdscript]\n" +"[csharp]\n" +"int imgWidth = 10;\n" +"int imgHeight = 5;\n" +"var img = Image.Create(imgWidth, imgHeight, false, Image.Format.Rgba8);\n" +"\n" +"img.SetPixel(1, 2, Colors.Red); // Sets the color at (1, 2) to red.\n" +"[/csharp]\n" +"[/codeblocks]\n" +"This is the same as [method set_pixelv], but with a two integer arguments " +"instead of a [Vector2i] argument." +msgstr "" +"将 [code](x, y)[/code] 处像素的 [Color] 设置为 [param color]。\n" +"[b]示例:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"var img_width = 10\n" +"var img_height = 5\n" +"var img = Image.create(img_width, img_height, false, Image.FORMAT_RGBA8)\n" +"\n" +"img.set_pixel(1, 2, Color.RED) # 将 (1, 2) 处的颜色设置为红色。\n" +"[/gdscript]\n" +"[csharp]\n" +"int imgWidth = 10;\n" +"int imgHeight = 5;\n" +"var img = Image.Create(imgWidth, imgHeight, false, Image.Format.Rgba8);\n" +"\n" +"img.SetPixel(1, 2, Colors.Red); // 将 (1, 2) 处的颜色设置为红色。\n" +"[/csharp]\n" +"[/codeblocks]\n" +"这与 [method set_pixelv] 相同,只是使用两个整数参数而不是一个 [Vector2i] 参" +"数。" + +msgid "" +"Sets the [Color] of the pixel at [param point] to [param color].\n" +"[b]Example:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"var img_width = 10\n" +"var img_height = 5\n" +"var img = Image.create(img_width, img_height, false, Image.FORMAT_RGBA8)\n" +"\n" +"img.set_pixelv(Vector2i(1, 2), Color.RED) # Sets the color at (1, 2) to " +"red.\n" +"[/gdscript]\n" +"[csharp]\n" +"int imgWidth = 10;\n" +"int imgHeight = 5;\n" +"var img = Image.Create(imgWidth, imgHeight, false, Image.Format.Rgba8);\n" +"\n" +"img.SetPixelv(new Vector2I(1, 2), Colors.Red); // Sets the color at (1, 2) " +"to red.\n" +"[/csharp]\n" +"[/codeblocks]\n" +"This is the same as [method set_pixel], but with a [Vector2i] argument " +"instead of two integer arguments." +msgstr "" +"将 [param point] 处像素的 [Color] 设置为 [param color]。\n" +"[b]示例:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"var img_width = 10\n" +"var img_height = 5\n" +"var img = Image.create(img_width, img_height, false, Image.FORMAT_RGBA8)\n" +"\n" +"img.set_pixelv(Vector2i(1, 2), Color.RED) # 将 (1, 2) 处的颜色设置为红色。\n" +"[/gdscript]\n" +"[csharp]\n" +"int imgWidth = 10;\n" +"int imgHeight = 5;\n" +"var img = Image.Create(imgWidth, imgHeight, false, Image.Format.Rgba8);\n" +"\n" +"img.SetPixelv(new Vector2I(1, 2), Colors.Red); // 将 (1, 2) 处的颜色设置为红" +"色。\n" +"[/csharp]\n" +"[/codeblocks]\n" +"这与 [method set_pixel] 相同,只是使用一个 [Vector2i] 参数而不是两个整数参" +"数。" + msgid "Shrinks the image by a factor of 2." msgstr "将图像缩小 2 倍。" @@ -35251,10 +39571,54 @@ msgstr "将纹理的大小调整为指定的尺寸。" msgid "Texture with 3 dimensions." msgstr "具有 3 个维度的纹理。" +msgid "" +"Creates the [ImageTexture3D] with specified [param width], [param height], " +"and [param depth]. See [enum Image.Format] for [param format] options. If " +"[param use_mipmaps] is [code]true[/code], then generate mipmaps for the " +"[ImageTexture3D]." +msgstr "" +"创建具有指定 [param width]、[param height] 和 [param depth] 的 " +"[ImageTexture3D]。请参阅 [enum Image.Format] 了解 [param format] 选项。如果 " +"[param use_mipmaps] 为 [code]true[/code],则为该 [ImageTexture3D] 生成 " +"Mipmaps。" + +msgid "" +"Creates an [ImageTextureLayered] from an array of [Image]s. See [method " +"Image.create] for the expected data format. The first image decides the " +"width, height, image format and mipmapping setting. The other images " +"[i]must[/i] have the same width, height, image format and mipmapping " +"setting.\n" +"Each [Image] represents one [code]layer[/code]." +msgstr "" +"从一组 [Image] 创建一个 [ImageTextureLayered]。有关预期的数据格式,请参阅 " +"[method Image.create]。第一张图像决定宽度、高度、图像格式和 mipmapping 设置。" +"其他图像[i]必须[/i]具有相同的宽度、高度、图像格式和 mipmapping 设置。\n" +"每个 [Image] 代表一个 [code]layer[/code]。" + msgid "Clear all surfaces." msgstr "清除所有表面。" msgid "" +"ImporterMesh is a type of [Resource] analogous to [ArrayMesh]. It contains " +"vertex array-based geometry, divided in [i]surfaces[/i]. Each surface " +"contains a completely separate array and a material used to draw it. Design " +"wise, a mesh with multiple surfaces is preferred to a single surface, " +"because objects created in 3D editing software commonly contain multiple " +"materials.\n" +"Unlike its runtime counterpart, [ImporterMesh] contains mesh data before " +"various import steps, such as lod and shadow mesh generation, have taken " +"place. Modify surface data by calling [method clear], followed by [method " +"add_surface] for each surface." +msgstr "" +"ImporterMesh 是一种类似于 [ArrayMesh] 的 [Resource]。它包含基于顶点数组的几何" +"体,被分为[i]表面[/i]。每个表面都包含一个完全独立的数组和一个用于绘制它的材" +"质。在设计方面,具有多个表面的网格优于单个表面,因为在 3D 编辑软件中创建的对" +"象通常包含多种材质。\n" +"与其运行时对应物不同,[ImporterMesh] 在各种导入步骤(例如 lod 和阴影网格生" +"成)发生之前包含网格数据。修改表面数据时,通过先调用 [method clear] ,然后为" +"每个表面调用 [method add_surface]。" + +msgid "" "Returns a [Material] in a given surface. Surface is rendered using this " "material." msgstr "返回给定面的 [Material] 材质。面将由该材质来渲染。" @@ -35319,6 +39683,37 @@ msgstr "" "处理时间的高级情况下,这可能是有用的。" msgid "" +"Returns a value between 0 and 1 representing the raw intensity of the given " +"action, ignoring the action's deadzone. In most cases, you should use " +"[method get_action_strength] instead.\n" +"If [param exact_match] is [code]false[/code], it ignores additional input " +"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the " +"direction for [InputEventJoypadMotion] events." +msgstr "" +"返回一个介于 0 和 1 之间的值,表示给定动作的原始强度,忽略动作的死区。在大多" +"数情况下,应该改用 [method get_action_strength]。\n" +"如果 [param exact_match] 为 [code]false[/code],它会忽略 [InputEventKey] 和 " +"[InputEventMouseButton] 事件的额外输入修饰键,以及 [InputEventJoypadMotion] " +"事件的方向。" + +msgid "" +"Returns a value between 0 and 1 representing the intensity of the given " +"action. In a joypad, for example, the further away the axis (analog sticks " +"or L2, R2 triggers) is from the dead zone, the closer the value will be to " +"1. If the action is mapped to a control that has no axis as the keyboard, " +"the value returned will be 0 or 1.\n" +"If [param exact_match] is [code]false[/code], it ignores additional input " +"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the " +"direction for [InputEventJoypadMotion] events." +msgstr "" +"返回一个介于 0 和 1 之间的值,表示给定动作的强度。例如,在游戏手柄中,轴(模" +"拟摇杆或 L2、R2 触发器)离死区越远,该值将越接近 1。如果动作被映射到一个如键" +"盘一样没有轴的控制器时,返回值将为 0 或 1。\n" +"如果 [param exact_match] 为 [code]false[/code],它会忽略 [InputEventKey] 和 " +"[InputEventMouseButton] 事件的额外输入修饰键,以及 [InputEventJoypadMotion] " +"事件的方向。" + +msgid "" "Get axis input by specifying two actions, one negative and one positive.\n" "This is a shorthand for writing [code]Input." "get_action_strength(\"positive_action\") - Input." @@ -35396,6 +39791,107 @@ msgstr "" "想要的值(在 0 到 1 的范围内)。" msgid "" +"Returns [code]true[/code] when the user starts pressing the action event, " +"meaning it's [code]true[/code] only on the frame that the user pressed down " +"the button.\n" +"This is useful for code that needs to run only once when an action is " +"pressed, instead of every frame while it's pressed.\n" +"If [param exact_match] is [code]false[/code], it ignores additional input " +"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the " +"direction for [InputEventJoypadMotion] events.\n" +"[b]Note:[/b] Due to keyboard ghosting, [method is_action_just_pressed] may " +"return [code]false[/code] even if one of the action's keys is pressed. See " +"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input " +"examples[/url] in the documentation for more information." +msgstr "" +"当用户开始按下动作事件时返回 [code]true[/code],这意味着它仅在用户按下按钮的" +"那一帧上为 [code]true[/code]。\n" +"这对于需要在动作被按下时只运行一次,而不是在被按下时每一帧都运行的代码很有" +"用。\n" +"如果 [param exact_match] 为 [code]false[/code],则它将忽略 [InputEventKey] " +"和 [InputEventMouseButton] 事件的额外输入修饰键,以及 " +"[InputEventJoypadMotion] 事件的方向。\n" +"[b]注意:[/b]由于键盘重影,[method is_action_just_pressed] 可能会返回 " +"[code]false[/code],即使该动作的某个键被按下时也是如此。有关详细信息,请参阅" +"文档中的[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]" +"《输入示例》[/url]。" + +msgid "" +"Returns [code]true[/code] when the user stops pressing the action event, " +"meaning it's [code]true[/code] only on the frame that the user released the " +"button.\n" +"If [param exact_match] is [code]false[/code], it ignores additional input " +"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the " +"direction for [InputEventJoypadMotion] events." +msgstr "" +"当用户停止按下动作事件时返回 [code]true[/code],这意味着它仅在用户释放按钮的" +"那一帧上为 [code]true[/code]。\n" +"如果 [param exact_match] 为 [code]false[/code],它会忽略 [InputEventKey] 和 " +"[InputEventMouseButton] 事件的额外输入修饰键,以及 [InputEventJoypadMotion] " +"事件的方向。" + +msgid "" +"Returns [code]true[/code] if you are pressing the action event. Note that if " +"an action has multiple buttons assigned and more than one of them is " +"pressed, releasing one button will release the action, even if some other " +"button assigned to this action is still pressed.\n" +"If [param exact_match] is [code]false[/code], it ignores additional input " +"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the " +"direction for [InputEventJoypadMotion] events.\n" +"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return " +"[code]false[/code] even if one of the action's keys is pressed. See " +"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input " +"examples[/url] in the documentation for more information." +msgstr "" +"如果正在按下动作事件,则返回 [code]true[/code]。请注意,如果一个动作分配了多" +"个按钮,并且不止一个按钮被按下,则释放一个按钮将释放该动作,即使分配给该动作" +"的其他一些按钮仍然被按下时也是如此。\n" +"如果 [param exact_match] 为 [code]false[/code],它会忽略 [InputEventKey] 和 " +"[InputEventMouseButton] 事件的额外输入修饰键,以及 [InputEventJoypadMotion] " +"事件的方向。\n" +"[b]注意:[/b]由于键盘重影,[method is_action_pressed] 可能会返回 " +"[code]false[/code],即使该动作的某个键被按下时也是如此。有关详细信息,请参阅" +"文档中的 [url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]" +"《输入示例》[/url]。" + +msgid "" +"Feeds an [InputEvent] to the game. Can be used to artificially trigger input " +"events from code. Also generates [method Node._input] calls.\n" +"[b]Example:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"var cancel_event = InputEventAction.new()\n" +"cancel_event.action = \"ui_cancel\"\n" +"cancel_event.pressed = true\n" +"Input.parse_input_event(cancel_event)\n" +"[/gdscript]\n" +"[csharp]\n" +"var cancelEvent = new InputEventAction();\n" +"cancelEvent.Action = \"ui_cancel\";\n" +"cancelEvent.Pressed = true;\n" +"Input.ParseInputEvent(cancelEvent);\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"向游戏提供一个 [InputEvent]。可用于从代码中人为地触发输入事件。也会产生 " +"[method Node._input] 调用。\n" +"[b]示例:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"var cancel_event = InputEventAction.new()\n" +"cancel_event.action = \"ui_cancel\"\n" +"cancel_event.pressed = true\n" +"Input.parse_input_event(cancel_event)\n" +"[/gdscript]\n" +"[csharp]\n" +"var cancelEvent = new InputEventAction();\n" +"cancelEvent.Action = \"ui_cancel\";\n" +"cancelEvent.Pressed = true;\n" +"Input.ParseInputEvent(cancelEvent);\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" "Removes all mappings from the internal database that match the given GUID." msgstr "从内部数据库中删除与给定 GUID 匹配的所有映射。" @@ -35411,6 +39907,36 @@ msgstr "" "[b]注意:[/b]这个值在 Android 和 iOS 上可立即被硬件传感器的值所覆盖。" msgid "" +"Sets a custom mouse cursor image, which is only visible inside the game " +"window. The hotspot can also be specified. Passing [code]null[/code] to the " +"image parameter resets to the system cursor. See [enum CursorShape] for the " +"list of shapes.\n" +"[param image]'s size must be lower than 256×256.\n" +"[param hotspot] must be within [param image]'s size.\n" +"[b]Note:[/b] [AnimatedTexture]s aren't supported as custom mouse cursors. If " +"using an [AnimatedTexture], only the first frame will be displayed.\n" +"[b]Note:[/b] Only images imported with the [b]Lossless[/b], [b]Lossy[/b] or " +"[b]Uncompressed[/b] compression modes are supported. The [b]Video RAM[/b] " +"compression mode can't be used for custom cursors.\n" +"[b]Note:[/b] On the web platform, the maximum allowed cursor image size is " +"128×128. Cursor images larger than 32×32 will also only be displayed if the " +"mouse cursor image is entirely located within the page for [url=https://" +"chromestatus.com/feature/5825971391299584]security reasons[/url]." +msgstr "" +"设置一个自定义鼠标光标图像,该图像仅当游戏窗口内可见。还可以指定热点。将 " +"[code]null[/code] 传递给 image 参数将重置为系统光标。有关详细信息,请参阅 " +"[enum CursorShape] 形状列表。\n" +"[param image] 的大小必须小于 256×256。\n" +"[param hotspot] 必须在 [param image] 的大小范围内。\n" +"[b]注意:[/b]不支持 [AnimatedTexture] 作为自定义鼠标光标。如果使用 " +"[AnimatedTexture],则只会显示第一帧。\n" +"[b]注意:[/b]仅支持以[b]无损[/b]、[b]有损[/b]、或[b]未压缩[/b]压缩模式导入的" +"图像。[b]Video RAM[/b] 压缩模式不能用于自定义光标。\n" +"[b]注意:[/b]在网络平台上,最大允许的光标图像大小为 128×128。 出于" +"[url=https://chromestatus.com/feature/5825971391299584]安全原因[/url],只有当" +"鼠标光标图像完全位于页面内时,大于 32×32 的光标图像才会显示。" + +msgid "" "Sets the default cursor shape to be used in the viewport instead of " "[constant CURSOR_ARROW].\n" "[b]Note:[/b] If you want to change the default cursor shape for [Control]'s " @@ -35456,6 +39982,44 @@ msgstr "" "的编辑器中。\n" "[b]注意:[/b]在 Android 和 iOS 上,这个值可立即被硬件传感器的值所覆盖。" +msgid "" +"Starts to vibrate the joypad. Joypads usually come with two rumble motors, a " +"strong and a weak one. [param weak_magnitude] is the strength of the weak " +"motor (between 0 and 1) and [param strong_magnitude] is the strength of the " +"strong motor (between 0 and 1). [param duration] is the duration of the " +"effect in seconds (a duration of 0 will try to play the vibration " +"indefinitely). The vibration can be stopped early by calling [method " +"stop_joy_vibration].\n" +"[b]Note:[/b] Not every hardware is compatible with long effect durations; it " +"is recommended to restart an effect if it has to be played for more than a " +"few seconds." +msgstr "" +"开始振动游戏手柄。游戏手柄通常带有两个震动马达,一强一弱。[param " +"weak_magnitude] 是弱马达的强度(介于 0 和 1 之间),[param strong_magnitude] " +"是强马达的强度(介于 0 和 1 之间)。[param duration] 是效果的持续时间(以秒为" +"单位)(持续时间为 0 将尝试无限期地播放振动)。调用 [method " +"stop_joy_vibration] 可以提前停止震动。\n" +"[b]注意:[/b]并非所有硬件都兼容长效果持续时间;如果播放的时长必须超过几秒钟," +"建议重新启动效果。" + +msgid "" +"Sets the mouse position to the specified vector, provided in pixels and " +"relative to an origin at the upper left corner of the currently focused " +"Window Manager game window.\n" +"Mouse position is clipped to the limits of the screen resolution, or to the " +"limits of the game window if [enum MouseMode] is set to [constant " +"MOUSE_MODE_CONFINED] or [constant MOUSE_MODE_CONFINED_HIDDEN].\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 "" +"将鼠标位置设置为指定的向量,单位为像素,并相对于当前聚焦的窗口管理器游戏窗口" +"左上角的原点。\n" +"如果 [enum MouseMode] 被设置为 [constant MOUSE_MODE_CONFINED] 或 [constant " +"MOUSE_MODE_CONFINED_HIDDEN],则鼠标位置会被钳制在屏幕分辨率的限制内,或者钳制" +"在游戏窗口的限制内。\n" +"[b]注意:[/b][method warp_mouse] 仅支持 Windows、macOS 和 Linux。它对 " +"Android、iOS 和 Web 没有影响。" + msgid "Controls the mouse mode. See [enum MouseMode] for more information." msgstr "控制鼠标模式。详情请参阅 [enum MouseMode]。" @@ -35582,12 +40146,100 @@ msgid "Returns a [String] representation of the event." msgstr "返回事件的 [String] 字符串表示。" msgid "" +"Returns a value between 0.0 and 1.0 depending on the given actions' state. " +"Useful for getting the value of events of type [InputEventJoypadMotion].\n" +"If [param exact_match] is [code]false[/code], it ignores additional input " +"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the " +"direction for [InputEventJoypadMotion] events." +msgstr "" +"根据给定动作的状态返回 0.0 到 1.0 之间的值。获取 [InputEventJoypadMotion] 类" +"型事件的值时很有用。\n" +"如果 [param exact_match] 为 [code]false[/code],它会忽略 [InputEventKey] 和 " +"[InputEventMouseButton] 事件的额外输入修饰键,以及 [InputEventJoypadMotion] " +"事件的方向。" + +msgid "" +"Returns [code]true[/code] if this input event matches a pre-defined action " +"of any type.\n" +"If [param exact_match] is [code]false[/code], it ignores additional input " +"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the " +"direction for [InputEventJoypadMotion] events." +msgstr "" +"如果该输入事件匹配任何类型的预定义动作,则返回 [code]true[/code]。\n" +"如果 [param exact_match] 为 [code]false[/code],它会忽略 [InputEventKey] 和 " +"[InputEventMouseButton] 事件的额外输入修饰键,以及 [InputEventJoypadMotion] " +"事件的方向。" + +msgid "" +"Returns [code]true[/code] if the given action is being pressed (and is not " +"an echo event for [InputEventKey] events, unless [param allow_echo] is " +"[code]true[/code]). Not relevant for events of type [InputEventMouseMotion] " +"or [InputEventScreenDrag].\n" +"If [param exact_match] is [code]false[/code], it ignores additional input " +"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the " +"direction for [InputEventJoypadMotion] events.\n" +"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return " +"[code]false[/code] even if one of the action's keys is pressed. See " +"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input " +"examples[/url] in the documentation for more information." +msgstr "" +"如果给定的动作正被按下,则返回 [code]true[/code](除非 [param allow_echo] 为 " +"[code]true[/code],否则不是 [InputEventKey] 事件中的回显事件)。与 " +"[InputEventMouseMotion] 或 [InputEventScreenDrag] 类型的事件无关。\n" +"如果 [param exact_match] 为 [code]false[/code],则它会忽略 [InputEventKey] " +"和 [InputEventMouseButton] 事件的额外输入修饰键,以及 " +"[InputEventJoypadMotion] 事件的方向。\n" +"[b]注意:[/b]由于键盘重影,[method is_action_pressed] 可能会返回 " +"[code]false[/code],即使动作的某个键被按下时也是如此。有关详细信息,请参阅文" +"档中的 [url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]" +"《输入示例》[/url]。" + +msgid "" +"Returns [code]true[/code] if the given action is released (i.e. not " +"pressed). Not relevant for events of type [InputEventMouseMotion] or " +"[InputEventScreenDrag].\n" +"If [param exact_match] is [code]false[/code], it ignores additional input " +"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the " +"direction for [InputEventJoypadMotion] events." +msgstr "" +"如果给定的动作被释放(即未按下),则返回 [code]true[/code]。与 " +"[InputEventMouseMotion] 或 [InputEventScreenDrag] 类型的事件无关。\n" +"如果 [param exact_match] 为 [code]false[/code],它会忽略 [InputEventKey] 和 " +"[InputEventMouseButton] 事件的额外输入修饰键,以及 [InputEventJoypadMotion] " +"事件的方向。" + +msgid "" "Returns [code]true[/code] if this input event's type is one that can be " "assigned to an input action." msgstr "" "如果这个输入事件的类型是可以分配给输入动作的类型,则返回 [code]true[/code]。" msgid "" +"Returns [code]true[/code] if this input event is an echo event (only for " +"events of type [InputEventKey]). Any other event type returns [code]false[/" +"code]." +msgstr "" +"如果该输入事件是回显事件(仅适用于 [InputEventKey] 类型的事件),则返回 " +"[code]true[/code]。任何其他事件类型将返回 [code]false[/code]。" + +msgid "" +"Returns [code]true[/code] if the specified [param event] matches this event. " +"Only valid for action events i.e key ([InputEventKey]), button " +"([InputEventMouseButton] or [InputEventJoypadButton]), axis " +"[InputEventJoypadMotion] or action ([InputEventAction]) events.\n" +"If [param exact_match] is [code]false[/code], it ignores additional input " +"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the " +"direction for [InputEventJoypadMotion] events." +msgstr "" +"如果指定的 [param event] 与该事件匹配,则返回 [code]true[/code]。仅对动作事件" +"有效,即键([InputEventKey])、按钮([InputEventMouseButton] 或 " +"[InputEventJoypadButton])、轴 [InputEventJoypadMotion] 或动作" +"([InputEventAction])事件。\n" +"如果 [param exact_match] 为 [code]false[/code],它会忽略 [InputEventKey] 和 " +"[InputEventMouseButton] 事件的额外输入修饰键,以及 [InputEventJoypadMotion] " +"事件的方向。" + +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 " @@ -35701,6 +40353,34 @@ msgid "" msgstr "返回该事件 [member physical_keycode] 及修饰键的 [String] 字符串表示。" msgid "" +"Returns the localized key label combined with modifier keys such as " +"[kbd]Shift[/kbd] or [kbd]Alt[/kbd]. See also [InputEventWithModifiers].\n" +"To get a human-readable representation of the [InputEventKey] with " +"modifiers, use [code]OS.get_keycode_string(event." +"get_key_label_with_modifiers())[/code] where [code]event[/code] is the " +"[InputEventKey]." +msgstr "" +"返回与修饰键,例如 [kbd]Shift[/kbd] 或 [kbd]Alt[/kbd] 组合的本地化键标签。另" +"见 [InputEventWithModifiers]。\n" +"要获得带有修饰键的 [InputEventKey] 的人类可读表示,请使用 [code]OS." +"get_keycode_string(event.get_key_label_with_modifiers())[/code],其中 " +"[code]event[/code] 是 [InputEventKey]。" + +msgid "" +"Returns the Latin keycode combined with modifier keys such as [kbd]Shift[/" +"kbd] or [kbd]Alt[/kbd]. See also [InputEventWithModifiers].\n" +"To get a human-readable representation of the [InputEventKey] with " +"modifiers, use [code]OS.get_keycode_string(event." +"get_keycode_with_modifiers())[/code] where [code]event[/code] is the " +"[InputEventKey]." +msgstr "" +"返回与 [kbd]Shift[/kbd] 或 [kbd]Alt[/kbd] 等修饰键组合的拉丁键码。另见 " +"[InputEventWithModifiers]。\n" +"要获得带有修饰键的 [InputEventKey] 的人类可读表示,请使用 [code]OS." +"get_keycode_string(event.get_keycode_with_modifiers())[/code],其中 " +"[code]event[/code] 是 [InputEventKey]。" + +msgid "" "If [code]true[/code], the key was already pressed before this event. It " "means the user is holding the key down." msgstr "" @@ -36137,7 +40817,7 @@ msgstr "" "[InputEvent] 没有被按下,这个方法会忽略键盘(为了正确地检测释放)。如果你不想" "要这种行为,请参阅 [method action_has_event]。\n" "如果 [param exact_match] 是 [code]false[/code],它会忽略 [InputEventKey] 和 " -"[InputEventMouseButton] 事件的额外输入修饰符,以及 [InputEventJoypadMotion] " +"[InputEventMouseButton] 事件的额外输入修饰键,以及 [InputEventJoypadMotion] " "事件的方向。" msgid "Returns an array of all actions in the [InputMap]." @@ -36760,6 +41440,18 @@ msgid "" "column, or optionally in multiple columns." msgstr "提供可选中项目(和/或图标)列表的控件,既可以是单列,也可以是多列。" +msgid "" +"Adds an item to the item list with specified text. Returns the index of an " +"added item.\n" +"Specify an [param icon], or use [code]null[/code] as the [param icon] for a " +"list item with no icon.\n" +"If selectable is [code]true[/code], the list item will be selectable." +msgstr "" +"将一个项目添加到项目列表中,并指定文本。返回添加的项目的索引。\n" +"指定一个 [param icon],或列表项没有图标时使用 [code]null[/code] 作为 [param " +"icon]。\n" +"如果 selectable 为 [code]true[/code],则列表项将是可选择的。" + msgid "Removes all items from the list." msgstr "移除列表中的所有项目。" @@ -37144,6 +41836,61 @@ msgid "Exporting for the Web: Calling JavaScript from script" msgstr "为 Web 导出:从脚本调用 JavaScript" msgid "" +"Creates a new JavaScript object using the [code]new[/code] constructor. The " +"[param object] must a valid property of the JavaScript [code]window[/code]. " +"See [JavaScriptObject] for usage." +msgstr "" +"使用 [code]new[/code] 构造函数创建一个新的 JavaScript 对象。[param object] 必" +"须是 JavaScript [code]window[/code] 的有效属性。有关用法,请参阅 " +"[JavaScriptObject]。" + +msgid "" +"Prompts the user to download a file containing the specified [param buffer]. " +"The file will have the given [param name] and [param mime] type.\n" +"[b]Note:[/b] The browser may override the [url=https://en.wikipedia.org/wiki/" +"Media_type]MIME type[/url] provided based on the file [param name]'s " +"extension.\n" +"[b]Note:[/b] Browsers might block the download if [method download_buffer] " +"is not being called from a user interaction (e.g. button click).\n" +"[b]Note:[/b] Browsers might ask the user for permission or block the " +"download if multiple download requests are made in a quick succession." +msgstr "" +"提示用户下载一个包含指定 [param buffer] 的文件。该文件将具有给定的 [param " +"name] 和 [param mime] 类型。\n" +"[b]注意:[/b]浏览器可能会覆盖根据文件 [param name] 的扩展名提供的 " +"[url=https://en.wikipedia.org/wiki/Media_type]MIME 类型[/url]。\n" +"[b]注意:[/b]如果 [method download_buffer] 不是从用户交互(例如按钮点击)中调" +"用的,浏览器可能会阻止下载。\n" +"[b]注意:[/b]如果快速连续发出多个下载请求,浏览器可能会要求用户同意或阻止下" +"载。" + +msgid "" +"Execute the string [param code] as JavaScript code within the browser " +"window. This is a call to the actual global JavaScript function [code]eval()" +"[/code].\n" +"If [param use_global_execution_context] is [code]true[/code], the code will " +"be evaluated in the global execution context. Otherwise, it is evaluated in " +"the execution context of a function within the engine's runtime environment." +msgstr "" +"在浏览器窗口中将字符串 [param code] 作为 JavaScript 代码执行。这是对实际的全" +"局 JavaScript 函数 [code]eval()[/code] 的调用。\n" +"如果 [param use_global_execution_context] 为 [code]true[/code],则代码将在全" +"局执行上下文中被求值。否则,它将在引擎运行时环境中的函数的执行上下文中进行求" +"值。" + +msgid "" +"Returns an interface to a JavaScript object that can be used by scripts. The " +"[param interface] must be a valid property of the JavaScript [code]window[/" +"code]. The callback must accept a single [Array] argument, which will " +"contain the JavaScript [code]arguments[/code]. See [JavaScriptObject] for " +"usage." +msgstr "" +"返回一个可以被脚本使用的 JavaScript 对象的接口。[param interface] 必须是 " +"JavaScript [code]window[/code] 的有效属性。回调必须接受单个 [Array] 参数,它" +"将包含 JavaScript [code]arguments[/code]。有关用法,请参阅 " +"[JavaScriptObject]。" + +msgid "" "Returns [code]true[/code] if a new version of the progressive web app is " "waiting to be activated.\n" "[b]Note:[/b] Only relevant when exported as a Progressive Web App." @@ -37175,6 +41922,81 @@ msgid "A wrapper class for web native JavaScript objects." msgstr "Web 原生 JavaScript 对象的封装类。" msgid "" +"JavaScriptObject is used to interact with JavaScript objects retrieved or " +"created via [method JavaScriptBridge.get_interface], [method " +"JavaScriptBridge.create_object], or [method JavaScriptBridge." +"create_callback].\n" +"[b]Example:[/b]\n" +"[codeblock]\n" +"extends Node\n" +"\n" +"var _my_js_callback = JavaScriptBridge.create_callback(self, \"myCallback\") " +"# This reference must be kept\n" +"var console = JavaScriptBridge.get_interface(\"console\")\n" +"\n" +"func _init():\n" +" var buf = JavaScriptBridge.create_object(\"ArrayBuffer\", 10) # new " +"ArrayBuffer(10)\n" +" print(buf) # prints [JavaScriptObject:OBJECT_ID]\n" +" var uint8arr = JavaScriptBridge.create_object(\"Uint8Array\", buf) # new " +"Uint8Array(buf)\n" +" uint8arr[1] = 255\n" +" prints(uint8arr[1], uint8arr.byteLength) # prints 255 10\n" +" console.log(uint8arr) # prints in browser console \"Uint8Array(10) [ 0, " +"255, 0, 0, 0, 0, 0, 0, 0, 0 ]\"\n" +"\n" +" # Equivalent of JavaScriptBridge: Array.from(uint8arr)." +"forEach(myCallback)\n" +" JavaScriptBridge.get_interface(\"Array\").from(uint8arr)." +"forEach(_my_js_callback)\n" +"\n" +"func myCallback(args):\n" +" # Will be called with the parameters passed to the \"forEach\" callback\n" +" # [0, 0, [JavaScriptObject:1173]]\n" +" # [255, 1, [JavaScriptObject:1173]]\n" +" # ...\n" +" # [0, 9, [JavaScriptObject:1180]]\n" +" print(args)\n" +"[/codeblock]\n" +"[b]Note:[/b] Only available in the Web platform." +msgstr "" +"JavaScriptObject 用于与通过 [method JavaScriptBridge.get_interface]、[method " +"JavaScriptBridge.create_object] 或 [method JavaScriptBridge.create_callback] " +"检索或创建的 JavaScript 对象进行交互。\n" +"[b]示例:[/b]\n" +"[codeblock]\n" +"extends Node\n" +"\n" +"var _my_js_callback = JavaScriptBridge.create_callback(self, \"myCallback\") " +"# 必须保留该引用\n" +"var console = JavaScriptBridge.get_interface(\"console\")\n" +"\n" +"func _init():\n" +" var buf = JavaScriptBridge.create_object(\"ArrayBuffer\", 10) # 新建 " +"ArrayBuffer(10)\n" +" print(buf) # 输出 [JavaScriptObject:OBJECT_ID]\n" +" var uint8arr = JavaScriptBridge.create_object(\"Uint8Array\", buf) # 新" +"建 Uint8Array(buf)\n" +" uint8arr[1] = 255\n" +" prints(uint8arr[1], uint8arr.byteLength) # 输出 255 10\n" +" console.log(uint8arr) # prints in browser console \"Uint8Array(10) [ 0, " +"255, 0, 0, 0, 0, 0, 0, 0, 0 ]\"\n" +"\n" +" # 等效于 JavaScriptBridge: Array.from(uint8arr).forEach(myCallback)\n" +" JavaScriptBridge.get_interface(\"Array\").from(uint8arr)." +"forEach(_my_js_callback)\n" +"\n" +"func myCallback(args):\n" +" # 将使用传递给“forEach”回调的参数调用\n" +" # [0, 0, [JavaScriptObject:1173]]\n" +" # [255, 1, [JavaScriptObject:1173]]\n" +" # ...\n" +" # [0, 9, [JavaScriptObject:1180]]\n" +" print(args)\n" +"[/codeblock]\n" +"[b]注意:[/b]仅在 Web 平台上可用。" + +msgid "" "Singleton that connects the engine with Android plugins to interface with " "native Android code." msgstr "将引擎与 Android 插件连接起来以与原生 Android 代码交互的单例。" @@ -37341,6 +42163,109 @@ msgstr "" "如果上一次调用 [method parse] 成功,则返回空字符串,否则返回失败时的错误消" "息。" +msgid "" +"Converts a [Variant] var to JSON text and returns the result. Useful for " +"serializing data to store or send over the network.\n" +"[b]Note:[/b] The JSON specification does not define integer or float types, " +"but only a [i]number[/i] type. Therefore, converting a Variant to JSON text " +"will convert all numerical values to [float] types.\n" +"[b]Note:[/b] If [param full_precision] is [code]true[/code], when " +"stringifying floats, the unreliable digits are stringified in addition to " +"the reliable digits to guarantee exact decoding.\n" +"The [param indent] parameter controls if and how something is indented, the " +"string used for this parameter will be used where there should be an indent " +"in the output, even spaces like [code]\" \"[/code] will work. [code]\\t[/" +"code] and [code]\\n[/code] can also be used for a tab indent, or to make a " +"newline for each indent respectively.\n" +"[b]Example output:[/b]\n" +"[codeblock]\n" +"## JSON.stringify(my_dictionary)\n" +"{\"name\":\"my_dictionary\",\"version\":\"1.0.0\",\"entities\":[{\"name\":" +"\"entity_0\",\"value\":\"value_0\"},{\"name\":\"entity_1\",\"value\":" +"\"value_1\"}]}\n" +"\n" +"## JSON.stringify(my_dictionary, \"\\t\")\n" +"{\n" +" \"name\": \"my_dictionary\",\n" +" \"version\": \"1.0.0\",\n" +" \"entities\": [\n" +" {\n" +" \"name\": \"entity_0\",\n" +" \"value\": \"value_0\"\n" +" },\n" +" {\n" +" \"name\": \"entity_1\",\n" +" \"value\": \"value_1\"\n" +" }\n" +" ]\n" +"}\n" +"\n" +"## JSON.stringify(my_dictionary, \"...\")\n" +"{\n" +"...\"name\": \"my_dictionary\",\n" +"...\"version\": \"1.0.0\",\n" +"...\"entities\": [\n" +"......{\n" +".........\"name\": \"entity_0\",\n" +".........\"value\": \"value_0\"\n" +"......},\n" +"......{\n" +".........\"name\": \"entity_1\",\n" +".........\"value\": \"value_1\"\n" +"......}\n" +"...]\n" +"}\n" +"[/codeblock]" +msgstr "" +"将 [Variant] 变量转换为 JSON 文本并返回结果。可用于将数据进行序列化保存或通过" +"网络发送。\n" +"[b]注意:[/b]JSON 规范没有定义整数和浮点数类型,只有一个[i]数字[/i]类型。因" +"此,将 Variant 转换为 JSON 文本会将所有数字值转换为 [float] 类型。\n" +"[b]注意:[/b]如果 [param full_precision] 为 [code]true[/code],则在字符串化浮" +"点数时,除可靠数字外,还将对不可靠数字进行字符串化,以保证准确解码。\n" +"[param indent] 参数控制是否缩进以及如何缩进,用于输出该参数的字符串时应该有缩" +"进的地方,甚至可以使用空格 [code]\" \"[/code]。[code]\\t[/code] 和 " +"[code]\\n[/code] 可用于制表符缩进,或分别为每个缩进换行。\n" +"[b]示例输出:[/b]\n" +"[codeblock]\n" +"## JSON.stringify(my_dictionary)\n" +"{\"name\":\"my_dictionary\",\"version\":\"1.0.0\",\"entities\":[{\"name\":" +"\"entity_0\",\"value\":\"value_0\"},{\"name\":\"entity_1\",\"value\":" +"\"value_1\"}]}\n" +"\n" +"## JSON.stringify(my_dictionary, \"\\t\")\n" +"{\n" +" \"name\": \"my_dictionary\",\n" +" \"version\": \"1.0.0\",\n" +" \"entities\": [\n" +" {\n" +" \"name\": \"entity_0\",\n" +" \"value\": \"value_0\"\n" +" },\n" +" {\n" +" \"name\": \"entity_1\",\n" +" \"value\": \"value_1\"\n" +" }\n" +" ]\n" +"}\n" +"\n" +"## JSON.stringify(my_dictionary, \"...\")\n" +"{\n" +"...\"name\": \"my_dictionary\",\n" +"...\"version\": \"1.0.0\",\n" +"...\"entities\": [\n" +"......{\n" +".........\"name\": \"entity_0\",\n" +".........\"value\": \"value_0\"\n" +"......},\n" +"......{\n" +".........\"name\": \"entity_1\",\n" +".........\"value\": \"value_1\"\n" +"......}\n" +"...]\n" +"}\n" +"[/codeblock]" + msgid "Contains the parsed JSON data in [Variant] form." msgstr "包含解析到的 JSON 数据,类型为 [Variant]。" @@ -37361,6 +42286,74 @@ msgstr "" "用其他函数在 [Dictionary] 和 [JSON] 之间进行转换。" msgid "" +"Returns a dictionary in the form of a JSON-RPC notification. Notifications " +"are one-shot messages which do not expect a response.\n" +"- [param method]: Name of the method being called.\n" +"- [param params]: An array or dictionary of parameters being passed to the " +"method." +msgstr "" +"返回 JSON-RPC 通知形式的字典。通知是一次性的信息,不需要有响应。\n" +"- [param method]:被调用的方法的名称。\n" +"- [param params]:传递给该被调用的方法的参数的数组或字典。" + +msgid "" +"Returns a dictionary in the form of a JSON-RPC request. Requests are sent to " +"a server with the expectation of a response. The ID field is used for the " +"server to specify which exact request it is responding to.\n" +"- [param method]: Name of the method being called.\n" +"- [param params]: An array or dictionary of parameters being passed to the " +"method.\n" +"- [param id]: Uniquely identifies this request. The server is expected to " +"send a response with the same ID." +msgstr "" +"以 JSON-RPC 请求的形式返回字典。请求被发送到服务器并期望得到响应。ID 字段用于" +"服务器指定它正在响应的确切请求。\n" +"- [param method]:被调用的方法的名称。\n" +"- [param params]:传递给该被调用的方法的参数的数组或字典。\n" +"- [param id]:唯一标识该请求。服务器应发送具有相同 ID 的响应。" + +msgid "" +"When a server has received and processed a request, it is expected to send a " +"response. If you did not want a response then you need to have sent a " +"Notification instead.\n" +"- [param result]: The return value of the function which was called.\n" +"- [param id]: The ID of the request this response is targeted to." +msgstr "" +"当服务器接收并处理了请求时,它应该发送响应。如果不想要响应,则需要发送通" +"知。\n" +"- [param result]:被调用的函数的返回值。\n" +"- [param id]:该响应针对的请求的 ID。" + +msgid "" +"Creates a response which indicates a previous reply has failed in some way.\n" +"- [param code]: The error code corresponding to what kind of error this is. " +"See the [enum ErrorCode] constants.\n" +"- [param message]: A custom message about this error.\n" +"- [param id]: The request this error is a response to." +msgstr "" +"创建响应,指示先前的回复以某种方式失败。\n" +"- [param code]:这是哪种错误对应的错误代码。请参阅 [enum ErrorCode] 常量。\n" +"- [param message]:关于该错误的自定义消息。\n" +"- [param id]:该错误作为响应对应的请求。" + +msgid "" +"Given a Dictionary which takes the form of a JSON-RPC request: unpack the " +"request and run it. Methods are resolved by looking at the field called " +"\"method\" and looking for an equivalently named function in the JSONRPC " +"object. If one is found that method is called.\n" +"To add new supported methods extend the JSONRPC class and call [method " +"process_action] on your subclass.\n" +"[param action]: The action to be run, as a Dictionary in the form of a JSON-" +"RPC request or notification." +msgstr "" +"给定采用 JSON-RPC 请求形式的字典:解压请求并运行它。通过查看名为“method”的字" +"段,并在 JSONRPC 对象中查找等效命名的函数来解析方法。如果找到,则调用该方" +"法。\n" +"要添加新的受支持方法,请扩展 JSONRPC 类并在你的子类上调用 [method " +"process_action]。\n" +"[param action]:要运行的动作,作为 JSON-RPC 请求或通知形式的字典。" + +msgid "" "A method call was requested but no function of that name existed in the " "JSONRPC subclass." msgstr "请求了方法调用,但 JSONRPC 子类中不存在该名称的函数。" @@ -37368,8 +42361,30 @@ msgstr "请求了方法调用,但 JSONRPC 子类中不存在该名称的函数 msgid "Collision data for [method PhysicsBody2D.move_and_collide] collisions." msgstr "[method PhysicsBody2D.move_and_collide] 碰撞的碰撞数据。" +msgid "" +"Contains collision data for [method PhysicsBody2D.move_and_collide] " +"collisions. When a [PhysicsBody2D] is moved using [method PhysicsBody2D." +"move_and_collide], it stops if it detects a collision with another body. If " +"a collision is detected, a [KinematicCollision2D] object is returned.\n" +"This object contains information about the collision, including the " +"colliding object, the remaining motion, and the collision position. This " +"information can be used to calculate a collision response." +msgstr "" +"包含 [method PhysicsBody2D.move_and_collide] 碰撞的碰撞数据。当使用 [method " +"PhysicsBody2D.move_and_collide] 移动 [PhysicsBody2D] 时,它会在检测到与另一个" +"实体发生碰撞时停止。检测到碰撞时会返回一个 [KinematicCollision2D] 对象。\n" +"该对象包含有关碰撞的信息,包括碰撞对象、剩余运动、和碰撞位置。该信息可用于计" +"算一个碰撞响应。" + +msgid "" +"Returns the collision angle according to [param up_direction], which is " +"[constant Vector2.UP] by default. This value is always positive." +msgstr "" +"根据 [param up_direction] 返回碰撞角度,[param up_direction] 默认为 " +"[constant Vector2.UP]。该返回值始终为正。" + msgid "Returns the colliding body's attached [Object]." -msgstr "返回该碰撞物体所附加的 [Object]。" +msgstr "返回该碰撞实体所附加的 [Object]。" msgid "" "Returns the unique instance ID of the colliding body's attached [Object]. " @@ -37419,6 +42434,25 @@ msgstr "" "在一行中显示纯文本,或在一个矩形内包裹。对于格式化的文本,使用 " "[RichTextLabel]。" +msgid "" +"Label displays plain text on the screen. It gives you control over the " +"horizontal and vertical alignment and can wrap the text inside the node's " +"bounding rectangle. It doesn't support bold, italics, or other formatting. " +"For that, use [RichTextLabel] instead.\n" +"[b]Note:[/b] Contrarily to most other [Control]s, Label's [member Control." +"mouse_filter] defaults to [constant Control.MOUSE_FILTER_IGNORE] (i.e. it " +"doesn't react to mouse input events). This implies that a label won't " +"display any configured [member Control.tooltip_text], unless you change its " +"mouse filter." +msgstr "" +"标签在屏幕上显示纯文本。可以控制水平和垂直的对齐方式,并且可以将文本包裹在节" +"点的边界矩形内。它不支持粗体、斜体等格式。如果需要,请改用 " +"[RichTextLabel]。\n" +"[b]注意:[/b]与大多数其他 [Control] 不同,Label 的 [member Control." +"mouse_filter] 默认为 [constant Control.MOUSE_FILTER_IGNORE](即不响应鼠标输入" +"事件)。这意味着标签不会显示任何已配置的 [member Control.tooltip_text],除非" +"更改了其鼠标过滤器。" + msgid "Returns the number of lines of text the Label has." msgstr "返回该 Label 的文本行数。" @@ -37633,6 +42667,13 @@ msgid "" "options." msgstr "纹理的过滤标志。选项见 [enum BaseMaterial3D.TextureFilter]。" +msgid "" +"Controls the text's vertical alignment. Supports top, center, bottom. Set it " +"to one of the [enum VerticalAlignment] constants." +msgstr "" +"控制文本的垂直对齐方式。支持顶部对齐、居中对齐、底部对齐。请将其设置为 [enum " +"VerticalAlignment] 常量。" + msgid "Text width (in pixels), used for autowrap and fill alignment." msgstr "文本宽度(单位为像素),用于自动换行和填充对齐。" @@ -37790,6 +42831,16 @@ 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 [member CanvasItem.light_mask] will cast shadows. See also " +"[member range_item_cull_mask], which affects which objects can [i]receive[/" +"i] the light." +msgstr "" +"阴影遮罩。与 [LightOccluder2D] 一起使用以投射阴影。只有匹配 [member " +"CanvasItem.light_mask] 的遮挡物才会投射阴影。另见 [member " +"range_item_cull_mask],它影响哪些对象可以[i]接收[/i]光。" + +msgid "" "No filter applies to the shadow map. This provides hard shadow edges and is " "the fastest to render. See [member shadow_filter]." msgstr "" @@ -37853,6 +42904,27 @@ msgid "" msgstr "如果为 [code]true[/code],灯光只在编辑器中出现,在运行时将不可见。" msgid "" +"The light's angular size in degrees. Increasing this will make shadows " +"softer at greater distances (also called percentage-closer soft shadows, or " +"PCSS). Only available for [DirectionalLight3D]s. For reference, the Sun from " +"the Earth is approximately [code]0.5[/code]. Increasing this value above " +"[code]0.0[/code] for lights with shadows enabled will have a noticeable " +"performance cost due to PCSS.\n" +"[b]Note:[/b] [member light_angular_distance] is not affected by [member " +"Node3D.scale] (the light's scale or its parent's scale).\n" +"[b]Note:[/b] PCSS for directional lights is only supported in the Forward+ " +"rendering method, not Mobile or Compatibility." +msgstr "" +"灯光的角度大小,单位是度。增加此值将使阴影在更远的距离处更柔和(也称为百分比" +"更近的柔和阴影,或 PCSS)。仅适用于 [DirectionalLight3D]。作为参考,太阳距离" +"地球大约是 [code]0.5[/code]。对于启用了阴影的灯光,将此值增加到 [code]0.0[/" +"code] 以上,将由于 PCSS 而产生明显的性能成本。\n" +"[b]注意:[/b][member light_angular_distance] 不受 [member Node3D.scale](灯光" +"的缩放或其父级的缩放)的影响。\n" +"[b]注意:[/b]定向光的 PCSS 仅支持 Forward+ 渲染方式,不支持 Mobile 或 " +"Compatibility。" + +msgid "" "The light's bake mode. This will affect the global illumination techniques " "that have an effect on the light's rendering. See [enum BakeMode].\n" "[b]Note:[/b] Meshes' global illumination mode will also affect the global " @@ -37879,6 +42951,48 @@ msgstr "" "如果为 [code]true[/code],则光线的效果会逆转,使区域变暗并投射明亮的阴影。" msgid "" +"[Texture2D] projected by light. [member shadow_enabled] must be on for the " +"projector to work. Light projectors make the light appear as if it is " +"shining through a colored but transparent object, almost like light shining " +"through stained-glass.\n" +"[b]Note:[/b] Unlike [BaseMaterial3D] whose filter mode can be adjusted on a " +"per-material basis, the filter mode for light projector textures is set " +"globally with [member ProjectSettings.rendering/textures/light_projectors/" +"filter].\n" +"[b]Note:[/b] Light projector textures are only supported in the Forward+ and " +"Mobile rendering methods, not Compatibility." +msgstr "" +"[Texture2D] 由灯光投影。[member shadow_enabled] 必须打开,投影仪才能工作。灯" +"光投影仪使光线看起来像是透过彩色但透明的物体照射,几乎就像光线透过彩色玻璃照" +"射一样。\n" +"[b]注意:[/b]不像 [BaseMaterial3D] 的过滤器模式可以在每个材质的基础上进行调" +"整,灯光投影仪纹理的过滤器模式是通过 [member ProjectSettings.rendering/" +"textures/light_projectors/filter] 全局设置的。\n" +"[b]注意:[/b]灯光投影仪纹理仅支持 Forward+ 和 Mobile 渲染方法,不支持 " +"Compatibility。" + +msgid "" +"The size of the light in Godot units. Only available for [OmniLight3D]s and " +"[SpotLight3D]s. Increasing this value will make the light fade out slower " +"and shadows appear blurrier (also called percentage-closer soft shadows, or " +"PCSS). This can be used to simulate area lights to an extent. Increasing " +"this value above [code]0.0[/code] for lights with shadows enabled will have " +"a noticeable performance cost due to PCSS.\n" +"[b]Note:[/b] [member light_size] is not affected by [member Node3D.scale] " +"(the light's scale or its parent's scale).\n" +"[b]Note:[/b] PCSS for positional lights is only supported in the Forward+ " +"and Mobile rendering methods, not Compatibility." +msgstr "" +"灯光的大小,使用 Godot 的单位。仅适用于 [OmniLight3D] 和 [SpotLight3D]。增加" +"此值将使光线淡出速度变慢,并且阴影看起来更模糊(也称为百分比接近软阴影或 " +"PCSS)。这可用于在一定程度上模拟区域光。对于启用了阴影的灯光,将此值增加到 " +"[code]0.0[/code] 以上,将由于 PCSS 而产生明显的性能成本。\n" +"[b]注意:[/b][member light_size] 不受 [member Node3D.scale](灯光的缩放或其父" +"级的缩放)的影响。\n" +"[b]注意:[/b]定位光的 PCSS 仅支持 Forward+ 和 Mobile 渲染方法,不支持 " +"Compatibility。" + +msgid "" "The intensity of the specular blob in objects affected by the light. At " "[code]0[/code], the light becomes a pure diffuse light. When not baking " "emission, this can be used to avoid unrealistic reflections when placing " @@ -38223,6 +43337,22 @@ msgstr "2D 直线。" msgid "A line through several points in 2D space." msgstr "一条经过 2D 空间中某几个点的直线。" +msgid "" +"Adds a point with the specified [param position] relative to the line's own " +"position. Appends the new point at the end of the point list.\n" +"If [param index] is given, the new point is inserted before the existing " +"point identified by index [param index]. Every existing point starting from " +"[param index] is shifted further down the list of points. The index must be " +"greater than or equal to [code]0[/code] and must not exceed the number of " +"existing points in the line. See [method get_point_count]." +msgstr "" +"在指定的位置 [param position] 添加一个点,该位置相对于该线段自身的位置。新的" +"点会被加入到点的列表末尾。\n" +"如果给出 [param index],则将新点插入到由索引 [param index] 标识的已有点之前。" +"从 [param index] 开始的每个已有点都会进一步向下移动点列表。索引必须大于或等" +"于 [code]0[/code],并且不得超过线段中已有点的数量。请参阅 [method " +"get_point_count]。" + msgid "Removes all points from the line." msgstr "移除直线上的所有点。" @@ -38335,6 +43465,98 @@ msgstr "擦除 [LineEdit] 的 [member text]。" msgid "Clears the current selection." msgstr "清除当前选择。" +msgid "" +"Returns the [PopupMenu] of this [LineEdit]. By default, this menu is " +"displayed when right-clicking on the [LineEdit].\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 all items after \"Redo\".\n" +" menu.item_count = menu.get_item_index(MENU_REDO) + 1\n" +" # Add custom items.\n" +" menu.add_separator()\n" +" menu.add_item(\"Insert Date\", 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" +" insert_text_at_caret(Time.get_date_string_from_system())\n" +"[/gdscript]\n" +"[csharp]\n" +"public override void _Ready()\n" +"{\n" +" var menu = GetMenu();\n" +" // Remove all items after \"Redo\".\n" +" menu.ItemCount = menu.GetItemIndex(LineEdit.MenuItems.Redo) + 1;\n" +" // Add custom items.\n" +" menu.AddSeparator();\n" +" menu.AddItem(\"Insert Date\", LineEdit.MenuItems.Max + 1);\n" +" // Add event handler.\n" +" menu.IdPressed += OnItemPressed;\n" +"}\n" +"\n" +"public void OnItemPressed(int id)\n" +"{\n" +" if (id == LineEdit.MenuItems.Max + 1)\n" +" {\n" +" InsertTextAtCaret(Time.GetDateStringFromSystem());\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 "" +"返回该 [LineEdit] 的 [PopupMenu]。默认情况下,右键点击 [LineEdit] 会显示该菜" +"单。\n" +"可以添加自定义菜单项或移除标准菜单项。确保您的 ID 不与标准 ID 冲突(请参阅 " +"[enum MenuItems])。例如:\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _ready():\n" +" var menu = get_menu()\n" +" # 在“重做”之后移除所有项目。\n" +" menu.item_count = menu.get_item_index(MENU_REDO) + 1\n" +" # 添加自定义项目。\n" +" menu.add_separator()\n" +" menu.add_item(\"Insert Date\", 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" +" insert_text_at_caret(Time.get_date_string_from_system())\n" +"[/gdscript]\n" +"[csharp]\n" +"public override void _Ready()\n" +"{\n" +" var menu = GetMenu();\n" +" // 在“重做”之后移除所有项目。\n" +" menu.ItemCount = menu.GetItemIndex(LineEdit.MenuItems.Redo) + 1;\n" +" // 添加自定义项目。\n" +" menu.AddSeparator();\n" +" menu.AddItem(\"Insert Date\", LineEdit.MenuItems.Max + 1);\n" +" // 添加事件处理器。\n" +" menu.IdPressed += OnItemPressed;\n" +"}\n" +"\n" +"public void OnItemPressed(int id)\n" +"{\n" +" if (id == LineEdit.MenuItems.Max + 1)\n" +" {\n" +" InsertTextAtCaret(Time.GetDateStringFromSystem());\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]警告:[/b]这是一个必需的内部节点,移除和释放它可能会导致崩溃。如果希望隐藏" +"它或它的任何子节点,请使用它们的 [member Window.visible] 属性。" + msgid "Returns the selection begin column." msgstr "返回选择的开始列。" @@ -38344,9 +43566,59 @@ msgstr "返回选择结束列。" msgid "Returns [code]true[/code] if the user has selected text." msgstr "如果用户选中了文本,则返回 [code]true[/code]。" +msgid "" +"Inserts [param text] at the caret. If the resulting value is longer than " +"[member max_length], nothing happens." +msgstr "" +"在光标处插入文本 [param text]。如果最终值比 [member max_length] 长,则不会发" +"生任何事情。" + +msgid "" +"Returns whether the menu is visible. Use this instead of [code]get_menu()." +"visible[/code] to improve performance (so the creation of the menu is " +"avoided)." +msgstr "" +"返回菜单是否可见。请使用这个方法来代替 [code]get_menu().visible[/code],可以" +"提高性能(因为避免了菜单的创建)。" + msgid "Executes a given action as defined in the [enum MenuItems] enum." msgstr "执行 [enum MenuItems] 枚举中定义的给定操作。" +msgid "" +"Selects characters inside [LineEdit] between [param from] and [param to]. By " +"default, [param from] is at the beginning and [param to] at the end.\n" +"[codeblocks]\n" +"[gdscript]\n" +"text = \"Welcome\"\n" +"select() # Will select \"Welcome\".\n" +"select(4) # Will select \"ome\".\n" +"select(2, 5) # Will select \"lco\".\n" +"[/gdscript]\n" +"[csharp]\n" +"Text = \"Welcome\";\n" +"Select(); // Will select \"Welcome\".\n" +"Select(4); // Will select \"ome\".\n" +"Select(2, 5); // Will select \"lco\".\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"选择 [LineEdit] 内介于 [param from] 和 [param to] 之间的字符。默认情况下," +"[param from] 位于开头,[param to] 位于结尾。\n" +"[codeblocks]\n" +"[gdscript]\n" +"text = \"Welcome\"\n" +"select() # 将选择“Welcome”。\n" +"select(4) # 将选择“ome”。\n" +"select(2, 5) # 将选择“lco”。\n" +"[/gdscript]\n" +"[csharp]\n" +"Text = \"Welcome\";\n" +"Select(); // 将选择“Welcome”。\n" +"Select(4); // 将选择“ome”。\n" +"Select(2, 5); // 将选择“lco”。\n" +"[/csharp]\n" +"[/codeblocks]" + msgid "Selects the whole [String]." msgstr "选中整个 [String]。" @@ -38405,6 +43677,64 @@ msgid "If [code]true[/code], the [LineEdit] don't display decoration." msgstr "如果为 [code]true[/code],则 [LineEdit] 不显示装饰。" msgid "" +"Maximum number of characters that can be entered inside the [LineEdit]. If " +"[code]0[/code], there is no limit.\n" +"When a limit is defined, characters that would exceed [member max_length] " +"are truncated. This happens both for existing [member text] contents when " +"setting the max length, or for new text inserted in the [LineEdit], " +"including pasting. If any input text is truncated, the [signal " +"text_change_rejected] signal is emitted with the truncated substring as " +"parameter.\n" +"[b]Example:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"text = \"Hello world\"\n" +"max_length = 5\n" +"# `text` becomes \"Hello\".\n" +"max_length = 10\n" +"text += \" goodbye\"\n" +"# `text` becomes \"Hello good\".\n" +"# `text_change_rejected` is emitted with \"bye\" as parameter.\n" +"[/gdscript]\n" +"[csharp]\n" +"Text = \"Hello world\";\n" +"MaxLength = 5;\n" +"// `Text` becomes \"Hello\".\n" +"MaxLength = 10;\n" +"Text += \" goodbye\";\n" +"// `Text` becomes \"Hello good\".\n" +"// `text_change_rejected` is emitted with \"bye\" as parameter.\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"[LineEdit] 中可以输入的最大字符数。如果为 [code]0[/code],则没有限制。\n" +"定义限制后,将截断超过 [member max_length] 的字符。在设置最大长度时,将适用于" +"现有的 [member text] 内容,以及在 [LineEdit] 中插入、包括粘贴进来的新文本。如" +"果任何输入文本被截断,[signal text_change_rejected] 信号将以截断的子字符串作" +"为参数发出。\n" +"[b]示例:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"text = \"Hello world\"\n" +"max_length = 5\n" +"# `text` 变为 \"Hello\"。\n" +"max_length = 10\n" +"text += \" goodbye\"\n" +"# `text` 变为 \"Hello good\"。\n" +"# `text_change_rejected` 以 \"bye\" 作为参数发出。\n" +"[/gdscript]\n" +"[csharp]\n" +"Text = \"Hello world\";\n" +"MaxLength = 5;\n" +"// `Text` 变为 \"Hello\"。\n" +"MaxLength = 10;\n" +"Text += \" goodbye\";\n" +"// `text` 变为 \"Hello good\"。\n" +"// `text_change_rejected` 以 \"bye\" 作为参数发出。\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" "If [code]false[/code], using middle mouse button to paste clipboard will be " "disabled.\n" "[b]Note:[/b] This method is only implemented on Linux." @@ -38647,6 +43977,11 @@ msgstr "" "这种按钮主要用于与按钮的交互引起上下文变化时(如链接到网页)。\n" "参阅 [BaseButton],它包含了该节点相关的常用属性和方法。" +msgid "" +"The underline mode to use for the text. See [enum LinkButton.UnderlineMode] " +"for the available modes." +msgstr "文本的下划线模式。可用模式见 [enum LinkButton.UnderlineMode]。" + msgid "The LinkButton will always show an underline at the bottom of its text." msgstr "LinkButton 将始终在其文本底部显示下划线。" @@ -38707,12 +44042,146 @@ msgstr "" msgid "Abstract base class for the game's main loop." msgstr "游戏主循环的抽象基类。" +msgid "" +"[MainLoop] is the abstract base class for a Godot project's game loop. It is " +"inherited by [SceneTree], which is the default game loop implementation used " +"in Godot projects, though it is also possible to write and use one's own " +"[MainLoop] subclass instead of the scene tree.\n" +"Upon the application start, a [MainLoop] implementation must be provided to " +"the OS; otherwise, the application will exit. This happens automatically " +"(and a [SceneTree] is created) unless a [MainLoop] [Script] is provided from " +"the command line (with e.g. [code]godot -s my_loop.gd[/code] or the \"Main " +"Loop Type\" project setting is overwritten.\n" +"Here is an example script implementing a simple [MainLoop]:\n" +"[codeblocks]\n" +"[gdscript]\n" +"class_name CustomMainLoop\n" +"extends MainLoop\n" +"\n" +"var time_elapsed = 0\n" +"\n" +"func _initialize():\n" +" print(\"Initialized:\")\n" +" print(\" Starting time: %s\" % str(time_elapsed))\n" +"\n" +"func _process(delta):\n" +" time_elapsed += delta\n" +" # Return true to end the main loop.\n" +" return Input.get_mouse_button_mask() != 0 || Input." +"is_key_pressed(KEY_ESCAPE)\n" +"\n" +"func _finalize():\n" +" print(\"Finalized:\")\n" +" print(\" End time: %s\" % str(time_elapsed))\n" +"[/gdscript]\n" +"[csharp]\n" +"using Godot;\n" +"\n" +"public partial class CustomMainLoop : MainLoop\n" +"{\n" +" private double _timeElapsed = 0;\n" +"\n" +" public override void _Initialize()\n" +" {\n" +" GD.Print(\"Initialized:\");\n" +" GD.Print($\" Starting Time: {_timeElapsed}\");\n" +" }\n" +"\n" +" public override bool _Process(double delta)\n" +" {\n" +" _timeElapsed += delta;\n" +" // Return true to end the main loop.\n" +" return Input.GetMouseButtonMask() != 0 || Input.IsKeyPressed(Key." +"Escape);\n" +" }\n" +"\n" +" private void _Finalize()\n" +" {\n" +" GD.Print(\"Finalized:\");\n" +" GD.Print($\" End Time: {_timeElapsed}\");\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"[MainLoop] 是 Godot 项目中游戏循环的抽象基类。它被 [SceneTree] 继承," +"[SceneTree] 是 Godot 项目中使用的默认游戏循环的实现,不过也可以编写和使用自己" +"的 [MainLoop] 子类,来代替场景树。\n" +"在应用程序启动时,必须向操作系统提供一个 [MainLoop] 实现;否则,应用程序将退" +"出。这会自动发生(并创建一个 [SceneTree]),除非从命令行提供一个 [MainLoop] " +"[Script](例如 [code]godot -s my_loop.gd[/code],或“主循环类型(Main Loop " +"Type)”项目设置被覆盖。\n" +"有一个实现简单 [MainLoop] 的示例脚本:\n" +"[codeblocks]\n" +"[gdscript]\n" +"class_name CustomMainLoop\n" +"extends MainLoop\n" +"\n" +"var time_elapsed = 0\n" +"\n" +"func _initialize():\n" +" print(\"Initialized:\")\n" +" print(\" Starting time: %s\" % str(time_elapsed))\n" +"\n" +"func _process(delta):\n" +" time_elapsed += delta\n" +" # 返回 true 结束主循环。\n" +" return Input.get_mouse_button_mask() != 0 || Input." +"is_key_pressed(KEY_ESCAPE)\n" +"\n" +"func _finalize():\n" +" print(\"Finalized:\")\n" +" print(\" End time: %s\" % str(time_elapsed))\n" +"[/gdscript]\n" +"[csharp]\n" +"using Godot;\n" +"\n" +"public partial class CustomMainLoop : MainLoop\n" +"{\n" +" private double _timeElapsed = 0;\n" +"\n" +" public override void _Initialize()\n" +" {\n" +" GD.Print(\"Initialized:\");\n" +" GD.Print($\" Starting Time: {_timeElapsed}\");\n" +" }\n" +"\n" +" public override bool _Process(double delta)\n" +" {\n" +" _timeElapsed += delta;\n" +" // 返回 true 结束主循环。\n" +" return Input.GetMouseButtonMask() != 0 || Input.IsKeyPressed(Key." +"Escape);\n" +" }\n" +"\n" +" private void _Finalize()\n" +" {\n" +" GD.Print(\"Finalized:\");\n" +" GD.Print($\" End Time: {_timeElapsed}\");\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" + msgid "Called before the program exits." msgstr "在程序退出前调用。" msgid "Called once during initialization." msgstr "在初始化时调用一次。" +msgid "" +"Called each physics frame with the time since the last physics frame as " +"argument ([param delta], in seconds). Equivalent to [method Node." +"_physics_process].\n" +"If implemented, the method must return a boolean value. [code]true[/code] " +"ends the main loop, while [code]false[/code] lets it proceed to the next " +"frame." +msgstr "" +"在每个物理帧中调用,并将自上一个物理帧以来的时间作为参数([param delta],以秒" +"为单位)。相当于[method Node._physics_process]。\n" +"如果实现,该方法必须返回一个布尔值。[code]true[/code] 会结束主循环,而 " +"[code]false[/code] 会让它继续下一帧。" + msgid "Emitted when a user responds to a permission request." msgstr "当用户对权限请求作出反应时发出。" @@ -38990,6 +44459,13 @@ msgstr "" "如果为 [code]true[/code],则 [MenuBar] 会在支持系统全局菜单时使用系统全局菜" "单。" +msgid "" +"If [code]true[/code], when the cursor hovers above menu item, it will close " +"the current [PopupMenu] and open the other one." +msgstr "" +"如果为 [code]true[/code],当光标悬停在菜单项上方时,将关闭当前的 [PopupMenu] " +"并打开另一个。" + msgid "Default text [Color] of the menu item." msgstr "菜单项的默认文字 [Color]。" @@ -39174,6 +44650,92 @@ msgstr "" "面组成的网格胜过单个面的,这是因为在3D编辑软件中,一个物体通常包含多种材质。" msgid "" +"Virtual method to override the [AABB] for a custom class extending [Mesh]." +msgstr "虚方法,能够为扩展自 [Mesh] 的自定义类覆盖 [AABB]。" + +msgid "" +"Virtual method to override the number of blend shapes for a custom class " +"extending [Mesh]." +msgstr "虚方法,能够为扩展自 [Mesh] 的自定义类覆盖混合形状的数量。" + +msgid "" +"Virtual method to override the retrieval of blend shape names for a custom " +"class extending [Mesh]." +msgstr "虚方法,能够为扩展自 [Mesh] 的自定义类覆盖混合形状名称的获取过程。" + +msgid "" +"Virtual method to override the surface count for a custom class extending " +"[Mesh]." +msgstr "虚方法,能够为扩展自 [Mesh] 的自定义类覆盖表面的数量。" + +msgid "" +"Virtual method to override the names of blend shapes for a custom class " +"extending [Mesh]." +msgstr "虚方法,能够为扩展自 [Mesh] 的自定义类覆盖混合形状的名称。" + +msgid "" +"Virtual method to override the surface array index length for a custom class " +"extending [Mesh]." +msgstr "虚方法,能够为扩展自 [Mesh] 的自定义类覆盖表面数组索引的长度。" + +msgid "" +"Virtual method to override the surface array length for a custom class " +"extending [Mesh]." +msgstr "虚方法,能够为扩展自 [Mesh] 的自定义类覆盖表面数组的长度。" + +msgid "" +"Virtual method to override the surface arrays for a custom class extending " +"[Mesh]." +msgstr "虚方法,能够为扩展自 [Mesh] 的自定义类覆盖表面数组。" + +msgid "" +"Virtual method to override the blend shape arrays for a custom class " +"extending [Mesh]." +msgstr "虚方法,能够为扩展自 [Mesh] 的自定义类覆盖混合形状数组。" + +msgid "" +"Virtual method to override the surface format for a custom class extending " +"[Mesh]." +msgstr "虚方法,能够为扩展自 [Mesh] 的自定义类覆盖表面格式。" + +msgid "" +"Virtual method to override the surface LODs for a custom class extending " +"[Mesh]." +msgstr "虚方法,能够为扩展自 [Mesh] 的自定义类覆盖表面 LOD。" + +msgid "" +"Virtual method to override the surface material for a custom class extending " +"[Mesh]." +msgstr "虚方法,能够为扩展自 [Mesh] 的自定义类覆盖表面材质。" + +msgid "" +"Virtual method to override the surface primitive type for a custom class " +"extending [Mesh]." +msgstr "虚方法,能够为扩展自 [Mesh] 的自定义类覆盖表面图元类型。" + +msgid "" +"Virtual method to override the setting of a [param material] at the given " +"[param index] for a custom class extending [Mesh]." +msgstr "" +"虚方法,能够为扩展自 [Mesh] 的自定义类覆盖索引为 [param index] 的材质 [param " +"material] 的设置。" + +msgid "" +"Calculate a [ConvexPolygonShape3D] from the mesh.\n" +"If [param clean] is [code]true[/code] (default), duplicate and interior " +"vertices are removed automatically. You can set it to [code]false[/code] to " +"make the process faster if not needed.\n" +"If [param simplify] is [code]true[/code], the geometry can be further " +"simplified to reduce the number of vertices. Disabled by default." +msgstr "" +"从网格计算 [ConvexPolygonShape3D]。\n" +"如果 [param clean] 为 [code]true[/code](默认值),则自动移除重复顶点和内部顶" +"点。如果不需要如此的化话,可以将其设置为 [code]false[/code] 以加快处理速" +"度。\n" +"如果 [param simplify] 为 [code]true[/code],则可以进一步简化几何体以减少顶点" +"数。默认情况下是禁用的。" + +msgid "" "Calculate an outline mesh at a defined offset (margin) from the original " "mesh.\n" "[b]Note:[/b] This method typically returns the vertices in reverse order (e." @@ -39201,6 +44763,9 @@ msgid "" "vertices represent one triangle." msgstr "返回网格中所有构成面的顶点。每三个顶点代表一个三角形。" +msgid "Returns the number of surfaces that the [Mesh] holds." +msgstr "返回该 [Mesh] 中存放的表面的个数。" + msgid "" "Returns the arrays for the vertices, normals, uvs, etc. that make up the " "requested surface (see [method ArrayMesh.add_surface_from_arrays])." @@ -39569,9 +45134,87 @@ msgstr "当 [member texture] 被改变时触发。" msgid "Node that instances meshes into a scenario." msgstr "网格实例与场景相结合的节点。" +msgid "" +"MeshInstance3D is a node that takes a [Mesh] resource and adds it to the " +"current scenario by creating an instance of it. This is the class most often " +"used render 3D geometry and can be used to instance a single [Mesh] in many " +"places. This allows reusing geometry, which can save on resources. When a " +"[Mesh] has to be instantiated more than thousands of times at close " +"proximity, consider using a [MultiMesh] in a [MultiMeshInstance3D] instead." +msgstr "" +"MeshInstance3D 节点接受 [Mesh] 资源,会为该网格创建一个实例,将其添加到当前的" +"场景中。这是渲染 3D 几何体时最常用的类,可以将单个 [Mesh] 在不同的地方实例" +"化。这样就能够实现几何体的复用,节省资源。如果需要在比较集中的区域内将某个 " +"[Mesh] 实例化超过几千次,请考虑改为在 [MultiMeshInstance3D] 中使用 " +"[MultiMesh]。" + +msgid "" +"This helper creates a [StaticBody3D] child node with a " +"[ConvexPolygonShape3D] collision shape calculated from the mesh geometry. " +"It's mainly used for testing.\n" +"If [param clean] is [code]true[/code] (default), duplicate and interior " +"vertices are removed automatically. You can set it to [code]false[/code] to " +"make the process faster if not needed.\n" +"If [param simplify] is [code]true[/code], the geometry can be further " +"simplified to reduce the number of vertices. Disabled by default." +msgstr "" +"该助手创建一个 [StaticBody3D] 子节点,该子节点具有根据网格几何计算的 " +"[ConvexPolygonShape3D] 碰撞形状。它主要用于测试。\n" +"如果 [param clean] 为 [code]true[/code](默认值),则重复的顶点和内部顶点会被" +"自动移除。如果不需要,可以将其设置为 [code]false[/code],以加快处理速度。\n" +"如果 [param simplify] 为 [code]true[/code],则该几何体可以进一步被简化以减少" +"顶点的数量。默认情况下是禁用的。" + +msgid "" +"Returns the index of the blend shape with the given [param name]. Returns " +"[code]-1[/code] if no blend shape with this name exists, including when " +"[member mesh] is [code]null[/code]." +msgstr "" +"返回具有给定 [param name] 的混合形状的索引。如果不存在具有该名称的混合形状," +"以及当 [member mesh] 为 [code]null[/code] 时,则返回 [code]-1[/code]。" + +msgid "" +"Returns the [Material] that will be used by the [Mesh] when drawing. This " +"can return the [member GeometryInstance3D.material_override], the surface " +"override [Material] defined in this [MeshInstance3D], or the surface " +"[Material] defined in the [member mesh]. For example, if [member " +"GeometryInstance3D.material_override] is used, all surfaces will return the " +"override material.\n" +"Returns [code]null[/code] if no material is active, including when [member " +"mesh] is [code]null[/code]." +msgstr "" +"返回 [Mesh] 在绘制时将使用的 [Material]。这可以返回 [member " +"GeometryInstance3D.material_override]、在该 [MeshInstance3D] 中定义的表面覆" +"盖 [Material]、或 [member mesh] 中定义的表面 [Material]。例如,如果使用 " +"[member GeometryInstance3D.material_override],则所有表面都将返回该覆盖材" +"质。\n" +"如果没有材质处于活动状态,包括当 [member mesh] 为 [code]null[/code] 时,则返" +"回 [code]null[/code]。" + +msgid "" +"Returns the value of the blend shape at the given [param blend_shape_idx]. " +"Returns [code]0.0[/code] and produces an error if [member mesh] is " +"[code]null[/code] or doesn't have a blend shape at that index." +msgstr "" +"返回给定 [param blend_shape_idx] 处的混合形状的值。如果 [member mesh] 为 " +"[code]null[/code],或在该索引处没有混合形状,则返回 [code]0.0[/code] 并产生一" +"个错误。" + +msgid "" +"Sets the value of the blend shape at [param blend_shape_idx] to [param " +"value]. Produces an error if [member mesh] is [code]null[/code] or doesn't " +"have a blend shape at that index." +msgstr "" +"将 [param blend_shape_idx] 处的混合形状的值设置为 [param value]。如果 " +"[member mesh] 为 [code]null[/code],或在该索引处没有混合形状,则会产生一个错" +"误。" + msgid "The [Mesh] resource for the instance." msgstr "该实例的 [Mesh] 资源。" +msgid "The [Skin] to be used by this instance." +msgstr "该实例要使用的 [Skin]。" + msgid "Library of meshes." msgstr "网格库。" @@ -39629,6 +45272,13 @@ msgstr "" "set_item_preview] 设置。如果在一个运行的项目中,没有手动设置预览,则返回一个" "空的 [Texture2D]。" +msgid "" +"Returns an item's collision shapes.\n" +"The array consists of each [Shape3D] followed by its [Transform3D]." +msgstr "" +"返回某个项目的碰撞形状。\n" +"该数组由每个 [Shape3D] 后跟其 [Transform3D] 组成。" + msgid "Gets an unused ID for a new item." msgstr "获取新项未使用的 ID。" @@ -39786,6 +45436,35 @@ msgstr "" msgid "Abstract class for non-real-time video recording encoders." msgstr "非实时视频录制编码器的抽象类。" +msgid "" +"MultiMesh provides low-level mesh instancing. Drawing thousands of " +"[MeshInstance3D] nodes can be slow, since each object is submitted to the " +"GPU then drawn individually.\n" +"MultiMesh is much faster as it can draw thousands of instances with a single " +"draw call, resulting in less API overhead.\n" +"As a drawback, if the instances are too far away from each other, " +"performance may be reduced as every single instance will always render (they " +"are spatially indexed as one, for the whole object).\n" +"Since instances may have any behavior, the AABB used for visibility must be " +"provided by the user.\n" +"[b]Note:[/b] A MultiMesh is a single object, therefore the same maximum " +"lights per object restriction applies. This means, that once the maximum " +"lights are consumed by one or more instances, the rest of the MultiMesh " +"instances will [b]not[/b] receive any lighting.\n" +"[b]Note:[/b] Blend Shapes will be ignored if used in a MultiMesh." +msgstr "" +"MultiMesh 提供了低级别的网格实例化功能。绘制数以千计的 [MeshInstance3D] 节点" +"可能会很慢,因为每个对象都要提交给 GPU 然后单独绘制。\n" +"MultiMesh 要快得多,因为它可以通过一次绘制调用来绘制成千上万的实例,从而减少 " +"API 的开销。\n" +"缺点是,如果实例之间的距离太远,性能可能会降低,因为每一个实例总是会被渲染" +"(对于整个对象,它们在空间上被索引为一个)。\n" +"由于实例可能具有任何行为,因此用于可见性的 AABB 必须由用户提供。\n" +"[b]注意:[/b]MultiMesh 是单个对象,因此适用相同的对每个对象的最大灯光限制。这" +"意味着,一旦最大灯光被一个或多个实例消耗了,其余的 MultiMesh 实例将[b]不会[/" +"b]接收任何光照。\n" +"[b]注意:[/b]在 MultiMesh 中使用的 Blend Shape 将被忽略。" + msgid "Animating thousands of fish with MultiMeshInstance" msgstr "使用 MultiMeshInstance 动画化数千条鱼" @@ -39804,6 +45483,21 @@ msgstr "返回指定实例的 [Transform3D]。" msgid "Returns the [Transform2D] of a specific instance." msgstr "返回指定实例的 [Transform2D]。" +msgid "" +"Sets custom data for a specific instance. Although [Color] is used, it is " +"just a container for 4 floating point numbers.\n" +"For the custom data to be used, ensure that [member use_custom_data] is " +"[code]true[/code].\n" +"This custom instance data has to be manually accessed in your custom shader " +"using [code]INSTANCE_CUSTOM[/code]." +msgstr "" +"为特定的实例设置自定义数据。虽然使用了 [Color],但它只是一个容纳 4 个浮点数的" +"容器。\n" +"对于要使用的自定义数据,请确保 [member use_custom_data] 为 [code]true[/" +"code]。\n" +"必须使用 [code]INSTANCE_CUSTOM[/code] 在自定义着色器中,手动访问该自定义实例" +"数据。" + msgid "Sets the [Transform3D] for a specific instance." msgstr "为指定实例设置 [Transform3D]。" @@ -39840,15 +45534,39 @@ msgstr "使用 3D 变换时使用此选项。" msgid "Node that instances a [MultiMesh] in 2D." msgstr "在 2D 中实例化 [MultiMesh] 的节点。" +msgid "" +"[MultiMeshInstance2D] is a specialized node to instance a [MultiMesh] " +"resource in 2D.\n" +"Usage is the same as [MultiMeshInstance3D]." +msgstr "" +"[MultiMeshInstance2D] 是专用于在 2D 中实例化 [MultiMesh] 资源的节点。\n" +"用法与 [MultiMeshInstance3D] 相同。" + msgid "The [MultiMesh] that will be drawn by the [MultiMeshInstance2D]." msgstr "将由 [MultiMeshInstance2D] 绘制的 [MultiMesh]。" msgid "Node that instances a [MultiMesh]." msgstr "实例化 [MultiMesh] 的节点。" +msgid "" +"[MultiMeshInstance3D] is a specialized node to instance " +"[GeometryInstance3D]s based on a [MultiMesh] resource.\n" +"This is useful to optimize the rendering of a high number of instances of a " +"given mesh (for example trees in a forest or grass strands)." +msgstr "" +"[MultiMeshInstance2D] 是专用于实例化基于 [MultiMesh] 资源的 " +"[GeometryInstance3D] 的节点。\n" +"适用于优化大量给定网格实例的渲染(例如森林中的树木或草丛)。" + msgid "Using MultiMeshInstance" msgstr "使用 MultiMeshInstance" +msgid "High-level multiplayer API interface." +msgstr "高阶多人游戏 API 接口。" + +msgid "Returns a new instance of the default MultiplayerAPI." +msgstr "返回默认 MultiplayerAPI 的新实例。" + 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." @@ -39856,6 +45574,45 @@ msgstr "" "返回当前正在执行的 RPC 的发送方的对等体 ID。\n" "[b]注意:[/b]如果不在 RPC 内,这个方法将返回 0。" +msgid "" +"Emitted when this MultiplayerAPI's [member multiplayer_peer] successfully " +"connected to a server. Only emitted on clients." +msgstr "" +"当此 MultiplayerAPI 的 [member multiplayer_peer] 成功连接到服务器时发出。仅在" +"客户端上发出。" + +msgid "" +"Emitted when this MultiplayerAPI's [member multiplayer_peer] fails to " +"establish a connection to a server. Only emitted on clients." +msgstr "" +"当此 MultiplayerAPI 的 [member multiplayer_peer] 无法与服务器建立连接时发出。" +"仅在客户端上发出。" + +msgid "" +"Emitted when this MultiplayerAPI's [member multiplayer_peer] connects with a " +"new peer. ID is the peer ID of the new peer. Clients get notified when other " +"clients connect to the same server. Upon connecting to a server, a client " +"also receives this signal for the server (with ID being 1)." +msgstr "" +"当此 MultiplayerAPI 的 [member multiplayer_peer] 与新对等体连接时发出。ID 为" +"新对等体的对等体 ID。当某个客户端连接到同一服务器时,其他客户端会收到通知。连" +"接到服务器时,该客户端也会收到此信号,新对等体为服务器(ID 为 1)。" + +msgid "" +"Emitted when this MultiplayerAPI's [member multiplayer_peer] disconnects " +"from a peer. Clients get notified when other clients disconnect from the " +"same server." +msgstr "" +"当此 MultiplayerAPI 的 [member multiplayer_peer] 与对等体断开连接时发出。当某" +"个客户端从同一服务器断开连接时,其他客户端会收到通知。" + +msgid "" +"Emitted when this MultiplayerAPI's [member multiplayer_peer] disconnects " +"from server. Only emitted on clients." +msgstr "" +"当此 MultiplayerAPI 的 [member multiplayer_peer] 与服务器断开连接时发出。仅在" +"客户端上发出。" + msgid "Base class used for extending the [MultiplayerAPI]." msgstr "用于扩展 [MultiplayerAPI] 的基类。" @@ -39982,6 +45739,119 @@ msgid "" "[MultiplayerAPI]." msgstr "[MultiplayerAPI] 请求最大允许的数据包大小(单位为字节)时调用。" +msgid "" +"Synchronizes properties from the multiplayer authority to the remote peers." +msgstr "将属性从多人游戏权威同步到远程对等体。" + +msgid "" +"By default, [MultiplayerSynchronizer] synchronizes configured properties to " +"all peers.\n" +"Visibility can be handled directly with [method set_visibility_for] or as-" +"needed with [method add_visibility_filter] and [method update_visibility].\n" +"[MultiplayerSpawner]s will handle nodes according to visibility of " +"synchronizers as long as the node at [member root_path] was spawned by one.\n" +"Internally, [MultiplayerSynchronizer] uses [method MultiplayerAPI." +"object_configuration_add] to notify synchronization start passing the [Node] " +"at [member root_path] as the [code]object[/code] and itself as the " +"[code]configuration[/code], and uses [method MultiplayerAPI." +"object_configuration_remove] to notify synchronization end in a similar way." +msgstr "" +"默认情况下,[MultiplayerSynchronizer] 会将配置的属性同步到所有对等体。\n" +"可以使用 [method set_visibility_for] 直接处理可见性,也可以通过 [method " +"add_visibility_filter] 和 [method update_visibility] 在需要时进行处理。\n" +"[MultiplayerSpawner] 会根据同步器的可见性来处理节点,只要 [member root_path] " +"的节点是出生出来的。\n" +"内部而言,[MultiplayerSynchronizer] 使用 [method MultiplayerAPI." +"object_configuration_add] 来通知同步开始,将位于 [member root_path] 的 " +"[Node] 作为 [code]object[/code] 传入、将自己作为 [code]configuration[/code] " +"传入。使用 [method MultiplayerAPI.object_configuration_remove] 通知同步结束的" +"方法相同。" + +msgid "" +"Adds a peer visibility filter for this synchronizer.\n" +"[code]filter[/code] should take a peer ID [int] and return a [bool]." +msgstr "" +"为该同步器添加对等体可见性过滤器。\n" +"[code]filter[/code] 应该接受对等体 ID [int],返回 [bool]。" + +msgid "Queries the current visibility for peer [code]peer[/code]." +msgstr "查询对等体 [code]peer[/code] 的当前可见性。" + +msgid "Removes a peer visibility filter from this synchronizer." +msgstr "从该同步器中移除某个对等体的可见性过滤器。" + +msgid "" +"Sets the visibility of [code]peer[/code] to [code]visible[/code]. If " +"[code]peer[/code] is [code]0[/code], the value of [member public_visibility] " +"will be updated instead." +msgstr "" +"将 [code]peer[/code] 的可见性设置为 [code]visible[/code]。如果 [code]peer[/" +"code] 为 [code]0[/code],则会改为更新 [member public_visibility] 的值。" + +msgid "" +"Updates the visibility of [code]peer[/code] according to visibility filters. " +"If [code]peer[/code] is [code]0[/code] (the default), all peers' visibilties " +"are updated." +msgstr "" +"根据可见性过滤器更新 [code]peer[/code] 的可见性。如果 [code]peer[/code] 为 " +"[code]0[/code](默认值),则更新所有对等体的可见性。" + +msgid "" +"Whether synchronization should be visible to all peers by default. See " +"[method set_visibility_for] and [method add_visibility_filter] for ways of " +"configuring fine-grained visibility options." +msgstr "" +"默认情况下,同步是否应该对所有对等体可见。有关配置细粒度可见性选项的方法,请" +"参阅 [method set_visibility_for] 和 [method add_visibility_filter]。" + +msgid "Resource containing which properties to synchronize." +msgstr "包含要同步的属性的资源。" + +msgid "" +"Time interval between synchronizes. When set to [code]0.0[/code] (the " +"default), synchronizes happen every network process frame." +msgstr "" +"同步之间的时间间隔。当设置为 [code]0.0[/code](默认值)时,每个网络处理帧都会" +"发生同步。" + +msgid "" +"Node path that replicated properties are relative to.\n" +"If [member root_path] was spawned by a [MultiplayerSpawner], the node will " +"be also be spawned and despawned based on this synchronizer visibility " +"options." +msgstr "" +"复制属性相对的节点路径。\n" +"如果 [member root_path] 是由 [MultiplayerSpawner] 生成的,则该节点也将根据此" +"同步器可见性选项生成和消失。" + +msgid "" +"Specifies when visibility filters are updated (see [enum " +"VisibilityUpdateMode] for options)." +msgstr "指定何时更新可见性过滤器(有关选项见 [enum VisibilityUpdateMode])。" + +msgid "" +"Emitted when a new synchronization state is received by this synchronizer " +"after the variables have been updated." +msgstr "在变量更新后,当该同步器接收到一个新的同步状态时发出。" + +msgid "" +"Emitted when visibility of [code]for_peer[/code] is updated. See [method " +"update_visibility]." +msgstr "" +"当 [code]for_peer[/code] 的可见性更新时发出。见 [method update_visibility]。" + +msgid "Visibility filters are updated every idle process frame." +msgstr "每个空闲处理帧都会更新可见性过滤器。" + +msgid "Visibility filters are updated every physics process frame." +msgstr "每个物理处理帧都会更新可见性过滤器。" + +msgid "" +"Visibility filters are not updated automatically, and must be updated " +"manually by calling [method update_visibility]." +msgstr "" +"可见性过滤器不会自动更新,必须通过调用 [method update_visibility] 手动更新。" + msgid "A synchronization mutex (mutual exclusion)." msgstr "同步互斥锁(相互排斥)。" @@ -40158,6 +46028,35 @@ msgstr "" "终的目标,到达该区域内即可。如果这个值设得太小,该 NavigationAgent 将陷入重新" "寻路的死循环,因为它在每次物理帧更新后都会超过或者到不了最终的目标点。" +msgid "" +"Notifies when a navigation link has been reached.\n" +"The details dictionary may contain the following keys depending on the value " +"of [member path_metadata_flags]:\n" +"- [code]position[/code]: The start position of the link that was reached.\n" +"- [code]type[/code]: Always [constant NavigationPathQueryResult2D." +"PATH_SEGMENT_TYPE_LINK].\n" +"- [code]rid[/code]: The [RID] of the link.\n" +"- [code]owner[/code]: The object which manages the link (usually " +"[NavigationLink2D]).\n" +"- [code]link_entry_position[/code]: If [code]owner[/code] is available and " +"the owner is a [NavigationLink2D], it will contain the global position of " +"the link's point the agent is entering.\n" +"- [code]link_exit_position[/code]: If [code]owner[/code] is available and " +"the owner is a [NavigationLink2D], it will contain the global position of " +"the link's point which the agent is exiting." +msgstr "" +"当到达一个导航链接时通知。\n" +"根据 [member path_metadata_flags] 的值,详细信息字典可能包含以下键:\n" +"- [code]position[/code]:到达的链接的起始位置。\n" +"- [code]type[/code]:总是 [constant NavigationPathQueryResult2D." +"PATH_SEGMENT_TYPE_LINK]。\n" +"- [code]rid[/code]:链接的 [RID]。\n" +"- [code]owner[/code]:管理该链接的对象(通常是[NavigationLink2D])。\n" +"- [code]link_entry_position[/code]:如果 [code]owner[/code] 可用且该所有者是" +"一个 [NavigationLink2D],它将包含代理正在进入时的链接点的全局位置。\n" +"- [code]link_exit_position[/code]:如果 [code]owner[/code] 可用且该所有者是一" +"个 [NavigationLink2D],它将包含代理正在退出时的链接点的全局位置。" + msgid "Notifies when the final position is reached." msgstr "抵达终点位置时发出通知。" @@ -40202,6 +46101,10 @@ msgstr "" "对其进行了烘焙,那么就必须支持不同大小的代理。" msgid "" +"Ignores collisions on the Y axis. Must be true to move on a horizontal plane." +msgstr "忽略 Y 轴上的碰撞。必须为 true 才能在水平面上移动。" + +msgid "" "A bitfield determining what navigation layers of navigation regions this " "NavigationAgent will use to calculate path. Changing it runtime will clear " "current navigation path and generate new one, according to new navigation " @@ -40211,6 +46114,35 @@ msgstr "" "将清除当前导航路径,并根据新的导航层生成新的导航路径。" msgid "" +"Notifies when a navigation link has been reached.\n" +"The details dictionary may contain the following keys depending on the value " +"of [member path_metadata_flags]:\n" +"- [code]position[/code]: The start position of the link that was reached.\n" +"- [code]type[/code]: Always [constant NavigationPathQueryResult3D." +"PATH_SEGMENT_TYPE_LINK].\n" +"- [code]rid[/code]: The [RID] of the link.\n" +"- [code]owner[/code]: The object which manages the link (usually " +"[NavigationLink3D]).\n" +"- [code]link_entry_position[/code]: If [code]owner[/code] is available and " +"the owner is a [NavigationLink2D], it will contain the global position of " +"the link's point the agent is entering.\n" +"- [code]link_exit_position[/code]: If [code]owner[/code] is available and " +"the owner is a [NavigationLink2D], it will contain the global position of " +"the link's point which the agent is exiting." +msgstr "" +"当到达一个导航链接时通知。\n" +"根据 [member path_metadata_flags] 的值,详细信息字典可能包含以下键:\n" +"- [code]position[/code]:到达的链接的起始位置。\n" +"- [code]type[/code]:总是 [constant NavigationPathQueryResult3D." +"PATH_SEGMENT_TYPE_LINK]。\n" +"- [code]rid[/code]:链接的 [RID]。\n" +"- [code]owner[/code]:管理该链接的对象(通常是[NavigationLink3D])。\n" +"- [code]link_entry_position[/code]:如果 [code]owner[/code] 可用且该所有者是" +"一个 [NavigationLink3D],它将包含代理正在进入时的链接点的全局位置。\n" +"- [code]link_exit_position[/code]:如果 [code]owner[/code] 可用且该所有者是一" +"个 [NavigationLink3D],它将包含代理正在退出时的链接点的全局位置。" + +msgid "" "Creates a link between two positions that [NavigationServer2D] can route " "agents through. Links can be used to express navigation methods that aren't " "just traveling along the surface of the navigation mesh, like zip-lines, " @@ -40223,6 +46155,26 @@ msgid "Using NavigationLinks" msgstr "使用 NavigationLink" msgid "" +"Returns the [member end_position] that is relative to the link as a global " +"position." +msgstr "返回该链接的 [member end_position] 的全局位置。" + +msgid "" +"Returns the [member start_position] that is relative to the link as a global " +"position." +msgstr "返回该链接的 [member start_position] 的全局位置。" + +msgid "" +"Sets the [member end_position] that is relative to the link from a global " +"[param position]." +msgstr "设置该链接的 [member end_position] 的全局位置。" + +msgid "" +"Sets the [member start_position] that is relative to the link from a global " +"[param position]." +msgstr "设置该链接的 [member start_position] 的全局位置。" + +msgid "" "Creates a link between two positions that [NavigationServer3D] can route " "agents through. Links can be used to express navigation methods that aren't " "just traveling along the surface of the navigation mesh, like zip-lines, " @@ -40257,6 +46209,16 @@ msgid "" "Clears the array of polygons, but it doesn't clear the array of vertices." msgstr "清除多边形数组,但不清除顶点数组。" +msgid "" +"Initializes the navigation mesh by setting the vertices and indices " +"according to a [Mesh].\n" +"[b]Note:[/b] The given [param mesh] must be of type [constant Mesh." +"PRIMITIVE_TRIANGLES] and have an index array." +msgstr "" +"通过根据 [Mesh] 设置顶点和索引来初始化导航网格。\n" +"[b]注意:[/b]给定的 [param mesh] 必须是 [constant Mesh.PRIMITIVE_TRIANGLES] " +"类型,并且有一个索引数组。" + msgid "Returns the number of polygons in the navigation mesh." msgstr "返回导航网格中的多边形数量。" @@ -40439,6 +46401,9 @@ msgstr "" msgid "Represents the size of the [enum ParsedGeometryType] enum." msgstr "代表 [enum ParsedGeometryType] 枚举的大小。" +msgid "Scans the child nodes of the root node recursively for geometry." +msgstr "在根节点的子节点中递归扫描几何体。" + msgid "" "Scans nodes in a group and their child nodes recursively for geometry. The " "group is specified by [member geometry_source_group_name]." @@ -40543,6 +46508,97 @@ msgid "" "create navigation polygons." msgstr "具有绘制轮廓或使用顶点索引来创建导航多边形的方法的节点。" +msgid "" +"There are two ways to create polygons. Either by using the [method " +"add_outline] method, or using the [method add_polygon] method.\n" +"Using [method add_outline]:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var polygon = NavigationPolygon.new()\n" +"var outline = PackedVector2Array([Vector2(0, 0), Vector2(0, 50), Vector2(50, " +"50), Vector2(50, 0)])\n" +"polygon.add_outline(outline)\n" +"polygon.make_polygons_from_outlines()\n" +"$NavigationRegion2D.navigation_polygon = polygon\n" +"[/gdscript]\n" +"[csharp]\n" +"var polygon = new NavigationPolygon();\n" +"var outline = new Vector2[] { new Vector2(0, 0), new Vector2(0, 50), new " +"Vector2(50, 50), new Vector2(50, 0) };\n" +"polygon.AddOutline(outline);\n" +"polygon.MakePolygonsFromOutlines();\n" +"GetNode<NavigationRegion2D>(\"NavigationRegion2D\").NavigationPolygon = " +"polygon;\n" +"[/csharp]\n" +"[/codeblocks]\n" +"Using [method add_polygon] and indices of the vertices array.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var polygon = NavigationPolygon.new()\n" +"var vertices = PackedVector2Array([Vector2(0, 0), Vector2(0, 50), " +"Vector2(50, 50), Vector2(50, 0)])\n" +"polygon.vertices = vertices\n" +"var indices = PackedInt32Array([0, 1, 2, 3])\n" +"polygon.add_polygon(indices)\n" +"$NavigationRegion2D.navigation_polygon = polygon\n" +"[/gdscript]\n" +"[csharp]\n" +"var polygon = new NavigationPolygon();\n" +"var vertices = new Vector2[] { new Vector2(0, 0), new Vector2(0, 50), new " +"Vector2(50, 50), new Vector2(50, 0) };\n" +"polygon.Vertices = vertices;\n" +"var indices = new int[] { 0, 1, 2, 3 };\n" +"polygon.AddPolygon(indices);\n" +"GetNode<NavigationRegion2D>(\"NavigationRegion2D\").NavigationPolygon = " +"polygon;\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"创建多边形有两种方法。通过使用 [method add_outline] 方法,或使用 [method " +"add_polygon] 方法。\n" +"使用 [method add_outline] 方法:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var polygon = NavigationPolygon.new()\n" +"var outline = PackedVector2Array([Vector2(0, 0), Vector2(0, 50), Vector2(50, " +"50), Vector2(50, 0)])\n" +"polygon.add_outline(outline)\n" +"polygon.make_polygons_from_outlines()\n" +"$NavigationRegion2D.navigation_polygon = polygon\n" +"[/gdscript]\n" +"[csharp]\n" +"var polygon = new NavigationPolygon();\n" +"var outline = new Vector2[] { new Vector2(0, 0), new Vector2(0, 50), new " +"Vector2(50, 50), new Vector2(50, 0) };\n" +"polygon.AddOutline(outline);\n" +"polygon.MakePolygonsFromOutlines();\n" +"GetNode<NavigationRegion2D>(\"NavigationRegion2D\").NavigationPolygon = " +"polygon;\n" +"[/csharp]\n" +"[/codeblocks]\n" +"使用 [method add_polygon] 和顶点数组的索引。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var polygon = NavigationPolygon.new()\n" +"var vertices = PackedVector2Array([Vector2(0, 0), Vector2(0, 50), " +"Vector2(50, 50), Vector2(50, 0)])\n" +"polygon.vertices = vertices\n" +"var indices = PackedInt32Array([0, 1, 2, 3])\n" +"polygon.add_polygon(indices)\n" +"$NavigationRegion2D.navigation_polygon = polygon\n" +"[/gdscript]\n" +"[csharp]\n" +"var polygon = new NavigationPolygon();\n" +"var vertices = new Vector2[] { new Vector2(0, 0), new Vector2(0, 50), new " +"Vector2(50, 50), new Vector2(50, 0) };\n" +"polygon.Vertices = vertices;\n" +"var indices = new int[] { 0, 1, 2, 3 };\n" +"polygon.AddPolygon(indices);\n" +"GetNode<NavigationRegion2D>(\"NavigationRegion2D\").NavigationPolygon = " +"polygon;\n" +"[/csharp]\n" +"[/codeblocks]" + msgid "2D Navigation Demo" msgstr "2D 导航演示" @@ -40563,6 +46619,11 @@ msgstr "返回在编辑器或脚本中创建的轮廓的数量。" msgid "Returns the count of all polygons." msgstr "返回多边形的数量。" +msgid "" +"Returns a [PackedVector2Array] containing all the vertices being used to " +"create the polygons." +msgstr "返回一个 [PackedVector2Array],其中包含用于创建多边形的所有顶点。" + msgid "Creates polygons from the outlines added in the editor or by script." msgstr "从编辑器或脚本中添加的轮廓创建多边形。" @@ -40583,15 +46644,132 @@ msgstr "" msgid "A region of the 2D navigation map." msgstr "2D 导航地图上的一个地区。" +msgid "" +"A region of the navigation map. It tells the [NavigationServer2D] what can " +"be navigated and what cannot, based on its [NavigationPolygon] resource.\n" +"Two regions can be connected to each other if they share a similar edge. You " +"can set the minimum distance between two vertices required to connect two " +"edges by using [method NavigationServer2D.map_set_edge_connection_margin].\n" +"[b]Note:[/b] Overlapping two regions' navigation polygons is not enough for " +"connecting two regions. They must share a similar edge.\n" +"The pathfinding cost of entering this region from another region can be " +"controlled with the [member enter_cost] value.\n" +"[b]Note:[/b] This value is not added to the path cost when the start " +"position is already inside this region.\n" +"The pathfinding cost of traveling distances inside this region can be " +"controlled with the [member travel_cost] multiplier.\n" +"[b]Note:[/b] This node caches changes to its properties, so if you make " +"changes to the underlying region [RID] in [NavigationServer2D], they will " +"not be reflected in this node's properties." +msgstr "" +"导航地图的一个区块。它根据其 [NavigationPolygon] 资源告诉 " +"[NavigationServer2D] 哪些可以进行导航、哪些不能。\n" +"如果两个区块共享相似的边,则它们可以相互连接。可以使用 [method " +"NavigationServer2D.map_set_edge_connection_margin] 设置连接两条边所需的两个顶" +"点之间的最小距离。\n" +"[b]注意:[/b]重叠两个区块的导航多边形不足以连接两个区块。它们必须共享一个相似" +"的边。\n" +"从另一个区块进入该区块的寻路成本可以通过 [member enter_cost] 值来控制。\n" +"[b]注意:[/b]当起始位置已经在该区块内时,该值不会被添加到路径成本中。\n" +"在该区块内行进距离的寻路成本可以使用 [member travel_cost] 乘数控制。\n" +"[b]注意:[/b]该节点缓存对其属性的更改,因此如果对 [NavigationServer2D] 中的基" +"础区块 [RID] 进行更改,它们将不会反映在该节点的属性中。" + msgid "Using NavigationRegions" msgstr "使用 NavigationRegion" +msgid "" +"Returns the [RID] of this region on the [NavigationServer2D]. Combined with " +"[method NavigationServer2D.map_get_closest_point_owner] can be used to " +"identify the [NavigationRegion2D] closest to a point on the merged " +"navigation map." +msgstr "" +"返回 [NavigationServer2D] 上该区块的 [RID]。结合 [method NavigationServer2D." +"map_get_closest_point_owner] 可用于识别合并导航地图上离某点最近的 " +"[NavigationRegion2D]。" + +msgid "Determines if the [NavigationRegion2D] is enabled or disabled." +msgstr "决定该 [NavigationRegion2D] 是启用还是禁用。" + +msgid "" +"When pathfinding enters this region's navigation mesh from another regions " +"navigation mesh the [code]enter_cost[/code] value is added to the path " +"distance for determining the shortest path." +msgstr "" +"当寻路从另一个区块的导航网格进入该区块的导航网格时,[code]enter_cost[/code] " +"值将被加到路径距离,以确定最短路径。" + +msgid "" +"A bitfield determining all navigation layers the region belongs to. These " +"navigation layers can be checked upon when requesting a path with [method " +"NavigationServer2D.map_get_path]." +msgstr "" +"确定该区块所属的所有导航层的位字段。当使用 [method NavigationServer2D." +"map_get_path] 请求一个路径时,可以检查这些导航层。" + msgid "The [NavigationPolygon] resource to use." msgstr "使用的 [NavigationPolygon] 资源。" +msgid "" +"When pathfinding moves inside this region's navigation mesh the traveled " +"distances are multiplied with [code]travel_cost[/code] for determining the " +"shortest path." +msgstr "" +"当寻路在该区块的导航网格内移动时,将行进距离乘以 [code]travel_cost[/code] 以" +"确定最短路径。" + msgid "A region of the navigation map." msgstr "导航地图上的地区。" +msgid "" +"A region of the navigation map. It tells the [NavigationServer3D] what can " +"be navigated and what cannot, based on its [NavigationMesh] resource.\n" +"Two regions can be connected to each other if they share a similar edge. You " +"can set the minimum distance between two vertices required to connect two " +"edges by using [method NavigationServer3D.map_set_edge_connection_margin].\n" +"[b]Note:[/b] Overlapping two regions' navigation meshes is not enough for " +"connecting two regions. They must share a similar edge.\n" +"The cost of entering this region from another region can be controlled with " +"the [member enter_cost] value.\n" +"[b]Note:[/b] This value is not added to the path cost when the start " +"position is already inside this region.\n" +"The cost of traveling distances inside this region can be controlled with " +"the [member travel_cost] multiplier.\n" +"[b]Note:[/b] This node caches changes to its properties, so if you make " +"changes to the underlying region [RID] in [NavigationServer3D], they will " +"not be reflected in this node's properties." +msgstr "" +"导航地图的一个区块。它根据其 [NavigationMesh] 资源告诉 [NavigationServer3D] " +"哪些可以进行导航、哪些不能。\n" +"如果两个区块共享相似的边,则它们可以相互连接。可以使用 [method " +"NavigationServer3D.map_set_edge_connection_margin] 设置连接两条边所需的两个顶" +"点之间的最小距离。\n" +"[b]注意:[/b]重叠两个区块的导航网格不足以连接两个区块。它们必须共享一个相似的" +"边。\n" +"从另一个区块进入该区块的成本可以通过 [member enter_cost] 值来控制。\n" +"[b]注意:[/b]当起始位置已经在该区块内时,该值不会被添加到路径成本中。\n" +"在该区块内行进距离的成本可以使用 [member travel_cost] 乘数控制。\n" +"[b]注意:[/b]该节点缓存对其属性的更改,因此如果对 [NavigationServer3D] 中的基" +"础区块 [RID] 进行更改,它们将不会反映在该节点的属性中。" + +msgid "" +"Bakes the [NavigationMesh]. If [param on_thread] is set to [code]true[/code] " +"(default), the baking is done on a separate thread. Baking on separate " +"thread is useful because navigation baking is not a cheap operation. When it " +"is completed, it automatically sets the new [NavigationMesh]. Please note " +"that baking on separate thread may be very slow if geometry is parsed from " +"meshes as async access to each mesh involves heavy synchronization. Also, " +"please note that baking on a separate thread is automatically disabled on " +"operating systems that cannot use threads (such as Web with threads " +"disabled)." +msgstr "" +"烘焙该 [NavigationMesh]。如果 [param on_thread] 被设置为 [code]true[/code]" +"(默认),则该烘焙将在单独的线程上完成。独立线程烘焙很有用,因为导航烘焙不是" +"一项廉价的操作。完成后,它会自动设置新的 [NavigationMesh]。请注意,如果几何体" +"是从网格解析而来的,则独立线程烘焙可能会非常慢,因为对每个网格的异步访问会涉" +"及大量同步操作。另外,请注意在无法使用线程的操作系统(例如禁用线程的 Web)" +"上,会自动禁用独立线程烘焙。" + msgid "The [NavigationMesh] resource to use." msgstr "使用的 [NavigationMesh] 资源。" @@ -40610,6 +46788,24 @@ msgstr "使用 NavigationServer" msgid "Creates the agent." msgstr "创建代理。" +msgid "Returns true if the map got changed the previous frame." +msgstr "如果该地图在上一帧发生了改变,则返回 true。" + +msgid "" +"Sets the callback that gets called after each avoidance processing step for " +"the [param agent]. The calculated [code]safe_velocity[/code] will be passed " +"as the first parameter just before the physics calculations.\n" +"[b]Note:[/b] Created callbacks are always processed independently of the " +"SceneTree state as long as the agent is on a navigation map and not freed. " +"To disable the dispatch of a callback from an agent use [method " +"agent_set_callback] again with an empty [Callable]." +msgstr "" +"设置在 [param agent] 的每个避障处理步骤之后调用的回调。计算出的 " +"[code]safe_velocity[/code] 将在物理计算之前作为第一个参数传递。\n" +"[b]注意:[/b]只要代理还在导航地图上且未被释放,创建的回调就会始终独立于 " +"SceneTree 状态进行处理。要从某个代理禁用某个回调的分发,请再次使用一个空的 " +"[Callable] 来调用 [method agent_set_callback]。" + msgid "Puts the agent in the map." msgstr "将代理放入地图中。" @@ -40658,6 +46854,9 @@ msgstr "设置该代理的当前速度。" msgid "Destroys the given RID." msgstr "销毁给定的 RID。" +msgid "Returns [code]true[/code] when the NavigationServer has debug enabled." +msgstr "如果该 NavigationServer 启用了调试,则返回 [code]true[/code]。" + msgid "" "Returns all created navigation map [RID]s on the NavigationServer. This " "returns both 2D and 3D created navigation maps as there is technically no " @@ -40675,24 +46874,91 @@ msgstr "返回该 [code]link[/code] 的结束位置。" msgid "Returns the enter cost of this [param link]." msgstr "返回 [param link] 链接的进入消耗。" +msgid "Returns the navigation layers for this [code]link[/code]." +msgstr "返回 [code]link[/code] 的导航层。" + +msgid "" +"Returns the [code]ObjectID[/code] of the object which manages this link." +msgstr "返回管理该链接的对象的 [code]ObjectID[/code]。" + msgid "Returns the starting position of this [code]link[/code]." msgstr "返回该 [code]link[/code] 的起始位置。" msgid "Returns the travel cost of this [param link]." msgstr "返回 [param link] 链接的移动消耗。" +msgid "" +"Returns whether this [code]link[/code] can be travelled in both directions." +msgstr "返回该 [code]link[/code] 是否能够双向通行。" + +msgid "" +"Sets whether this [code]link[/code] can be travelled in both directions." +msgstr "设置该 [code]link[/code] 是否能够双向通行。" + msgid "Sets the exit position for the [code]link[/code]." msgstr "设置 [code]link[/code] 的出口位置。" +msgid "Sets the [code]enter_cost[/code] for this [code]link[/code]." +msgstr "设置 [code]link[/code] 的进入消耗 [code]enter_cost[/code]。" + msgid "Sets the navigation map [RID] for the link." msgstr "设置该链接的导航地图 [RID]。" +msgid "Set the [code]ObjectID[/code] of the object which manages this link." +msgstr "设置管理该链接的对象的 [code]ObjectID[/code]。" + msgid "Sets the entry position for this [code]link[/code]." msgstr "设置 [code]link[/code] 的入口位置。" +msgid "Sets the [code]travel_cost[/code] for this [code]link[/code]." +msgstr "设置 [code]link[/code] 的移动消耗 [code]travel_cost[/code]。" + msgid "Create a new map." msgstr "创建一张新地图。" +msgid "" +"This function immediately forces synchronization of the specified navigation " +"[param map] [RID]. By default navigation maps are only synchronized at the " +"end of each physics frame. This function can be used to immediately " +"(re)calculate all the navigation meshes and region connections of the " +"navigation map. This makes it possible to query a navigation path for a " +"changed map immediately and in the same frame (multiple times if needed).\n" +"Due to technical restrictions the current NavigationServer command queue " +"will be flushed. This means all already queued update commands for this " +"physics frame will be executed, even those intended for other maps, regions " +"and agents not part of the specified map. The expensive computation of the " +"navigation meshes and region connections of a map will only be done for the " +"specified map. Other maps will receive the normal synchronization at the end " +"of the physics frame. Should the specified map receive changes after the " +"forced update it will update again as well when the other maps receive their " +"update.\n" +"Avoidance processing and dispatch of the [code]safe_velocity[/code] signals " +"is untouched by this function and continues to happen for all maps and " +"agents at the end of the physics frame.\n" +"[b]Note:[/b] With great power comes great responsibility. This function " +"should only be used by users that really know what they are doing and have a " +"good reason for it. Forcing an immediate update of a navigation map requires " +"locking the NavigationServer and flushing the entire NavigationServer " +"command queue. Not only can this severely impact the performance of a game " +"but it can also introduce bugs if used inappropriately without much " +"foresight." +msgstr "" +"该函数将立即强制指定的导航 [param map] [RID] 的同步。默认情况下,导航地图仅在" +"每个物理帧结束时同步。该函数可用于立即(重新)计算该导航地图的所有导航网格和" +"区块连接。这使得可以在同一帧中对修改后的地图的导航路径立即执行查询(如果需" +"要,可以执行多次)。\n" +"由于技术上的限制,当前的 NavigationServer 命令队列将被冲刷。这意味着所有已在" +"当前物理帧中入队的更新命令都会被执行,即使是那些用于其他地图、不属于指定地图" +"的区块和代理的更新命令。 昂贵计算的导航网格和地图的区块连接将仅针对指定地图进" +"行。其他地图将在物理帧结束时接收正常同步。如果指定的地图在强制更新后又收到了" +"修改,则它将在其他地图收到更新时再次更新。\n" +"避障处理和 [code]safe_velocity[/code] 信号的分发不受该函数影响,仍继续发生在" +"物理帧结束时的所有地图和代理上。\n" +"[b]注意:[/b]能力越大,责任越大。该函数仅该用于用户真正知道自己在做什么并且有" +"充分理由的情况。强制立即更新导航地图需要锁定 NavigationServer 并冲刷整个 " +"NavigationServer 命令队列。这不仅会严重影响游戏的性能,而且如果缺乏远见且使用" +"不当,还会引入 bug。" + msgid "Returns the map cell size." msgstr "返回地图的单元格大小。" @@ -40706,6 +46972,9 @@ msgid "" "a distance used to connect two regions." msgstr "返回地图的边界连接边距。边界连接边距是用于连接两个地区的距离。" +msgid "Returns true if the map is active." +msgstr "如果地图处于活动状态,则返回 true。" + msgid "Sets the map active." msgstr "设置地图的激活态。" @@ -40725,9 +46994,38 @@ msgstr "返回 [param region] 地区的进入消耗。" msgid "Returns the region's navigation layers." msgstr "返回该地区的导航层。" +msgid "" +"Returns the [code]ObjectID[/code] of the object which manages this region." +msgstr "返回管理该地区对象的 [code]ObjectID[/code]。" + msgid "Returns the travel cost of this [param region]." msgstr "返回 [param region] 地区的移动消耗。" +msgid "" +"Returns [code]true[/code] if the provided [param point] in world space is " +"currently owned by the provided navigation [param region]. Owned in this " +"context means that one of the region's navigation mesh polygon faces has a " +"possible position at the closest distance to this point compared to all " +"other navigation meshes from other navigation regions that are also " +"registered on the navigation map of the provided region.\n" +"If multiple navigation meshes have positions at equal distance the " +"navigation region whose polygons are processed first wins the ownership. " +"Polygons are processed in the same order that navigation regions were " +"registered on the NavigationServer.\n" +"[b]Note:[/b] If navigation meshes from different navigation regions overlap " +"(which should be avoided in general) the result might not be what is " +"expected." +msgstr "" +"如果提供的世界空间中的 [param point] 当前由提供的导航区块 [param region] 拥" +"有,则返回 [code]true[/code]。在这里的上下文中,“拥有”意味着与来自其他导航区" +"块的所有其他导航网格相比,该区块的导航网格多边形面中有一个距离该点最近的可能" +"位置,这些其他导航区块也已在提供的区块的导航地图上注册。\n" +"如果有多个导航网格存在符合条件的位置并且距离相等,那么其多边形先被处理的导航" +"区块将赢得所有权。多边形的处理顺序与导航区块在 NavigationServer 上的注册顺序" +"一致。\n" +"[b]注意:[/b]如果来自不同导航区块的导航网格存在重叠(通常应当避免),可能会得" +"到预料之外的结果。" + msgid "Sets the [param enter_cost] for this [param region]." msgstr "设置 [param region] 地区的进入消耗 [param enter_cost]。" @@ -40744,12 +47042,18 @@ msgstr "" msgid "Sets the [param navigation_polygon] for the region." msgstr "设置该地区的导航多边形 [param navigation_polygon]。" +msgid "Set the [code]ObjectID[/code] of the object which manages this region." +msgstr "设置管理该地区对象的 [code]ObjectID[/code]。" + msgid "Sets the global transformation for the region." msgstr "设置该地区的全局变换。" msgid "Sets the [param travel_cost] for this [param region]." msgstr "设置 [param region] 地区的移动消耗 [param travel_cost]。" +msgid "If [code]true[/code] enables debug mode on the NavigationServer." +msgstr "如果为 [code]true[/code],则该 NavigationServer 启用了调试模式。" + msgid "" "Emitted when a navigation map is updated, when a region moves or is modified." msgstr "当导航地图更新时、地区移动或被修改时发出。" @@ -40826,6 +47130,14 @@ msgstr "" "板。为了做到这一点,它将纹理分割成 3×3 的网格。当你缩放节点时,它在水平或垂直" "方向上平铺纹理的两侧,在两个轴上平铺中心,但它不会缩放或平铺角部。" +msgid "Returns the size of the margin on the specified [enum Side]." +msgstr "返回指定 [enum Side] 的边距大小。" + +msgid "" +"Sets the size of the margin on the specified [enum Side] to [param value] " +"pixels." +msgstr "将给定 [enum Side] 的边距大小设置为 [param value] 像素。" + msgid "" "The stretch mode to use for horizontal stretching/tiling. See [enum " "NinePatchRect.AxisStretchMode] for possible values." @@ -40898,6 +47210,25 @@ msgid "" "texture to be distorted." msgstr "在 NinePatchRect 上拉伸中心纹理。这可能会导致纹理失真。" +msgid "" +"Repeats the center texture across the NinePatchRect. This won't cause any " +"visible distortion. The texture must be seamless for this to work without " +"displaying artifacts between edges." +msgstr "" +"在 NinePatchRect 上重复中心纹理。这不会导致任何可见的失真。 纹理必须是无缝" +"的,这样才能在边缘之间不显示伪影。" + +msgid "" +"Repeats the center texture across the NinePatchRect, but will also stretch " +"the texture to make sure each tile is visible in full. This may cause the " +"texture to be distorted, but less than [constant AXIS_STRETCH_MODE_STRETCH]. " +"The texture must be seamless for this to work without displaying artifacts " +"between edges." +msgstr "" +"在 NinePatchRect 上重复中心纹理,但也会拉伸纹理以确保每个图块都完整可见。这可" +"能会导致纹理扭曲,但少于 [constant AXIS_STRETCH_MODE_STRETCH]。纹理必须是无缝" +"的,这样才能在边缘之间不显示伪影。" + msgid "Base class for all [i]scene[/i] objects." msgstr "所有[i]场景[/i]对象的基类。" @@ -41069,26 +47400,375 @@ msgstr "" "[b]注意:[/b]仅当该节点存在于场景树中时(即不是孤立节点),此方法才会被调用。" msgid "" -"Creates a new [Tween] and binds it to this node. This is equivalent of " -"doing:\n" +"Called during the physics processing step of the main loop. Physics " +"processing means that the frame rate is synced to the physics, i.e. the " +"[param delta] variable should be constant. [param delta] is in seconds.\n" +"It is only called if physics processing is enabled, which is done " +"automatically if this method is overridden, and can be toggled with [method " +"set_physics_process].\n" +"Corresponds to the [constant NOTIFICATION_PHYSICS_PROCESS] notification in " +"[method Object._notification].\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 "" +"在主循环的物理处理步骤中被调用。物理处理意味着帧率与物理同步,即 [param " +"delta] 变量应该是常量。 [param delta] 的单位是秒。\n" +"只有当物理处理被启用时才会被调用,如果这个方法被重写,就会自动被调用,并且可" +"以使用 [method set_physics_process] 进行切换。\n" +"对应于 [method Object._notification] 中的 [constant " +"NOTIFICATION_PHYSICS_PROCESS] 通知。\n" +"[b]注意:[/b]这个方法只有在当节点存在于场景树中时才会被调用(也就是说,如果它" +"不是“孤儿”)。" + +msgid "" +"Called during the processing step of the main loop. Processing happens at " +"every frame and as fast as possible, so the [param delta] time since the " +"previous frame is not constant. [param delta] is in seconds.\n" +"It is only called if processing is enabled, which is done automatically if " +"this method is overridden, and can be toggled with [method set_process].\n" +"Corresponds to the [constant NOTIFICATION_PROCESS] notification in [method " +"Object._notification].\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 "" +"在主循环的处理步骤中被调用。处理发生在每一帧,并且尽可能快,所以从上一帧开始" +"的 [param delta] 时间不是恒定的。[param delta] 的单位是秒。\n" +"只有在启用处理的情况下才会被调用,如果这个方法被重写,会自动进行处理,可以用 " +"[method set_process] 来开关。\n" +"对应于 [method Object._notification] 中的 [constant NOTIFICATION_PROCESS] 通" +"知。\n" +"[b]注意:[/b] 这个方法只有在节点存在于场景树中时才会被调用(也就是说,如果它" +"不是“孤儿”)。" + +msgid "" +"Called when the node is \"ready\", i.e. when both the node and its children " +"have entered the scene tree. If the node has children, their [method _ready] " +"callbacks get triggered first, and the parent node will receive the ready " +"notification afterwards.\n" +"Corresponds to the [constant NOTIFICATION_READY] notification in [method " +"Object._notification]. See also the [code]@onready[/code] annotation for " +"variables.\n" +"Usually used for initialization. For even earlier initialization, [method " +"Object._init] may be used. See also [method _enter_tree].\n" +"[b]Note:[/b] [method _ready] may be called only once for each node. After " +"removing a node from the scene tree and adding it again, [code]_ready[/code] " +"will not be called a second time. This can be bypassed by requesting another " +"call with [method request_ready], which may be called anywhere before adding " +"the node again." +msgstr "" +"当节点“就绪”时被调用,即当节点及其子节点都已经进入场景树时。如果该节点有子节" +"点,将首先触发子节点的 [method _ready] 回调,稍后父节点将收到就绪通知。\n" +"对应 [method Object._notification] 中的 [constant NOTIFICATION_READY] 通知。" +"另请参阅用于变量的 [code]@onready[/code] 注解。\n" +"通常用于初始化。对于更早的初始化,可以使用 [method Object._init]。另见 " +"[method _enter_tree]。\n" +"[b]注意:[/b] 对于每个节点可能仅调用一次 [method_ready]。从场景树中移除一个节" +"点后,并再次添加该节点时,将不会第二次调用 [code]_ready[/code]。这时可以通过" +"使用 [method request_ready],它可以在再次添加节点之前的任何地方被调用。" + +msgid "" +"Called when an [InputEventKey] or [InputEventShortcut] hasn't been consumed " +"by [method _input] or any GUI [Control] item. The input event propagates up " +"through the node tree until a node consumes it.\n" +"It is only called if shortcut processing is enabled, which is done " +"automatically if this method is overridden, and can be toggled with [method " +"set_process_shortcut_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" +"This method can be used to handle shortcuts.\n" +"[b]Note:[/b] This method is only called if the node is present in the scene " +"tree (i.e. if it's not orphan)." +msgstr "" +"当一个 [InputEventKey] 或 [InputEventShortcut],尚未被 [method _input] 或任" +"何 GUI [Control] 项使用时调用。输入事件通过节点树向上传播,直到一个节点消耗" +"它。\n" +"它仅在启用快捷键处理时调用,如果此方法被覆盖,则会自动调用,并且可以使用 " +"[method set_process_shortcut_input] 进行开关。\n" +"要消耗输入事件,并阻止它进一步传播到其他节点,可以调用 [method Viewport." +"set_input_as_handled]。\n" +"此方法可用于处理快捷键。\n" +"[b]注意:[/b] 仅当该节点存在于场景树中(即它不是一个孤儿节点)时,此方法才会" +"被调用。" + +msgid "" +"Called when an [InputEventKey] hasn't been consumed by [method _input] or " +"any GUI [Control] item. The input event propagates up through the node tree " +"until a node consumes it.\n" +"It is only called if unhandled key input processing is enabled, which is " +"done automatically if this method is overridden, and can be toggled with " +"[method set_process_unhandled_key_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" +"This method can be used to handle Unicode character input with [kbd]Alt[/" +"kbd], [kbd]Alt + Ctrl[/kbd], and [kbd]Alt + Shift[/kbd] modifiers, after " +"shortcuts were handled.\n" +"For gameplay input, this and [method _unhandled_input] are usually a better " +"fit than [method _input] as they allow the GUI to intercept the events " +"first.\n" +"This method also performs better than [method _unhandled_input], since " +"unrelated events such as [InputEventMouseMotion] are automatically " +"filtered.\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 "" +"当 [InputEventKey] 没有被 [method _input] 或任何 GUI [Control] 项目消耗时被调" +"用。输入事件通过节点树向上传播,直到一个节点消耗它。\n" +"只有在启用了未处理的键输入处理时才会被调用,如果这个方法被重写,它就会自动完" +"成,并且可以用 [method set_process_unhandled_key_input] 来切换。\n" +"要消耗输入事件并阻止它进一步传播到其他节点,可以调用 [method Viewport." +"set_input_as_handled]。\n" +"在处理快捷键后,此方法可用于使用 [kbd]Alt[/kbd]、[kbd]Alt + Ctrl[/kbd] 和 " +"[kbd]Alt + Shift[/kbd] 修饰符处理 Unicode 字符输入。\n" +"对于游戏输入,这和 [method _unhandled_input] 通常比 [method _input] 更适合," +"因为它们允许 GUI 首先拦截事件。\n" +"该方法也比 [method _unhandled_input] 执行得更好,因为 " +"[InputEventMouseMotion] 等无关事件会被自动过滤。\n" +"[b]注意:[/b]只有当节点存在于场景树中时(即,如果它不是孤儿节点),该方法才会" +"被调用。" + +msgid "" +"Adds a child [param node]. Nodes can have any number of children, but every " +"child must have a unique name. Child nodes are automatically deleted when " +"the parent node is deleted, so an entire scene can be removed by deleting " +"its topmost node.\n" +"If [param force_readable_name] is [code]true[/code], improves the " +"readability of the added [param node]. If not named, the [param node] is " +"renamed to its type, and if it shares [member name] with a sibling, a number " +"is suffixed more appropriately. This operation is very slow. As such, it is " +"recommended leaving this to [code]false[/code], which assigns a dummy name " +"featuring [code]@[/code] in both situations.\n" +"If [param internal] is different than [constant INTERNAL_MODE_DISABLED], the " +"child will be added as internal node. Such nodes are ignored by methods like " +"[method get_children], unless their parameter [code]include_internal[/code] " +"is [code]true[/code].The intended usage is to hide the internal nodes from " +"the user, so the user won't accidentally delete or modify them. Used by some " +"GUI nodes, e.g. [ColorPicker]. See [enum InternalMode] for available modes.\n" +"[b]Note:[/b] If the child node already has a parent, the function will fail. " +"Use [method remove_child] first to remove the node from its current parent. " +"For example:\n" "[codeblocks]\n" "[gdscript]\n" -"get_tree().create_tween().bind_node(self)\n" +"var child_node = get_child(0)\n" +"if child_node.get_parent():\n" +" child_node.get_parent().remove_child(child_node)\n" +"add_child(child_node)\n" "[/gdscript]\n" "[csharp]\n" -"GetTree().CreateTween().BindNode(this);\n" +"Node childNode = GetChild(0);\n" +"if (childNode.GetParent() != null)\n" +"{\n" +" childNode.GetParent().RemoveChild(childNode);\n" +"}\n" +"AddChild(childNode);\n" "[/csharp]\n" -"[/codeblocks]" +"[/codeblocks]\n" +"If you need the child node to be added below a specific node in the list of " +"children, use [method add_sibling] instead of this method.\n" +"[b]Note:[/b] If you want a child to be persisted to a [PackedScene], you " +"must set [member owner] in addition to calling [method add_child]. This is " +"typically relevant for [url=$DOCS_URL/tutorials/plugins/" +"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/" +"tutorials/plugins/editor/index.html]editor plugins[/url]. If [method " +"add_child] is called without setting [member owner], the newly added [Node] " +"will not be visible in the scene tree, though it will be visible in the " +"2D/3D view." msgstr "" -"新建 [Tween] 并将其绑定到这个节点。与如下操作等价:\n" +"添加一个子节点 [param node]。节点可以有任意数量的子节点,但每个子节点必须有一" +"个唯一的名字。删除父节点时会自动删除子节点,因此可以通过删除最顶层的节点来删" +"除整个场景。\n" +"如果 [param force_readable_name] 为 [code]true[/code],则将提高所添加的 " +"[param node] 的可读性。如果尚未命名,[param node] 将重命名为它的类型,如果它" +"与兄弟共享 [member name],则使用更合适的数字后缀。这个操作很慢。因此,建议将" +"其保留为 [code]false[/code],在这两种情况下,这会分配一个以 [code]@[/code] 为" +"特色的虚拟名称。\n" +"如果 [param internal] 不同于 [constant INTERNAL_MODE_DISABLED],则子节点将被" +"添加为内部节点。该类节点会被 [method get_children] 等方法忽略,除非它们的参" +"数 [code]include_internal[/code] 为 [code]true[/code]。预期用途是对用户隐藏内" +"部节点,这样用户就不会意外删除或修改它们。由一些 GUI 节点使用,例如 " +"[ColorPicker]。有关可用模式,请参阅 [enum InternalMode]。\n" +"[b]注意:[/b]如果子节点已经有一个父节点,该函数将失败。需要首先使用 [method " +"remove_child] 将节点从其当前父节点中移除。 例如:\n" "[codeblocks]\n" "[gdscript]\n" -"get_tree().create_tween().bind_node(self)\n" +"var child_node = get_child(0)\n" +"if child_node.get_parent():\n" +" child_node.get_parent().remove_child(child_node)\n" +"add_child(child_node)\n" "[/gdscript]\n" "[csharp]\n" -"GetTree().CreateTween().BindNode(this);\n" +"Node childNode = GetChild(0);\n" +"if (childNode.GetParent() != null)\n" +"{\n" +" childNode.GetParent().RemoveChild(childNode);\n" +"}\n" +"AddChild(childNode);\n" "[/csharp]\n" -"[/codeblocks]" +"[/codeblocks]\n" +"如果您需要将子节点添加到子节点列表中特定节点的下方,请使用 [method " +"add_sibling] 而不是该方法。\n" +"[b]注意:[/b]如果想让一个子节点持久化到一个 [PackedScene],除了调用 [method " +"add_child] 外,还必须设置 [member owner] 。这通常在[url=$DOCS_URL/tutorials/" +"plugins/running_code_in_the_editor.html]工具脚本[/url]和[url=$DOCS_URL/" +"tutorials/plugins/editor/index.html]编辑器插件[/url]中会用到。如果在没有设置 " +"[member owner] 的情况下调用 [method add_child],则新添加的 [Node] 在场景树中" +"将不可见,但在 2D/3D 视图中却是可见的。" + +msgid "" +"Adds the node to a group. Groups are helpers to name and organize a subset " +"of nodes, for example \"enemies\" or \"collectables\". A node can be in any " +"number of groups. Nodes can be assigned a group at any time, but will not be " +"added until they are inside the scene tree (see [method is_inside_tree]). " +"See notes in the description, and the group methods in [SceneTree].\n" +"The [param persistent] option is used when packing node to [PackedScene] and " +"saving to file. Non-persistent groups aren't stored.\n" +"[b]Note:[/b] For performance reasons, the order of node groups is [i]not[/i] " +"guaranteed. The order of node groups should not be relied upon as it can " +"vary across project runs." +msgstr "" +"将节点添加到一个组中。组是命名和组织节点子集的辅助工具,例如“敌人”或“收集" +"品”等。一个节点可以在任意数量的组中。节点可以随时被分配到一个组中,但在它们进" +"入场景树之前不会添加(参见 [method is_inside_tree])。参阅描述中的注释,以及 " +"[SceneTree] 中的分组方法。\n" +"[param persistent] 选项在将节点打包到 [PackedScene] 并保存到文件时使用。非持" +"久化的组不会被存储。\n" +"[b]注意:[/b]出于性能原因,[i]不[/i]保证节点组的顺序。不应依赖节点组的顺序," +"因为它可能因项目运行而异。" + +msgid "" +"Duplicates the node, returning a new node.\n" +"You can fine-tune the behavior using the [param flags] (see [enum " +"DuplicateFlags]).\n" +"[b]Note:[/b] It will not work properly if the node contains a script with " +"constructor arguments (i.e. needs to supply arguments to [method Object." +"_init] method). In that case, the node will be duplicated without a script." +msgstr "" +"复制该节点,返回一个新的节点。\n" +"可以使用 [param flags] 微调该行为(请参阅 [enum DuplicateFlags])。\n" +"[b]注意:[/b]如果节点包含一个带有构造参数的脚本(即需要向 [method Object." +"_init] 方法提供参数),它将无法正常工作。在这种情况下,节点将在没有脚本的情况" +"下被复制。" + +msgid "" +"Finds the first descendant of this node whose name matches [param pattern] " +"as in [method String.match].\n" +"[param pattern] does not match against the full path, just against " +"individual node names. It is case-sensitive, with [code]\"*\"[/code] " +"matching zero or more characters and [code]\"?\"[/code] matching any single " +"character except [code]\".\"[/code]).\n" +"If [param recursive] is [code]true[/code], all child nodes are included, " +"even if deeply nested. Nodes are checked in tree order, so this node's first " +"direct child is checked first, then its own direct children, etc., before " +"moving to the second direct child, and so on. If [param recursive] is " +"[code]false[/code], only this node's direct children are matched.\n" +"If [param owned] is [code]true[/code], this method only finds nodes who have " +"an assigned [member Node.owner]. This is especially important for scenes " +"instantiated through a script, because those scenes don't have an owner.\n" +"Returns [code]null[/code] if no matching [Node] is found.\n" +"[b]Note:[/b] As this method walks through all the descendants of the node, " +"it is the slowest way to get a reference to another node. Whenever possible, " +"consider using [method get_node] with unique names instead (see [member " +"unique_name_in_owner]), or caching the node references into variable.\n" +"[b]Note:[/b] To find all descendant nodes matching a pattern or a class " +"type, see [method find_children]." +msgstr "" +"查找此节点的后代中,其名称与 [method String.match] 中的 [param pattern] 匹配" +"的第一个节点。\n" +"[param pattern] 不匹配完整路径,只匹配单个节点名称。它区分大小写," +"[code]\"*\"[/code] 匹配零个或多个字符,[code]\"?\"[/code] 匹配除 [code]\"." +"\"[/code] 之外的任意单个字符。\n" +"如果 [param recursive] 为 [code]true[/code],则查找范围包括所有子节点,即使嵌" +"套很深。节点按树顺序检查,因此首先检查该节点的第一个直接子节点,然后是该直接" +"子节点的直接子节点,等等,然后移动到第二个直接子节点,依此类推。如果 [param " +"recursive] 为 [code]false[/code],则仅匹配该节点的直接子节点。\n" +"如果 [param owned] 为 [code]true[/code],则该方法仅查找分配有 [member Node." +"owner] 的节点。这对于通过脚本实例化的场景尤其重要,因为这些场景没有所有者。\n" +"如果找不到匹配的 [Node],则返回 [code]null[/code]。\n" +"[b]注意:[/b]由于该方法会遍历节点的所有后代,因此它是获取对另一个节点的引用的" +"最慢方法。只要有可能,请考虑改用使用唯一名称的 [method get_node](请参阅 " +"[member unique_name_in_owner]),或将该节点引用缓存到变量中。\n" +"[b]注意:[/b]要查找匹配一个模式或类类型的所有后代节点,请参见 [method " +"find_children]。" + +msgid "" +"Finds descendants of this node whose name matches [param pattern] as in " +"[method String.match], and/or type matches [param type] as in [method Object." +"is_class].\n" +"[param pattern] does not match against the full path, just against " +"individual node names. It is case-sensitive, with [code]\"*\"[/code] " +"matching zero or more characters and [code]\"?\"[/code] matching any single " +"character except [code]\".\"[/code]).\n" +"[param type] will check equality or inheritance, and is case-sensitive. " +"[code]\"Object\"[/code] will match a node whose type is [code]\"Node\"[/" +"code] but not the other way around.\n" +"If [param recursive] is [code]true[/code], all child nodes are included, " +"even if deeply nested. Nodes are checked in tree order, so this node's first " +"direct child is checked first, then its own direct children, etc., before " +"moving to the second direct child, and so on. If [param recursive] is " +"[code]false[/code], only this node's direct children are matched.\n" +"If [param owned] is [code]true[/code], this method only finds nodes who have " +"an assigned [member Node.owner]. This is especially important for scenes " +"instantiated through a script, because those scenes don't have an owner.\n" +"Returns an empty array if no matching nodes are found.\n" +"[b]Note:[/b] As this method walks through all the descendants of the node, " +"it is the slowest way to get references to other nodes. Whenever possible, " +"consider caching the node references into variables.\n" +"[b]Note:[/b] If you only want to find the first descendant node that matches " +"a pattern, see [method find_child]." +msgstr "" +"查找该节点的后代节点,其名称与 [method String.match] 中的 [param pattern] 匹" +"配,和/或类型与 [method Object.is_class] 中的 [param type] 匹配。\n" +"[param pattern] 不匹配完整路径,只匹配单个节点名称。它区分大小写," +"[code]\"*\"[/code] 匹配零个或多个字符,[code]\"?\"[/code] 匹配除 [code]\"." +"\"[/code] 之外的任意单个字符。\n" +"[param type] 将检查相等性或继承关系,并且区分大小写。[code]\"Object\"[/code] " +"会匹配类型为 [code]\"Node\"[/code] 的节点,但反之则不然。\n" +"如果 [param recursive] 为 [code]true[/code],则匹配范围包括所有子节点,即使嵌" +"套很深。节点按树顺序检查,因此首先检查该节点的第一个直接子节点,然后是该直接" +"子节点的直接子节点,等等,然后移动到第二个直接子节点,依此类推。如果 [param " +"recursive] 为 [code]false[/code],则仅匹配该节点的直接子节点。\n" +"如果 [param owned] 为 [code]true[/code],则该方法仅查找分配有 [member Node." +"owner] 的节点。这对于通过脚本实例化的场景尤其重要,因为这些场景没有所有者。\n" +"如果找不到匹配的节点,则返回一个空数组。\n" +"[b]注意:[/b]由于该方法会遍历节点的所有后代,因此它是获取对其他节点的引用的最" +"慢方法。只要有可能,请考虑将节点引用缓存到变量中。\n" +"[b]注意:[/b]如果只想查找匹配模式的第一个后代节点,请参见 [method " +"find_child]。" + +msgid "" +"Finds the first parent of the current node whose name matches [param " +"pattern] as in [method String.match].\n" +"[param pattern] does not match against the full path, just against " +"individual node names. It is case-sensitive, with [code]\"*\"[/code] " +"matching zero or more characters and [code]\"?\"[/code] matching any single " +"character except [code]\".\"[/code]).\n" +"[b]Note:[/b] As this method walks upwards in the scene tree, it can be slow " +"in large, deeply nested scene trees. Whenever possible, consider using " +"[method get_node] with unique names instead (see [member " +"unique_name_in_owner]), or caching the node references into variable." +msgstr "" +"查找当前节点的第一个父节点,其名称与 [method String.match] 中的 [param " +"pattern] 匹配。\n" +"[param pattern] 不匹配完整路径,只匹配单个节点名称。它区分大小写," +"[code]\"*\"[/code] 匹配零个或多个字符,[code]\"?\"[/code] 匹配除 [code]\"." +"\"[/code] 之外的任意单个字符。\n" +"[b]注意:[/b]由于该方法在场景树中向上遍历,因此在大型、深度嵌套的场景树中可能" +"会很慢。只要有可能,请考虑使用具有唯一名称的 [method get_node](请参阅 " +"[member unique_name_in_owner]),或将该节点引用缓存到变量中。" + +msgid "" +"Returns a child node by its index (see [method get_child_count]). This " +"method is often used for iterating all children of a node.\n" +"Negative indices access the children from the last one.\n" +"If [param include_internal] is [code]false[/code], internal children are " +"skipped (see [code]internal[/code] parameter in [method add_child]).\n" +"To access a child node via its name, use [method get_node]." +msgstr "" +"按索引返回一个子节点(见 [method get_child_count])。这个方法经常被用于遍历一" +"个节点的所有子节点。\n" +"负索引将从最后一个开始访问子节点。\n" +"如果 [param include_internal] 为 [code]false[/code],则跳过内部子节点(见 " +"[method add_child] 中的 [code]internal[/code] 参数)。\n" +"要通过名称访问一个子节点,请使用 [method get_node]。" msgid "" "Returns the number of child nodes.\n" @@ -41100,6 +47780,59 @@ msgstr "" "[method add_child] 的 [code]internal[/code] 参数)。" msgid "" +"Returns an array listing the groups that the node is a member of.\n" +"[b]Note:[/b] For performance reasons, the order of node groups is [i]not[/i] " +"guaranteed. The order of node groups should not be relied upon as it can " +"vary across project runs.\n" +"[b]Note:[/b] The engine uses some group names internally (all starting with " +"an underscore). To avoid conflicts with internal groups, do not add custom " +"groups whose name starts with an underscore. To exclude internal groups " +"while looping over [method get_groups], use the following snippet:\n" +"[codeblocks]\n" +"[gdscript]\n" +"# Stores the node's non-internal groups only (as an array of Strings).\n" +"var non_internal_groups = []\n" +"for group in get_groups():\n" +" if not group.begins_with(\"_\"):\n" +" non_internal_groups.push_back(group)\n" +"[/gdscript]\n" +"[csharp]\n" +"// Stores the node's non-internal groups only (as a List of strings).\n" +"List<string> nonInternalGroups = new List<string>();\n" +"foreach (string group in GetGroups())\n" +"{\n" +" if (!group.BeginsWith(\"_\"))\n" +" nonInternalGroups.Add(group);\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回一个列出该节点所属的分组的数组。\n" +"[b]注意:[/b]出于性能原因,[i]不[/i]保证节点分组的顺序。 不应依赖节点分组的顺" +"序,因为它可能因项目运行而异。\n" +"[b]注意:[/b]引擎在内部使用了一些分组名称(全部以下划线开头)。为避免与内部分" +"组冲突,请勿添加名称以下划线开头的自定义分组。要在遍历 [method get_groups] 时" +"排除内部分组,请使用以下代码段:\n" +"[codeblocks]\n" +"[gdscript]\n" +"# 仅存储节点的非内部分组(作为一个字符串数组)。\n" +"var non_internal_groups = []\n" +"for group in get_groups():\n" +" if not group.begins_with(\"_\"):\n" +" non_internal_groups.push_back(group)\n" +"[/gdscript]\n" +"[csharp]\n" +"// 仅存储节点的非内部分组(作为一个字符串列表)。\n" +"List<string> nonInternalGroups = new List<string>();\n" +"foreach (string group in GetGroups())\n" +"{\n" +" if (!group.BeginsWith(\"_\"))\n" +" nonInternalGroups.Add(group);\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" "Similar to [method get_node], but does not log an error if [param path] does " "not point to a valid [Node]." msgstr "" @@ -41164,6 +47897,21 @@ msgid "" msgstr "如果给定节点是当前节点的直接或间接子节点,则返回 [code]true[/code]。" msgid "" +"Returns [code]true[/code] if the node is folded (collapsed) in the Scene " +"dock. This method is only intended for use with editor tooling." +msgstr "" +"如果该节点在“场景”面板中被折叠,则返回 [code]true[/code]。该方法仅适用于编辑" +"器工具。" + +msgid "" +"Returns [code]true[/code] if [param node] has editable children enabled " +"relative to this node. This method is only intended for use with editor " +"tooling." +msgstr "" +"如果 [param node] 有与相对于此节点的可编辑子节点,则返回 [code]true[/code]。" +"该方法仅适用于编辑器工具。" + +msgid "" "Returns [code]true[/code] if the given node occurs later in the scene " "hierarchy than the current node." msgstr "" @@ -41229,6 +47977,32 @@ msgstr "" "set_process_unhandled_key_input])。" msgid "" +"Moves a child node to a different index (order) among the other children. " +"Since calls, signals, etc. are performed by tree order, changing the order " +"of children nodes may be useful. If [param to_index] is negative, the index " +"will be counted from the end.\n" +"[b]Note:[/b] Internal children can only be moved within their expected " +"\"internal range\" (see [code]internal[/code] parameter in [method " +"add_child])." +msgstr "" +"在其他子节点中将子节点移动到不同的索引(顺序)。由于调用、信号等是按树顺序执" +"行的,因此更改子节点的顺序可能会很有用。如果 [param to_index] 为负数,索引将" +"从末尾开始计算。\n" +"[b]注意:[/b]内部子节点只能在其期望的“内部范围”内移动(参见 [method " +"add_child] 中的 [code]internal[/code] 参数)。" + +msgid "" +"Prints all orphan nodes (nodes outside the [SceneTree]). Used for " +"debugging.\n" +"[b]Note:[/b] [method print_orphan_nodes] only works in debug builds. When " +"called in a project exported in release mode, [method print_orphan_nodes] " +"will not print anything." +msgstr "" +"输出所有孤立节点([SceneTree] 之外的节点)。用于调试。\n" +"[b]注意:[/b][method print_orphan_nodes] 只在调试版本中有效。在以发布模式导出" +"的项目中调用时,[method print_orphan_nodes] 不会输出任何内容。" + +msgid "" "Prints the tree to stdout. Used mainly for debugging purposes. This version " "displays the path relative to the current node, and is good for copy/pasting " "into the [method get_node] function.\n" @@ -41255,6 +48029,18 @@ msgstr "" "[/codeblock]" msgid "" +"Calls the given method (if present) with the arguments given in [param args] " +"on this node and recursively on all its children. If the [param " +"parent_first] argument is [code]true[/code], the method will be called on " +"the current node first, then on all its children. If [param parent_first] is " +"[code]false[/code], the children will be called first." +msgstr "" +"在该节点上并递归地在其所有子节点上,使用 [param args] 中给出的参数调用给定方" +"法(如果存在)。如果 [param parent_first] 参数为 [code]true[/code],则该方法" +"将首先在当前节点上调用,然后在其所有子节点上调用。如果 [param parent_first] " +"为 [code]false[/code],则子节点上的方法将首先被调用。" + +msgid "" "Notifies the current node and all its children recursively by calling " "[method Object.notification] on all of them." msgstr "" @@ -41272,6 +48058,24 @@ msgstr "" "点(或其后代)的 [member owner] 设置为 [code]null[/code]。" msgid "" +"Replaces a node in a scene by the given one. Subscriptions that pass through " +"this node will be lost.\n" +"If [param keep_groups] is [code]true[/code], the [param node] is added to " +"the same groups that the replaced node is in.\n" +"[b]Note:[/b] The given node will become the new parent of any child nodes " +"that the replaced node had.\n" +"[b]Note:[/b] The replaced node is not automatically freed, so you either " +"need to keep it in a variable for later use or free it using [method Object." +"free]." +msgstr "" +"将场景中的某个节点替换为给定的节点。经过该节点的订阅会丢失。\n" +"如果 [param keep_groups] 为 [code]true[/code],则 [param node] 被添加到被替换" +"节点所在的相同分组中。\n" +"[b]注意:[/b]给定的节点将成为被替换节点的所有子节点的新的父节点。\n" +"[b]注意:[/b]被替换的节点不会被自动释放,因此需要将其保存在变量中以备后用,或" +"者使用 [method Object.free] 释放它。" + +msgid "" "Requests that [code]_ready[/code] be called again. Note that the method " "won't be called immediately, but is scheduled for when the node is added to " "the scene tree again (see [method _ready]). [code]_ready[/code] is called " @@ -41287,6 +48091,32 @@ msgstr "" "同)。" msgid "" +"Sends a remote procedure call request for the given [param method] to peers " +"on the network (and locally), optionally sending all additional arguments as " +"arguments to the method called by the RPC. The call request will only be " +"received by nodes with the same [NodePath], including the exact same node " +"name. Behavior depends on the RPC configuration for the given method, see " +"[method rpc_config] and [annotation @GDScript.@rpc]. Methods are not exposed " +"to RPCs by default. Returns [code]null[/code].\n" +"[b]Note:[/b] You can only safely use RPCs on clients after you received the " +"[code]connected_to_server[/code] signal from the [MultiplayerAPI]. You also " +"need to keep track of the connection state, either by the [MultiplayerAPI] " +"signals like [code]server_disconnected[/code] or by checking " +"[code]get_multiplayer().peer.get_connection_status() == " +"CONNECTION_CONNECTED[/code]." +msgstr "" +"将给定 [param method] 的远程过程调用请求发送到网络(和本地)上的对等体,可选" +"择将所有其他参数作为参数发送给 RPC 调用的方法。调用请求只会被具有相同 " +"[NodePath] 的节点接收,该节点包括完全相同的节点名称。行为取决于给定方法的 " +"RPC 配置,请参阅 [method rpc_config] 和 [annotation @GDScript.@rpc]。默认情况" +"下,方法不会暴露给 RPC。返回 [code]null[/code]。\n" +"[b]注意:[/b]只有在收到来自 [MultiplayerAPI] 的 [code]connected_to_server[/" +"code] 信号后,才能在客户端上安全地使用 RPC。还需要跟踪连接状态,可通过 " +"[MultiplayerAPI] 信号(例如 [code]server_disconnected[/code])或检查 " +"[code]get_multiplayer().peer.get_connection_status() == " +"CONNECTION_CONNECTED[/code] 来跟踪。" + +msgid "" "Enables or disables internal physics for this node. Internal physics " "processing happens in isolation from the normal [method _physics_process] " "calls and is used by some nodes internally to guarantee proper functioning " @@ -41345,6 +48175,14 @@ msgstr "" "支持。" msgid "" +"Enables shortcut processing. Enabled automatically if [method " +"_shortcut_input] is overridden. Any calls to this before [method _ready] " +"will be ignored." +msgstr "" +"启用快捷键处理。如果 [method _shortcut_input] 被覆盖,则自动启用。在 [method " +"_ready] 之前对此的任何调用都将被忽略。" + +msgid "" "Enables unhandled input processing. This is not required for GUI controls! " "It enables the node to receive all input that was not previously handled " "(usually by a [Control]). Enabled automatically if [method _unhandled_input] " @@ -41367,6 +48205,14 @@ msgid "" msgstr "设置这是否是实例加载占位符。见 [InstancePlaceholder]。" msgid "" +"Updates the warning displayed for this node in the Scene Dock.\n" +"Use [method _get_configuration_warnings] to setup the warning message to " +"display." +msgstr "" +"更新在场景面板中为该节点显示的警告。\n" +"使用 [method _get_configuration_warnings] 配置要显示的警告消息。" + +msgid "" "Add a custom description to a node. It will be displayed in a tooltip when " "hovered in editor's scene tree." msgstr "" @@ -41374,6 +48220,13 @@ msgstr "" "在工具提示中。" msgid "" +"The [MultiplayerAPI] instance associated with this node. See [method " +"SceneTree.get_multiplayer]." +msgstr "" +"与此节点关联的 [MultiplayerAPI] 实例。参见 [method SceneTree." +"get_multiplayer]。" + +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" @@ -41601,6 +48454,29 @@ msgstr "" "PROCESS_MODE_DISABLED]。" msgid "" +"Notification received when other nodes in the tree may have been removed/" +"replaced and node pointers may require re-caching." +msgstr "" +"当树中的其他节点可能已经被移除 / 替换,节点指针可能需要重新缓存时,会收到通" +"知。" + +msgid "" +"Notification received right before the scene with the node is saved in the " +"editor. This notification is only sent in the Godot editor and will not " +"occur in exported projects." +msgstr "" +"在编辑器中保存有节点的场景之前收到的通知。这个通知只在 Godot 编辑器中发送,不" +"会出现在导出的项目中。" + +msgid "" +"Notification received right after the scene with the node is saved in the " +"editor. This notification is only sent in the Godot editor and will not " +"occur in exported projects." +msgstr "" +"在编辑器中保存有节点的场景后立即收到通知。这个通知只在 Godot 编辑器中发送,在" +"导出的项目中不会出现。" + +msgid "" "Notification received from the OS when the mouse enters the game window.\n" "Implemented on desktop and web platforms." msgstr "" @@ -41615,6 +48491,39 @@ msgstr "" "在桌面和 Web 平台上实现。" msgid "" +"Notification received from the OS when the node's parent [Window] is " +"focused. This may be a change of focus between two windows of the same " +"engine instance, or from the OS desktop or a third-party application to a " +"window of the game (in which case [constant " +"NOTIFICATION_APPLICATION_FOCUS_IN] is also emitted)." +msgstr "" +"当该节点的父 [Window] 获得焦点时,从操作系统收到该通知。焦点变化可能发生在同" +"一引擎实例的两个窗口之间,也可能发生在从操作系统桌面、或第三方应用程序切换到" +"游戏窗口(在这种情况下,还会发出 [constant " +"NOTIFICATION_APPLICATION_FOCUS_IN])。" + +msgid "" +"Notification received from the OS when the node's parent [Window] is " +"defocused. This may be a change of focus between two windows of the same " +"engine instance, or from a window of the game to the OS desktop or a third-" +"party application (in which case [constant " +"NOTIFICATION_APPLICATION_FOCUS_OUT] is also emitted)." +msgstr "" +"当该节点的父 [Window] 失去焦点时,从操作系统收到该通知。焦点变化可能发生在同" +"一引擎实例的两个窗口之间,或发生在从游戏窗口切换到操作系统桌面、或第三方应用" +"程序(在这种情况下,还会发出 [constant " +"NOTIFICATION_APPLICATION_FOCUS_OUT])。" + +msgid "" +"Notification received from the OS when a close request is sent (e.g. closing " +"the window with a \"Close\" button or [kbd]Alt + F4[/kbd]).\n" +"Implemented on desktop platforms." +msgstr "" +"当发出关闭请求时,从操作系统收到该通知(例如,使用一个“关闭”按钮、或按下 " +"[kbd]Alt + F4[/kbd] 关闭窗口时)。\n" +"在桌面平台上实现。" + +msgid "" "Notification received from the OS when a go back request is sent (e.g. " "pressing the \"Back\" button on Android).\n" "Specific to the Android platform." @@ -41804,6 +48713,15 @@ msgid "Position, relative to the node's parent." msgstr "位置,相对于父节点。" msgid "" +"Rotation in radians, relative to the node's parent.\n" +"[b]Note:[/b] This property is edited in the inspector in degrees. If you " +"want to use degrees in a script, use [member rotation_degrees]." +msgstr "" +"以弧度为单位的旋转,相对于该节点的父节点。\n" +"[b]注意:[/b] 这个属性在检查器中是以度数编辑的。如果你想在脚本中使用度数,请" +"使用 [member rotation_degrees]。" + +msgid "" "The node's scale. Unscaled value: [code](1, 1)[/code].\n" "[b]Note:[/b] Negative X scales in 2D are not decomposable from the " "transformation matrix. Due to the way scale is represented with " @@ -41869,6 +48787,17 @@ msgid "Returns all the gizmos attached to this [code]Node3D[/code]." msgstr "返回附加到该 [code]Node3D[/code] 的所有小工具。" msgid "" +"Returns the parent [Node3D], or an empty [Object] if no parent exists or " +"parent is not of type [Node3D]." +msgstr "" +"返回父节点 [Node3D],如果不存在父节点,或父节点不是 [Node3D] 类型,则返回空" +"的 [Object]。" + +msgid "" +"Returns the current [World3D] resource this [Node3D] node is registered to." +msgstr "返回此 [Node3D] 节点所注册的当前 [World3D] 资源。" + +msgid "" "Rotates the global (world) transformation around axis, a unit [Vector3], by " "specified angle in radians. The rotation axis is in global coordinate system." msgstr "" @@ -41964,6 +48893,18 @@ msgid "" msgstr "将 [param global_point] 从世界空间转换到这个节点的局部空间。" msgid "" +"Changes the node's position by the given offset [Vector3].\n" +"Note that the translation [param offset] is affected by the node's scale, so " +"if scaled by e.g. [code](10, 1, 1)[/code], a translation by an offset of " +"[code](2, 0, 0)[/code] would actually add 20 ([code]2 * 10[/code]) to the X " +"coordinate." +msgstr "" +"通过给定的偏移量 [Vector3] 更改该节点的位置。\n" +"请注意,平移 [param offset] 受节点缩放的影响,因此如果按例如 [code](10, 1, 1)" +"[/code] 的比例缩放,那么偏移 [code](2, 0, 0)[/code] 的平移,实际上会在 X 坐标" +"上增加 20([code]2 * 10[/code])。" + +msgid "" "Changes the node's position by the given offset [Vector3] in local space." msgstr "通过给定的局部空间偏移量 [Vector3] 改变该节点的位置。" @@ -42000,6 +48941,36 @@ msgid "World3D space (global) [Transform3D] of this node." msgstr "该节点在 World3D 空间的(全局)[Transform3D]。" msgid "" +"Rotation part of the local transformation in radians, specified in terms of " +"Euler angles. The angles construct a rotaton in the order specified by the " +"[member rotation_order] property.\n" +"[b]Note:[/b] In the mathematical sense, rotation is a matrix and not a " +"vector. The three Euler angles, which are the three independent parameters " +"of the Euler-angle parametrization of the rotation matrix, are stored in a " +"[Vector3] data structure not because the rotation is a vector, but only " +"because [Vector3] exists as a convenient data-structure to store 3 floating-" +"point numbers. Therefore, applying affine operations on the rotation " +"\"vector\" is not meaningful.\n" +"[b]Note:[/b] This property is edited in the inspector in degrees. If you " +"want to use degrees in a script, use [member rotation_degrees]." +msgstr "" +"以弧度为单位的,局部变换的旋转部分,根据欧拉角指定。角度按照 [member " +"rotation_order] 属性指定的顺序,构造一个旋转。\n" +"[b]注意:[/b]在数学意义上,旋转是一个矩阵,而不是一个向量。三个欧拉角,即旋转" +"矩阵的欧拉角参数化的三个独立参数,存储在一个 [Vector3] 数据结构中,并不是因为" +"旋转是一个向量,而是因为 [Vector3] 是一个方便存储 3 个浮点数的数据结构。因" +"此,对旋转“向量”,应用仿射操作是没有意义的。\n" +"[b]注意:[/b]该属性在检查器中以度为单位进行编辑。如果要在脚本中使用度数,请使" +"用 [member rotation_degrees]。" + +msgid "Specify how rotation (and scale) will be presented in the editor." +msgstr "指定旋转(和缩放)在编辑器中的显示方式。" + +msgid "" +"Local space [Transform3D] of this node, with respect to the parent node." +msgstr "该节点的局部空间 [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 " "is_visible_in_tree] must return [code]true[/code])." @@ -42052,6 +49023,69 @@ msgstr "" msgid "Pre-parsed scene tree path." msgstr "预先解析的场景树路径。" +msgid "" +"A pre-parsed relative or absolute path in a scene tree, for use with [method " +"Node.get_node] and similar functions. It can reference a node, a resource " +"within a node, or a property of a node or resource. For example, " +"[code]\"Path2D/PathFollow2D/Sprite2D:texture:size\"[/code] would refer to " +"the [code]size[/code] property of the [code]texture[/code] resource on the " +"node named [code]\"Sprite2D\"[/code] which is a child of the other named " +"nodes in the path.\n" +"You will usually just pass a string to [method Node.get_node] and it will be " +"automatically converted, but you may occasionally want to parse a path ahead " +"of time with [NodePath] or the literal syntax [code]^\"path\"[/code]. " +"Exporting a [NodePath] variable will give you a node selection widget in the " +"properties panel of the editor, which can often be useful.\n" +"A [NodePath] is composed of a list of slash-separated node names (like a " +"filesystem path) and an optional colon-separated list of \"subnames\" which " +"can be resources or properties.\n" +"Some examples of NodePaths include the following:\n" +"[codeblock]\n" +"# No leading slash means it is relative to the current node.\n" +"^\"A\" # Immediate child A\n" +"^\"A/B\" # A's child B\n" +"^\".\" # The current node.\n" +"^\"..\" # The parent node.\n" +"^\"../C\" # A sibling node C.\n" +"# A leading slash means it is absolute from the SceneTree.\n" +"^\"/root\" # Equivalent to get_tree().get_root().\n" +"^\"/root/Main\" # If your main scene's root node were named \"Main\".\n" +"^\"/root/MyAutoload\" # If you have an autoloaded node or scene.\n" +"[/codeblock]\n" +"See also [StringName], which is a similar concept for general-purpose string " +"interning.\n" +"[b]Note:[/b] In the editor, [NodePath] properties are automatically updated " +"when moving, renaming or deleting a node in the scene tree, but they are " +"never updated at runtime." +msgstr "" +"场景树中预先解析的相对或绝对路径,用于 [method Node.get_node] 和类似函数。它" +"可以引用节点、节点内的资源、或节点或资源的属性。例如,[code]\"Path2D/" +"PathFollow2D/Sprite2D:texture:size\"[/code] 将引用名为 [code]\"Sprite2D\"[/" +"code] 节点上的 [code]texture[/code] 资源的 [code]size[/code] 属性,该节点是路" +"径中其他命名节点的一个子节点。\n" +"通常只需将一个字符串传递给 [method Node.get_node],它将会被自动转换,但可能偶" +"尔想要使用 [NodePath] 或文字语法 [code]^\"path\"[/code] 提前解析路径。导出 " +"[NodePath] 变量会在编辑器的属性面板中,为您提供一个节点选择小部件,这通常很有" +"用。\n" +"[NodePath] 由斜线分隔的节点名称列表(如文件系统路径)和可选的冒号分隔的“子名" +"称”列表组成,这些“子名称”可以是资源或属性。\n" +"NodePath 的一些示例包括:\n" +"[codeblock]\n" +"# 没有前导斜杠意味着它是相对于当前节点的。\n" +"^\"A\" # 直接子节点 A\n" +"^\"A/B\" # A 的子节点 B\n" +"^\".\" # 当前节点。\n" +"^\"..\" # 父节点。\n" +"^\"../C\" # 兄弟节点 C。\n" +"# 前导斜杠意味着它是来自 SceneTree 的绝对路径。\n" +"^\"/root\" # 等同于 get_tree().get_root()。\n" +"^\"/root/Main\" # 如果您的主场景的根节点被命名为“Main”。\n" +"^\"/root/MyAutoload\" # 如果您有一个自动加载的节点或场景。\n" +"[/codeblock]\n" +"另见 [StringName],它是通用字符串的类似概念。\n" +"[b]注意:[/b]在编辑器中,[NodePath] 属性在场景树中移动、重命名或删除节点时会" +"自动更新,但它们不会在运行时更新。" + msgid "2D Role Playing Game Demo" msgstr "2D 角色扮演游戏演示" @@ -42067,6 +49101,98 @@ msgstr "" "[code]^\"example\"[/code]。" msgid "" +"Gets the node name indicated by [param idx] (0 to [method get_name_count] - " +"1).\n" +"[codeblocks]\n" +"[gdscript]\n" +"var node_path = NodePath(\"Path2D/PathFollow2D/Sprite2D\")\n" +"print(node_path.get_name(0)) # Path2D\n" +"print(node_path.get_name(1)) # PathFollow2D\n" +"print(node_path.get_name(2)) # Sprite\n" +"[/gdscript]\n" +"[csharp]\n" +"var nodePath = new NodePath(\"Path2D/PathFollow2D/Sprite2D\");\n" +"GD.Print(nodePath.GetName(0)); // Path2D\n" +"GD.Print(nodePath.GetName(1)); // PathFollow2D\n" +"GD.Print(nodePath.GetName(2)); // Sprite\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"获取由 [param idx](0 到 [method get_name_count] - 1)指示的节点名称。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var node_path = NodePath(\"Path2D/PathFollow2D/Sprite2D\")\n" +"print(node_path.get_name(0)) # Path2D\n" +"print(node_path.get_name(1)) # PathFollow2D\n" +"print(node_path.get_name(2)) # Sprite\n" +"[/gdscript]\n" +"[csharp]\n" +"var nodePath = new NodePath(\"Path2D/PathFollow2D/Sprite2D\");\n" +"GD.Print(nodePath.GetName(0)); // Path2D\n" +"GD.Print(nodePath.GetName(1)); // PathFollow2D\n" +"GD.Print(nodePath.GetName(2)); // Sprite\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Gets the number of node names which make up the path. Subnames (see [method " +"get_subname_count]) are not included.\n" +"For example, [code]\"Path2D/PathFollow2D/Sprite2D\"[/code] has 3 names." +msgstr "" +"获取组成路径的节点名称的数量。不包括子名称(见 [method " +"get_subname_count])。\n" +"例如,[code]\"Path2D/PathFollow2D/Sprite2D\"[/code] 中有 3 个名称。" + +msgid "" +"Gets the resource or property name indicated by [param idx] (0 to [method " +"get_subname_count]).\n" +"[codeblocks]\n" +"[gdscript]\n" +"var node_path = NodePath(\"Path2D/PathFollow2D/Sprite2D:texture:" +"load_path\")\n" +"print(node_path.get_subname(0)) # texture\n" +"print(node_path.get_subname(1)) # load_path\n" +"[/gdscript]\n" +"[csharp]\n" +"var nodePath = new NodePath(\"Path2D/PathFollow2D/Sprite2D:texture:" +"load_path\");\n" +"GD.Print(nodePath.GetSubname(0)); // texture\n" +"GD.Print(nodePath.GetSubname(1)); // load_path\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"获取由 [param idx](0 到 [method get_subname_count])指示的资源或属性名称。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var node_path = NodePath(\"Path2D/PathFollow2D/Sprite2D:texture:" +"load_path\")\n" +"print(node_path.get_subname(0)) # texture\n" +"print(node_path.get_subname(1)) # load_path\n" +"[/gdscript]\n" +"[csharp]\n" +"var nodePath = new NodePath(\"Path2D/PathFollow2D/Sprite2D:texture:" +"load_path\");\n" +"GD.Print(nodePath.GetSubname(0)); // texture\n" +"GD.Print(nodePath.GetSubname(1)); // load_path\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Gets the number of resource or property names (\"subnames\") in the path. " +"Each subname is listed after a colon character ([code]:[/code]) in the node " +"path.\n" +"For example, [code]\"Path2D/PathFollow2D/Sprite2D:texture:load_path\"[/code] " +"has 2 subnames." +msgstr "" +"获取路径中资源或属性名称(“子名称”)的数量。每个子名称都列在节点路径中的冒号" +"字符([code]:[/code])之后。\n" +"例如,[code]\"Path2D/PathFollow2D/Sprite2D:texture:load_path\"[/code] 中有 2 " +"个子名称。" + +msgid "Returns the 32-bit hash value representing the [NodePath]'s contents." +msgstr "返回代表该 [NodePath] 内容的 32 位哈希值。" + +msgid "" "Returns [code]true[/code] if the node path is absolute (as opposed to " "relative), which means that it starts with a slash character ([code]/[/" "code]). Absolute node paths can be used to access the root node ([code]\"/" @@ -42094,6 +49220,16 @@ msgstr "" msgid "Abstract base class for noise generators." msgstr "噪声生成器的抽象基类。" +msgid "" +"Returns a 2D [Image] noise image.\n" +"Note: With [param normalize] set to [code]false[/code] the default " +"implementation expects the noise generator to return values in the range " +"[code]-1.0[/code] to [code]1.0[/code]." +msgstr "" +"返回 2D 噪声图像 [Image]。\n" +"注意:[param normalize] 为 [code]false[/code] 时,默认实现要求噪声生成器返回 " +"[code]-1.0[/code] 到 [code]1.0[/code] 之间的值。" + msgid "Returns the 1D noise value at the given (x) coordinate." msgstr "返回给定 (x) 坐标处的 1D 噪声值。" @@ -42104,6 +49240,45 @@ msgid "Returns the 3D noise value at the given position." msgstr "返回给定位置处的 3D 噪声值。" msgid "" +"Returns a seamless 2D [Image] noise image.\n" +"Note: With [param normalize] set to [code]false[/code] the default " +"implementation expects the noise generator to return values in the range " +"[code]-1.0[/code] to [code]1.0[/code]." +msgstr "" +"返回无缝 2D 噪声图像 [Image]。\n" +"注意:[param normalize] 为 [code]false[/code] 时,默认实现要求噪声生成器返回 " +"[code]-1.0[/code] 到 [code]1.0[/code] 之间的值。" + +msgid "" +"Uses [FastNoiseLite] or other libraries to fill the texture data of your " +"desired size.\n" +"NoiseTexture2D can also generate normalmap textures.\n" +"The class uses [Thread]s to generate the texture data internally, so [method " +"Texture2D.get_image] may return [code]null[/code] if the generation process " +"has not completed yet. In that case, you need to wait for the texture to be " +"generated before accessing the image and the generated byte data:\n" +"[codeblock]\n" +"var texture = NoiseTexture2D.new()\n" +"texture.noise = FastNoiseLite.new()\n" +"await texture.changed\n" +"var image = texture.get_image()\n" +"var data = image.get_data()\n" +"[/codeblock]" +msgstr "" +"使用 [FastNoiseLite] 或其他库来填充所需大小的纹理数据。\n" +"NoiseTexture2D 也可以生成法线贴图纹理。\n" +"该类在内部使用 [Thread] 生成纹理数据,因此如果生成过程尚未完成,[method " +"Texture2D.get_image] 可能会返回 [code]null[/code]。在这种情况下,需要等待纹理" +"生成后再访问图像和生成的字节数据:\n" +"[codeblock]\n" +"var texture = NoiseTexture2D.new()\n" +"texture.noise = FastNoiseLite.new()\n" +"await texture.changed\n" +"var image = texture.get_image()\n" +"var data = image.get_data()\n" +"[/codeblock]" + +msgid "" "If [code]true[/code], the resulting texture contains a normal map created " "from the original noise interpreted as a bump map." msgstr "" @@ -42123,6 +49298,16 @@ msgstr "生成的纹理的高度。" msgid "The instance of the [Noise] object." msgstr "[Noise] 对象的实例。" +msgid "" +"If [code]true[/code], the noise image coming from the noise generator is " +"normalized to the range [code]0.0[/code] to [code]1.0[/code].\n" +"Turning normalization off can affect the contrast and allows you to generate " +"non repeating tileable noise textures." +msgstr "" +"如果为 [code]true[/code],来自噪声发生器的噪声图像,将被归一化到范围 " +"[code]0.0[/code] 到 [code]1.0[/code]。\n" +"关闭归一化会影响对比度,并允许生成非重复的可平铺噪声纹理。" + msgid "Width of the generated texture." msgstr "生成的纹理的宽度。" @@ -42139,6 +49324,245 @@ msgid "Object notifications" msgstr "对象通知" msgid "" +"Called when the object's script is instantiated, oftentimes after the object " +"is initialized in memory (through [code]Object.new()[/code] in GDScript, or " +"[code]new Object[/code] in C#). It can be also defined to take in " +"parameters. This method is similar to a constructor in most programming " +"languages.\n" +"[b]Note:[/b] If [method _init] is defined with [i]required[/i] parameters, " +"the Object with script may only be created directly. If any other means " +"(such as [method PackedScene.instantiate] or [method Node.duplicate]) are " +"used, the script's initialization will fail." +msgstr "" +"会在对象的脚本被实例化时调用,通常是在对象在内存中初始化之后(通过 GDScript " +"中的 [code]Object.new()[/code],或 C# 中的 [code]new Object[/code])。它也可" +"以被定义为接受参数的形式。该方法类似于大多数编程语言中的构造函数。\n" +"[b]注意:[/b]如果 [method _init] 被定义了[i]必需的[/i]参数,则带脚本的 " +"Object 只能被直接创建。如果使用任何其他方式(例如 [method PackedScene." +"instantiate] 或 [method Node.duplicate])创建,则该脚本的初始化将失败。" + +msgid "" +"Override this method to customize the behavior of [method set]. Should set " +"the [param property] to [param value] and return [code]true[/code], or " +"[code]false[/code] if the [param property] should be handled normally. The " +"[i]exact[/i] way to set the [param property] is up to this method's " +"implementation.\n" +"Combined with [method _get] and [method _get_property_list], this method " +"allows defining custom properties, which is particularly useful for editor " +"plugins. Note that a property [i]must[/i] be present in [method " +"get_property_list], otherwise this method will not be called.\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _set(property, value):\n" +" if (property == \"fake_property\"):\n" +" print(\"Setting my property to \", value)\n" +"\n" +"func _get_property_list():\n" +" return [\n" +" { \"name\": \"fake_property\", \"type\": TYPE_INT }\n" +" ]\n" +"[/gdscript]\n" +"[csharp]\n" +"public override void _Set(StringName property, Variant value)\n" +"{\n" +" if (property == \"FakeProperty\")\n" +" {\n" +" GD.Print($\"Setting my property to {value}\");\n" +" return true;\n" +" }\n" +"\n" +" return false;\n" +"}\n" +"\n" +"public override Godot.Collections.Array<Godot.Collections.Dictionary> " +"_GetPropertyList()\n" +"{\n" +" return new Godot.Collections.Array<Godot.Collections.Dictionary>()\n" +" {\n" +" new Godot.Collections.Dictionary()\n" +" {\n" +" { \"name\", \"FakeProperty\" },\n" +" { \"type\", (int)Variant.Type.Int }\n" +" }\n" +" };\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"重写该方法以自定义 [method set] 的行为。应将 [param property] 设置为 [param " +"value] 并返回 [code]true[/code],如果 [param property] 正常处理则返回 " +"[code]false[/code]。设置 [param property] 的[i]确切[/i]方式取决于该方法的实" +"现。\n" +"结合 [method _get] 和 [method _get_property_list],该方法允许定义自定义属性," +"这对编辑器插件特别有用。注意属性[i]必须[/i]在 [method get_property_list] 中存" +"在,否则该方法将不会被调用。\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _set(property, value):\n" +" if (property == \"fake_property\"):\n" +" print(\"将我的属性设置为 \", value)\n" +"\n" +"func _get_property_list():\n" +" return [\n" +" { \"name\": \"fake_property\", \"type\": TYPE_INT }\n" +" ]\n" +"[/gdscript]\n" +"[csharp]\n" +"public override void _Set(StringName property, Variant value)\n" +"{\n" +" if (property == \"FakeProperty\")\n" +" {\n" +" GD.Print($\"将我的属性设置为 {value}\");\n" +" return true;\n" +" }\n" +"\n" +" return false;\n" +"}\n" +"\n" +"public override Godot.Collections.Array<Godot.Collections.Dictionary> " +"_GetPropertyList()\n" +"{\n" +" return new Godot.Collections.Array<Godot.Collections.Dictionary>()\n" +" {\n" +" new Godot.Collections.Dictionary()\n" +" {\n" +" { \"name\", \"FakeProperty\" },\n" +" { \"type\", (int)Variant.Type.Int }\n" +" }\n" +" };\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Adds a user-defined [param signal]. Optional arguments for the signal can be " +"added as an [Array] of dictionaries, each defining a [code]name[/code] " +"[String] and a [code]type[/code] [int] (see [enum Variant.Type]). See also " +"[method has_user_signal].\n" +"[codeblocks]\n" +"[gdscript]\n" +"add_user_signal(\"hurt\", [\n" +" { \"name\": \"damage\", \"type\": TYPE_INT },\n" +" { \"name\": \"source\", \"type\": TYPE_OBJECT }\n" +"])\n" +"[/gdscript]\n" +"[csharp]\n" +"AddUserSignal(\"Hurt\", new Godot.Collections.Array()\n" +"{\n" +" new Godot.Collections.Dictionary()\n" +" {\n" +" { \"name\", \"damage\" },\n" +" { \"type\", (int)Variant.Type.Int }\n" +" },\n" +" new Godot.Collections.Dictionary()\n" +" {\n" +" { \"name\", \"source\" },\n" +" { \"type\", (int)Variant.Type.Object }\n" +" }\n" +"});\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"添加用户定义的信号 [param signal]。信号的参数是可选的,以字典的 [Array] 形式" +"添加,字典中定义名称 [code]name[/code] [String],类型 [code]type[/code] [int]" +"(见 [enum Variant.Type])。另见 [method has_user_signal]。\n" +"[codeblocks]\n" +"[gdscript]\n" +"add_user_signal(\"hurt\", [\n" +" { \"name\": \"damage\", \"type\": TYPE_INT },\n" +" { \"name\": \"source\", \"type\": TYPE_OBJECT }\n" +"])\n" +"[/gdscript]\n" +"[csharp]\n" +"AddUserSignal(\"Hurt\", new Godot.Collections.Array()\n" +"{\n" +" new Godot.Collections.Dictionary()\n" +" {\n" +" { \"name\", \"damage\" },\n" +" { \"type\", (int)Variant.Type.Int }\n" +" },\n" +" new Godot.Collections.Dictionary()\n" +" {\n" +" { \"name\", \"source\" },\n" +" { \"type\", (int)Variant.Type.Object }\n" +" }\n" +"});\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Calls the [param method] on the object and returns the result. This method " +"supports a variable number of arguments, so parameters can be passed as a " +"comma separated list.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var node = Node3D.new()\n" +"node.call(\"rotate\", Vector3(1.0, 0.0, 0.0), 1.571)\n" +"[/gdscript]\n" +"[csharp]\n" +"var node = new Node3D();\n" +"node.Call(Node3D.MethodName.Rotate, new Vector3(1f, 0f, 0f), 1.571f);\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Note:[/b] In C#, [param method] must be in snake_case when referring to " +"built-in Godot methods. Prefer using the names exposed in the " +"[code]MethodName[/code] class to avoid allocating a new [StringName] on each " +"call." +msgstr "" +"在对象上调用 [param method] 并返回结果。该方法支持可变数量的参数,因此参数可" +"以作为逗号分隔的列表传递。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var node = Node3D.new()\n" +"node.call(\"rotate\", Vector3(1.0, 0.0, 0.0), 1.571)\n" +"[/gdscript]\n" +"[csharp]\n" +"var node = new Node3D();\n" +"node.Call(Node3D.MethodName.Rotate, new Vector3(1f, 0f, 0f), 1.571f);\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]注意:[/b]在 C# 中,在引用 Godot 内置方法时,[param method] 必须为 " +"snake_case 格式。最好使用 [code]MethodName[/code] 类中公开的名称,以避免在每" +"次调用时分配新的 [StringName]。" + +msgid "" +"Calls the [param method] on the object during idle time. This method " +"supports a variable number of arguments, so parameters can be passed as a " +"comma separated list.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var node = Node3D.new()\n" +"node.call_deferred(\"rotate\", Vector3(1.0, 0.0, 0.0), 1.571)\n" +"[/gdscript]\n" +"[csharp]\n" +"var node = new Node3D();\n" +"node.CallDeferred(Node3D.MethodName.Rotate, new Vector3(1f, 0f, 0f), " +"1.571f);\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Note:[/b] In C#, [param method] must be in snake_case when referring to " +"built-in Godot methods. Prefer using the names exposed in the " +"[code]MethodName[/code] class to avoid allocating a new [StringName] on each " +"call." +msgstr "" +"在空闲时间调用对象的 [param method]。该方法支持可变数量的参数,因此参数可以作" +"为逗号分隔的列表传递。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var node = Node3D.new()\n" +"node.call_deferred(\"rotate\", Vector3(1.0, 0.0, 0.0), 1.571)\n" +"[/gdscript]\n" +"[csharp]\n" +"var node = new Node3D();\n" +"node.CallDeferred(Node3D.MethodName.Rotate, new Vector3(1f, 0f, 0f), " +"1.571f);\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]注意:[/b]在 C# 中,在引用 Godot 内置方法时,[param method] 必须是 " +"snake_case 格式。最好使用 [code]MethodName[/code] 类中公开的名称,以避免在每" +"次调用时分配新的 [StringName]。" + +msgid "" "Calls the [param method] on the object and returns the result. Unlike " "[method call], this method expects all parameters to be contained inside " "[param arg_array].\n" @@ -42176,20 +49600,203 @@ msgstr "" "时分配新的 [StringName]。" msgid "" +"Returns [code]true[/code] if the object is allowed to translate messages " +"with [method tr] and [method tr_n]. See also [method " +"set_message_translation]." +msgstr "" +"如果允许该对象使用 [method tr] 和 [method tr_n] 翻译消息,则返回 [code]true[/" +"code]。另见 [method set_message_translation]。" + +msgid "" +"Disconnects a [param signal] by name from a given [param callable]. If the " +"connection does not exist, generates an error. Use [method is_connected] to " +"make sure that the connection exists." +msgstr "" +"按名称从给定的 [param callable] 断开 [param signal]。如果连接不存在,则生成一" +"个错误。使用 [method is_connected] 确保该连接存在。" + +msgid "" +"Returns an [Array] of signal connections received by this object. Each " +"connection is represented as a [Dictionary] that contains three entries:\n" +"- [code]signal[/code] is a reference to the [Signal];\n" +"- [code]callable[/code] is a reference to the [Callable];\n" +"- [code]flags[/code] is a combination of [enum ConnectFlags]." +msgstr "" +"返回该对象接收到的信号连接的 [Array]。每个连接都被表示为包含三个条目的 " +"[Dictionary]:\n" +"- [code]signal[/code] 是对 [Signal] 的引用;\n" +"- [code]callable[/code] 是对 [Callable] 的引用;\n" +"- [code]flags[/code] 是 [enum ConnectFlags] 的组合。" + +msgid "" +"Returns the object's unique instance ID. This ID can be saved in " +"[EncodedObjectAsID], and can be used to retrieve this object instance with " +"[method @GlobalScope.instance_from_id]." +msgstr "" +"返回该对象的唯一实例 ID。该 ID 可以保存在 [EncodedObjectAsID] 中,并可用于 " +"[method @GlobalScope.instance_from_id],来检索该对象实例。" + +msgid "Returns the object's metadata entry names as a [PackedStringArray]." +msgstr "将该对象的元数据作为 [PackedStringArray] 返回。" + +msgid "" +"Returns this object's methods and their signatures as an [Array] of " +"dictionaries. Each [Dictionary] contains the following entries:\n" +"- [code]name[/code] is the name of the method, as a [String];\n" +"- [code]args[/code] is an [Array] of dictionaries representing the " +"arguments;\n" +"- [code]default_args[/code] is the default arguments as an [Array] of " +"variants;\n" +"- [code]flags[/code] is a combination of [enum MethodFlags];\n" +"- [code]id[/code] is the method's internal identifier [int];\n" +"- [code]return[/code] is the returned value, as a [Dictionary];\n" +"[b]Note:[/b] The dictionaries of [code]args[/code] and [code]return[/code] " +"are formatted identically to the results of [method get_property_list], " +"although not all entries are used." +msgstr "" +"将该对象的方法及对应签名作为字典 [Array] 返回。每个 [Dictionary] 包含以下条" +"目:\n" +"-[code]name[/code] 是该方法的名称,为 [String];\n" +"-[code]args[/code] 是代表参数的字典 [Array];\n" +"-[code]default_args[/code] 是默认参数,为变体 [Array];\n" +"-[code]flags[/code] 是 [enum MethodFlags] 的组合;\n" +"-[code]id[/code] 是该方法的内部标识符 [int];\n" +"-[code]return[/code] 是返回值,为 [Dictionary];\n" +"[b]注意:[/b][code]args[/code] 和 [code]return[/code] 的字典格式与 [method " +"get_property_list] 的结果相同,但不会用到所有条目。" + +msgid "" "Returns the object's [Script] instance, or [code]null[/code] if no script is " "attached." msgstr "" "返回该对象的 [Script] 实例,如果没有附加脚本,则返回 [code]null[/code]。" msgid "" +"Returns an [Array] of connections for the given [param signal] name. Each " +"connection is represented as a [Dictionary] that contains three entries:\n" +"- [code]signal[/code] is a reference to the [Signal];\n" +"- [code]callable[/code] is a reference to the connected [Callable];\n" +"- [code]flags[/code] is a combination of [enum ConnectFlags]." +msgstr "" +"返回给定 [param signal] 名称的连接的 [Array]。每个连接都被表示为包含三个条目" +"的 [Dictionary]:\n" +"- [code]signal[/code] 是对 [Signal] 的引用;\n" +"- [code]callable[/code] 是对已连接 [Callable] 的引用;\n" +"- [code]flags[/code] 是 [enum ConnectFlags] 的组合。" + +msgid "" +"Returns [code]true[/code] if the given user-defined [param signal] name " +"exists. Only signals added with [method add_user_signal] are included." +msgstr "" +"如果存在给定的用户定义信号名称 [param signal],则返回 [code]true[/code]。仅包" +"含通过 [method add_user_signal] 添加的信号。" + +msgid "" +"Returns [code]true[/code] if the object is blocking its signals from being " +"emitted. See [method set_block_signals]." +msgstr "" +"如果该对象正在阻止发出信号,则返回 [code]true[/code]。见 [method " +"set_block_signals]。" + +msgid "" +"Returns [code]true[/code] if the object inherits from the given [param " +"class]. See also [method get_class].\n" +"[codeblocks]\n" +"[gdscript]\n" +"var sprite2d = Sprite2D.new()\n" +"sprite2d.is_class(\"Sprite2D\") # Returns true\n" +"sprite2d.is_class(\"Node\") # Returns true\n" +"sprite2d.is_class(\"Node3D\") # Returns false\n" +"[/gdscript]\n" +"[csharp]\n" +"var sprite2D = new Sprite2D();\n" +"sprite2D.IsClass(\"Sprite2D\"); // Returns true\n" +"sprite2D.IsClass(\"Node\"); // Returns true\n" +"sprite2D.IsClass(\"Node3D\"); // Returns false\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Note:[/b] This method ignores [code]class_name[/code] declarations in the " +"object's script." +msgstr "" +"如果该对象继承自给定的 [param class] 则返回 [code]true[/code]。另见 [method " +"get_class]。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var sprite2d = Sprite2D.new()\n" +"sprite2d.is_class(\"Sprite2D\") # 返回 true\n" +"sprite2d.is_class(\"Node\") # 返回 true\n" +"sprite2d.is_class(\"Node3D\") # 返回 false\n" +"[/gdscript]\n" +"[csharp]\n" +"var sprite2D = new Sprite2D();\n" +"sprite2D.IsClass(\"Sprite2D\"); // 返回 true\n" +"sprite2D.IsClass(\"Node\"); // 返回 true\n" +"sprite2D.IsClass(\"Node3D\"); // 返回 false\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]注意:[/b]此方法忽略对象脚本中的 [code]class_name[/code] 声明。" + +msgid "" "Returns [code]true[/code] if the [method Node.queue_free] method was called " "for the object." msgstr "" "如果为该对象调用了 [method Node.queue_free] 方法,则返回 [code]true[/code]。" +msgid "" +"Returns a [String] representing the object. Defaults to " +"[code]\"<ClassName#RID>\"[/code]. Override [method _to_string] to customize " +"the string representation of the object." +msgstr "" +"返回表示对象的 [String]。默认为 [code]\"<ClassName#RID>\"[/code]。覆盖 " +"[method _to_string] 以自定义对象的字符串表示形式。" + +msgid "Emitted when [method notify_property_list_changed] is called." +msgstr "调用 [method notify_property_list_changed] 时发出。" + +msgid "" +"Emitted when the object's script is changed.\n" +"[b]Note:[/b] When this signal is emitted, the new script is not initialized " +"yet. If you need to access the new script, defer connections to this signal " +"with [constant CONNECT_DEFERRED]." +msgstr "" +"该对象的脚本发生改变时发出。\n" +"[b]注意:[/b]发出这个信号时,新脚本还没有初始化。如果你需要访问新脚本,请用 " +"[constant CONNECT_DEFERRED] 推迟与这个信号的连接。" + +msgid "" +"Notification received when the object is initialized, before its script is " +"attached. Used internally." +msgstr "该对象初始化时收到的通知,发生在附加脚本之前。内部使用。" + +msgid "" +"Notification received when the object is about to be deleted. Can act as the " +"deconstructor of some programming languages." +msgstr "该对象即将被删除时收到的通知。可以当作其他编程语言中的析构函数。" + +msgid "" +"Deferred connections trigger their [Callable]s on idle time, rather than " +"instantly." +msgstr "延迟连接会在空闲时触发 [Callable],不会立即触发。" + +msgid "" +"Persisting connections are stored when the object is serialized (such as " +"when using [method PackedScene.pack]). In the editor, connections created " +"through the Node dock are always persisting." +msgstr "" +"持久连接会在序列化对象时存储(比如使用 [method PackedScene.pack] 时)。在编辑" +"器中,通过“节点”面板创建的连接总是持久的。" + msgid "One-shot connections disconnect themselves after emission." msgstr "一次性连接,会在触发后自行断开。" +msgid "" +"Reference-counted connections can be assigned to the same [Callable] " +"multiple times. Each disconnection decreases the internal counter. The " +"signal fully disconnects only when the counter reaches 0." +msgstr "" +"引用计数连接可以多次分配给同一个 [Callable]。每断开一次连接会让内部计数器减" +"一。信号会在计数器变为 0 时完全断开连接。" + msgid "Returns the occluder shape's vertex indices." msgstr "返回该遮挡器形状的顶点索引。" @@ -42249,17 +49856,76 @@ msgstr "Ogg 数据包序列。" msgid "The length of this stream, in seconds." msgstr "该流的长度,以秒为单位。" +msgid "Contains the raw packets that make up this OggPacketSequence." +msgstr "包含构成此 OggPacketSequence 的原始数据包。" + msgid "Omnidirectional light, such as a light bulb or a candle." msgstr "全向光,如灯泡或蜡烛。" +msgid "" +"An Omnidirectional light is a type of [Light3D] that emits light in all " +"directions. The light is attenuated by distance and this attenuation can be " +"configured by changing its energy, radius, and attenuation parameters.\n" +"[b]Note:[/b] When using the Mobile rendering method, only 8 omni lights can " +"be displayed on each mesh resource. Attempting to display more than 8 omni " +"lights on a single mesh resource will result in omni lights flickering in " +"and out as the camera moves. When using the Compatibility rendering method, " +"only 8 omni lights can be displayed on each mesh resource by default, but " +"this can be increased by adjusting [member ProjectSettings.rendering/limits/" +"opengl/max_lights_per_object].\n" +"[b]Note:[/b] When using the Mobile or Compatibility rendering methods, omni " +"lights will only correctly affect meshes whose visibility AABB intersects " +"with the light's AABB. If using a shader to deform the mesh in a way that " +"makes it go outside its AABB, [member GeometryInstance3D.extra_cull_margin] " +"must be increased on the mesh. Otherwise, the light may not be visible on " +"the mesh." +msgstr "" +"全向光是 [Light3D] 的一类,可以向所有方向发射光。光随距离而衰减,该衰减可以通" +"过修改其能量、半径和衰减参数来配置。\n" +"[b]注意:[/b]使用移动渲染方式时,每个网格资源上只能显示 8 个全向灯。尝试在单" +"个网格资源上显示 8 个以上的全向灯,将导致全向灯随着相机移动而闪烁。使用 " +"Compatibility 渲染方式时,默认情况下每个网格资源上只能显示 8 个全向灯,但可以" +"通过调整 [member ProjectSettings.rendering/limits/opengl/" +"max_lights_per_object] 来增加。\n" +"[b]注意:[/b]当使用 Mobile 或 Compatibility 渲染方法时,全向灯只会正确影响可" +"见性 AABB 与该灯光的 AABB 相交的网格。如果使用了着色器将网格进行了变形,超出" +"了 AABB 的范围,则必须将该网格的 [member GeometryInstance3D." +"extra_cull_margin] 增大。否则灯光在该网格上可能不可见。" + +msgid "" +"The light's attenuation (drop-off) curve. A number of presets are available " +"in the [b]Inspector[/b] by right-clicking the curve. Zero and negative " +"values are allowed but can produce unusual effects.\n" +"[b]Note:[/b] Very high [member omni_attenuation] values (typically above 10) " +"can impact performance negatively if the light is made to use a larger " +"[member omni_range] to compensate. This is because culling opportunities " +"will become less common and shading costs will be increased (as the light " +"will cover more pixels on screen while resulting in the same amount of " +"brightness). To improve performance, use the lowest [member " +"omni_attenuation] value possible for the visuals you're trying to achieve." +msgstr "" +"灯光的衰减(衰减)曲线。通过右键点击曲线,可以在[b]属性检查器[/b]中使用许多预" +"设。允许零值和负值,但会产生不寻常的效果。\n" +"[b]注意:[/b]如果灯光使用更大的 [member omni_range] 进行补偿,非常高的 " +"[member omni_attenuation] 值(通常高于 10)则可能会对性能产生负面影响。这是因" +"为剔除机会将变得不那么常见,并且着色成本将增加(因为光线将覆盖屏幕上更多的像" +"素,且同时产生相同的亮度)。要提高性能,请为试图实现的视觉效果使用尽可能低的 " +"[member omni_attenuation] 值。" + msgid "See [enum ShadowMode]." msgstr "见 [enum ShadowMode]。" msgid "" "Shadows are rendered to a dual-paraboloid texture. Faster than [constant " "SHADOW_CUBE], but lower-quality." +msgstr "将阴影渲染到双抛物面纹理。比 [constant SHADOW_CUBE] 更快,但质量较差。" + +msgid "" +"Shadows are rendered to a cubemap. Slower than [constant " +"SHADOW_DUAL_PARABOLOID], but higher-quality." msgstr "" -"阴影被渲染到一个双抛物面纹理。比 [constant SHADOW_CUBE] 更快,但质量较差。" +"将阴影渲染至立方体贴图。比 [constant SHADOW_DUAL_PARABOLOID] 更慢,但质量更" +"高。" msgid "An OpenXR action." msgstr "OpenXR 动作。" @@ -42270,6 +49936,26 @@ msgstr "动作的类型。" msgid "The localized description of this action." msgstr "该动作的本地化描述。" +msgid "A collections of toplevel paths to which this action can be bound." +msgstr "该动作所能绑定到的顶级路径的合集。" + +msgid "This action provides a boolean value." +msgstr "该动作提供布尔值。" + +msgid "" +"This action provides a float value between [code]0.0[/code] and [code]1.0[/" +"code] for any analog input such as triggers." +msgstr "" +"该动作提供 [code]0.0[/code] 和 [code]1.0[/code] 之间的浮点值,用于扳机等模拟" +"输入。" + +msgid "" +"Collection of [OpenXRActionSet] and [OpenXRInteractionProfile] resources for " +"the OpenXR module." +msgstr "" +"用于 OpenXR 模块的 [OpenXRActionSet] 和 [OpenXRInteractionProfile] 资源的合" +"集。" + msgid "Add an action set." msgstr "添加动作集。" @@ -42303,6 +49989,16 @@ msgstr "移除动作集。" msgid "Remove an interaction profile." msgstr "移除交互配置。" +msgid "Collection of [OpenXRActionSet]s that are part of this action map." +msgstr "[OpenXRActionSet] 的合集,是该动作映射的一部分。" + +msgid "" +"Collection of [OpenXRInteractionProfile]s that are part of this action map." +msgstr "[OpenXRInteractionProfile] 的合集,是该动作映射的一部分。" + +msgid "Collection of [OpenXRAction] resources that make up an action set." +msgstr "[OpenXRAction] 资源的合集,构成动作集。" + msgid "Add an action to this action set." msgstr "向该动作集中添加某个动作。" @@ -42321,15 +50017,46 @@ msgstr "该动作集的本地化名称。" msgid "The priority for this action set." msgstr "该动作集的优先级。" +msgid "Node supporting finger tracking in OpenXR." +msgstr "在 OpenXR 中提供手指跟踪的节点。" + +msgid "Set the motion range (if supported) limiting the hand motion." +msgstr "设置限制手部运动的运动范围(前提是支持)。" + msgid "Tracking the player's left hand." msgstr "追踪玩家的左手。" msgid "Tracking the player's right hand." msgstr "追踪玩家的右手。" +msgid "Maximum supported hands." +msgstr "最大支持的手数。" + +msgid "When player grips, hand skeleton will form a full fist." +msgstr "玩家抓握时,手部骨架呈握拳状。" + +msgid "" +"When player grips, hand skeleton conforms to the controller the player is " +"holding." +msgstr "玩家抓握时,手部骨架遵循玩家所持的控制器。" + +msgid "Maximum supported motion ranges." +msgstr "最大支持的运动范围。" + +msgid "Our OpenXR interface." +msgstr "OpenXR 接口。" + msgid "Setting up XR" msgstr "设置 XR" +msgid "" +"Returns a list of action sets registered with Godot (loaded from the action " +"map at runtime)." +msgstr "返回向 Godot 注册的动作集的列表(在运行时从动作映射加载)。" + +msgid "[OpenXRAction] that is bound to these paths." +msgstr "绑定到这些路径的 [OpenXRAction]。" + msgid "Optimized translation." msgstr "优化的翻译。" @@ -42392,7 +50119,7 @@ msgstr "" "如果索引为 [param idx] 的菜单项被标记为分隔符,则返回 [code]true[/code]。" msgid "Removes the item at index [param idx]." -msgstr "返回索引为 [param idx] 的菜单项。" +msgstr "移除索引为 [param idx] 的菜单项。" msgid "" "Selects an item by index and makes it the current item. This will work even " @@ -42422,6 +50149,16 @@ msgid "Sets the tooltip of the item at index [param idx]." msgstr "设置索引为 [param idx] 的菜单项的工具提示。" msgid "" +"Adjusts popup position and sizing for the [OptionButton], then shows the " +"[PopupMenu]. Prefer this over using [code]get_popup().popup()[/code]." +msgstr "" +"调整 [OptionButton] 弹出项的位置和大小,然后显示 [PopupMenu]。请优先使用这个" +"方法,而不是 [code]get_popup().popup()[/code]。" + +msgid "The number of items to select from." +msgstr "可供挑选的菜单项的数量。" + +msgid "" "The index of the currently selected item, or [code]-1[/code] if no item is " "selected." msgstr "当前选定项的索引,如果没有选定项,则为[code]-1[/code]。" @@ -42461,6 +50198,17 @@ msgid "" "The horizontal space between the arrow icon and the right edge of the button." msgstr "箭头图标和按钮的右边缘之间的水平空间。" +msgid "" +"The horizontal space between [OptionButton]'s icon and text. Negative values " +"will be treated as [code]0[/code] when used." +msgstr "" +"[OptionButton] 图标与文本之间的水平间距。负值会被当作 [code]0[/code] 使用。" + +msgid "" +"If different than [code]0[/code], the arrow icon will be modulated to the " +"font color." +msgstr "如果不为 [code]0[/code],箭头图标会与字体颜色进行调制。" + msgid "[Font] of the [OptionButton]'s text." msgstr "该 [OptionButton] 文本的 [Font]。" @@ -42529,6 +50277,11 @@ msgid "" msgstr "" "该 [OptionButton] 处于按下状态时使用的 [StyleBox](用于从右至左布局)。" +msgid "" +"Physically based rendering (PBR) material that can be applied to 3D objects, " +"can use an ORM texture." +msgstr "基于物理的渲染(PBR)材质,可以应用于 3D 对象,可以使用 ORM 纹理。" + msgid "Standard Material 3D and ORM Material 3D" msgstr "标准 3D 材质与 ORM 3D 材质" @@ -42561,10 +50314,295 @@ msgstr "" "关闭系统 MIDI 驱动程序。\n" "[b]注意:[/b]该方法只在 Linux、macOS 和 Windows 上实现。" +msgid "" +"Crashes the engine (or the editor if called within a [code]@tool[/code] " +"script). This should [i]only[/i] be used for testing the system's crash " +"handler, not for any other purpose. For general error reporting, use (in " +"order of preference) [method @GDScript.assert], [method @GlobalScope." +"push_error] or [method alert]. See also [method kill]." +msgstr "" +"使引擎崩溃(如果是在 [code]@tool[/code] 脚本中调用则为编辑器崩溃)。应该[i]仅" +"[/i]用于测试系统的崩溃处理器,其他情况下都不应使用。普通的错误汇报请使用 " +"[method @GDScript.assert]、[method @GlobalScope.push_error]、[method alert]" +"(按推荐顺序排列)。另见 [method kill]。" + +msgid "" +"Delays execution of the current thread by [param msec] milliseconds. [param " +"msec] must be greater than or equal to [code]0[/code]. Otherwise, [method " +"delay_msec] will do nothing and will print an error message.\n" +"[b]Note:[/b] [method delay_msec] is a [i]blocking[/i] way to delay code " +"execution. To delay code execution in a non-blocking way, see [method " +"SceneTree.create_timer]. Awaiting with [method SceneTree.create_timer] will " +"delay the execution of code placed below the [code]await[/code] without " +"affecting the rest of the project (or editor, for [EditorPlugin]s and " +"[EditorScript]s).\n" +"[b]Note:[/b] When [method delay_msec] is called on the main thread, it will " +"freeze the project and will prevent it from redrawing and registering input " +"until the delay has passed. When using [method delay_msec] as part of an " +"[EditorPlugin] or [EditorScript], it will freeze the editor but won't freeze " +"the project if it is currently running (since the project is an independent " +"child process)." +msgstr "" +"将当前线程的执行延迟 [param msec] 毫秒。[param msec] 必须大于或等于 [code]0[/" +"code]。否则,[method delay_msec] 将不执行任何操作并打印一条错误消息。\n" +"[b]注意:[/b][method delay_msec] 是一种[i]阻塞[/i]延迟代码执行的方式。要以非" +"阻塞的方式延迟代码执行,请参阅 [method SceneTree.create_timer]。使用 [method " +"SceneTree.create_timer] 等待将会延迟那些放置在 [code]await[/code] 下方的代码" +"的执行,而不会影响该项目(或编辑器,对于 [EditorPlugin] 和 [EditorScript])的" +"其余部分。\n" +"[b]注意:[/b]当在主线程上调用 [method delay_msec] 时,它将冻结项目并阻止它重" +"新绘制和注册输入,直到延迟结束。当使用 [method delay_msec] 作为 " +"[EditorPlugin] 或 [EditorScript] 的一部分时,它会冻结编辑器但不会冻结当前正在" +"运行的项目(因为项目是一个独立的子进程)。" + +msgid "" +"Delays execution of the current thread by [param usec] microseconds. [param " +"usec] must be greater than or equal to [code]0[/code]. Otherwise, [method " +"delay_usec] will do nothing and will print an error message.\n" +"[b]Note:[/b] [method delay_usec] is a [i]blocking[/i] way to delay code " +"execution. To delay code execution in a non-blocking way, see [method " +"SceneTree.create_timer]. Awaiting with [method SceneTree.create_timer] will " +"delay the execution of code placed below the [code]await[/code] without " +"affecting the rest of the project (or editor, for [EditorPlugin]s and " +"[EditorScript]s).\n" +"[b]Note:[/b] When [method delay_usec] is called on the main thread, it will " +"freeze the project and will prevent it from redrawing and registering input " +"until the delay has passed. When using [method delay_usec] as part of an " +"[EditorPlugin] or [EditorScript], it will freeze the editor but won't freeze " +"the project if it is currently running (since the project is an independent " +"child process)." +msgstr "" +"将当前线程的执行延迟 [param usec] 微秒。[param usec] 必须大于或等于 [code]0[/" +"code]。否则,[method delay_usec] 将不执行任何操作并打印一条错误消息。\n" +"[b]注意:[/b][method delay_usec] 是一种[i]阻塞[/i]延迟代码执行的方式。要以非" +"阻塞的方式延迟代码执行,请参阅 [method SceneTree.create_timer]。使用 [method " +"SceneTree.create_timer] 等待将会延迟那些放置在 [code]await[/code] 下方的代码" +"的执行,而不会影响该项目(或编辑器,对于 [EditorPlugin] 和 [EditorScript])的" +"其余部分。\n" +"[b]注意:[/b]当在主线程上调用 [method delay_usec] 时,它将冻结项目并阻止它重" +"新绘制和注册输入,直到延迟结束。当使用 [method delay_usec] 作为 " +"[EditorPlugin] 或 [EditorScript] 的一部分时,它会冻结编辑器但不会冻结当前正在" +"运行的项目(因为项目是一个独立的子进程)。" + +msgid "" +"Executes a command. The file specified in [param path] must exist and be " +"executable. Platform path resolution will be used. The [param arguments] are " +"used in the given order and separated by a space. If an [param output] " +"[Array] is provided, the complete shell output of the process will be " +"appended as a single [String] element in [param output]. If [param " +"read_stderr] is [code]true[/code], the output to the standard error stream " +"will be included too.\n" +"On Windows, if [param open_console] is [code]true[/code] and the process is " +"a console app, a new terminal window will be opened. This is ignored on " +"other platforms.\n" +"If the command is successfully executed, the method will return the exit " +"code of the command, or [code]-1[/code] if it fails.\n" +"[b]Note:[/b] The Godot thread will pause its execution until the executed " +"command terminates. Use [Thread] to create a separate thread that will not " +"pause the Godot thread, or use [method create_process] to create a " +"completely independent process.\n" +"For example, to retrieve a list of the working directory's contents:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var output = []\n" +"var exit_code = OS.execute(\"ls\", [\"-l\", \"/tmp\"], output)\n" +"[/gdscript]\n" +"[csharp]\n" +"var output = new Godot.Collections.Array();\n" +"int exitCode = OS.Execute(\"ls\", new string[] {\"-l\", \"/tmp\"}, output);\n" +"[/csharp]\n" +"[/codeblocks]\n" +"If you wish to access a shell built-in or execute a composite command, a " +"platform-specific shell can be invoked. For example:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var output = []\n" +"OS.execute(\"CMD.exe\", [\"/C\", \"cd %TEMP% && dir\"], output)\n" +"[/gdscript]\n" +"[csharp]\n" +"var output = new Godot.Collections.Array();\n" +"OS.Execute(\"CMD.exe\", new string[] {\"/C\", \"cd %TEMP% && dir\"}, " +"output);\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Note:[/b] This method is implemented on Android, iOS, Linux, macOS and " +"Windows.\n" +"[b]Note:[/b] To execute a Windows command interpreter built-in command, " +"specify [code]cmd.exe[/code] in [param path], [code]/c[/code] as the first " +"argument, and the desired command as the second argument.\n" +"[b]Note:[/b] To execute a PowerShell built-in command, specify " +"[code]powershell.exe[/code] in [param path], [code]-Command[/code] as the " +"first argument, and the desired command as the second argument.\n" +"[b]Note:[/b] To execute a Unix shell built-in command, specify shell " +"executable name in [param path], [code]-c[/code] as the first argument, and " +"the desired command as the second argument.\n" +"[b]Note:[/b] On macOS, sandboxed applications are limited to run only " +"embedded helper executables, specified during export." +msgstr "" +"执行一条命令。[param path] 中指定的文件必须存在且可执行。将使用平台路径解析。" +"[param arguments] 按给定顺序使用,并以空格分隔。如果提供了 [param output] " +"[Array],则进程的完整 shell 输出,将作为单个 [String] 元素追加到 [param " +"output] 中。如果 [param read_stderr] 为 [code]true[/code],则标准错误流的输出" +"也将被包含在内。\n" +"在 Windows 上,如果 [param open_console] 为 [code]true[/code] 并且进程是控制" +"台应用程序,则将打开一个新的终端窗口。该参数在其他平台上被忽略。\n" +"如果命令执行成功,该方法将返回命令的退出代码,如果失败则返回 [code]-1[/" +"code]。\n" +"[b]注意:[/b]Godot 线程将暂停执行,直到执行的命令终止。使用 [Thread] 创建一个" +"不会暂停 Godot 线程的独立线程,或者使用 [method create_process] 创建一个完全" +"独立的进程。\n" +"例如,要检索工作目录内容的列表:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var output = []\n" +"var exit_code = OS.execute(\"ls\", [\"-l\", \"/tmp\"], output)\n" +"[/gdscript]\n" +"[csharp]\n" +"var output = new Godot.Collections.Array();\n" +"int exitCode = OS.Execute(\"ls\", new string[] {\"-l\", \"/tmp\"}, output);\n" +"[/csharp]\n" +"[/codeblocks]\n" +"如果希望访问内置的 shell 或执行复合命令,则可以调用特定于平台的 shell。例" +"如:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var output = []\n" +"OS.execute(\"CMD.exe\", [\"/C\", \"cd %TEMP% && dir\"], output)\n" +"[/gdscript]\n" +"[csharp]\n" +"var output = new Godot.Collections.Array();\n" +"OS.Execute(\"CMD.exe\", new string[] {\"/C\", \"cd %TEMP% && dir\"}, " +"output);\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]注意:[/b]该方法在 Android、iOS、Linux、macOS 和 Windows 上实现。\n" +"[b]注意:[/b]要执行 Windows 命令解释器的内置命令,在 [param path] 中指定 " +"[code]cmd.exe[/code],将 [code]/c[/code] 作为第一个参数,并将所需的命令作为第" +"二个参数。\n" +"[b]注意:[/b]要执行 PowerShell 的内置命令,在 [param path] 中指定 " +"[code]powershell.exe[/code],将 [code]-Command[/code] 作为第一个参数,然后将" +"所需的命令作为第二个参数。\n" +"[b]注意:[/b]要执行 Unix shell 内置命令,请在 [param path] 中指定 shell 可执" +"行文件名称,将 [code]-c[/code] 作为第一个参数,并将所需的命令作为第二个参" +"数。\n" +"[b]注意:[/b]在 macOS 上,沙盒应用程序仅限于运行在导出期间指定的嵌入的辅助可" +"执行文件。" + msgid "Returns the keycode of the given string (e.g. \"Escape\")." msgstr "返回给定字符串(例如“Escape”)的键码。" msgid "" +"Returns the command-line arguments passed to the engine.\n" +"Command-line arguments can be written in any form, including both [code]--" +"key value[/code] and [code]--key=value[/code] forms so they can be properly " +"parsed, as long as custom command-line arguments do not conflict with engine " +"arguments.\n" +"You can also incorporate environment variables using the [method " +"get_environment] method.\n" +"You can set [member ProjectSettings.editor/run/main_run_args] to define " +"command-line arguments to be passed by the editor when running the project.\n" +"Here's a minimal example on how to parse command-line arguments into a " +"dictionary using the [code]--key=value[/code] form for arguments:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var arguments = {}\n" +"for argument in OS.get_cmdline_args():\n" +" if argument.find(\"=\") > -1:\n" +" var key_value = argument.split(\"=\")\n" +" arguments[key_value[0].lstrip(\"--\")] = key_value[1]\n" +" else:\n" +" # Options without an argument will be present in the dictionary,\n" +" # with the value set to an empty string.\n" +" arguments[argument.lstrip(\"--\")] = \"\"\n" +"[/gdscript]\n" +"[csharp]\n" +"var arguments = new Godot.Collections.Dictionary();\n" +"foreach (var argument in OS.GetCmdlineArgs())\n" +"{\n" +" if (argument.Find(\"=\") > -1)\n" +" {\n" +" string[] keyValue = argument.Split(\"=\");\n" +" arguments[keyValue[0].LStrip(\"--\")] = keyValue[1];\n" +" }\n" +" else\n" +" {\n" +" // Options without an argument will be present in the dictionary,\n" +" // with the value set to an empty string.\n" +" arguments[keyValue[0].LStrip(\"--\")] = \"\";\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Note:[/b] Passing custom user arguments directly is not recommended, as " +"the engine may discard or modify them. Instead, the best way is to use the " +"standard UNIX double dash ([code]--[/code]) and then pass custom arguments, " +"which the engine itself will ignore. These can be read via [method " +"get_cmdline_user_args]." +msgstr "" +"返回传递给引擎的命令行参数。\n" +"命令行参数可以写成任何形式,包括 [code]--key value[/code] 和 [code]--" +"key=value[/code] 两种形式,这样它们就可以被正确解析,只要自定义命令行参数不与" +"引擎参数冲突。\n" +"还可以使用 [method get_environment] 方法合并环境变量。\n" +"可以设置 [member ProjectSettings.editor/run/main_run_args] 来定义编辑器在运行" +"项目时传递的命令行参数。\n" +"下面是一个关于如何使用参数的 [code]--key=value[/code] 形式,将命令行参数解析" +"为一个字典的最小示例:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var arguments = {}\n" +"for argument in OS.get_cmdline_args():\n" +" if argument.find(\"=\") > -1:\n" +" var key_value = argument.split(\"=\")\n" +" arguments[key_value[0].lstrip(\"--\")] = key_value[1]\n" +" else:\n" +" # 没有参数的选项将出现在字典中,\n" +" # 其值被设置为空字符串。\n" +" arguments[argument.lstrip(\"--\")] = \"\"\n" +"[/gdscript]\n" +"[csharp]\n" +"var arguments = new Godot.Collections.Dictionary();\n" +"foreach (var argument in OS.GetCmdlineArgs())\n" +"{\n" +" if (argument.Find(\"=\") > -1)\n" +" {\n" +" string[] keyValue = argument.Split(\"=\");\n" +" arguments[keyValue[0].LStrip(\"--\")] = keyValue[1];\n" +" }\n" +" else\n" +" {\n" +" // 没有参数的选项将出现在字典中,\n" +" // 其值被设置为空字符串。\n" +" arguments[keyValue[0].LStrip(\"--\")] = \"\";\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]注意:[/b]不建议直接传递自定义用户参数,因为引擎可能会丢弃或修改它们。相" +"反,最好的方法是使用标准的 UNIX 双破折号([code]--[/code]),然后传递自定义参" +"数,引擎本身将忽略这些参数。这些可以通过 [method get_cmdline_user_args] 读" +"取。" + +msgid "" +"Returns the value of an environment variable. Returns an empty string if the " +"environment variable doesn't exist.\n" +"[b]Note:[/b] Double-check the casing of [param variable]. Environment " +"variable names are case-sensitive on all platforms except Windows." +msgstr "" +"返回环境变量的值。如果环境变量不存在,则返回一个空字符串。\n" +"[b]注意:[/b]请仔细检查 [param variable] 的大小写。环境变量名称在除 Windows " +"之外的所有平台上都区分大小写。" + +msgid "" +"Returns the path to the current engine executable.\n" +"[b]Note:[/b] On macOS, always use [method create_instance] instead of " +"relying on executable path." +msgstr "" +"返回当前引擎可执行文件的路径。\n" +"[b]注意:[/b]在 macOS 上,请始终使用 [method create_instance],不要依赖可执行" +"文件的路径。" + +msgid "" "With this function, you can get the list of dangerous permissions that have " "been granted to the Android application.\n" "[b]Note:[/b] This method is implemented on Android." @@ -42573,6 +50611,17 @@ msgstr "" "[b]注意:[/b]这个方法在 Android 上实现。" msgid "" +"Returns the given keycode as a string (e.g. Return values: [code]\"Escape\"[/" +"code], [code]\"Shift+Escape\"[/code]).\n" +"See also [member InputEventKey.keycode] and [method InputEventKey." +"get_keycode_with_modifiers]." +msgstr "" +"返回给定键码的字符串形式(例如,返回值:[code]\"Escape\"[/code]、" +"[code]\"Shift+Escape\"[/code])。\n" +"另见 [member InputEventKey.keycode] 和 [method InputEventKey." +"get_keycode_with_modifiers]。" + +msgid "" "Returns the host OS locale as a string of the form " "[code]language_Script_COUNTRY_VARIANT@extra[/code]. If you want only the " "language code and not the fully specified locale from the OS, you can use " @@ -42638,6 +50687,124 @@ msgstr "" "[code]\"GenericDevice\"[/code]。" msgid "" +"Returns the name of the host OS.\n" +"On Windows, this is [code]\"Windows\"[/code] or [code]\"UWP\"[/code] if " +"exported on Universal Windows Platform.\n" +"On macOS, this is [code]\"macOS\"[/code].\n" +"On Linux-based operating systems, this is [code]\"Linux\"[/code].\n" +"On BSD-based operating systems, this is [code]\"FreeBSD\"[/code], " +"[code]\"NetBSD\"[/code], [code]\"OpenBSD\"[/code], or [code]\"BSD\"[/code] " +"as a fallback.\n" +"On Android, this is [code]\"Android\"[/code].\n" +"On iOS, this is [code]\"iOS\"[/code].\n" +"On the web, this is [code]\"Web\"[/code].\n" +"[b]Note:[/b] Custom builds of the engine may support additional platforms, " +"such as consoles, yielding other return values.\n" +"[codeblocks]\n" +"[gdscript]\n" +"match OS.get_name():\n" +" \"Windows\", \"UWP\":\n" +" print(\"Windows\")\n" +" \"macOS\":\n" +" print(\"macOS\")\n" +" \"Linux\", \"FreeBSD\", \"NetBSD\", \"OpenBSD\", \"BSD\":\n" +" print(\"Linux/BSD\")\n" +" \"Android\":\n" +" print(\"Android\")\n" +" \"iOS\":\n" +" print(\"iOS\")\n" +" \"Web\":\n" +" print(\"Web\")\n" +"[/gdscript]\n" +"[csharp]\n" +"switch (OS.GetName())\n" +"{\n" +" case \"Windows\":\n" +" case \"UWP\":\n" +" GD.Print(\"Windows\");\n" +" break;\n" +" case \"macOS\":\n" +" GD.Print(\"macOS\");\n" +" break;\n" +" case \"Linux\":\n" +" case \"FreeBSD\":\n" +" case \"NetBSD\":\n" +" case \"OpenBSD\"\n" +" case \"BSD\":\n" +" GD.Print(\"Linux/BSD\");\n" +" break;\n" +" case \"Android\":\n" +" GD.Print(\"Android\");\n" +" break;\n" +" case \"iOS\":\n" +" GD.Print(\"iOS\");\n" +" break;\n" +" case \"Web\":\n" +" GD.Print(\"Web\");\n" +" break;\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回主机操作系统的名称。\n" +"在 Windows 上为 [code]\"Windows\"[/code],如果在通用 Windows 平台上导出则为 " +"[code]\"UWP\"[/code]。\n" +"在 macOS 上为 [code]\"macOS\"[/code]。\n" +"在基于 Linux 的操作系统上为 [code]\"Linux\"[/code]。\n" +"在基于 BSD 的操作系统上为 [code]\"FreeBSD\"[/code]、[code]\"NetBSD\"[/code]、" +"[code]\"OpenBSD\"[/code], 会使用 [code]\"BSD\"[/code] 作为回退方案。\n" +"在 Android 上为 [code]\"Android\"[/code]。\n" +"在 iOS 上为 [code]\"iOS\"[/code]。\n" +"在 Web 上为 [code]\"Web\"[/code]。\n" +"[b]注意:[/b]自定义构建的引擎可能支持其他平台,例如游戏主机,可能返回其他" +"值。\n" +"[codeblocks]\n" +"[gdscript]\n" +"match OS.get_name():\n" +" \"Windows\", \"UWP\":\n" +" print(\"Windows\")\n" +" \"macOS\":\n" +" print(\"macOS\")\n" +" \"Linux\", \"FreeBSD\", \"NetBSD\", \"OpenBSD\", \"BSD\":\n" +" print(\"Linux/BSD\")\n" +" \"Android\":\n" +" print(\"Android\")\n" +" \"iOS\":\n" +" print(\"iOS\")\n" +" \"Web\":\n" +" print(\"Web\")\n" +"[/gdscript]\n" +"[csharp]\n" +"switch (OS.GetName())\n" +"{\n" +" case \"Windows\":\n" +" case \"UWP\":\n" +" GD.Print(\"Windows\");\n" +" break;\n" +" case \"macOS\":\n" +" GD.Print(\"macOS\");\n" +" break;\n" +" case \"Linux\":\n" +" case \"FreeBSD\":\n" +" case \"NetBSD\":\n" +" case \"OpenBSD\"\n" +" case \"BSD\":\n" +" GD.Print(\"Linux/BSD\");\n" +" break;\n" +" case \"Android\":\n" +" GD.Print(\"Android\");\n" +" break;\n" +" case \"iOS\":\n" +" GD.Print(\"iOS\");\n" +" break;\n" +" case \"Web\":\n" +" GD.Print(\"Web\");\n" +" break;\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" "Returns the project's process ID.\n" "[b]Note:[/b] This method is implemented on Android, iOS, Linux, macOS and " "Windows." @@ -42653,6 +50820,18 @@ msgstr "" "返回主机的[i]逻辑[/i] CPU 核心数。对于启用了超线程的 CPU,这个数会比[i]物理[/" "i] CPU 核心数大。" +msgid "" +"Returns the name of the CPU model on the host machine (e.g. \"Intel(R) " +"Core(TM) i7-6700K CPU @ 4.00GHz\").\n" +"[b]Note:[/b] This method is only implemented on Windows, macOS, Linux and " +"iOS. On Android, Web and UWP, [method get_processor_name] returns an empty " +"string." +msgstr "" +"返回主机 CPU 型号的名称(例如 \"Intel(R) Core(TM) i7-6700K CPU @ " +"4.00GHz\")。\n" +"[b]注意:[/b]这个方法仅在 Windows、macOS、Linux 和 iOS 上实现。在 Android、" +"Web 和 UWP 平台,[method get_processor_name] 返回空字符串。" + msgid "Returns the maximum amount of static memory used (only works in debug)." msgstr "返回使用的静态内存的最大数量(仅在调试时有效)。" @@ -42676,6 +50855,56 @@ msgstr "" "录。共享目录在 Android 上有额外的限制。" msgid "" +"Returns path to the system font file with [param font_name] and style. " +"Returns empty string if no matching fonts found.\n" +"The following aliases can be used to request default fonts: \"sans-serif\", " +"\"serif\", \"monospace\", \"cursive\", and \"fantasy\".\n" +"[b]Note:[/b] Returned font might have different style if the requested style " +"is not available.\n" +"[b]Note:[/b] This method is implemented on Android, iOS, Linux, macOS and " +"Windows." +msgstr "" +"返回名称为 [param font_name] 并且其他风格也相符的系统字体文件路径。如果没有相" +"匹配的字体,则返回空字符串。\n" +"下列别名可用于请求默认字体:无衬线“sans-serif”、有衬线“serif”、等" +"宽“monospace”、手写体“cursive”、花体“fantasy”。\n" +"[b]注意:[/b]如果没有请求的风格,则可能返回不同风格的字体。\n" +"[b]注意:[/b]该方法在 Android、iOS、Linux、macOS、Windows 上实现。" + +msgid "" +"Returns an array of the system substitute font file paths, which are similar " +"to the font with [param font_name] and style for the specified text, locale " +"and script. Returns empty array if no matching fonts found.\n" +"The following aliases can be used to request default fonts: \"sans-serif\", " +"\"serif\", \"monospace\", \"cursive\", and \"fantasy\".\n" +"[b]Note:[/b] Depending on OS, it's not guaranteed that any of the returned " +"fonts is suitable for rendering specified text. Fonts should be loaded and " +"checked in the order they are returned, and the first suitable one used.\n" +"[b]Note:[/b] Returned fonts might have different style if the requested " +"style is not available or belong to a different font family.\n" +"[b]Note:[/b] This method is implemented on Android, iOS, Linux, macOS and " +"Windows." +msgstr "" +"返回系统替换字体文件路径的数组,这些字体与名称为 [param font_name] 并且其他风" +"格也相符的字体相近,可用于指定的文本、区域设置以及文字。如果没有相匹配的字" +"体,则返回空数组。\n" +"下列别名可用于请求默认字体:无衬线“sans-serif”、有衬线“serif”、等" +"宽“monospace”、手写体“cursive”、花体“fantasy”。\n" +"[b]注意:[/b]根据操作系统的不同,无法保证任何返回的字体都适合渲染指定的文本。" +"应该按照返回的顺序加载并检查字体,选用第一个合适的字体。\n" +"[b]注意:[/b]如果没有请求的风格,或者属于不同的字体家族,则可能返回不同风格的" +"字体。\n" +"[b]注意:[/b]该方法在 Android、iOS、Linux、macOS、Windows 上实现。" + +msgid "" +"Returns list of font family names available.\n" +"[b]Note:[/b] This method is implemented on Android, iOS, Linux, macOS and " +"Windows." +msgstr "" +"返回可用的字体家族名称列表。\n" +"[b]注意:[/b]该方法在 Android、iOS、Linux、macOS、Windows 上实现。" + +msgid "" "Returns the ID of the current thread. This can be used in logs to ease " "debugging of multi-threaded applications.\n" "[b]Note:[/b] Thread IDs are not deterministic and may be reused across " @@ -42685,11 +50914,129 @@ msgstr "" "[b]注意:[/b] 线程 ID 不是确定的,也许会在应用程序重新启动时被重复使用。" msgid "" +"Returns the absolute directory path where user data is written ([code]user://" +"[/code]).\n" +"On Windows, this is [code]%AppData%\\Godot\\app_userdata\\[project_name][/" +"code], or [code]%AppData%\\[custom_name][/code] if " +"[code]use_custom_user_dir[/code] is set. [code]%AppData%[/code] expands to " +"[code]%UserProfile%\\AppData\\Roaming[/code].\n" +"On macOS, this is [code]~/Library/Application Support/Godot/app_userdata/" +"[project_name][/code], or [code]~/Library/Application Support/[custom_name][/" +"code] if [code]use_custom_user_dir[/code] is set.\n" +"On Linux and BSD, this is [code]~/.local/share/godot/app_userdata/" +"[project_name][/code], or [code]~/.local/share/[custom_name][/code] if " +"[code]use_custom_user_dir[/code] is set.\n" +"On Android and iOS, this is a sandboxed directory in either internal or " +"external storage, depending on the user's configuration.\n" +"On the web, this is a virtual directory managed by the browser.\n" +"If the project name is empty, [code][project_name][/code] falls back to " +"[code][unnamed project][/code].\n" +"Not to be confused with [method get_data_dir], which returns the [i]global[/" +"i] (non-project-specific) user home directory." +msgstr "" +"返回用于写入用户数据的绝对目录路径([code]user://[/code])。\n" +"在 Windows 上,这是 [code]%AppData%\\Godot\\app_userdata\\[project_name][/" +"code];如果已设置 [code]use_custom_user_dir[/code],则为 [code]%AppData%" +"\\[custom_name][/code]。[code]%AppData%[/code] 扩展为 [code]%UserProfile%" +"\\AppData\\Roaming[/code]。\n" +"在 macOS 上,这是 [code]~/Library/Application Support/Godot/app_userdata/" +"[project_name][/code];如果已设置 [code]use_custom_user_dir [/code],则为 " +"[code]~/Library/Application Support/[custom_name][/code] 。\n" +"在 Linux 和 BSD 上,这是 [code]~/.local/share/godot/app_userdata/" +"[project_name][/code];如果已设置 [code]use_custom_user_dir[/code],则为 " +"[code]~/.local/share/[custom_name][/code]。\n" +"在 Android 和 iOS 上,这是内部存储或外部存储中的沙盒目录,具体取决于用户的配" +"置。\n" +"在 Web 上,这是由浏览器管理的虚拟目录。\n" +"如果项目名称为空,则 [code][project_name][/code] 将回退为 [code][unnamed " +"project][/code]。\n" +"请勿与 [method get_data_dir] 混淆,后者返回的是[i]全局[/i](非项目特定的)用" +"户主目录。" + +msgid "" +"Returns [code]true[/code] if the environment variable with the name [param " +"variable] exists.\n" +"[b]Note:[/b] Double-check the casing of [param variable]. Environment " +"variable names are case-sensitive on all platforms except Windows." +msgstr "" +"如果名称为 [param variable] 的环境变量存在,则返回 [code]true[/code]。\n" +"[b]注意:[/b]请仔细检查 [param variable] 的大小写。环境变量名称在除 Windows " +"之外的所有平台上都区分大小写。" + +msgid "" "Returns [code]true[/code] if the input keycode corresponds to a Unicode " "character." msgstr "如果输入键码对应一个 Unicode 字符,则返回 [code]true[/code]。" msgid "" +"Returns [code]true[/code] if the child process ID ([param pid]) is still " +"running or [code]false[/code] if it has terminated.\n" +"Must be a valid ID generated from [method create_process].\n" +"[b]Note:[/b] This method is implemented on Android, iOS, Linux, macOS and " +"Windows." +msgstr "" +"如果该子进程 ID([param pid])仍在运行,则返回 [code]true[/code];如果它已终" +"止,则返回 [code]false[/code]。\n" +"必须是从 [method create_process] 生成的有效 ID。\n" +"[b]注意:[/b]该方法在 Android、iOS、Linux、macOS 和 Windows 上实现。" + +msgid "" +"Kill (terminate) the process identified by the given process ID ([param " +"pid]), e.g. the one returned by [method execute] in non-blocking mode. See " +"also [method crash].\n" +"[b]Note:[/b] This method can also be used to kill processes that were not " +"spawned by the game.\n" +"[b]Note:[/b] This method is implemented on Android, iOS, Linux, macOS and " +"Windows." +msgstr "" +"杀死(终止)由给定进程 ID([param pid])标识的进程,例如由 [method execute] " +"在非阻塞模式下返回的那个进程 ID。另请参阅 [method crash]。\n" +"[b]注意:[/b]该方法也可用于杀死不是由游戏产生的进程。\n" +"[b]注意:[/b]该方法在 Android、iOS、Linux、macOS 和 Windows 上实现。" + +msgid "" +"Moves the file or directory to the system's recycle bin. See also [method " +"DirAccess.remove].\n" +"The method takes only global paths, so you may need to use [method " +"ProjectSettings.globalize_path]. Do not use it for files in [code]res://[/" +"code] as it will not work in exported projects.\n" +"[b]Note:[/b] If the user has disabled the recycle bin on their system, the " +"file will be permanently deleted instead.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var file_to_remove = \"user://slot1.save\"\n" +"OS.move_to_trash(ProjectSettings.globalize_path(file_to_remove))\n" +"[/gdscript]\n" +"[csharp]\n" +"var fileToRemove = \"user://slot1.save\";\n" +"OS.MoveToTrash(ProjectSettings.GlobalizePath(fileToRemove));\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"将文件或目录移动到系统的回收站。另见 [method DirAccess.remove]。\n" +"该方法仅支持全局路径,所以可能需要使用 [method ProjectSettings." +"globalize_path]。请勿将其用于 [code]res://[/code] 中的文件,因为它在导出后的" +"项目中是无法正常工作的。\n" +"[b]注意:[/b]如果用户在系统上禁用了回收站,则该文件将被永久删除。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var file_to_remove = \"user://slot1.save\"\n" +"OS.move_to_trash(ProjectSettings.globalize_path(file_to_remove))\n" +"[/gdscript]\n" +"[csharp]\n" +"var fileToRemove = \"user://slot1.save\";\n" +"OS.MoveToTrash(ProjectSettings.GlobalizePath(fileToRemove));\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Initializes the singleton for the system MIDI driver.\n" +"[b]Note:[/b] This method is implemented on Linux, macOS and Windows." +msgstr "" +"初始化系统 MIDI 驱动的单例。\n" +"[b]注意:[/b]该方法在 Linux、macOS、Windows 上实现。" + +msgid "" "At the moment this function is only used by [code]AudioDriverOpenSL[/code] " "to request permission for [code]RECORD_AUDIO[/code] on Android." msgstr "" @@ -42706,9 +51053,78 @@ msgstr "" "装时自动授予。\n" "[b]注意:[/b]这个方法在 Android 上实现。" +msgid "" +"Sets the value of the environment variable [param variable] to [param " +"value]. The environment variable will be set for the Godot process and any " +"process executed with [method execute] after running [method " +"set_environment]. The environment variable will [i]not[/i] persist to " +"processes run after the Godot process was terminated.\n" +"[b]Note:[/b] Environment variable names are case-sensitive on all platforms " +"except Windows. The [param variable] name cannot be empty or include the " +"[code]=[/code] character. On Windows, there is a 32767 characters limit for " +"the combined length of [param variable], [param value], and the [code]=[/" +"code] and null terminator characters that will be registered in the " +"environment block." +msgstr "" +"将环境变量 [param variable] 的值设置为 [param value]。运行 [method " +"set_environment] 后,会为 Godot 进程和任何用 [method execute] 执行的进程设置" +"该环境变量。该环境变量[i]不会[/i]持续存在于 Godot 进程终止后运行的进程中。\n" +"[b]注意:[/b]环境变量的名称在除 Windows 外的所有平台上都是区分大小写的。名称 " +"[param variable] 不能为空,也不能包含 [code]=[/code] 字符。在 Windows 上,在" +"环境块中注册的 [param variable]、[param value]、[code]=[/code] 以及 null 终止" +"符的总长度有 32767 个字符的限制。" + +msgid "" +"If [param restart] is [code]true[/code], restarts the project automatically " +"when it is exited with [method SceneTree.quit] or [constant Node." +"NOTIFICATION_WM_CLOSE_REQUEST]. Command line [param arguments] can be " +"supplied. To restart the project with the same command line arguments as " +"originally used to run the project, pass [method get_cmdline_args] as the " +"value for [param arguments].\n" +"[method set_restart_on_exit] can be used to apply setting changes that " +"require a restart. See also [method is_restart_on_exit_set] and [method " +"get_restart_on_exit_arguments].\n" +"[b]Note:[/b] This method is only effective on desktop platforms, and only " +"when the project isn't started from the editor. It will have no effect on " +"mobile and Web platforms, or when the project is started from the editor.\n" +"[b]Note:[/b] If the project process crashes or is [i]killed[/i] by the user " +"(by sending [code]SIGKILL[/code] instead of the usual [code]SIGTERM[/code]), " +"the project won't restart automatically." +msgstr "" +"如果 [param restart] 为 [code]true[/code],则项目在使用 [method SceneTree." +"quit] 或 [constant Node.NOTIFICATION_WM_CLOSE_REQUEST] 退出时,会自动重新启" +"动。可以提供命令行 [param arguments]。要使用最初用于运行项目的命令行参数重新" +"启动项目,请将 [method get_cmdline_args] 作为 [param arguments] 的值传递。\n" +"[method set_restart_on_exit] 可用于应用需要重新启动的设置更改。另请参见 " +"[method is_restart_on_exit_set] 和 [method get_restart_on_exit_arguments]。\n" +"[b]注意:[/b]该方法只在桌面平台上有效,并且只在项目不是从编辑器启动时有效。不" +"会影响移动和 Web 平台,或者当项目从编辑器启动时。\n" +"[b]注意:[/b]如果项目进程崩溃或被用户[i]杀死[/i](通过发送 [code]SIGKILL[/" +"code] 而不是通常的 [code]SIGTERM[/code]),项目不会自动重新启动。" + msgid "Sets the name of the current thread." msgstr "设置当前线程的名称。" +msgid "Enables backup saves if [param enabled] is [code]true[/code]." +msgstr "如果 [param enabled] 为 [code]true[/code],则启用备份保存。" + +msgid "" +"Removes the environment [param variable] from the current environment, if it " +"exists. The environment variable will be removed for the Godot process and " +"any process executed with [method execute] after running [method " +"unset_environment]. The removal of the environment variable will [i]not[/i] " +"persist to processes run after the Godot process was terminated.\n" +"[b]Note:[/b] Environment variable names are case-sensitive on all platforms " +"except Windows. The [param variable] name cannot be empty or include the " +"[code]=[/code] character." +msgstr "" +"从当前环境中移除环境变量 [param variable](如果存在)。在运行 [method " +"unset_environment] 后,将为 Godot 进程和使用 [method execute] 执行的任何进程" +"移除环境变量。环境变量的移除并[i]不会[/i]持续到 Godot 进程终止后运行的进" +"程。\n" +"[b]注意:[/b]环境变量名称在除 Windows 以外的所有平台上都区分大小写。[param " +"variable] 名称不能为空或包含 [code]=[/code] 字符。" + msgid "" "If [code]true[/code], the engine optimizes for low processor usage by only " "refreshing the screen if needed. Can improve battery consumption on mobile." @@ -42723,6 +51139,20 @@ msgstr "" "启用低处理器使用模式时,帧之间的休眠量(单位为微秒)。较高的值将导致较低的 " "CPU 使用率。" +msgid "" +"The Vulkan rendering driver. It requires Vulkan 1.0 support and " +"automatically uses features from Vulkan 1.1 and 1.2 if available." +msgstr "" +"Vulkan 渲染驱动。需要支持 Vulkan 1.0,而 Vulkan 1.1 和 1.2 的功能则会在支持时" +"自动使用。" + +msgid "" +"The OpenGL 3 rendering driver. It uses OpenGL 3.3 Core Profile on desktop " +"platforms, OpenGL ES 3.0 on mobile devices, and WebGL 2.0 on Web." +msgstr "" +"OpenGL 3 渲染驱动。在桌面平台上使用 OpenGL 3.3 核心配置,在移动设备上使用 " +"OpenGL ES 3.0,在 Web 上使用 WebGL 2.0。" + msgid "Desktop directory path." msgstr "桌面目录路径。" @@ -42966,6 +51396,14 @@ msgstr "" "从偏移量位置开始,该数组必须还分配有至少 4 个字节的空间。" msgid "" +"Encodes a 64-bit signed 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 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." @@ -43122,12 +51560,117 @@ msgstr "" msgid "Changes the byte at the given index." msgstr "改变给定索引处的字节。" +msgid "" +"Returns the slice of the [PackedByteArray], from [param begin] (inclusive) " +"to [param end] (exclusive), as a new [PackedByteArray].\n" +"The absolute value of [param begin] and [param end] will be clamped to the " +"array size, so the default value for [param end] makes it slice to the size " +"of the array by default (i.e. [code]arr.slice(1)[/code] is a shorthand for " +"[code]arr.slice(1, arr.size())[/code]).\n" +"If either [param begin] or [param end] are negative, they will be relative " +"to the end of the array (i.e. [code]arr.slice(0, -2)[/code] is a shorthand " +"for [code]arr.slice(0, arr.size() - 2)[/code])." +msgstr "" +"返回该 [PackedByteArray] 的切片,是从 [param begin](含)到 [param end](不" +"含)的全新 [PackedVecPackedByteArraytor3Array]。\n" +"[param begin] 和 [param end] 的绝对值会按数组大小进行限制,所以 [param end] " +"的默认值会切到数组大小为止(即 [code]arr.slice(1)[/code] 是 [code]arr." +"slice(1, arr.size())[/code] 的简写)。\n" +"如果 [param begin] 或 [param end] 为负,则表示相对于数组的末尾(即 [code]arr." +"slice(0, -2)[/code] 是 [code]arr.slice(0, arr.size() - 2)[/code] 的简写)。" + msgid "Sorts the elements of the array in ascending order." msgstr "将该数组中的元素按升序排列。" +msgid "" +"Returns a copy of the data converted to a [PackedFloat32Array], where each " +"block of 4 bytes has been converted to a 32-bit float (C++ [code]float[/" +"code]).\n" +"The size of the input array must be a multiple of 4 (size of 32-bit float). " +"The size of the new array will be [code]byte_array.size() / 4[/code].\n" +"If the original data can't be converted to 32-bit floats, the resulting data " +"is undefined." +msgstr "" +"返回将数据转换为 [PackedFloat32Array] 的副本,每 4 个字节块转换为一个 32 位浮" +"点数(C++ 的 [code]float[/code])。\n" +"输入数组的大小必须为 4 的倍数(32 位浮点数的大小)。新数组的大小为 " +"[code]byte_array.size() / 4[/code]。\n" +"如果原始数据无法转换为 32 位浮点数,则最终的数据未定义。" + +msgid "" +"Returns a copy of the data converted to a [PackedFloat64Array], where each " +"block of 8 bytes has been converted to a 64-bit float (C++ [code]double[/" +"code], Godot [float]).\n" +"The size of the input array must be a multiple of 8 (size of 64-bit double). " +"The size of the new array will be [code]byte_array.size() / 8[/code].\n" +"If the original data can't be converted to 64-bit floats, the resulting data " +"is undefined." +msgstr "" +"返回将数据转换为 [PackedFloat64Array] 的副本,每 8 个字节块转换为一个 64 位浮" +"点数(C++ 的 [code]double[/code])。\n" +"输入数组的大小必须为 8 的倍数(64 位浮点数的大小)。新数组的大小为 " +"[code]byte_array.size() / 8[/code]。\n" +"如果原始数据无法转换为 64 位浮点数,则最终的数据未定义。" + +msgid "" +"Returns a copy of the data converted to a [PackedInt32Array], where each " +"block of 4 bytes has been converted to a signed 32-bit integer (C++ " +"[code]int32_t[/code]).\n" +"The size of the input array must be a multiple of 4 (size of 32-bit " +"integer). The size of the new array will be [code]byte_array.size() / 4[/" +"code].\n" +"If the original data can't be converted to signed 32-bit integers, the " +"resulting data is undefined." +msgstr "" +"返回将数据转换为 [PackedInt32Array] 的副本,每 4 个字节块转换为一个 32 位有符" +"号整数(C++ 的 [code]int32_t[/code])。\n" +"输入数组的大小必须为 4 的倍数(32 位整数的大小)。新数组的大小为 " +"[code]byte_array.size() / 4[/code]。\n" +"如果原始数据无法转换为 32 位有符号整数,则最终的数据未定义。" + +msgid "" +"Returns a copy of the data converted to a [PackedInt64Array], where each " +"block of 8 bytes has been converted to a signed 64-bit integer (C++ " +"[code]int64_t[/code], Godot [int]).\n" +"The size of the input array must be a multiple of 8 (size of 64-bit " +"integer). The size of the new array will be [code]byte_array.size() / 8[/" +"code].\n" +"If the original data can't be converted to signed 64-bit integers, the " +"resulting data is undefined." +msgstr "" +"返回将数据转换为 [PackedInt64Array] 的副本,每 8 个字节块转换为一个 64 位有符" +"号整数(C++ 的 [code]int64_t[/code])。\n" +"输入数组的大小必须为 8 的倍数(64 位整数的大小)。新数组的大小为 " +"[code]byte_array.size() / 8[/code]。\n" +"如果原始数据无法转换为 64 位有符号整数,则最终的数据未定义。" + msgid "Returns [code]true[/code] if contents of the arrays differ." msgstr "如果数组内容不同,则返回 [code]true[/code]。" +msgid "" +"Returns a new [PackedByteArray] with contents of [param right] added at the " +"end of this array. For better performance, consider using [method " +"append_array] instead." +msgstr "" +"返回新的 [PackedByteArray],新数组的内容为此数组在末尾加上 [param right]。为" +"了提高性能,请考虑改用 [method append_array]。" + +msgid "" +"Returns [code]true[/code] if contents of both arrays are the same, i.e. they " +"have all equal bytes at the corresponding indices." +msgstr "" +"如果两个数组的内容相同,即对应索引号的字节相等,则返回 [code]true[/code]。" + +msgid "" +"Returns the byte at index [param index]. Negative indices can be used to " +"access the elements starting from the end. Using index out of array's bounds " +"will result in an error.\n" +"Note that the byte is returned as a 64-bit [int]." +msgstr "" +"返回索引 [param index] 处的字节。负数索引可以从末尾开始访问元素。使用越界的索" +"引会报错。\n" +"请注意,返回的字节是 64 位 [int]。" + msgid "A packed array of [Color]s." msgstr "[Color] 紧缩数组。" @@ -43159,6 +51702,36 @@ msgstr "将一个值添加到数组中。" msgid "Changes the [Color] at the given index." msgstr "更改给定索引处的 [Color]。" +msgid "" +"Returns the slice of the [PackedColorArray], from [param begin] (inclusive) " +"to [param end] (exclusive), as a new [PackedColorArray].\n" +"The absolute value of [param begin] and [param end] will be clamped to the " +"array size, so the default value for [param end] makes it slice to the size " +"of the array by default (i.e. [code]arr.slice(1)[/code] is a shorthand for " +"[code]arr.slice(1, arr.size())[/code]).\n" +"If either [param begin] or [param end] are negative, they will be relative " +"to the end of the array (i.e. [code]arr.slice(0, -2)[/code] is a shorthand " +"for [code]arr.slice(0, arr.size() - 2)[/code])." +msgstr "" +"返回该 [PackedColorArray] 的切片,是从 [param begin](含)到 [param end](不" +"含)的全新 [PackedColorArray]。\n" +"[param begin] 和 [param end] 的绝对值会按数组大小进行限制,所以 [param end] " +"的默认值会切到数组大小为止(即 [code]arr.slice(1)[/code] 是 [code]arr." +"slice(1, arr.size())[/code] 的简写)。\n" +"如果 [param begin] 或 [param end] 为负,则表示相对于数组的末尾(即 [code]arr." +"slice(0, -2)[/code] 是 [code]arr.slice(0, arr.size() - 2)[/code] 的简写)。" + +msgid "Returns a [PackedByteArray] with each color encoded as bytes." +msgstr "返回 [PackedByteArray],每个颜色都被编码为字节。" + +msgid "" +"Returns a new [PackedColorArray] with contents of [param right] added at the " +"end of this array. For better performance, consider using [method " +"append_array] instead." +msgstr "" +"返回新的 [PackedColorArray],新数组的内容为此数组在末尾加上 [param right]。为" +"了提高性能,请考虑改用 [method append_array]。" + msgid "Reference-counted version of [PackedDataContainer]." msgstr "[PackedDataContainer] 的引用计数版本。" @@ -43193,6 +51766,33 @@ msgstr "在该数组的末尾追加一个 [PackedFloat32Array]。" msgid "Changes the float at the given index." msgstr "更改给定索引处的浮点数。" +msgid "" +"Returns the slice of the [PackedFloat32Array], from [param begin] " +"(inclusive) to [param end] (exclusive), as a new [PackedFloat32Array].\n" +"The absolute value of [param begin] and [param end] will be clamped to the " +"array size, so the default value for [param end] makes it slice to the size " +"of the array by default (i.e. [code]arr.slice(1)[/code] is a shorthand for " +"[code]arr.slice(1, arr.size())[/code]).\n" +"If either [param begin] or [param end] are negative, they will be relative " +"to the end of the array (i.e. [code]arr.slice(0, -2)[/code] is a shorthand " +"for [code]arr.slice(0, arr.size() - 2)[/code])." +msgstr "" +"返回该 [PackedFloat32Array] 的切片,是从 [param begin](含)到 [param end]" +"(不含)的全新 [PackedFloat32Array]。\n" +"[param begin] 和 [param end] 的绝对值会按数组大小进行限制,所以 [param end] " +"的默认值会切到数组大小为止(即 [code]arr.slice(1)[/code] 是 [code]arr." +"slice(1, arr.size())[/code] 的简写)。\n" +"如果 [param begin] 或 [param end] 为负,则表示相对于数组的末尾(即 [code]arr." +"slice(0, -2)[/code] 是 [code]arr.slice(0, arr.size() - 2)[/code] 的简写)。" + +msgid "" +"Returns a new [PackedFloat32Array] with contents of [param right] added at " +"the end of this array. For better performance, consider using [method " +"append_array] instead." +msgstr "" +"返回新的 [PackedFloat32Array],新数组的内容为此数组在末尾加上 [param right]。" +"为了提高性能,请考虑改用 [method append_array]。" + msgid "A packed array of 64-bit floating-point values." msgstr "64 位浮点数紧缩数组。" @@ -43223,6 +51823,33 @@ msgstr "构造新 [PackedFloat64Array]。你还可以传入通用 [Array] 进行 msgid "Appends a [PackedFloat64Array] at the end of this array." msgstr "在该数组的末尾追加一个 [PackedFloat64Array]。" +msgid "" +"Returns the slice of the [PackedFloat64Array], from [param begin] " +"(inclusive) to [param end] (exclusive), as a new [PackedFloat64Array].\n" +"The absolute value of [param begin] and [param end] will be clamped to the " +"array size, so the default value for [param end] makes it slice to the size " +"of the array by default (i.e. [code]arr.slice(1)[/code] is a shorthand for " +"[code]arr.slice(1, arr.size())[/code]).\n" +"If either [param begin] or [param end] are negative, they will be relative " +"to the end of the array (i.e. [code]arr.slice(0, -2)[/code] is a shorthand " +"for [code]arr.slice(0, arr.size() - 2)[/code])." +msgstr "" +"返回该 [PackedFloat64Array] 的切片,是从 [param begin](含)到 [param end]" +"(不含)的全新 [PackedFloat64Array]。\n" +"[param begin] 和 [param end] 的绝对值会按数组大小进行限制,所以 [param end] " +"的默认值会切到数组大小为止(即 [code]arr.slice(1)[/code] 是 [code]arr." +"slice(1, arr.size())[/code] 的简写)。\n" +"如果 [param begin] 或 [param end] 为负,则表示相对于数组的末尾(即 [code]arr." +"slice(0, -2)[/code] 是 [code]arr.slice(0, arr.size() - 2)[/code] 的简写)。" + +msgid "" +"Returns a new [PackedFloat64Array] with contents of [param right] added at " +"the end of this array. For better performance, consider using [method " +"append_array] instead." +msgstr "" +"返回新的 [PackedFloat64Array],新数组的内容为此数组在末尾加上 [param right]。" +"为了提高性能,请考虑改用 [method append_array]。" + msgid "A packed array of 32-bit integers." msgstr "32 位整数紧缩数组。" @@ -43257,6 +51884,36 @@ msgstr "构造新 [PackedInt32Array]。你还可以传入通用 [Array] 进行 msgid "Appends a [PackedInt32Array] at the end of this array." msgstr "在该数组的末尾追加一个 [PackedInt32Array]。" +msgid "Changes the integer at the given index." +msgstr "更改给定索引处的整数。" + +msgid "" +"Returns the slice of the [PackedInt32Array], from [param begin] (inclusive) " +"to [param end] (exclusive), as a new [PackedInt32Array].\n" +"The absolute value of [param begin] and [param end] will be clamped to the " +"array size, so the default value for [param end] makes it slice to the size " +"of the array by default (i.e. [code]arr.slice(1)[/code] is a shorthand for " +"[code]arr.slice(1, arr.size())[/code]).\n" +"If either [param begin] or [param end] are negative, they will be relative " +"to the end of the array (i.e. [code]arr.slice(0, -2)[/code] is a shorthand " +"for [code]arr.slice(0, arr.size() - 2)[/code])." +msgstr "" +"返回该 [PackedInt32Array] 的切片,是从 [param begin](含)到 [param end](不" +"含)的全新 [PackedInt32Array]。\n" +"[param begin] 和 [param end] 的绝对值会按数组大小进行限制,所以 [param end] " +"的默认值会切到数组大小为止(即 [code]arr.slice(1)[/code] 是 [code]arr." +"slice(1, arr.size())[/code] 的简写)。\n" +"如果 [param begin] 或 [param end] 为负,则表示相对于数组的末尾(即 [code]arr." +"slice(0, -2)[/code] 是 [code]arr.slice(0, arr.size() - 2)[/code] 的简写)。" + +msgid "" +"Returns a new [PackedInt32Array] with contents of [param right] added at the " +"end of this array. For better performance, consider using [method " +"append_array] instead." +msgstr "" +"返回新的 [PackedInt32Array],新数组的内容为此数组在末尾加上 [param right]。为" +"了提高性能,请考虑改用 [method append_array]。" + msgid "A packed array of 64-bit integers." msgstr "64 位整数紧缩数组。" @@ -43291,9 +51948,202 @@ msgstr "构造新 [PackedInt64Array]。你还可以传入通用 [Array] 进行 msgid "Appends a [PackedInt64Array] at the end of this array." msgstr "在该数组的末尾追加一个 [PackedInt64Array]。" +msgid "" +"Returns the slice of the [PackedInt64Array], from [param begin] (inclusive) " +"to [param end] (exclusive), as a new [PackedInt64Array].\n" +"The absolute value of [param begin] and [param end] will be clamped to the " +"array size, so the default value for [param end] makes it slice to the size " +"of the array by default (i.e. [code]arr.slice(1)[/code] is a shorthand for " +"[code]arr.slice(1, arr.size())[/code]).\n" +"If either [param begin] or [param end] are negative, they will be relative " +"to the end of the array (i.e. [code]arr.slice(0, -2)[/code] is a shorthand " +"for [code]arr.slice(0, arr.size() - 2)[/code])." +msgstr "" +"返回该 [PackedInt64Array] 的切片,是从 [param begin](含)到 [param end](不" +"含)的全新 [PackedInt64Array]。\n" +"[param begin] 和 [param end] 的绝对值会按数组大小进行限制,所以 [param end] " +"的默认值会切到数组大小为止(即 [code]arr.slice(1)[/code] 是 [code]arr." +"slice(1, arr.size())[/code] 的简写)。\n" +"如果 [param begin] 或 [param end] 为负,则表示相对于数组的末尾(即 [code]arr." +"slice(0, -2)[/code] 是 [code]arr.slice(0, arr.size() - 2)[/code] 的简写)。" + +msgid "" +"Returns a new [PackedInt64Array] with contents of [param right] added at the " +"end of this array. For better performance, consider using [method " +"append_array] instead." +msgstr "" +"返回新的 [PackedInt64Array],新数组的内容为此数组在末尾加上 [param right]。为" +"了提高性能,请考虑改用 [method append_array]。" + +msgid "" +"Returns the [int] at index [param index]. Negative indices can be used to " +"access the elements starting from the end. Using index out of array's bounds " +"will result in an error." +msgstr "" +"返回索引 [param index] 处的 [int]。负数索引可以用来从末尾开始访问元素。使用越" +"界的数组索引会产生错误。" + msgid "An abstraction of a serialized scene." msgstr "对序列化场景的抽象。" +msgid "" +"A simplified interface to a scene file. Provides access to operations and " +"checks that can be performed on the scene resource itself.\n" +"Can be used to save a node to a file. When saving, the node as well as all " +"the nodes it owns get saved (see [member Node.owner] property).\n" +"[b]Note:[/b] The node doesn't need to own itself.\n" +"[b]Example of loading a saved scene:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"# Use load() instead of preload() if the path isn't known at compile-time.\n" +"var scene = preload(\"res://scene.tscn\").instantiate()\n" +"# Add the node as a child of the node the script is attached to.\n" +"add_child(scene)\n" +"[/gdscript]\n" +"[csharp]\n" +"// C# has no preload, so you have to always use ResourceLoader." +"Load<PackedScene>().\n" +"var scene = ResourceLoader.Load<PackedScene>(\"res://scene.tscn\")." +"Instantiate();\n" +"// Add the node as a child of the node the script is attached to.\n" +"AddChild(scene);\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Example of saving a node with different owners:[/b] The following example " +"creates 3 objects: [Node2D] ([code]node[/code]), [RigidBody2D] ([code]body[/" +"code]) and [CollisionObject2D] ([code]collision[/code]). [code]collision[/" +"code] is a child of [code]body[/code] which is a child of [code]node[/code]. " +"Only [code]body[/code] is owned by [code]node[/code] and [code]pack[/code] " +"will therefore only save those two nodes, but not [code]collision[/code].\n" +"[codeblocks]\n" +"[gdscript]\n" +"# Create the objects.\n" +"var node = Node2D.new()\n" +"var body = RigidBody2D.new()\n" +"var collision = CollisionShape2D.new()\n" +"\n" +"# Create the object hierarchy.\n" +"body.add_child(collision)\n" +"node.add_child(body)\n" +"\n" +"# Change owner of `body`, but not of `collision`.\n" +"body.owner = node\n" +"var scene = PackedScene.new()\n" +"\n" +"# Only `node` and `body` are now packed.\n" +"var result = scene.pack(node)\n" +"if result == OK:\n" +" var error = ResourceSaver.save(scene, \"res://path/name.tscn\") # Or " +"\"user://...\"\n" +" if error != OK:\n" +" push_error(\"An error occurred while saving the scene to disk.\")\n" +"[/gdscript]\n" +"[csharp]\n" +"// Create the objects.\n" +"var node = new Node2D();\n" +"var body = new RigidBody2D();\n" +"var collision = new CollisionShape2D();\n" +"\n" +"// Create the object hierarchy.\n" +"body.AddChild(collision);\n" +"node.AddChild(body);\n" +"\n" +"// Change owner of `body`, but not of `collision`.\n" +"body.Owner = node;\n" +"var scene = new PackedScene();\n" +"\n" +"// Only `node` and `body` are now packed.\n" +"Error result = scene.Pack(node);\n" +"if (result == Error.Ok)\n" +"{\n" +" Error error = ResourceSaver.Save(scene, \"res://path/name.tscn\"); // Or " +"\"user://...\"\n" +" if (error != Error.Ok)\n" +" {\n" +" GD.PushError(\"An error occurred while saving the scene to disk." +"\");\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"场景文件的简化接口。提供可以对场景资源本身进行的操作和检查。\n" +"可以用来将某个节点保存到文件中。保存时,会将该节点和它所拥有的所有节点一起保" +"存(见 [member Node.owner] 属性)。\n" +"[b]注意:[/b] 该节点不必自我拥有。\n" +"[b]加载保存场景的示例:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"# 如果路径在编译期不可知,请使用 load() 而不是 preload()。\n" +"var scene = preload(\"res://scene.tscn\").instantiate()\n" +"# 将该节点添加为脚本附加节点的子节点。\n" +"add_child(scene)\n" +"[/gdscript]\n" +"[csharp]\n" +"// C# 没有 preload,所以你使用的永远是 ResourceLoader.Load<PackedScene>()。\n" +"var scene = ResourceLoader.Load<PackedScene>(\"res://scene.tscn\")." +"Instantiate();\n" +"// 将该节点添加为脚本附加节点的子节点。\n" +"AddChild(scene);\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]保存不同所有者的节点的示例:[/b]下面的粒子会创建 3 个对象:[Node2D]" +"([code]node[/code])、[RigidBody2D]([code]body[/code])、" +"[CollisionObject2D]([code]collision[/code]))。[code]node[/code] 的下一级是 " +"[code]body[/code],再下一级是 [code]collision[/code]。只有 [code]body[/code] " +"被 [code]node[/code] 拥有,因此 [code]pack[/code] 只会保存两个节点,不会保存 " +"[code]collision[/code]。\n" +"[codeblocks]\n" +"[gdscript]\n" +"# 创建对象。\n" +"var node = Node2D.new()\n" +"var body = RigidBody2D.new()\n" +"var collision = CollisionShape2D.new()\n" +"\n" +"# 创建对象架构。\n" +"body.add_child(collision)\n" +"node.add_child(body)\n" +"\n" +"# 修改 `body` 的拥有者,但不修改 `collision` 的拥有者。\n" +"body.owner = node\n" +"var scene = PackedScene.new()\n" +"\n" +"# 只会打包 `node` 和 `body`。\n" +"var result = scene.pack(node)\n" +"if result == OK:\n" +" var error = ResourceSaver.save(scene, \"res://path/name.tscn\") # Or " +"\"user://...\"\n" +" if error != OK:\n" +" push_error(\"将场景保存到磁盘时出错。\")\n" +"[/gdscript]\n" +"[csharp]\n" +"// 创建对象。\n" +"var node = new Node2D();\n" +"var body = new RigidBody2D();\n" +"var collision = new CollisionShape2D();\n" +"\n" +"// 创建对象架构。\n" +"body.AddChild(collision);\n" +"node.AddChild(body);\n" +"\n" +"// 修改 `body` 的拥有者,但不修改 `collision` 的拥有者。\n" +"body.Owner = node;\n" +"var scene = new PackedScene();\n" +"\n" +"// 只会打包 `node` 和 `body`。\n" +"Error result = scene.Pack(node);\n" +"if (result == Error.Ok)\n" +"{\n" +" Error error = ResourceSaver.Save(scene, \"res://path/name.tscn\"); // Or " +"\"user://...\"\n" +" if (error != Error.Ok)\n" +" {\n" +" GD.PushError(\"将场景保存到磁盘时出错。\");\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" + msgid "Returns [code]true[/code] if the scene file has nodes." msgstr "如果场景文件有节点,返回 [code]true[/code]。" @@ -43302,6 +52152,14 @@ msgid "" msgstr "返回代表场景文件内容的 [code]SceneState[/code]。" msgid "" +"Instantiates the scene's node hierarchy. Triggers child scene " +"instantiation(s). Triggers a [constant Node.NOTIFICATION_SCENE_INSTANTIATED] " +"notification on the root node." +msgstr "" +"实例化该场景的节点架构。触发子场景的实例化。在根节点上触发 [constant Node." +"NOTIFICATION_SCENE_INSTANTIATED] 通知。" + +msgid "" "Pack will ignore any sub-nodes not owned by given node. See [member Node." "owner]." msgstr "包将忽略不属于给定节点的任何子节点。请参阅 [member Node.owner]。" @@ -43371,9 +52229,36 @@ msgstr "在数组的末尾追加字符串元素。" msgid "Changes the [String] at the given index." msgstr "更改给定索引处的 [String]。" +msgid "" +"Returns the slice of the [PackedStringArray], from [param begin] (inclusive) " +"to [param end] (exclusive), as a new [PackedStringArray].\n" +"The absolute value of [param begin] and [param end] will be clamped to the " +"array size, so the default value for [param end] makes it slice to the size " +"of the array by default (i.e. [code]arr.slice(1)[/code] is a shorthand for " +"[code]arr.slice(1, arr.size())[/code]).\n" +"If either [param begin] or [param end] are negative, they will be relative " +"to the end of the array (i.e. [code]arr.slice(0, -2)[/code] is a shorthand " +"for [code]arr.slice(0, arr.size() - 2)[/code])." +msgstr "" +"返回该 [PackedStringArray] 的切片,是从 [param begin](含)到 [param end](不" +"含)的全新 [PackedStringArray]。\n" +"[param begin] 和 [param end] 的绝对值会按数组大小进行限制,所以 [param end] " +"的默认值会切到数组大小为止(即 [code]arr.slice(1)[/code] 是 [code]arr." +"slice(1, arr.size())[/code] 的简写)。\n" +"如果 [param begin] 或 [param end] 为负,则表示相对于数组的末尾(即 [code]arr." +"slice(0, -2)[/code] 是 [code]arr.slice(0, arr.size() - 2)[/code] 的简写)。" + msgid "Returns a [PackedByteArray] with each string encoded as bytes." msgstr "返回 [PackedByteArray],每个字符串都被编码为字节。" +msgid "" +"Returns a new [PackedStringArray] with contents of [param right] added at " +"the end of this array. For better performance, consider using [method " +"append_array] instead." +msgstr "" +"返回新的 [PackedStringArray],新数组的内容为此数组在末尾加上 [param right]。" +"为了提高性能,请考虑改用 [method append_array]。" + msgid "A packed array of [Vector2]s." msgstr "[Vector2] 紧缩数组。" @@ -43409,9 +52294,40 @@ msgstr "在末尾插入一个 [Vector2]。" msgid "Changes the [Vector2] at the given index." msgstr "更改给定索引处的 [Vector2]。" +msgid "" +"Returns the slice of the [PackedVector2Array], from [param begin] " +"(inclusive) to [param end] (exclusive), as a new [PackedVector2Array].\n" +"The absolute value of [param begin] and [param end] will be clamped to the " +"array size, so the default value for [param end] makes it slice to the size " +"of the array by default (i.e. [code]arr.slice(1)[/code] is a shorthand for " +"[code]arr.slice(1, arr.size())[/code]).\n" +"If either [param begin] or [param end] are negative, they will be relative " +"to the end of the array (i.e. [code]arr.slice(0, -2)[/code] is a shorthand " +"for [code]arr.slice(0, arr.size() - 2)[/code])." +msgstr "" +"返回该 [PackedVector2Array] 的切片,是从 [param begin](含)到 [param end]" +"(不含)的全新 [PackedVector2Array]。\n" +"[param begin] 和 [param end] 的绝对值会按数组大小进行限制,所以 [param end] " +"的默认值会切到数组大小为止(即 [code]arr.slice(1)[/code] 是 [code]arr." +"slice(1, arr.size())[/code] 的简写)。\n" +"如果 [param begin] 或 [param end] 为负,则表示相对于数组的末尾(即 [code]arr." +"slice(0, -2)[/code] 是 [code]arr.slice(0, arr.size() - 2)[/code] 的简写)。" + msgid "Returns a [PackedByteArray] with each vector encoded as bytes." msgstr "返回 [PackedByteArray],每个向量都被编码为字节。" +msgid "" +"Transforms (multiplies) all vectors in the array by the [Transform2D] matrix." +msgstr "使用 [Transform2D] 矩阵对数组中的所有向量进行变换(相乘)。" + +msgid "" +"Returns a new [PackedVector2Array] with contents of [param right] added at " +"the end of this array. For better performance, consider using [method " +"append_array] instead." +msgstr "" +"返回新的 [PackedVector2Array],新数组的内容为此数组在末尾加上 [param right]。" +"为了提高性能,请考虑改用 [method append_array]。" + msgid "A packed array of [Vector3]s." msgstr "[Vector3] 紧缩数组。" @@ -43444,6 +52360,37 @@ msgstr "在末尾插入一个 [Vector3]。" msgid "Changes the [Vector3] at the given index." msgstr "更改给定索引处的 [Vector3]。" +msgid "" +"Returns the slice of the [PackedVector3Array], from [param begin] " +"(inclusive) to [param end] (exclusive), as a new [PackedVector3Array].\n" +"The absolute value of [param begin] and [param end] will be clamped to the " +"array size, so the default value for [param end] makes it slice to the size " +"of the array by default (i.e. [code]arr.slice(1)[/code] is a shorthand for " +"[code]arr.slice(1, arr.size())[/code]).\n" +"If either [param begin] or [param end] are negative, they will be relative " +"to the end of the array (i.e. [code]arr.slice(0, -2)[/code] is a shorthand " +"for [code]arr.slice(0, arr.size() - 2)[/code])." +msgstr "" +"返回该 [PackedVector3Array] 的切片,是从 [param begin](含)到 [param end]" +"(不含)的全新 [PackedVector3Array]。\n" +"[param begin] 和 [param end] 的绝对值会按数组大小进行限制,所以 [param end] " +"的默认值会切到数组大小为止(即 [code]arr.slice(1)[/code] 是 [code]arr." +"slice(1, arr.size())[/code] 的简写)。\n" +"如果 [param begin] 或 [param end] 为负,则表示相对于数组的末尾(即 [code]arr." +"slice(0, -2)[/code] 是 [code]arr.slice(0, arr.size() - 2)[/code] 的简写)。" + +msgid "" +"Transforms (multiplies) all vectors in the array by the [Transform3D] matrix." +msgstr "使用 [Transform3D] 矩阵对该数组中的所有向量进行变换(相乘)。" + +msgid "" +"Returns a new [PackedVector3Array] with contents of [param right] added at " +"the end of this array. For better performance, consider using [method " +"append_array] instead." +msgstr "" +"返回新的 [PackedVector3Array],新数组的内容为此数组在末尾加上 [param right]。" +"为了提高性能,请考虑改用 [method append_array]。" + msgid "Abstraction and base class for packet-based protocols." msgstr "基于包的协议的抽象和基类。" @@ -43460,10 +52407,35 @@ msgstr "" "返回最后接收的数据包的错误状态(通过 [method get_packet] 和 [method " "get_var])。" +msgid "" +"Gets a Variant. If [param allow_objects] is [code]true[/code], decoding " +"objects is allowed.\n" +"Internally, this uses the same decoding mechanism as the [method " +"@GlobalScope.bytes_to_var] method.\n" +"[b]Warning:[/b] Deserialized objects can contain code which gets executed. " +"Do not use this option if the serialized object comes from untrusted sources " +"to avoid potential security threats such as remote code execution." +msgstr "" +"获取 Variant。如果 [param allow_objects] 为 [code]true[/code],则允许解码出对" +"象。\n" +"在内部,这使用与 [method @GlobalScope.bytes_to_var] 方法相同的解码机制。\n" +"[b]警告:[/b]反序列化出的对象可能包含会被执行的代码。如果序列化的对象来自不受" +"信任的来源,请不要使用此选项,以避免潜在的安全威胁,例如远程代码执行。" + msgid "Sends a raw packet." msgstr "发送一个原始数据包。" msgid "" +"Sends a [Variant] as a packet. If [param full_objects] is [code]true[/code], " +"encoding objects is allowed (and can potentially include code).\n" +"Internally, this uses the same encoding mechanism as the [method " +"@GlobalScope.var_to_bytes] method." +msgstr "" +"将 [Variant] 作为数据包发送。如果 [param full_objects] 为 [code]true[/code]," +"则允许将对象编码(其中可能包含代码)。\n" +"在内部,这使用与 [method @GlobalScope.var_to_bytes] 方法相同的编码机制。" + +msgid "" "Maximum buffer size allowed when encoding [Variant]s. Raise this value to " "support heavier memory allocations.\n" "The [method put_var] method allocates memory on the stack, and the buffer " @@ -43480,6 +52452,26 @@ msgstr "" msgid "DTLS packet peer." msgstr "DTLS 数据包客户端。" +msgid "" +"This class represents a DTLS peer connection. It can be used to connect to a " +"DTLS server, and is returned by [method DTLSServer.take_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.\n" +"[b]Warning:[/b] TLS certificate revocation and certificate pinning are " +"currently not supported. Revoked certificates are accepted as long as they " +"are otherwise valid. If this is a concern, you may want to use automatically " +"managed certificates with a short validity period." +msgstr "" +"这个类表示 DTLS 对等体连接。它可以用来连接到 DTLS 服务器,由 [method " +"DTLSServer.take_connection] 返回。\n" +"[b]注意:[/b]导出到 Android 时,在导出项目或使用一键部署前,请确保在 Android " +"导出预设中启用 [code]INTERNET[/code] 权限。否则,任何类型的网络通信都将被 " +"Android 阻止。\n" +"[b]警告:[/b]目前不支持 TLS 证书撤销和证书绑定。只要撤销的证书在其他方面有" +"效,就会被接受。如果这是一个问题,可以使用有效期较短的自动管理证书。" + msgid "Disconnects this peer, terminating the DTLS session." msgstr "断开此对等体的连接,终止 DTLS 会话。" @@ -43522,6 +52514,68 @@ msgid "UDP packet peer." msgstr "UDP 数据包客户端。" msgid "" +"UDP packet peer. Can be used to send raw UDP packets as well as [Variant]s.\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 "" +"UDP 数据包对等体。可用于发送原始 UDP 数据包,也可以发送 [Variant]。\n" +"[b]注意:[/b]导出到安卓时,在导出项目、或使用一键部署之前,请务必在安卓导出预" +"设中,开启 [code]INTERNET[/code] 权限。否则,任何类型的网络通信,都将被 " +"Android 阻止。" + +msgid "" +"Binds this [PacketPeerUDP] to the specified [param port] and [param " +"bind_address] with a buffer size [param recv_buf_size], allowing it to " +"receive incoming packets.\n" +"If [param bind_address] is set to [code]\"*\"[/code] (default), the peer " +"will be bound on all available addresses (both IPv4 and IPv6).\n" +"If [param bind_address] is set to [code]\"0.0.0.0\"[/code] (for IPv4) or " +"[code]\"::\"[/code] (for IPv6), the peer will be bound to 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 peer will " +"only be bound to the interface with that addresses (or fail if no interface " +"with the given address exists)." +msgstr "" +"将该 [PacketPeerUDP] 绑定到指定的 [param port] 和 [param bind_address],其缓" +"冲区大小为 [param recv_buf_size],允许它接收传入的数据包。\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 "Closes the [PacketPeerUDP]'s underlying UDP socket." +msgstr "关闭该 [PacketPeerUDP] 底层 UDP 套接字。" + +msgid "" +"Calling this method connects this UDP peer to the given [param host]/[param " +"port] pair. UDP is in reality connectionless, so this option only means that " +"incoming packets from different addresses are automatically discarded, and " +"that outgoing packets are always sent to the connected address (future calls " +"to [method set_dest_address] are not allowed). This method does not send any " +"data to the remote peer, to do that, use [method PacketPeer.put_var] or " +"[method PacketPeer.put_packet] as usual. See also [UDPServer].\n" +"[b]Note:[/b] Connecting to the remote peer does not help to protect from " +"malicious attacks like IP spoofing, etc. Think about using an encryption " +"technique like TLS or DTLS if you feel like your application is transferring " +"sensitive information." +msgstr "" +"调用该方法将该 UDP 对等体连接到给定的 [param host]/[param port] 对。UDP 实际" +"上是无连接的,因此该选项仅意味着自动丢弃来自不同地址的传入数据包,并且传出的" +"数据包始终发送到连接的地址(不允许将来调用 [method set_dest_address])。该方" +"法不会向远程对等体发送任何数据,要发送数据,请像往常一样使用 [method " +"PacketPeer.put_var] 或 [method PacketPeer.put_packet]。另请参阅 " +"[UDPServer]。\n" +"[b]注意:[/b]连接到远程对等体并不能防止 IP 欺骗等恶意攻击。如果您觉得您的应用" +"程序正在传输敏感信息,可以考虑使用 TLS 或 DTLS 等加密技术。" + +msgid "" "Returns the IP of the remote peer that sent the last packet(that was " "received with [method PacketPeer.get_packet] or [method PacketPeer.get_var])." msgstr "" @@ -43536,6 +52590,11 @@ msgstr "" "PacketPeer.get_var] 接收)的远程对等方的端口。" msgid "" +"Returns whether this [PacketPeerUDP] is bound to an address and can receive " +"packets." +msgstr "返回该 [PacketPeerUDP] 是否被绑定到某个地址上,并且可以接收数据包。" + +msgid "" "Returns [code]true[/code] if the UDP socket is open and has been connected " "to a remote address. See [method connect_to_host]." msgstr "" @@ -43543,6 +52602,21 @@ msgstr "" "[method connect_to_host]。" msgid "" +"Joins the multicast group specified by [param multicast_address] using the " +"interface identified by [param interface_name].\n" +"You can join the same multicast group with multiple interfaces. Use [method " +"IP.get_local_interfaces] to know which are available.\n" +"[b]Note:[/b] Some Android devices might require the " +"[code]CHANGE_WIFI_MULTICAST_STATE[/code] permission for multicast to work." +msgstr "" +"使用由 [param interface_name] 标识的接口加入由 [param multicast_address] 指定" +"的多播组。\n" +"可以使用多个接口加入同一个多播组。使用 [method IP.get_local_interfaces] 了解" +"哪些接口可用。\n" +"[b]注意:[/b]某些 Android 设备可能需要 [code]CHANGE_WIFI_MULTICAST_STATE[/" +"code] 权限才能进行多播。" + +msgid "" "Enable or disable sending of broadcast packets (e.g. " "[code]set_dest_address(\"255.255.255.255\", 4343)[/code]. This option is " "disabled by default.\n" @@ -43597,6 +52671,9 @@ msgstr "" msgid "The style of [PanelContainer]'s background." msgstr "[PanelContainer] 的背景样式。" +msgid "[Texture2D] to be applied to the [PanoramaSkyMaterial]." +msgstr "应用于该 [PanoramaSkyMaterial] 的 [Texture2D]。" + msgid "A node used to create a parallax scrolling background." msgstr "用于创建视差滚动背景的节点。" @@ -43665,6 +52742,19 @@ msgstr "" "[b]注意:[/b]当该节点进入场景后,对其位置和比例的任何改变都将被忽略。" msgid "" +"The ParallaxLayer's [Texture2D] mirroring. Useful for creating an infinite " +"scrolling background. If an axis is set to [code]0[/code], the [Texture2D] " +"will not be mirrored.\n" +"If the length of the viewport axis is bigger than twice the mirrored axis " +"size, it will not repeat infinitely, as the parallax layer only draws 2 " +"instances of the texture at any one time." +msgstr "" +"ParallaxLayer 的 [Texture2D] 镜像。用于创建无限滚动的背景。如果轴被设置为 " +"[code]0[/code],则该 [Texture2D] 将不会被镜像。\n" +"如果视口轴的长度大于镜像轴的两倍大小,并不会无限重复,因为视差层在任何时候只" +"会绘制 2 个纹理实例。" + +msgid "" "The ParallaxLayer's offset relative to the parent ParallaxBackground's " "[member ParallaxBackground.scroll_offset]." msgstr "" @@ -43679,9 +52769,36 @@ msgstr "复制视差图层的运动。如果一个轴被设置为 [code]0[/code] msgid "Particle properties for [GPUParticles3D] and [GPUParticles2D] nodes." msgstr "[GPUParticles3D] 和 [GPUParticles2D] 节点的粒子属性。" +msgid "" +"ParticleProcessMaterial defines particle properties and behavior. It is used " +"in the [code]process_material[/code] of [GPUParticles3D] and " +"[GPUParticles2D] emitter nodes.\n" +"Some of this material's properties are applied to each particle when " +"emitted, while others can have a [CurveTexture] applied to vary values over " +"the lifetime of the particle.\n" +"Particle animation is available only in [GPUParticles2D]. To use it, attach " +"a [CanvasItemMaterial], with [member CanvasItemMaterial.particles_animation] " +"enabled, to the particles node." +msgstr "" +"ParticleProcessMaterial 定义了粒子的属性和行为。[GPUParticles3D] 和 " +"[GPUParticles2D] 发射器节点的 [code]process_material[/code] 会使用这个材" +"质。\n" +"这种材质的有些属性是在粒子发射时应用的,有些则会在粒子的生命周期中不断应用按" +"照 [CurveTexture] 变化的值。\n" +"粒子动画仅在 [GPUParticles2D] 中可用。使用时请为粒子节点分配 " +"[CanvasItemMaterial] 并启用其 [member CanvasItemMaterial." +"particles_animation]。" + msgid "Returns the [Texture2D] used by the specified parameter." msgstr "返回指定参数所使用的 [Texture2D]。" +msgid "" +"Returns [code]true[/code] if the specified particle flag is enabled. See " +"[enum ParticleFlags] for options." +msgstr "" +"如果启用了指定的粒子标志,则返回 [code]true[/code]。可选项见 [enum " +"ParticleFlags]。" + msgid "Sets the maximum value range for the given parameter." msgstr "设置给定参数的最大值范围。" @@ -43719,9 +52836,38 @@ msgstr "每个粒子的动画偏移将沿着这个 [CurveTexture] 变化。" msgid "Each particle's animation speed will vary along this [CurveTexture]." msgstr "每个粒子的动画速度将沿着这个 [CurveTexture] 变化。" +msgid "True if the interaction with particle attractors is enabled." +msgstr "如果启用了与粒子吸引器的交互,则为 true。" + +msgid "" +"The particles' bounciness. Values range from [code]0[/code] (no bounce) to " +"[code]1[/code] (full bounciness). Only effective if [member collision_mode] " +"is [constant COLLISION_RIGID]." +msgstr "" +"粒子的弹性。值范围从 [code]0[/code](无弹跳)到 [code]1[/code](完全弹跳)。" +"仅当 [member collision_mode] 为 [constant COLLISION_RIGID] 时有效。" + msgid "Should collision take scale into account." msgstr "碰撞是否应该考虑缩放。" +msgid "" +"Each particle's initial color. If the [GPUParticles2D]'s [code]texture[/" +"code] is defined, it will be multiplied by this color.\n" +"[b]Note:[/b] [member color] multiplies the particle mesh's vertex colors. To " +"have a visible effect on a [BaseMaterial3D], [member BaseMaterial3D." +"vertex_color_use_as_albedo] [i]must[/i] be [code]true[/code]. For a " +"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/code] must be inserted in the " +"shader's [code]fragment()[/code] function. Otherwise, [member color] will " +"have no visible effect." +msgstr "" +"每个粒子的初始颜色。如果定义了 [GPUParticles2D] 的 [code]texture[/code],它将" +"乘以该颜色。\n" +"[b]注意:[/b][member color] 乘以粒子网格的顶点颜色。要在 [BaseMaterial3D] 上" +"产生可见效果,[member BaseMaterial3D.vertex_color_use_as_albedo] [i]必须[/i]" +"为 [code]true[/code]。对于 [ShaderMaterial],必须在着色器的 [code]fragment()" +"[/code] 函数中插入 [code]ALBEDO *= COLOR.rgb;[/code]。否则,[member color] 将" +"没有可见效果。" + msgid "Damping will vary along this [CurveTexture]." msgstr "阻尼将沿着这个 [CurveTexture] 变化。" @@ -44006,6 +53152,30 @@ msgstr "允许该 PathFollow3D 在任意轴上旋转。" msgid "Creates packages that can be loaded into a running project." msgstr "创建可以加载到正在运行的项目中的包。" +msgid "" +"Adds the [param source_path] file to the current PCK package at the [param " +"pck_path] internal path (should start with [code]res://[/code])." +msgstr "" +"将 [param source_path] 文件添加到当前 PCK 包的内部路径 [param pck_path] 中" +"(应以 [code]res://[/code] 开头)。" + +msgid "" +"Writes the files specified using all [method add_file] calls since the last " +"flush. If [param verbose] is [code]true[/code], a list of files added will " +"be printed to the console for easier debugging." +msgstr "" +"自上次刷新以来,使用所有 [method add_file] 调用写入指定的文件。如果 [param " +"verbose] 为 [code]true[/code],被添加的文件的列表将被打印到控制台,以便于调" +"试。" + +msgid "" +"Creates a new PCK file with the name [param pck_name]. The [code].pck[/code] " +"file extension isn't added automatically, so it should be part of [param " +"pck_name] (even though it's not required)." +msgstr "" +"创建一个名为 [param pck_name] 的新 PCK 文件。不会自动添加 [code].pck[/code] " +"文件扩展名,因此它应该是 [param pck_name] 的一部分(即使它不是必需的)。" + msgid "Exposes performance-related data." msgstr "公开与性能相关的数据。" @@ -44111,6 +53281,25 @@ msgstr "3D 物理引擎中孤岛的数量。[i]越低越好。[/i]" msgid "Output latency of the [AudioServer]. [i]Lower is better.[/i]" msgstr "[AudioServer] 的输出延迟。[i]越低越好。[/i]" +msgid "" +"Number of active navigation maps in the [NavigationServer3D]. This also " +"includes the two empty default navigation maps created by World2D and " +"World3D." +msgstr "" +"[NavigationServer3D] 中活动导航地图的数量。也包含 World2D 和 World3D 所创建的" +"两张默认导航地图。" + +msgid "Number of active navigation regions in the [NavigationServer3D]." +msgstr "[NavigationServer3D] 中活动导航地区的数量。" + +msgid "" +"Number of active navigation agents processing avoidance in the " +"[NavigationServer3D]." +msgstr "[NavigationServer3D] 中正在处理避障的活动导航代理的数量。" + +msgid "Number of active navigation links in the [NavigationServer3D]." +msgstr "[NavigationServer3D] 中活动导航链接的数量。" + msgid "Number of navigation mesh polygons in the [NavigationServer3D]." msgstr "[NavigationServer3D] 中导航网格多边形的数量。" @@ -44121,6 +53310,31 @@ msgid "Represents the size of the [enum Monitor] enum." msgstr "代表 [enum Monitor] 枚举的大小。" msgid "" +"If [code]true[/code], the [code]PhysicalBone2D[/code] node will " +"automatically configure the first [Joint2D] child node. The automatic " +"configuration is limited to setting up the node properties and positioning " +"the [Joint2D]." +msgstr "" +"如果为 [code]true[/code],[code]PhysicalBone2D[/code] 节点会自动配置第一个 " +"[Joint2D] 子节点。自动配置仅限于设置节点属性和定位该 [Joint2D]。" + +msgid "" +"If [code]true[/code], the [code]PhysicalBone2D[/code] will start simulating " +"using physics. If [code]false[/code], the [code]PhysicalBone2D[/code] will " +"follow the transform of the [Bone2D] node.\n" +"[b]Note:[/b] To have the Bone2D nodes visually follow the " +"[code]PhysicalBone2D[/code] node, use a " +"[SkeletonModification2DPhysicalBones] modification on the [Skeleton2D] node " +"with the [Bone2D] nodes." +msgstr "" +"如果为 [code]true[/code],[code]PhysicalBone2D[/code] 将开始使用物理进行模" +"拟。如果为 [code]false[/code],[code]PhysicalBone2D[/code] 将跟随 [Bone2D] 节" +"点的变换。\n" +"[b]注意:[/b]要使 Bone2D 节点在视觉上跟随 [code]PhysicalBone2D[/code] 节点," +"请在具有 [Bone2D] 节点的 [Skeleton2D] 节点上使用一个 " +"[SkeletonModification2DPhysicalBones] 修改。" + +msgid "" "Called during physics processing, allowing you to read and safely modify the " "simulation state for the object. By default, it works in addition to the " "usual physics behavior, but the [member custom_integrator] property allows " @@ -44151,6 +53365,12 @@ msgstr "" "了碰撞响应之外,物体将仅根据 [method _integrate_forces] 函数确定的方式移动" "(如果已定义)。" +msgid "" +"The body's friction, from [code]0[/code] (frictionless) to [code]1[/code] " +"(max friction)." +msgstr "" +"该物体的摩擦,从 [code]0[/code](无摩擦)到 [code]1[/code](最大摩擦)。" + msgid "Sets the joint's transform." msgstr "设置该关节的变换。" @@ -44280,6 +53500,36 @@ msgid "" "Removes a body from the list of bodies that this body can't collide with." msgstr "将一个物体从该物体不能碰撞的物体列表中移除。" +msgid "" +"Checks for collisions without moving the body. In order to be frame rate " +"independent in [method Node._physics_process] or [method Node._process], " +"[param motion] should be computed using [code]delta[/code].\n" +"Virtually sets the node's position, scale and rotation to that of the given " +"[Transform2D], then tries to move the body along the vector [param motion]. " +"Returns [code]true[/code] if a collision would stop the body from moving " +"along the whole path.\n" +"[param collision] is an optional object of type [KinematicCollision2D], " +"which contains additional information about the collision when stopped, or " +"when touching another body along the motion.\n" +"[param safe_margin] is the extra margin used for collision recovery (see " +"[member CharacterBody2D.safe_margin] for more details).\n" +"If [param recovery_as_collision] is [code]true[/code], any depenetration " +"from the recovery phase is also reported as a collision; this is useful for " +"checking whether the body would [i]touch[/i] any other bodies." +msgstr "" +"在不移动实体的情况下检查碰撞。为了在 [method Node._physics_process] 或 " +"[method Node._process] 中独立于帧速率,[param motion] 应该使用 [code]delta[/" +"code] 来计算。\n" +"实际上是将节点的位置、缩放和旋转设置为给定 [Transform2D] 的位置、缩放和旋转," +"然后尝试沿向量 [param motion] 移动实体。如果碰撞会阻止实体沿整个路径移动,则" +"返回 [code]true[/code]。\n" +"[param collision] 是类型为 [KinematicCollision2D] 的一个可选对象,它包含有关" +"停止时碰撞、或沿运动接触另一个实体时碰撞的附加信息。\n" +"[param safe_margin] 是用于碰撞恢复的额外余量(有关更多详细信息,请参阅 " +"[member CharacterBody2D.safe_margin])。\n" +"如果 [param recovery_as_collision] 为 [code]true[/code],恢复阶段的任何穿透也" +"将被报告为碰撞;这对于检查该实体是否会[i]接触[/i]其他任意实体很有用。" + msgid "Base class for all objects affected by physics in 3D space." msgstr "在 3D 空间中受物理影响的所有对象的基类。" @@ -44313,6 +53563,38 @@ msgstr "" "善对地板检测。\n" "[param max_collisions] 可用于检索多次碰撞的结果。" +msgid "" +"Checks for collisions without moving the body. In order to be frame rate " +"independent in [method Node._physics_process] or [method Node._process], " +"[param motion] should be computed using [code]delta[/code].\n" +"Virtually sets the node's position, scale and rotation to that of the given " +"[Transform3D], then tries to move the body along the vector [param motion]. " +"Returns [code]true[/code] if a collision would stop the body from moving " +"along the whole path.\n" +"[param collision] is an optional object of type [KinematicCollision3D], " +"which contains additional information about the collision when stopped, or " +"when touching another body along the motion.\n" +"[param safe_margin] is the extra margin used for collision recovery (see " +"[member CharacterBody3D.safe_margin] for more details).\n" +"If [param recovery_as_collision] is [code]true[/code], any depenetration " +"from the recovery phase is also reported as a collision; this is useful for " +"checking whether the body would [i]touch[/i] any other bodies.\n" +"[param max_collisions] allows to retrieve more than one collision result." +msgstr "" +"在不移动实体的情况下检查碰撞。为了在 [method Node._physics_process] 或 " +"[method Node._process] 中独立于帧速率,[param motion] 应该使用 [code]delta[/" +"code] 来计算。\n" +"实际上是将节点的位置、缩放和旋转设置为给定 [Transform3D] 的位置、缩放和旋转," +"然后尝试沿向量 [param motion] 移动实体。如果碰撞会阻止实体沿整个路径移动,则" +"返回 [code]true[/code]。\n" +"[param collision] 是类型为 [KinematicCollision3D] 的一个可选对象,它包含有关" +"停止时碰撞、或沿运动接触另一个实体时碰撞的附加信息。\n" +"[param safe_margin] 是用于碰撞恢复的额外余量(有关更多详细信息,请参阅 " +"[member CharacterBody3D.safe_margin])。\n" +"如果 [param recovery_as_collision] 为 [code]true[/code],恢复阶段的任何穿透也" +"将被报告为碰撞;这对于检查该实体是否会[i]接触[/i]其他任意实体很有用。\n" +"[param max_collisions] 允许检索一个以上的碰撞结果。" + msgid "Lock the body's rotation in the X axis." msgstr "锁定物体在 X 轴上的旋转。" @@ -44331,9 +53613,70 @@ msgstr "锁定物体在 Y 轴上的线性运动。" msgid "Lock the body's linear movement in the Z axis." msgstr "锁定物体在 Z 轴上的线性运动。" +msgid "Direct access object to a physics body in the [PhysicsServer2D]." +msgstr "用于对 [PhysicsServer2D] 中的物理物体进行直接访问的对象。" + msgid "Ray-casting" msgstr "发射射线" +msgid "" +"Adds a constant positioned force to the body that keeps being applied over " +"time until cleared with [code]constant_force = Vector2(0, 0)[/code].\n" +"[param position] is the offset from the body origin in global coordinates." +msgstr "" +"向实体添加一个恒定的定位力,持续施加,直到用 [code]constant_force = " +"Vector2(0, 0)[/code] 清除。\n" +"[param position] 是在全局坐标中距实体原点的偏移量。" + +msgid "" +"Applies a positioned force to the body. A force is time dependent and meant " +"to be applied every physics update.\n" +"[param position] is the offset from the body origin in global coordinates." +msgstr "" +"对实体施加一个定位力。力是时间相关的,意味着每次物理更新都会被施加。\n" +"[param position] 是在全局坐标中距实体原点的偏移量。" + +msgid "" +"Applies a positioned impulse to the body.\n" +"An impulse is time-independent! Applying an impulse every frame would result " +"in a framerate-dependent force. For this reason, it should only be used when " +"simulating one-time impacts (use the \"_force\" functions otherwise).\n" +"[param position] is the offset from the body origin in global coordinates." +msgstr "" +"向实体施加一个定位冲力。\n" +"冲力是时间无关的!每帧施加一个冲力将产生一个依赖于帧速率的力。出于这个原因," +"它应该只在模拟一次性影响时使用(否则使用“_force”函数)。\n" +"[param position] 是在全局坐标中距实体原点的偏移量。" + +msgid "" +"Applies a rotational force without affecting position. A force is time " +"dependent and meant to be applied every physics update.\n" +"[b]Note:[/b] [member inverse_inertia] is required for this to work. To have " +"[member inverse_inertia], an active [CollisionShape2D] must be a child of " +"the node, or you can manually set [member inverse_inertia]." +msgstr "" +"在不影响位置的情况下施加一个旋转力。力是时间相关的,这意味着每次物理更新都会" +"被施加。\n" +"[b]注意:[/b][member inverse_inertia] 是生效所必需的。要拥有 [member " +"inverse_inertia],活动的 [CollisionShape2D] 必须是该节点的子节点,或者可以手" +"动设置 [member inverse_inertia]。" + +msgid "" +"Applies a rotational impulse to the body without affecting the position.\n" +"An impulse is time-independent! Applying an impulse every frame would result " +"in a framerate-dependent force. For this reason, it should only be used when " +"simulating one-time impacts (use the \"_force\" functions otherwise).\n" +"[b]Note:[/b] [member inverse_inertia] is required for this to work. To have " +"[member inverse_inertia], an active [CollisionShape2D] must be a child of " +"the node, or you can manually set [member inverse_inertia]." +msgstr "" +"在不影响位置的情况下,向实体施加一个旋转冲力。\n" +"冲力是时间无关的!每帧施加一个冲力将产生一个依赖于帧速率的力。出于这个原因," +"它应该只在模拟一次性影响时使用(否则使用“_force”函数)。\n" +"[b]注意:[/b][member inverse_inertia] 是生效所必需的。要拥有 [member " +"inverse_inertia],活动的 [CollisionShape2D] 必须是该节点的一个子节点,或者可" +"以手动设置 [member inverse_inertia]。" + msgid "Returns the collider's [RID]." msgstr "返回该碰撞体的 [RID]。" @@ -44419,12 +53762,150 @@ msgstr "物体停止运动的速率,如果没有任何其他力使它运动。 msgid "The body's transformation matrix." msgstr "物体的变换矩阵。" +msgid "Direct access object to a physics body in the [PhysicsServer3D]." +msgstr "用于对 [PhysicsServer3D] 中的物理物体进行直接访问的对象。" + +msgid "" +"Adds a constant positioned force to the body that keeps being applied over " +"time until cleared with [code]constant_force = Vector3(0, 0, 0)[/code].\n" +"[param position] is the offset from the body origin in global coordinates." +msgstr "" +"向实体添加一个恒定的定位力,持续施加,直到用 [code]constant_force = " +"Vector3(0, 0, 0)[/code] 清除。\n" +"[param position] 是在全局坐标中距实体原点的偏移量。" + +msgid "" +"Applies a rotational impulse to the body without affecting the position.\n" +"An impulse is time-independent! Applying an impulse every frame would result " +"in a framerate-dependent force. For this reason, it should only be used when " +"simulating one-time impacts (use the \"_force\" functions otherwise).\n" +"[b]Note:[/b] [member inverse_inertia] is required for this to work. To have " +"[member inverse_inertia], an active [CollisionShape3D] must be a child of " +"the node, or you can manually set [member inverse_inertia]." +msgstr "" +"在不影响位置的情况下,向实体施加一个旋转冲力。\n" +"冲力是时间无关的!每帧施加一个冲力将产生一个依赖于帧速率的力。出于这个原因," +"它应该只在模拟一次性影响时使用(否则使用“_force”函数)。\n" +"[b]注意:[/b][member inverse_inertia] 是生效所必需的。要拥有 [member " +"inverse_inertia],活动的 [CollisionShape3D] 必须是该节点的子节点,或者可以手" +"动设置 [member inverse_inertia]。" + msgid "Returns the collider object." msgstr "返回碰撞对象。" msgid "The body's linear velocity in units per second." msgstr "物体的线速度,单位为单位每秒。" +msgid "Direct access object to a space in the [PhysicsServer2D]." +msgstr "用于对 [PhysicsServer2D] 中的空间进行直接访问的对象。" + +msgid "" +"Direct access object to a space in the [PhysicsServer2D]. It's used mainly " +"to do queries against objects and areas residing in a given space." +msgstr "" +"[PhysicsServer2D] 中的一个空间的直接访问对象。主要用于对驻留在给定空间中的对" +"象和区域进行查询。" + +msgid "" +"Checks whether a point is inside any solid shape. Position and other " +"parameters are defined through [PhysicsPointQueryParameters2D]. The shapes " +"the point is inside of are returned in an array containing dictionaries with " +"the following fields:\n" +"[code]collider[/code]: The colliding object.\n" +"[code]collider_id[/code]: The colliding object's ID.\n" +"[code]rid[/code]: The intersecting object's [RID].\n" +"[code]shape[/code]: The shape index of the colliding shape.\n" +"The number of intersections can be limited with the [param max_results] " +"parameter, to reduce the processing time.\n" +"[b]Note:[/b] [ConcavePolygonShape2D]s and [CollisionPolygon2D]s in " +"[code]Segments[/code] build mode are not solid shapes. Therefore, they will " +"not be detected." +msgstr "" +"检查点是否在任何实体形状内。位置和其他参数通过 " +"[PhysicsPointQueryParameters2D] 定义。点所在的形状在包含具有以下字段的字典的" +"数组中返回:\n" +"[code]collider[/code]:碰撞对象。\n" +"[code]collider_id[/code]:碰撞对象的 ID。\n" +"[code]rid[/code]:相交对象的 [RID]。\n" +"[code]shape[/code]:碰撞形状的形状索引。\n" +"可以使用 [param max_results] 参数限制相交的数量,以减少处理时间。\n" +"[b]注意:[/b]在 [code]Segments[/code] 构建模式下,[ConcavePolygonShape2D] 和 " +"[CollisionPolygon2D] 不是实体形状。因此,它们不会被检测到。" + +msgid "" +"Checks the intersections of a shape, given through a " +"[PhysicsShapeQueryParameters2D] object, against the space. The intersected " +"shapes are returned in an array containing dictionaries with the following " +"fields:\n" +"[code]collider[/code]: The colliding object.\n" +"[code]collider_id[/code]: The colliding object's ID.\n" +"[code]rid[/code]: The intersecting object's [RID].\n" +"[code]shape[/code]: The shape index of the colliding shape.\n" +"The number of intersections can be limited with the [param max_results] " +"parameter, to reduce the processing time." +msgstr "" +"检查通过 [PhysicsShapeQueryParameters2D] 对象给出的形状与空间的交点。相交的形" +"状会以数组的形式返回,该数组包含有以下字段的字典:\n" +"[code]collider[/code]:碰撞对象。\n" +"[code]collider_id[/code]:碰撞对象的 ID。\n" +"[code]rid[/code]:相交对象的[RID]。\n" +"[code]shape[/code]:碰撞形状的形状索引。\n" +"可以使用 [param max_results] 参数限制相交的数量,以减少处理时间。" + +msgid "Direct access object to a space in the [PhysicsServer3D]." +msgstr "用于对 [PhysicsServer3D] 中的空间进行直接访问的对象。" + +msgid "" +"Direct access object to a space in the [PhysicsServer3D]. It's used mainly " +"to do queries against objects and areas residing in a given space." +msgstr "" +"[PhysicsServer3D] 中的一个空间的直接访问对象。主要用于对驻留在给定空间中的对" +"象和区域进行查询。" + +msgid "" +"Checks whether a point is inside any solid shape. Position and other " +"parameters are defined through [PhysicsPointQueryParameters3D]. The shapes " +"the point is inside of are returned in an array containing dictionaries with " +"the following fields:\n" +"[code]collider[/code]: The colliding object.\n" +"[code]collider_id[/code]: The colliding object's ID.\n" +"[code]rid[/code]: The intersecting object's [RID].\n" +"[code]shape[/code]: The shape index of the colliding shape.\n" +"The number of intersections can be limited with the [param max_results] " +"parameter, to reduce the processing time." +msgstr "" +"检查点是否在任何实体形状内。位置和其他参数通过 " +"[PhysicsPointQueryParameters3D] 定义。点所在的形状会以数组的形式返回,该数组" +"包含有以下字段的字典:\n" +"[code]collider[/code]:碰撞对象。\n" +"[code]collider_id[/code]:碰撞对象的 ID。\n" +"[code]rid[/code]:相交对象的[RID]。\n" +"[code]shape[/code]:碰撞形状的形状索引。\n" +"可以使用 [param max_results] 参数限制相交的数量,以减少处理时间。" + +msgid "" +"Checks the intersections of a shape, given through a " +"[PhysicsShapeQueryParameters3D] object, against the space. The intersected " +"shapes are returned in an array containing dictionaries with the following " +"fields:\n" +"[code]collider[/code]: The colliding object.\n" +"[code]collider_id[/code]: The colliding object's ID.\n" +"[code]rid[/code]: The intersecting object's [RID].\n" +"[code]shape[/code]: The shape index of the colliding shape.\n" +"The number of intersections can be limited with the [param max_results] " +"parameter, to reduce the processing time.\n" +"[b]Note:[/b] This method does not take into account the [code]motion[/code] " +"property of the object." +msgstr "" +"检查通过 [PhysicsShapeQueryParameters3D] 对象给出的形状与空间的交点。相交的形" +"状在包含具有以下字段的字典的数组中返回:\n" +"[code]collider[/code]:碰撞对象。\n" +"[code]collider_id[/code]:碰撞对象的 ID。\n" +"[code]rid[/code]:相交对象的 [RID]。\n" +"[code]shape[/code]:碰撞形状的形状索引。\n" +"可以使用 [param max_results] 参数限制相交的数量,以减少处理时间。\n" +"[b]注意:[/b]该方法不考虑对象的 [code]motion[/code] 属性。" + msgid "A material for physics properties." msgstr "具有物理属性的材质。" @@ -44452,6 +53933,16 @@ msgstr "" "的摩擦。如果 [code]false[/code],物理引擎将使用所有碰撞物体的最低摩擦力来代" "替。如果两个碰撞的对象都为 [code]true[/code],物理引擎将使用最高的摩擦力。" +msgid "" +"If different from [code]0[/code], restricts the query to a specific canvas " +"layer specified by its instance ID. See [method Object.get_instance_id].\n" +"If [code]0[/code], restricts the query to the Viewport's default canvas " +"layer." +msgstr "" +"如果与 [code]0[/code] 不同,则将查询限制为由其实例 ID 指定的特定画布层。请参" +"阅 [method Object.get_instance_id]。\n" +"如果为 [code]0[/code],则将查询限制为视口的默认画布层。" + msgid "If [code]true[/code], the query will take [Area2D]s into account." msgstr "如果为 [code]true[/code],查询将考虑 [Area2D]。" @@ -44459,6 +53950,25 @@ msgid "" "If [code]true[/code], the query will take [PhysicsBody2D]s into account." msgstr "如果为 [code]true[/code],查询将考虑 [PhysicsBody2D]。" +msgid "The position being queried for, in global coordinates." +msgstr "要查询的位置,使用全局坐标。" + +msgid "Parameters to be sent to a 3D point physics query." +msgstr "要发送到 3D 点物理查询的参数。" + +msgid "If [code]true[/code], the query will take [Area3D]s into account." +msgstr "如果为 [code]true[/code],则查询将考虑 [Area3D]。" + +msgid "" +"If [code]true[/code], the query will take [PhysicsBody3D]s into account." +msgstr "如果为 [code]true[/code],则查询将考虑 [PhysicsBody3D]。" + +msgid "Parameters to be sent to a 2D ray physics query." +msgstr "要发送到 2D 射线物理查询的参数。" + +msgid "The starting point of the ray being queried for, in global coordinates." +msgstr "要查询的射线起点,使用全局坐标。" + 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)[/" @@ -44467,6 +53977,12 @@ msgstr "" "如果为 [code]true[/code],查询会在从形状内部开始时检测到命中。在此情况下,碰" "撞法线将为 [code]Vector2(0, 0)[/code]。不会影响凹多边形形状。" +msgid "The ending point of the ray being queried for, in global coordinates." +msgstr "要查询的射线终点,使用全局坐标。" + +msgid "Parameters to be sent to a 3D ray physics query." +msgstr "要发送到 3D 射线物理查询的参数。" + 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)[/" @@ -44478,6 +53994,107 @@ msgstr "" msgid "Server interface for low-level 2D physics access." msgstr "用于底层 2D 物理访问服务的接口。" +msgid "" +"PhysicsServer2D is the server responsible for all 2D physics. It can " +"directly create and manipulate all physics objects:\n" +"- A [i]space[/i] is a self-contained world for a physics simulation. It " +"contains bodies, areas, and joints. Its state can be queried for collision " +"and intersection information, and several parameters of the simulation can " +"be modified.\n" +"- A [i]shape[/i] is a geometric figure such as a circle, a rectangle, a " +"capsule, or a polygon. It can be used for collision detection by adding it " +"to a body/area, possibly with an extra transformation relative to the body/" +"area's origin. Bodies/areas can have multiple (transformed) shapes added to " +"them, and a single shape can be added to bodies/areas multiple times with " +"different local transformations.\n" +"- A [i]body[/i] is a physical object which can be in static, kinematic, or " +"rigid mode. Its state (such as position and velocity) can be queried and " +"updated. A force integration callback can be set to customize the body's " +"physics.\n" +"- An [i]area[/i] is a region in space which can be used to detect bodies and " +"areas entering and exiting it. A body monitoring callback can be set to " +"report entering/exiting body shapes, and similarly an area monitoring " +"callback can be set. Gravity and damping can be overridden within the area " +"by setting area parameters.\n" +"- A [i]joint[/i] is a constraint, either between two bodies or on one body " +"relative to a point. Parameters such as the joint bias and the rest length " +"of a spring joint can be adjusted.\n" +"Physics objects in the physics server may be created and manipulated " +"independently; they do not have to be tied to nodes in the scene tree.\n" +"[b]Note:[/b] All the physics nodes use the physics server internally. Adding " +"a physics node to the scene tree will cause a corresponding physics object " +"to be created in the physics server. A rigid body node registers a callback " +"that updates the node's transform with the transform of the respective body " +"object in the physics server (every physics update). An area node registers " +"a callback to inform the area node about overlaps with the respective area " +"object in the physics server. The raycast node queries the direct state of " +"the relevant space in the physics server." +msgstr "" +"PhysicsServer2D 是负责所有 2D 物理的服务器。它可以直接创建和操作所有物理对" +"象:\n" +"- [i]空间[/i]是指一个独立的物理模拟世界。它包含实体、区域和关节。可以查询其状" +"态以获取碰撞和相交信息,并且可以修改模拟的几个参数。\n" +"- [i]形状[/i]是指一个几何图形,例如圆形、矩形、胶囊或多边形。可以通过将其添加" +"到实体/区域以用于碰撞检测,可能具有相对于实体/区域原点的额外变换。可以向实体/" +"区域添加多个(变换后的)形状,并且可以多次使用不同的局部变换将单个形状添加到" +"实体/区域中。\n" +"- [i]实体[/i]是指一个物理对象,它可以处于静态、运动学或刚性模式。可以查询和更" +"新其状态(例如位置和速度)。可以设置力积分回调来自定义实体的物理特性。\n" +"- [i]区域[/i]是指空间中的一个区域,可用于检测进入和离开它的实体和区域。可以设" +"置实体的监测回调以报告进入/离开的实体形状,同样可以设置区域的监测回调。通过设" +"置区域参数,可以在区域内覆盖重力和阻尼。\n" +"- [i]关节[/i]是两个实体之间或一个实体上相对于一个点的约束。可以调整关节偏置和" +"弹簧关节的放松长度等参数。\n" +"物理服务器中的物理对象可以独立创建和操作;不必将它们绑定到场景树中的节点。\n" +"[b]注意:[/b]所有物理节点都在内部使用物理服务器。将物理节点添加到场景树,将导" +"致在物理服务器中创建相应的物理对象。刚体节点注册一个回调,该回调使用物理服务" +"器中相应刚体对象的变换更新该节点的变换(每次物理更新)。区域节点注册回调,以" +"通知区域节点与物理服务器中相应区域对象的重叠。射线投射节点查询物理服务器中相" +"关空间的直接状态。" + +msgid "" +"Adds a shape to the area, with the given local transform. The shape " +"(together with its [param transform] and [param disabled] properties) is " +"added to an array of shapes, and the shapes of an area are usually " +"referenced by their index in this array." +msgstr "" +"使用给定的局部变换向区域添加一个形状。该形状(连同它的 [param transform] 和 " +"[param disabled] 属性)被添加到一个形状数组中,一个区域的形状通常由它们在这个" +"数组中的索引引用。" + +msgid "" +"Attaches the [code]ObjectID[/code] of a canvas to the area. Use [method " +"Object.get_instance_id] to get the [code]ObjectID[/code] of a [CanvasLayer]." +msgstr "" +"将画布的 [code]ObjectID[/code] 附加到该区域。使用 [method Object." +"get_instance_id] 获取 [CanvasLayer] 的 [code]ObjectID[/code]。" + +msgid "" +"Attaches the [code]ObjectID[/code] of an [Object] to the area. Use [method " +"Object.get_instance_id] to get the [code]ObjectID[/code] of a " +"[CollisionObject2D]." +msgstr "" +"将 [Object] 的 [code]ObjectID[/code] 附加到该区域。使用 [method Object." +"get_instance_id] 获取 [CollisionObject2D] 的 [code]ObjectID[/code]。" + +msgid "" +"Creates a 2D area object in the physics server, and returns the [RID] that " +"identifies it. Use [method area_add_shape] to add shapes to it, use [method " +"area_set_transform] to set its transform, and use [method area_set_space] to " +"add the area to a space." +msgstr "" +"在物理服务中创建一个 2D 区域对象,并返回标识它的 [RID]。使用 [method " +"area_add_shape] 为其添加形状,使用 [method area_set_transform] 设置其变换,并" +"使用 [method area_set_space] 将区域添加到一个空间。" + +msgid "" +"Returns the [code]ObjectID[/code] of the canvas attached to the area. Use " +"[method @GlobalScope.instance_from_id] to retrieve a [CanvasLayer] from a " +"nonzero [code]ObjectID[/code]." +msgstr "" +"返回附加到该区域的画布的 [code]ObjectID[/code]。使用 [method @GlobalScope." +"instance_from_id] 从非零 [code]ObjectID[/code] 检索一个 [CanvasLayer]。" + msgid "Returns the physics layer or layers the area belongs to, as a bitmask." msgstr "返回该区域所属的物理层,形式为位掩码。" @@ -44485,22 +54102,620 @@ msgid "" "Returns the physics layer or layers the area can contact with, as a bitmask." msgstr "返回该区域所能接触的物理层,形式为位掩码。" +msgid "" +"Returns the [code]ObjectID[/code] attached to the area. Use [method " +"@GlobalScope.instance_from_id] to retrieve an [Object] from a nonzero " +"[code]ObjectID[/code]." +msgstr "" +"返回附加到该区域的 [code]ObjectID[/code]。可使用 [method @GlobalScope." +"instance_from_id] 从非零 [code]ObjectID[/code] 中检索一个 [Object]。" + msgid "Returns the number of shapes added to the area." msgstr "返回添加给该区域的形状数量。" msgid "Returns the transform matrix of the area." msgstr "返回该区域的变换矩阵。" +msgid "" +"Removes the shape with the given index from the area's array of shapes. The " +"shape itself is not deleted, so it can continue to be used elsewhere or " +"added back later. As a result of this operation, the area's shapes which " +"used to have indices higher than [param shape_idx] will have their index " +"decreased by one." +msgstr "" +"从区域的形状数组中移除具有给定索引的形状。该形状本身并没有被删除,所以它可以" +"继续在别处使用或稍后添加回来。此操作会使曾经索引高于 [param shape_idx] 的区域" +"形状的索引将减少一个。" + +msgid "" +"Sets the area's area monitor callback. This callback will be called when any " +"other (shape of an) area enters or exits (a shape of) the given area, and " +"must take the following five parameters:\n" +"1. an integer [code]status[/code]: either [constant AREA_BODY_ADDED] or " +"[constant AREA_BODY_REMOVED] depending on whether the other area's shape " +"entered or exited the area,\n" +"2. an [RID] [code]area_rid[/code]: the [RID] of the other area that entered " +"or exited the area,\n" +"3. an integer [code]instance_id[/code]: the [code]ObjectID[/code] attached " +"to the other area,\n" +"4. an integer [code]area_shape_idx[/code]: the index of the shape of the " +"other area that entered or exited the area,\n" +"5. an integer [code]self_shape_idx[/code]: the index of the shape of the " +"area where the other area entered or exited.\n" +"By counting (or keeping track of) the shapes that enter and exit, it can be " +"determined if an area (with all its shapes) is entering for the first time " +"or exiting for the last time." +msgstr "" +"设置该区域的区域监视回调。当任何其他(形状)区域进入或退出(形状)给定区域" +"时,将调用此回调,并且必须采用以下五个参数:\n" +"1. 一个整数 [code]status[/code]:[constant AREA_BODY_ADDED] 或 [constant " +"AREA_BODY_REMOVED] 取决于其他区域的形状是进入还是退出该区域,\n" +"2. 一个 [RID] [code]area_rid[/code]:进入或退出该区域的其他区域的 [RID],\n" +"3. 一个整数 [code]instance_id[/code]:附加到其他区域的 [code]ObjectID[/" +"code],\n" +"4. 一个整数 [code]area_shape_idx[/code]:进入或退出该区域的其他区域的形状索" +"引,\n" +"5. 一个整数 [code]self_shape_idx[/code]:其他区域进入或退出的区域的形状索" +"引。\n" +"通过计算(或跟踪)进入和退出的形状,可以确定一个区域(及其所有形状)是第一次" +"进入还是最后一次退出。" + msgid "Assigns the area to one or many physics layers, via a bitmask." msgstr "将该区域分配给若干个物理层,使用位掩码。" msgid "Sets which physics layers the area will monitor, via a bitmask." msgstr "设置该区域所监视的物理层,使用位掩码。" +msgid "" +"Sets the area's body monitor callback. This callback will be called when any " +"other (shape of a) body enters or exits (a shape of) the given area, and " +"must take the following five parameters:\n" +"1. an integer [code]status[/code]: either [constant AREA_BODY_ADDED] or " +"[constant AREA_BODY_REMOVED] depending on whether the other body shape " +"entered or exited the area,\n" +"2. an [RID] [code]body_rid[/code]: the [RID] of the body that entered or " +"exited the area,\n" +"3. an integer [code]instance_id[/code]: the [code]ObjectID[/code] attached " +"to the body,\n" +"4. an integer [code]body_shape_idx[/code]: the index of the shape of the " +"body that entered or exited the area,\n" +"5. an integer [code]self_shape_idx[/code]: the index of the shape of the " +"area where the body entered or exited.\n" +"By counting (or keeping track of) the shapes that enter and exit, it can be " +"determined if a body (with all its shapes) is entering for the first time or " +"exiting for the last time." +msgstr "" +"设置区域的实体监视器回调。当任何其他(形状的)实体进入或退出(形状的)给定区" +"域时,将调用此回调,并且必须采用以下五个参数:\n" +"1. 一个整数 [code]status[/code]:[constant AREA_BODY_ADDED] 或 [constant " +"AREA_BODY_REMOVED] 取决于其他实体形状是否进入或退出该区域,\n" +"2. 一个 [RID] [code]body_rid[/code]:进入或离开该区域的实体的 [RID],\n" +"3. 一个整数 [code]instance_id[/code]:附加到该实体上的 [code]ObjectID[/" +"code],\n" +"4. 一个整数 [code]body_shape_idx[/code]:进入或离开该区域的实体形状索引,\n" +"5. 一个整数 [code]self_shape_idx[/code]:实体进入或离开的区域的形状索引。\n" +"通过计算(或跟踪)进入和退出的形状,可以确定一个实体(及其所有形状)是第一次" +"进入还是最后一次退出。" + +msgid "" +"Sets whether the area is monitorable or not. If [param monitorable] is " +"[code]true[/code], the area monitoring callback of other areas will be " +"called when this area enters or exits them." +msgstr "" +"设置该区域是否可监视。如果 [param monitorable] 为 [code]true[/code],则该区域" +"进入或退出其他区域时,会调用其他区域的区域监视回调。" + +msgid "" +"Replaces the area's shape at the given index by another shape, while not " +"affecting the [code]transform[/code] and [code]disabled[/code] properties at " +"the same index." +msgstr "" +"用另一个形状替换给定索引处的区域形状,同时不会影响在同一索引处的 " +"[code]transform[/code] 和 [code]disabled[/code] 属性。" + +msgid "" +"Sets the disabled property of the area's shape with the given index. If " +"[param disabled] is [code]true[/code], then the shape will not detect any " +"other shapes entering or exiting it." +msgstr "" +"使用给定索引设置区域形状的禁用属性。如果 [param disabled] 为 [code]true[/" +"code],则该形状将不会检测任何其他形状进入或退出它。" + +msgid "" +"Adds the area to the given space, after removing the area from the " +"previously assigned space (if any).\n" +"[b]Note:[/b] To remove an area from a space without immediately adding it " +"back elsewhere, use [code]PhysicsServer2D.area_set_space(area, RID())[/code]." +msgstr "" +"从先前赋予的空间(如果有)中移除该区域后,将该区域添加到给定空间。\n" +"[b]注意:[/b]要从空间中移除一个区域而不立即将其添加回其他地方,请使用 " +"[code]PhysicsServer2D.area_set_space(area, RID())[/code]。" + msgid "Sets the transform matrix of the area." msgstr "设置该区域的变换矩阵。" msgid "" +"Adds [param excepted_body] to the body's list of collision exceptions, so " +"that collisions with it are ignored." +msgstr "" +"将 [param excepted_body] 添加到实体的碰撞例外列表中,以便忽略与它的碰撞。" + +msgid "" +"Adds a constant positioned force to the body. The force can affect rotation " +"if [param position] is different from the body's center of mass. The force " +"remains applied over time until cleared with [code]PhysicsServer2D." +"body_set_constant_force(body, Vector2(0, 0))[/code].\n" +"[param position] is the offset from the body origin in global coordinates." +msgstr "" +"向实体添加一个恒定的定位力。如果 [param position] 与实体的质心不同,则力会影" +"响旋转。力会持续施加,直到使用 [code]PhysicsServer2D." +"body_set_constant_force(body, Vector2(0, 0))[/code] 清除。\n" +"[param position] 是在全局坐标中距实体原点的偏移量。" + +msgid "" +"Adds a shape to the area, with the given local transform. The shape " +"(together with its [param transform] and [param disabled] properties) is " +"added to an array of shapes, and the shapes of a body are usually referenced " +"by their index in this array." +msgstr "" +"使用给定的局部变换向该区域添加一个形状。该形状(连同它的 [param transform] " +"和 [param disabled] 属性)将被添加到一个形状数组中,一个实体的形状通常由它们" +"在这个数组中的索引引用。" + +msgid "" +"Applies a positioned force to the body. The force can affect rotation if " +"[param position] is different from the body's center of mass. A force is " +"time dependent and meant to be applied every physics update.\n" +"[param position] is the offset from the body origin in global coordinates." +msgstr "" +"向实体施加一个定位力。如果 [param position] 与实体的质心不同,则力会影响旋" +"转。力是时间相关的,意味着每次物理更新都会被施加。\n" +"[param position] 是在全局坐标中距实体原点的偏移量。" + +msgid "" +"Applies a positioned impulse to the body. The impulse can affect rotation if " +"[param position] is different from the body's center of mass.\n" +"An impulse is time-independent! Applying an impulse every frame would result " +"in a framerate-dependent force. For this reason, it should only be used when " +"simulating one-time impacts (use the \"_force\" functions otherwise).\n" +"[param position] is the offset from the body origin in global coordinates." +msgstr "" +"向实体施加一个定位冲力。如果 [param position] 与实体的质心不同,则该冲力会影" +"响旋转。\n" +"冲力是时间无关的!每帧施加一个冲力将产生一个依赖于帧速率的力。出于这个原因," +"它应该只在模拟一次性影响时使用(否则使用“_force”函数)。\n" +"[param position] 是在全局坐标中距实体原点的偏移量。" + +msgid "" +"Attaches the [code]ObjectID[/code] of a canvas to the body. Use [method " +"Object.get_instance_id] to get the [code]ObjectID[/code] of a [CanvasLayer]." +msgstr "" +"将画布的 [code]ObjectID[/code] 附加到该实体。可使用 [method Object." +"get_instance_id] 获取 [CanvasLayer] 的 [code]ObjectID[/code]。" + +msgid "" +"Attaches the [code]ObjectID[/code] of an [Object] to the body. Use [method " +"Object.get_instance_id] to get the [code]ObjectID[/code] of a " +"[CollisionObject2D]." +msgstr "" +"将 [Object] 的 [code]ObjectID[/code] 附加到该实体。可使用 [method Object." +"get_instance_id] 获取 [CollisionObject2D] 的 [code]ObjectID[/code]。" + +msgid "" +"Creates a 2D body object in the physics server, and returns the [RID] that " +"identifies it. Use [method body_add_shape] to add shapes to it, use [method " +"body_set_state] to set its transform, and use [method body_set_space] to add " +"the body to a space." +msgstr "" +"在物理服务中创建一个 2D 物体对象,并返回标识它的 [RID]。可使用 [method " +"body_add_shape] 为其添加形状,使用 [method body_set_state] 设置其变换,以及使" +"用 [method body_set_space] 将实体添加到一个空间。" + +msgid "" +"Returns the [code]ObjectID[/code] of the canvas attached to the body. Use " +"[method @GlobalScope.instance_from_id] to retrieve a [CanvasLayer] from a " +"nonzero [code]ObjectID[/code]." +msgstr "" +"返回附加到该实体的画布的 [code]ObjectID[/code]。可使用 [method @GlobalScope." +"instance_from_id] 从非零 [code]ObjectID[/code] 检索一个 [CanvasLayer]。" + +msgid "" +"Returns the body's collision priority. This is used in the depenetration " +"phase of [method body_test_motion]. The higher the priority is, the lower " +"the penetration into the body will be." +msgstr "" +"返回该实体的碰撞优先级。这用于 [method body_test_motion] 的穿透阶段。优先级越" +"高,对该实体的穿透力就越低。" + +msgid "" +"Returns the body's continuous collision detection mode (see [enum CCDMode])." +msgstr "返回该物体的连续碰撞检测模式(见 [enum CCDMode])。" + +msgid "Returns the body's mode (see [enum BodyMode])." +msgstr "返回该物体的模式(见 [enum BodyMode])。" + +msgid "" +"Returns the [code]ObjectID[/code] attached to the body. Use [method " +"@GlobalScope.instance_from_id] to retrieve an [Object] from a nonzero " +"[code]ObjectID[/code]." +msgstr "" +"返回附加到该实体的 [code]ObjectID[/code]。可使用 [method @GlobalScope." +"instance_from_id] 从非零 [code]ObjectID[/code] 中检索一个 [Object]。" + +msgid "Returns the number of shapes added to the body." +msgstr "返回添加至该物体的形状的数量。" + +msgid "" +"Returns [code]true[/code] if the body uses a callback function to calculate " +"its own physics (see [method body_set_force_integration_callback])." +msgstr "" +"如果实体使用回调函数来计算自己的物理运算(请参阅 [method " +"body_set_force_integration_callback]),则返回 [code]true[/code]。" + +msgid "" +"Removes [param excepted_body] from the body's list of collision exceptions, " +"so that collisions with it are no longer ignored." +msgstr "" +"返回附加到该实体的 [code]ObjectID[/code]。可使用 [method @GlobalScope." +"instance_from_id] 从非零 [code]ObjectID[/code] 中检索一个 [Object]。" + +msgid "" +"Removes the shape with the given index from the body's array of shapes. The " +"shape itself is not deleted, so it can continue to be used elsewhere or " +"added back later. As a result of this operation, the body's shapes which " +"used to have indices higher than [param shape_idx] will have their index " +"decreased by one." +msgstr "" +"从该实体的形状数组中移除具有给定索引的形状。该形状本身并没有被删除,所以它可" +"以继续在别处使用或稍后添加回来。该操作将会使曾经索引高于 [param shape_idx] 的" +"实体形状的索引将减少一个。" + +msgid "" +"Modifies the body's linear velocity so that its projection to the axis " +"[code]axis_velocity.normalized()[/code] is exactly [code]axis_velocity." +"length()[/code]. This is useful for jumping behavior." +msgstr "" +"修改实体的线速度,使其到轴 [code]axis_velocity.normalized()[/code] 的投影正好" +"是 [code]axis_velocity.length()[/code]。这对于跳跃行为很有用。" + +msgid "Sets the physics layer or layers the body belongs to, via a bitmask." +msgstr "设置该物体所属的物理层,使用位掩码。" + +msgid "" +"Sets the physics layer or layers the body can collide with, via a bitmask." +msgstr "设置该物体能够碰撞的物理层,使用位掩码。" + +msgid "" +"Sets the body's collision priority. This is used in the depenetration phase " +"of [method body_test_motion]. The higher the priority is, the lower the " +"penetration into the body will be." +msgstr "" +"设置该实体的碰撞优先级。这用于 [method body_test_motion] 的穿透阶段。优先级越" +"高,对实体的穿透力就越低。" + +msgid "" +"Sets the function used to calculate physics for the body, if that body " +"allows it (see [method body_set_omit_force_integration]).\n" +"The force integration function takes the following two parameters:\n" +"1. a [PhysicsDirectBodyState2D] [code]state[/code]: used to retrieve and " +"modify the body's state,\n" +"2. a [Variant] [code]userdata[/code]: optional user data.\n" +"[b]Note:[/b] This callback is currently not called in Godot Physics." +msgstr "" +"如果该实体允许的话,设置用于计算实体物理的函数(参见 [method " +"body_set_omit_force_integration])。\n" +"该力的积分函数采用以下两个参数:\n" +"1. 一个 [PhysicsDirectBodyState2D] [code]state[/code]:用于检索和修改实体的状" +"态,\n" +"2. 一个 [Variant] [code]userdata[/code]:可选的用户数据。\n" +"[b]注意:[/b]该回调目前在 Godot 物理中不会被调用。" + +msgid "" +"Sets the maximum number of contacts that the body can report. If [param " +"amount] is greater than zero, then the body will keep track of at most this " +"many contacts with other bodies." +msgstr "" +"设置该实体可以报告的接触的最大数量。如果 [param amount] 大于零,那么实体将最" +"多跟踪与其他实体的这么多次接触。" + +msgid "" +"Replaces the body's shape at the given index by another shape, while not " +"affecting the [code]transform[/code], [code]disabled[/code], and one-way " +"collision properties at the same index." +msgstr "" +"用另一个形状替换给定索引处的实体形状,同时不会影响同一索引处的 " +"[code]transform[/code]、[code]disabled[/code] 和单向碰撞属性。" + +msgid "" +"Sets the one-way collision properties of the body's shape with the given " +"index. If [param enable] is [code]true[/code], the one-way collision " +"direction given by the shape's local upward axis " +"[code]body_get_shape_transform(body, shape_idx).y[/code] will be used to " +"ignore collisions with the shape in the opposite direction, and to ensure " +"depenetration of kinematic bodies happens in this direction." +msgstr "" +"使用给定索引设置实体形状的单向碰撞属性。如果 [param enable] 为 [code]true[/" +"code],则形状的局部向上轴 [code]body_get_shape_transform(body, shape_idx).y[/" +"code] 给出的单向碰撞方向将用于忽略与相反方向的形状,并确保运动实体的穿透发生" +"在这个方向上。" + +msgid "" +"Sets the disabled property of the body's shape with the given index. If " +"[param disabled] is [code]true[/code], then the shape will be ignored in all " +"collision detection." +msgstr "" +"使用给定索引设置实体形状的禁用属性。如果 [param disabled] 为 [code]true[/" +"code],则在所有碰撞检测中将忽略该形状。" + +msgid "" +"Adds the body to the given space, after removing the body from the " +"previously assigned space (if any). If the body's mode is set to [constant " +"BODY_MODE_RIGID], then adding the body to a space will have the following " +"additional effects:\n" +"- If the parameter [constant BODY_PARAM_CENTER_OF_MASS] has never been set " +"explicitly, then the value of that parameter will be recalculated based on " +"the body's shapes.\n" +"- If the parameter [constant BODY_PARAM_INERTIA] is set to a value [code]<= " +"0.0[/code], then the value of that parameter will be recalculated based on " +"the body's shapes, mass, and center of mass.\n" +"[b]Note:[/b] To remove a body from a space without immediately adding it " +"back elsewhere, use [code]PhysicsServer2D.body_set_space(body, RID())[/code]." +msgstr "" +"从先前分配的空间(若存在)中移除实体后,将该实体添加到给定空间。如果实体的模" +"式被设置为 [constant BODY_MODE_RIGID],则将该实体添加到空间将具有以下额外效" +"果:\n" +"- 如果从未明确设置参数 [constant BODY_PARAM_CENTER_OF_MASS],则该参数的值将根" +"据实体的形状重新计算。\n" +"- 如果参数 [constant BODY_PARAM_INERTIA] 被设置为一个 [code]<= 0.0[/code] 的" +"值,则该参数的值将根据实体的形状、质量、和质心重新计算。\n" +"[b]注意:[/b]要从一个空间中移除实体,且不立即将其添加回其他地方,请使用 " +"[code]PhysicsServer2D.body_set_space(body, RID())[/code]。" + +msgid "" +"Sets the value of a body's state. See [enum BodyState] for the list of " +"available states.\n" +"[b]Note:[/b] The state change doesn't take effect immediately. The state " +"will change on the next physics frame." +msgstr "" +"设置实体状态的值。有关可用状态的列表,请参阅 [enum BodyState]。\n" +"[b]注意:[/b]状态更改不会立即生效。状态更改将发生在下一个物理帧上。" + +msgid "" +"Creates a 2D capsule shape in the physics server, and returns the [RID] that " +"identifies it. Use [method shape_set_data] to set the capsule's height and " +"radius." +msgstr "" +"在物理服务中创建一个 2D 胶囊形状,并返回标识它的 [RID]。可使用 [method " +"shape_set_data] 设置胶囊的高度和半径。" + +msgid "" +"Creates a 2D circle shape in the physics server, and returns the [RID] that " +"identifies it. Use [method shape_set_data] to set the circle's radius." +msgstr "" +"在物理服务中创建一个 2D 圆形,并返回标识它的 [RID]。可使用 [method " +"shape_set_data] 设置圆的半径。" + +msgid "" +"Creates a 2D concave polygon shape in the physics server, and returns the " +"[RID] that identifies it. Use [method shape_set_data] to set the concave " +"polygon's segments." +msgstr "" +"在物理服务中创建一个 2D 凹多边形形状,并返回标识它的 [RID]。可使用 [method " +"shape_set_data] 设置凹多边形的线段。" + +msgid "" +"Creates a 2D convex polygon shape in the physics server, and returns the " +"[RID] that identifies it. Use [method shape_set_data] to set the convex " +"polygon's points." +msgstr "" +"在物理服务中创建一个 2D 凸多边形形状,并返回标识它的 [RID]。可使用 [method " +"shape_set_data] 设置凸多边形的点。" + +msgid "" +"Destroys the joint with the given [RID], creates a new uninitialized joint, " +"and makes the [RID] refer to this new joint." +msgstr "" +"销毁具有给定 [RID] 的关节,创建一个新的未初始化关节,并使该 [RID] 引用这个新" +"关节。" + +msgid "" +"Creates a 2D joint in the physics server, and returns the [RID] that " +"identifies it. To set the joint type, use [method joint_make_damped_spring], " +"[method joint_make_groove] or [method joint_make_pin]. Use [method " +"joint_set_param] to set generic joint parameters." +msgstr "" +"在物理服务中创建一个 2D 关节,并返回标识它的 [RID]。要设置关节类型,请使用 " +"[method joint_make_damped_spring]、[method joint_make_groove] 或 [method " +"joint_make_pin]。可使用 [method joint_set_param] 设置通用关节参数。" + +msgid "Returns the joint's type (see [enum JointType])." +msgstr "返回该关节的类型(见 [enum JointType])。" + +msgid "" +"Returns whether the bodies attached to the [Joint2D] will collide with each " +"other." +msgstr "返回分配给该 [Joint2D] 的物体能否相互碰撞。" + +msgid "" +"Makes the joint a damped spring joint, attached at the point [param " +"anchor_a] (given in global coordinates) on the body [param body_a] and at " +"the point [param anchor_b] (given in global coordinates) on the body [param " +"body_b]. To set the parameters which are specific to the damped spring, see " +"[method damped_spring_joint_set_param]." +msgstr "" +"使该关节成为一个阻尼弹簧关节,连接到实体 [param body_a] 上的点 [param " +"anchor_a](在全局坐标中给出)和实体 [param body_b] 上的点 [param anchor_b]" +"(在全局坐标中给出)。要设置特定于阻尼弹簧的参数,请参阅 [method " +"damped_spring_joint_set_param]。" + +msgid "" +"Makes the joint a pin joint. If [param body_b] is [code]RID()[/code], then " +"[param body_a] is pinned to the point [param anchor] (given in global " +"coordinates); otherwise, [param body_a] is pinned to [param body_b] at the " +"point [param anchor] (given in global coordinates). To set the parameters " +"which are specific to the pin joint, see [method pin_joint_set_param]." +msgstr "" +"使关节成为一个销关节。如果 [param body_b] 是 [code]RID()[/code],则 [param " +"body_a] 被固定到点 [param anchor](在全局坐标中给出); 否则,[param body_a] " +"在 [param anchor] 点被固定到 [param body_b](在全局坐标中给出)。要设置特定于" +"销关节的参数,请参阅 [method pin_joint_set_param]。" + +msgid "" +"Creates a 2D rectangle shape in the physics server, and returns the [RID] " +"that identifies it. Use [method shape_set_data] to set the rectangle's half-" +"extents." +msgstr "" +"在物理服务中创建一个 2D 矩形形状,并返回标识它的 [RID]。可使用 [method " +"shape_set_data] 设置该矩形的半边距。" + +msgid "" +"Creates a 2D segment shape in the physics server, and returns the [RID] that " +"identifies it. Use [method shape_set_data] to set the segment's start and " +"end points." +msgstr "" +"在物理服务中创建一个 2D 线段形状,并返回标识它的 [RID]。可使用 [method " +"shape_set_data] 设置线段的起点和终点。" + +msgid "" +"Creates a 2D separation ray shape in the physics server, and returns the " +"[RID] that identifies it. Use [method shape_set_data] to set the shape's " +"[code]length[/code] and [code]slide_on_slope[/code] properties." +msgstr "" +"在物理服务中创建一个 2D 分离射线形状,并返回标识它的 [RID]。可使用 [method " +"shape_set_data] 设置形状的 [code]length[/code] 和 [code]slide_on_slope[/" +"code] 属性。" + +msgid "" +"Activates or deactivates the 2D physics server. If [param active] is " +"[code]false[/code], then the physics server will not do anything in its " +"physics step." +msgstr "" +"激活或停用 2D 物理服务。如果 [param active] 为 [code]false[/code],则物理服务" +"将不会在其物理步骤中执行任何操作。" + +msgid "" +"Returns the shape data that defines the configuration of the shape, such as " +"the half-extents of a rectangle or the segments of a concave shape. See " +"[method shape_set_data] for the precise format of this data in each case." +msgstr "" +"返回定义形状配置的形状数据,例如矩形的半边长或凹形的线段。有关每种情况下该数" +"据的精确格式,请参阅 [method shape_set_data]。" + +msgid "Returns the shape's type (see [enum ShapeType])." +msgstr "返回该形状的类型(见 [enum ShapeType])。" + +msgid "" +"Sets the shape data that defines the configuration of the shape. The [param " +"data] to be passed depends on the shape's type (see [method " +"shape_get_type]):\n" +"- [constant SHAPE_WORLD_BOUNDARY]: an array of length two containing a " +"[Vector2] [code]normal[/code] direction and a [code]float[/code] distance " +"[code]d[/code],\n" +"- [constant SHAPE_SEPARATION_RAY]: a dictionary containing the key " +"[code]length[/code] with a [code]float[/code] value and the key " +"[code]slide_on_slope[/code] with a [code]bool[/code] value,\n" +"- [constant SHAPE_SEGMENT]: a [Rect2] [code]rect[/code] containing the first " +"point of the segment in [code]rect.position[/code] and the second point of " +"the segment in [code]rect.size[/code],\n" +"- [constant SHAPE_CIRCLE]: a [code]float[/code] [code]radius[/code],\n" +"- [constant SHAPE_RECTANGLE]: a [Vector2] [code]half_extents[/code],\n" +"- [constant SHAPE_CAPSULE]: an array of length two (or a [Vector2]) " +"containing a [code]float[/code] [code]height[/code] and a [code]float[/code] " +"[code]radius[/code],\n" +"- [constant SHAPE_CONVEX_POLYGON]: either a [PackedVector2Array] of points " +"defining a convex polygon in counterclockwise order (the clockwise outward " +"normal of each segment formed by consecutive points is calculated " +"internally), or a [PackedFloat32Array] of length divisible by four so that " +"every 4-tuple of [code]float[/code]s contains the coordinates of a point " +"followed by the coordinates of the clockwise outward normal vector to the " +"segment between the current point and the next point,\n" +"- [constant SHAPE_CONCAVE_POLYGON]: a [PackedVector2Array] of length " +"divisible by two (each pair of points forms one segment).\n" +"[b]Warning[/b]: In the case of [constant SHAPE_CONVEX_POLYGON], this method " +"does not check if the points supplied actually form a convex polygon (unlike " +"the [member CollisionPolygon2D.polygon] property)." +msgstr "" +"设置定义形状配置的形状数据。要传递的 [param data] 取决于形状的类型(参见 " +"[method shape_get_type]):\n" +"- [constant SHAPE_WORLD_BOUNDARY]:一个长度为 2 的数组,包含 [Vector2] 类型" +"的 [code]normal[/code] 方向和 [code]float[/code] 类型的距离 [code]d[/" +"code],\n" +"- [constant SHAPE_SEPARATION_RAY]:一个字典,包含键 [code]length[/code] 和 " +"[code]float[/code] 值、以及键 [code]slide_on_slope[/code] 和 [code]bool[/" +"code] 值,\n" +"- [constant SHAPE_SEGMENT]:一个 [Rect2] 类型的 [code]rect[/code],以 " +"[code]rect.position[/code] 表示线段中的第一个点,并以 [code]rect.size[/code] " +"表示线段中的第二个点,\n" +"- [constant SHAPE_CIRCLE]:一个 [code]float[/code] 类型的 [code]radius[/" +"code],\n" +"- [constant SHAPE_RECTANGLE]:一个 [Vector2] 类型的 [code]half_extents[/" +"code],\n" +"- [constant SHAPE_CAPSULE]:一个长度为 2 的数组(或一个 [Vector2]),包含一" +"个 [code]float[/code] 类型的 [code]height[/code] 和一个 [code]float[/code] 类" +"型的 [code]radius [/code],\n" +"- [constant SHAPE_CONVEX_POLYGON]:一个按逆时针顺序定义凸多边形的点的 " +"[PackedVector2Array](在内部使用由连续点形成的每个线段的顺时针向外法线计" +"算);或一个长度可被 4 整除的 [PackedFloat32Array],以便每个 4 元组的 " +"[code]float[/code] 包含一个点的坐标,后跟一个向量的坐标表示,该向量是当前点和" +"下一个点之间的线段的顺时针向外法向量,\n" +"- [constant SHAPE_CONCAVE_POLYGON]:一个长度可被 2 整除的 " +"[PackedVector2Array](每对点形成一个线段)。\n" +"[b]警告[/b]:在 [constant SHAPE_CONVEX_POLYGON] 的情况下,该方法不检查提供的" +"点是否能够形成凸多边形(与 [member CollisionPolygon2D.polygon] 属性不同)。" + +msgid "" +"Creates a 2D space in the physics server, and returns the [RID] that " +"identifies it. A space contains bodies and areas, and controls the stepping " +"of the physics simulation of the objects in it." +msgstr "" +"在物理服务中创建一个 2D 空间,并返回标识它的 [RID]。空间包含实体和区域,并控" +"制其中实体的物理模拟的步骤。" + +msgid "" +"Activates or deactivates the space. If [param active] is [code]false[/code], " +"then the physics server will not do anything with this space in its physics " +"step." +msgstr "" +"激活或停用该空间。如果 [param active] 为 [code]false[/code],那么物理服务将不" +"会在它的物理步骤中对这个空间做任何事情。" + +msgid "" +"Creates a 2D world boundary shape in the physics server, and returns the " +"[RID] that identifies it. Use [method shape_set_data] to set the shape's " +"normal direction and distance properties." +msgstr "" +"在物理服务中创建一个 2D 世界边界形状,并返回标识它的 [RID]。可使用 [method " +"shape_set_data] 设置形状的法线方向和距离属性。" + +msgid "" +"Constant to set/get the maximum distance a pair of bodies has to move before " +"their collision status has to be recalculated. The default value of this " +"parameter is [member ProjectSettings.physics/2d/solver/" +"contact_recycle_radius]." +msgstr "" +"常量,用于设置/获取一对物体在其碰撞状态被重新计算之前的最大移动距离。该参数的" +"默认值为 [member ProjectSettings.physics/2d/solver/contact_recycle_radius]。" + +msgid "" +"Constant to set/get the maximum distance a shape can be from another before " +"they are considered separated and the contact is discarded. The default " +"value of this parameter is [member ProjectSettings.physics/2d/solver/" +"contact_max_separation]." +msgstr "" +"常量,用于设置/获取两个形状间的最大距离,超过该距离后它们将被视为分离,接触将" +"被弃置。该参数的默认值为 [member ProjectSettings.physics/2d/solver/" +"contact_max_separation]。" + +msgid "" +"Constant to set/get the maximum distance a shape can penetrate another shape " +"before it is considered a collision. The default value of this parameter is " +"[member ProjectSettings.physics/2d/solver/contact_max_allowed_penetration]." +msgstr "" +"常量,用于设置/获取两个形状互相穿透的最大距离,超过该距离后将视为碰撞。该参数" +"的默认值为 [member ProjectSettings.physics/2d/solver/" +"contact_max_allowed_penetration]。" + +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 "" @@ -44536,6 +54751,66 @@ msgid "" msgstr "引擎内部会使用这个常量。任何试图创建这种形状的行为都会导致错误。" msgid "" +"Constant to set/get gravity strength in an area. The default value of this " +"parameter is [code]9.80665[/code]." +msgstr "" +"常量,用于设置/获取区域中的重力强度。该参数的默认值为 [code]9.80665[/code]。" + +msgid "" +"Constant to set/get gravity vector/center in an area. The default value of " +"this parameter is [code]Vector2(0, -1)[/code]." +msgstr "" +"常量,用于设置/获取区域中的重力向量/中心。该参数的默认值为 [code]Vector2(0, " +"-1)[/code]。" + +msgid "" +"Constant to set/get whether the gravity vector of an area is a direction, or " +"a center point. The default value of this parameter is [code]false[/code]." +msgstr "" +"常量,用于设置/获取区域中的重力向量是方向,还是中心点。该参数的默认值为 " +"[code]false[/code]。" + +msgid "" +"Constant to set/get the distance at which the gravity strength is equal to " +"the gravity controlled by [constant AREA_PARAM_GRAVITY]. For example, on a " +"planet 100 pixels in radius with a surface gravity of 4.0 px/s², set the " +"gravity to 4.0 and the unit distance to 100.0. The gravity will have falloff " +"according to the inverse square law, so in the example, at 200 pixels from " +"the center the gravity will be 1.0 px/s² (twice the distance, 1/4th the " +"gravity), at 50 pixels it will be 16.0 px/s² (half the distance, 4x the " +"gravity), and so on.\n" +"The above is true only when the unit distance is a positive number. When the " +"unit distance is set to 0.0, the gravity will be constant regardless of " +"distance. The default value of this parameter is [code]0.0[/code]." +msgstr "" +"常量,用于设置/获取重力强度等于 [constant AREA_PARAM_GRAVITY] 控制的重力的距" +"离。例如,在一个半径为 100 像素且表面重力为 4.0 px/s² 的行星上,将重力设置为 " +"4.0,将单位距离设置为 100.0。重力将根据平方反比定律衰减,因此在该示例中,距离" +"中心 200 像素处的重力将为 1.0 px/s²(距离的两倍,重力的 1/4),距离中心 50 像" +"素处重力为 16.0 px/s²(距离的一半,重力的 4 倍),依此类推。\n" +"仅当单位距离为正数时,上述情况才成立。当单位距离设置为 0.0 时,重力将与距离无" +"关。该参数的默认值为 [code]0.0[/code]。" + +msgid "" +"Constant to set/get the linear damping factor of an area. The default value " +"of this parameter is [code]0.1[/code]." +msgstr "" +"常数,用于设置/获取区域的线性阻尼系数。该参数的默认值为 [code]0.1[/code]。" + +msgid "" +"Constant to set/get the angular damping factor of an area. The default value " +"of this parameter is [code]1.0[/code]." +msgstr "" +"常数,用于设置/获取区域的角度阻尼系数。该参数的默认值为 [code]1.0[/code]。" + +msgid "" +"Constant to set/get the priority (order of processing) of an area. The " +"default value of this parameter is [code]0[/code]." +msgstr "" +"常量,用于设置/获取区域的优先级(处理顺序)。该参数的默认值为 [code]0[/" +"code]。" + +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 "" @@ -44570,6 +54845,74 @@ msgstr "" "这个区域取代了到目前为止计算的任何重力/阻尼,但继续计算其余的区域,直到默认的" "区域。" +msgid "" +"Constant to set/get a body's bounce factor. The default value of this " +"parameter is [code]0.0[/code]." +msgstr "常量,用于设置/获取物体的反弹系数。该参数的默认值为 [code]0.0[/code]。" + +msgid "" +"Constant to set/get a body's friction. The default value of this parameter " +"is [code]1.0[/code]." +msgstr "常量,用于设置/获取实体摩擦力。该参数的默认值为 [code]1.0[/code]。" + +msgid "" +"Constant to set/get a body's mass. The default value of this parameter is " +"[code]1.0[/code]. If the body's mode is set to [constant BODY_MODE_RIGID], " +"then setting this parameter will have the following additional effects:\n" +"- If the parameter [constant BODY_PARAM_CENTER_OF_MASS] has never been set " +"explicitly, then the value of that parameter will be recalculated based on " +"the body's shapes.\n" +"- If the parameter [constant BODY_PARAM_INERTIA] is set to a value [code]<= " +"0.0[/code], then the value of that parameter will be recalculated based on " +"the body's shapes, mass, and center of mass." +msgstr "" +"常量,用于设置/获取一个实体质量。该参数的默认值为[code]1.0[/code]。如果该实体" +"的模式被设置为 [constant BODY_MODE_RIGID],那么设置这个参数会有以下附加效" +"果:\n" +"- 如果该参数 [constant BODY_PARAM_CENTER_OF_MASS] 从未被明确设置,则该参数的" +"值将根据实体的形状重新计算。\n" +"- 如果该参数 [constant BODY_PARAM_INERTIA] 被设置为值 [code]<= 0.0[/code],则" +"该参数的值将根据该实体的形状、质量、和质心重新计算。" + +msgid "" +"Constant to set/get a body's inertia. The default value of this parameter is " +"[code]0.0[/code]. If the body's inertia is set to a value [code]<= 0.0[/" +"code], then the inertia will be recalculated based on the body's shapes, " +"mass, and center of mass." +msgstr "" +"常量,用于设置/获取一个实体惯性。该参数的默认值为[code]0.0[/code]。如果实体的" +"惯性被设置为一个值 [code]<= 0.0[/code],那么惯性将根据实体的形状、质量、和质" +"心重新计算。" + +msgid "" +"Constant to set/get a body's center of mass position in the body's local " +"coordinate system. The default value of this parameter is [code]Vector2(0,0)" +"[/code]. If this parameter is never set explicitly, then it is recalculated " +"based on the body's shapes when setting the parameter [constant " +"BODY_PARAM_MASS] or when calling [method body_set_space]." +msgstr "" +"常量,用于在实体局部坐标系中设置/获取一个实体质心位置。该参数的默认值为 " +"[code]Vector2(0,0)[/code]。如果该参数从未明确设置,则在设置参数 [constant " +"BODY_PARAM_MASS] 或调用 [method body_set_space] 时,会根据实体的形状重新计" +"算。" + +msgid "" +"Constant to set/get a body's gravity multiplier. The default value of this " +"parameter is [code]1.0[/code]." +msgstr "常量,用于设置/获取物体的重力倍数。该参数的默认值为 [code]1.0[/code]。" + +msgid "" +"Constant to set/get a body's linear damping factor. The default value of " +"this parameter is [code]0.0[/code]." +msgstr "" +"常数,用于设置/获取物体的线性阻尼系数。该参数的默认值为 [code]0.0[/code]。" + +msgid "" +"Constant to set/get a body's angular damping factor. The default value of " +"this parameter is [code]0.0[/code]." +msgstr "" +"常数,用于设置/获取物体的角度阻尼系数。该参数的默认值为 [code]0.0[/code]。" + msgid "Represents the size of the [enum BodyParameter] enum." msgstr "代表 [enum BodyParameter] 枚举的大小。" @@ -44601,6 +54944,69 @@ msgid "Represents the size of the [enum JointType] enum." msgstr "代表 [enum JointType] 枚举的大小。" msgid "" +"Constant to set/get how fast the joint pulls the bodies back to satisfy the " +"joint constraint. The lower the value, the more the two bodies can pull on " +"the joint. The default value of this parameter is [code]0.0[/code].\n" +"[b]Note:[/b] In Godot Physics, this parameter is only used for pin joints " +"and groove joints." +msgstr "" +"常量,用于设置/获取该关节将实体拉回以满足关节约束的速度。值越低,两个物体对关" +"节的拉动就越大。该参数的默认值为 [code]0.0[/code]。\n" +"[b]注意:[/b]在 Godot 物理中,这个参数只用于销关节和槽关节。" + +msgid "" +"Constant to set/get the maximum speed with which the joint can apply " +"corrections. The default value of this parameter is [code]3.40282e+38[/" +"code].\n" +"[b]Note:[/b] In Godot Physics, this parameter is only used for groove joints." +msgstr "" +"常量,用于设置/获取关节可以应用校正的最大速度。该参数的默认值为 " +"[code]3.40282e+38[/code]。\n" +"[b]注意:[/b]在 Godot 物理中,这个参数只用于槽关节。" + +msgid "" +"Constant to set/get the maximum force that the joint can use to act on the " +"two bodies. The default value of this parameter is [code]3.40282e+38[/" +"code].\n" +"[b]Note:[/b] In Godot Physics, this parameter is only used for groove joints." +msgstr "" +"常量,用于设置/获取关节可用于作用于两个实体的最大力。该参数的默认值为 " +"[code]3.40282e+38[/code]。\n" +"[b]注意:[/b]在 Godot 物理中,这个参数只用于槽关节。" + +msgid "" +"Constant to set/get a how much the bond of the pin joint can flex. The " +"default value of this parameter is [code]0.0[/code]." +msgstr "" +"常量,用于设置/获取销关节的纽带可以弯曲多少。该参数的默认值为 [code]0.0[/" +"code]。" + +msgid "" +"Sets the resting length of the spring joint. The joint will always try to go " +"to back this length when pulled apart. The default value of this parameter " +"is the distance between the joint's anchor points." +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. The default value " +"of this parameter is [code]20.0[/code]." +msgstr "" +"设置弹簧关节的刚度。该关节施加的力等于刚度乘以距其放松长度的距离。该参数的默" +"认值为 [code]20.0[/code]。" + +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). The default value of this parameter is " +"[code]1.5[/code]." +msgstr "" +"设置弹簧关节的阻尼比率。值为 0 表示无阻尼弹簧,而 1 表示系统尽可能快地达到平" +"衡(临界阻尼)。该参数的默认值为 [code]1.5[/code]。" + +msgid "" "Enables continuous collision detection by raycasting. It is faster than " "shapecasting, but less precise." msgstr "通过射线投射实现连续的碰撞检测。它比形状投射更快,但不够精确。" @@ -44630,6 +55036,9 @@ msgid "" "Constant to get the number of space regions where a collision could occur." msgstr "常量,用以获取可能发生碰撞的空间区域数。" +msgid "Manager for 2D physics server implementations." +msgstr "2D 物理服务器实现的管理器。" + msgid "Server interface for low-level physics access." msgstr "用于低级物理访问的服务器接口。" @@ -44653,6 +55062,12 @@ msgstr "从一个区域移除所有形状。它不会删除形状,因此它们 msgid "Creates an [Area3D]." msgstr "创建 [Area3D]。" +msgid "Returns the physics layer or layers an area belongs to." +msgstr "返回该区域所属的物理层。" + +msgid "Returns the physics layer or layers an area can contact with." +msgstr "返回该区域能够接触的物理层。" + msgid "Gets the instance ID of the object the area is assigned to." msgstr "获取区域分配给的对象的实例 ID。" @@ -44734,6 +55149,16 @@ msgid "Adds a body to the list of bodies exempt from collisions." msgstr "将一个物体添加到免于碰撞的物体列表中。" msgid "" +"Adds a constant positioned force to the body that keeps being applied over " +"time until cleared with [code]body_set_constant_force(body, Vector3(0, 0, 0))" +"[/code].\n" +"[param position] is the offset from the body origin in global coordinates." +msgstr "" +"向实体添加一个恒定的定位力,持续施加,直到用 " +"[code]body_set_constant_force(body, Vector3(0, 0, 0))[/code] 清除。\n" +"[param position] 是在全局坐标中距实体原点的偏移量。" + +msgid "" "Adds a shape to the body, along with a transform matrix. Shapes are usually " "referenced by their index, so you should track which shape has a given index." msgstr "" @@ -45191,6 +55616,26 @@ msgid "" "a center point." msgstr "常量,用于设置/获取区域中的重力向量是方向,还是中心点。" +msgid "" +"Constant to set/get the distance at which the gravity strength is equal to " +"the gravity controlled by [constant AREA_PARAM_GRAVITY]. For example, on a " +"planet 100 meters in radius with a surface gravity of 4.0 m/s², set the " +"gravity to 4.0 and the unit distance to 100.0. The gravity will have falloff " +"according to the inverse square law, so in the example, at 200 meters from " +"the center the gravity will be 1.0 m/s² (twice the distance, 1/4th the " +"gravity), at 50 meters it will be 16.0 m/s² (half the distance, 4x the " +"gravity), and so on.\n" +"The above is true only when the unit distance is a positive number. When " +"this is set to 0.0, the gravity will be constant regardless of distance." +msgstr "" +"常量,用于设置/获取重力强度等于 [constant AREA_PARAM_GRAVITY] 控制的重力的距" +"离。例如,在半径为 100 米且表面重力为 4.0 m/s² 的行星上,将重力设置为 4.0,并" +"将单位距离设置为 100.0。重力会根据平方反比定律衰减,因此在该示例中,重力在距" +"中心 200 米处将为 1.0 m/s²(距离的两倍,重力的 1/4),在距中心 50 米处为 " +"16.0 m/s²(距离的一半,重力的 4 倍),依此类推。\n" +"仅当单位距离为正数时,上述情况才成立。当该属性被设置为 0.0 时,无论距离如何," +"重力都将保持不变。" + msgid "Constant to set/get the linear damping factor of an area." msgstr "常数,用于设置/获取区域的线性阻尼系数。" @@ -45200,6 +55645,9 @@ msgstr "常数,用于设置/获取区域的角度阻尼系数。" msgid "Constant to set/get the priority (order of processing) of an area." msgstr "常量,用于设置/获取区域的优先级(处理顺序)。" +msgid "Constant to set/get the magnitude of area-specific wind force." +msgstr "常量,用于设置/获取特定区域风力大小。" + msgid "Constant to set/get a body's bounce factor." msgstr "常量,用于设置/获取物体的反弹系数。" @@ -45212,9 +55660,26 @@ msgstr "常量,用于设置/获取物体的质量。" msgid "Constant to set/get a body's inertia." msgstr "常量,用于设置/获取物体的惯性。" +msgid "" +"Constant to set/get a body's center of mass position in the body's local " +"coordinate system." +msgstr "常量,用于设置/获取物体的质心位置,使用该物体的局部坐标系。" + msgid "Constant to set/get a body's gravity multiplier." msgstr "常量,用于设置/获取物体的重力倍数。" +msgid "" +"Constant to set/get a body's linear damping mode. See [enum BodyDampMode] " +"for possible values." +msgstr "" +"常量,用于设置/获取物体的线性阻尼模式。可能的值见 [enum BodyDampMode]。" + +msgid "" +"Constant to set/get a body's angular damping mode. See [enum BodyDampMode] " +"for possible values." +msgstr "" +"常量,用于设置/获取物体的角度阻尼模式。可能的值见 [enum BodyDampMode]。" + msgid "Constant to set/get a body's linear damping factor." msgstr "常数,用于设置/获取物体的线性阻尼系数。" @@ -45278,8 +55743,83 @@ msgstr "被查询形状的变换矩阵。" msgid "Parameters to be sent to a 3D shape physics query." msgstr "要发送到 3D 形状物理查询的参数。" +msgid "Result from a 2D body motion test." +msgstr "2D 物体运动的测试结果。" + +msgid "" +"This class contains the motion and collision result from [method " +"PhysicsServer2D.body_test_motion]." +msgstr "" +"这个类包含的是 [method PhysicsServer2D.body_test_motion] 的运动和碰撞结果。" + +msgid "" +"Returns the colliding body's attached [Object], if a collision occurred." +msgstr "如果发生了碰撞,则返回相撞物体所附加的 [Object]。" + +msgid "" +"Returns the unique instance ID of the colliding body's attached [Object], if " +"a collision occurred. See [method Object.get_instance_id]." +msgstr "" +"如果发生了碰撞,则返回相撞物体所附加 [Object] 的唯一实例 ID。见 [method " +"Object.get_instance_id]。" + +msgid "" +"Returns the colliding body's [RID] used by the [PhysicsServer2D], if a " +"collision occurred." +msgstr "如果发生了碰撞,则返回相撞物体在 [PhysicsServer2D] 中使用的 [RID]。" + +msgid "" +"Returns the colliding body's shape index, if a collision occurred. See " +"[CollisionObject2D]." +msgstr "如果发生了碰撞,则返回相撞物体形状的索引。见 [CollisionObject2D]。" + msgid "Returns the colliding body's velocity, if a collision occurred." -msgstr "如果发生碰撞,则返回碰撞到的物体的速度。" +msgstr "如果发生了碰撞,则返回相撞物体的速度。" + +msgid "Result from a 3D body motion test." +msgstr "3D 物体运动的测试结果。" + +msgid "" +"This class contains the motion and collision result from [method " +"PhysicsServer3D.body_test_motion]." +msgstr "" +"这个类包含的是 [method PhysicsServer3D.body_test_motion] 的运动和碰撞结果。" + +msgid "" +"Returns the colliding body's attached [Object] given a collision index (the " +"deepest collision by default), if a collision occurred." +msgstr "" +"如果发生了碰撞,则返回相撞物体所附加的 [Object],碰撞物体由碰撞索引指定(默认" +"为最深的碰撞)。见 [method Object.get_instance_id]。" + +msgid "" +"Returns the unique instance ID of the colliding body's attached [Object] " +"given a collision index (the deepest collision by default), if a collision " +"occurred. See [method Object.get_instance_id]." +msgstr "" +"如果发生了碰撞,则返回相撞物体所附加 [Object] 的唯一实例 ID,碰撞物体由碰撞索" +"引指定(默认为最深的碰撞)。见 [method Object.get_instance_id]。" + +msgid "" +"Returns the colliding body's [RID] used by the [PhysicsServer3D] given a " +"collision index (the deepest collision by default), if a collision occurred." +msgstr "" +"如果发生了碰撞,则返回相撞物体在 [PhysicsServer3D] 中使用的 [RID],碰撞物体由" +"碰撞索引指定(默认为最深的碰撞)。见 [method Object.get_instance_id]。" + +msgid "" +"Returns the colliding body's shape index given a collision index (the " +"deepest collision by default), if a collision occurred. See " +"[CollisionObject3D]." +msgstr "" +"如果发生了碰撞,则返回相撞物体形状的索引,碰撞物体由碰撞索引指定(默认为最深" +"的碰撞)。见 [method Object.get_instance_id]。" + +msgid "" +"Returns the colliding body's velocity given a collision index (the deepest " +"collision by default), if a collision occurred." +msgstr "" +"如果发生了碰撞,则返回相撞物体的速度。见 [method Object.get_instance_id]。" msgid "" "The higher this value, the more the bond to the pinned partner can flex." @@ -45298,6 +55838,36 @@ msgid "" "other. The higher, the stronger." msgstr "被钉在一起的物体之间保持共速的力。越高,力越大。" +msgid "Placeholder class for a cubemap texture." +msgstr "立方体贴图纹理的占位类。" + +msgid "Placeholder class for a cubemap texture array." +msgstr "立方体贴图纹理数组的占位类。" + +msgid "Placeholder class for a material." +msgstr "材质的占位类。" + +msgid "Placeholder class for a mesh." +msgstr "网格的占位类。" + +msgid "Placeholder class for a 2-dimensional texture." +msgstr "二维纹理的占位类。" + +msgid "The texture's size (in pixels)." +msgstr "纹理的尺寸(单位为像素)。" + +msgid "Placeholder class for a 2-dimensional texture array." +msgstr "二维纹理数组的占位类。" + +msgid "Placeholder class for a 3-dimensional texture." +msgstr "三维纹理的占位类。" + +msgid "The number of layers in the texture array." +msgstr "纹理数组中的层数。" + +msgid "The size of each texture layer (in pixels)." +msgstr "各层纹理的尺寸(单位为像素)。" + msgid "Plane in hessian form." msgstr "麻状平面。" @@ -45312,15 +55882,107 @@ msgstr "" "而“d”是原点到平面的距离(在“法线”方向)。“上方”或“上方”平面被认为是法线指向的" "平面一侧。" +msgid "" +"Constructs a default-initialized [Plane] with all components set to [code]0[/" +"code]." +msgstr "构造默认初始化的 [Plane],所有分量都设置为 [code]0[/code]。" + msgid "Constructs a [Plane] as a copy of the given [Plane]." msgstr "构造给定 [Plane] 的副本。" +msgid "" +"Creates a plane from the four parameters. The three components of the " +"resulting plane's [member normal] are [param a], [param b] and [param c], " +"and the plane has a distance of [param d] from the origin." +msgstr "" +"根据四个参数创建一个平面。产生的平面的 [member normal] 的三个分量是 [param " +"a]、[param b]、和 [param c],且该平面与原点的距离为 [param d]。" + +msgid "" +"Creates a plane from the normal vector. The plane will intersect the " +"origin.\n" +"The [param normal] of the plane must be a unit vector." +msgstr "" +"根据法向量创建一个平面。该平面将与原点相交。\n" +"该平面的 [param normal] 必须是一个单位向量。" + +msgid "" +"Creates a plane from the normal vector and the plane's distance from the " +"origin.\n" +"The [param normal] of the plane must be a unit vector." +msgstr "" +"根据法向量和平面与原点的距离创建一个平面。\n" +"平面的 [param normal] 必须是一个单位向量。" + +msgid "" +"Creates a plane from the normal vector and a point on the plane.\n" +"The [param normal] of the plane must be a unit vector." +msgstr "" +"从法向量和平面上的一个点创建一个平面。\n" +"平面的 [param normal] 必须是一个单位向量。" + msgid "Creates a plane from the three points, given in clockwise order." msgstr "根据顺时针顺序给出的三个点创建一个平面。" +msgid "" +"Returns the shortest distance from the plane to the position [param point]. " +"If the point is above the plane, the distance will be positive. If below, " +"the distance will be negative." +msgstr "" +"返回从该平面到位置 [param point] 的最短距离。如果该点在平面上方,则距离将为" +"正。如果在下方,则距离将为负。" + msgid "Returns the center of the plane." msgstr "返回平面的中心。" +msgid "" +"Returns [code]true[/code] if [param point] is inside the plane. Comparison " +"uses a custom minimum [param tolerance] threshold." +msgstr "" +"如果 [param point] 在该平面内,则返回 [code]true[/code]。比较将使用一个自定义" +"的最小 [param tolerance] 阈值。" + +msgid "" +"Returns the intersection point of the three planes [param b], [param c] and " +"this plane. If no intersection is found, [code]null[/code] is returned." +msgstr "" +"返回 [param b]、[param c]、该平面这三个平面的交点。如果没有找到交点,则返回 " +"[code]null[/code]。" + +msgid "" +"Returns the intersection point of a ray consisting of the position [param " +"from] and the direction normal [param dir] with this plane. If no " +"intersection is found, [code]null[/code] is returned." +msgstr "" +"返回由位置 [param from] 和方向法线 [param dir] 组成的射线与该平面的交点。如果" +"没有找到交点,则返回 [code]null[/code]。" + +msgid "" +"Returns the intersection point of a segment from position [param from] to " +"position [param to] with this plane. If no intersection is found, " +"[code]null[/code] is returned." +msgstr "" +"返回从位置 [param from] 到位置 [param to] 的线段与该平面的交点。如果没有找到" +"交点,则返回 [code]null[/code]。" + +msgid "" +"Returns [code]true[/code] if this plane and [param to_plane] are " +"approximately equal, by running [method @GlobalScope.is_equal_approx] on " +"each component." +msgstr "" +"如果该平面和 [param to_plane] 近似相等,则返回 [code]true[/code],判断近似相" +"等的方法是通过在每个分量上运行 [method @GlobalScope.is_equal_approx]。" + +msgid "" +"Returns [code]true[/code] if this plane 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 [param point] is located above the plane." +msgstr "如果 [param point] 位于平面上方,则返回 [code]true[/code]。" + msgid "Returns a copy of the plane, normalized." msgstr "返回平面的一个标准化副本。" @@ -45353,6 +56015,24 @@ msgstr "在 X 轴和 Z 轴上延伸的平面(法向量朝向 +Y)。" msgid "A plane that extends in the X and Y axes (normal vector points +Z)." msgstr "在 X 轴和 Y 轴上延伸的平面(法向量朝向 +Z)。" +msgid "" +"Returns [code]true[/code] if the planes 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 "" +"Returns [code]true[/code] if the planes are exactly equal.\n" +"[b]Note:[/b] Due to floating-point precision errors, consider using [method " +"is_equal_approx] instead, which is more reliable." +msgstr "" +"如果平面完全相等,则返回 [code]true[/code]。\n" +"[b]注意:[/b]由于浮点数精度误差,请考虑改用 [method is_equal_approx],会更可" +"靠。" + msgid "Class representing a planar [PrimitiveMesh]." msgstr "表示平面 [PrimitiveMesh] 的类。" @@ -45425,6 +56105,13 @@ msgstr "" "多边形的填充颜色.如果定义了[code]texture[/code](贴图),它将乘以该颜色.对于" "[code]vertex_colors[/code]中未设置的顶点,它也将是默认颜色." +msgid "" +"If [code]true[/code], the polygon will be inverted, containing the area " +"outside the defined points and extending to the [member invert_border]." +msgstr "" +"如果为 [code]true[/code],则多边形将被反转,包含定义点之外的区域并延伸到 " +"[member invert_border]。" + msgid "The offset applied to each vertex." msgstr "应用于每个顶点的位置偏移量。" @@ -45469,6 +56156,77 @@ msgstr "" msgid "PopupMenu displays a list of options." msgstr "PopupMenu 会显示一个选项列表。" +msgid "" +"Adds a new checkable item with text [param label].\n" +"An [param id] can optionally be provided, as well as an accelerator ([param " +"accel]). If no [param id] is provided, one will be created from the index. " +"If no [param accel] is provided, then the default value of 0 (corresponding " +"to [constant @GlobalScope.KEY_NONE]) will be assigned to the item (which " +"means it won't have any accelerator). See [method get_item_accelerator] for " +"more info on accelerators.\n" +"[b]Note:[/b] Checkable items just display a checkmark, but don't have any " +"built-in checking behavior and must be checked/unchecked manually. See " +"[method set_item_checked] for more info on how to control it." +msgstr "" +"添加一个带有文本 [param label] 的新的可勾选项。\n" +"可以选择提供一个 [param id] 以及一个加速器([param accel])。如果未提供 " +"[param id],将从索引中创建一个。如果未提供 [param accel],则默认值 0(对应于 " +"[constant @GlobalScope.KEY_NONE])将被分配给该项(这意味着它不会有任何加速" +"器)。有关加速器的更多信息,请参阅 [method get_item_accelerator]。\n" +"[b]注意:[/b]可勾选的项只显示一个勾选标记,但没有任何内置的勾选行为,必须手动" +"勾选/取消勾选。有关如何控制它的更多信息,请参阅 [method set_item_checked]。" + +msgid "" +"Adds a new checkable item and assigns the specified [Shortcut] to it. Sets " +"the label of the checkbox to the [Shortcut]'s name.\n" +"An [param id] can optionally be provided. If no [param id] is provided, one " +"will be created from the index.\n" +"[b]Note:[/b] Checkable items just display a checkmark, but don't have any " +"built-in checking behavior and must be checked/unchecked manually. See " +"[method set_item_checked] for more info on how to control it." +msgstr "" +"添加一个新的可勾选项并为其分配指定的 [ShortCut]。将复选框的标签设置为 " +"[ShortCut] 的名称。\n" +"可以选择提供一个 [param id]。如果未提供 [param id],将从索引中创建一个。\n" +"[b]注意:[/b]可勾选项只显示一个勾选标记,但没有任何内置的勾选行为,必须手动勾" +"选/取消勾选。有关如何控制它的更多信息,请参阅 [method set_item_checked]。" + +msgid "" +"Adds a new checkable item with text [param label] and icon [param texture].\n" +"An [param id] can optionally be provided, as well as an accelerator ([param " +"accel]). If no [param id] is provided, one will be created from the index. " +"If no [param accel] is provided, then the default value of 0 (corresponding " +"to [constant @GlobalScope.KEY_NONE]) will be assigned to the item (which " +"means it won't have any accelerator). See [method get_item_accelerator] for " +"more info on accelerators.\n" +"[b]Note:[/b] Checkable items just display a checkmark, but don't have any " +"built-in checking behavior and must be checked/unchecked manually. See " +"[method set_item_checked] for more info on how to control it." +msgstr "" +"添加一个带有文本 [param label] 和图标 [param texture] 的新的可勾选项。\n" +"可以选择提供一个 [param id] 以及一个加速器([param accel])。如果未提供 " +"[param id],将从索引中创建一个。如果未提供 [param accel],则默认值 0(对应于 " +"[constant @GlobalScope.KEY_NONE])将被分配给该项(这意味着它不会有任何加速" +"器)。有关加速器的更多信息,请参阅 [method get_item_accelerator]。\n" +"[b]注意:[/b]可勾选项只显示一个勾选标记,但没有任何内置的勾选行为,必须手动勾" +"选/取消勾选。有关如何控制它的更多信息,请参阅 [method set_item_checked]。" + +msgid "" +"Adds a new checkable item and assigns the specified [Shortcut] and icon " +"[param texture] to it. Sets the label of the checkbox to the [Shortcut]'s " +"name.\n" +"An [param id] can optionally be provided. If no [param id] is provided, one " +"will be created from the index.\n" +"[b]Note:[/b] Checkable items just display a checkmark, but don't have any " +"built-in checking behavior and must be checked/unchecked manually. See " +"[method set_item_checked] for more info on how to control it." +msgstr "" +"添加一个新的可勾选项并为其分配指定的 [Shortcut] 和图标 [param texture]。将复" +"选框的标签设置为 [ShortCut] 的名称。\n" +"可以选择提供一个 [param id]。如果未提供 [param id],将从索引中创建一个。\n" +"[b]注意:[/b]可勾选项只显示一个勾选标记,但没有任何内置的勾选行为,必须手动勾" +"选/取消勾选。有关如何控制它的更多信息,请参阅 [method set_item_checked]。" + msgid "Same as [method add_icon_check_item], but uses a radio check button." msgstr "与 [method add_icon_check_item] 相同,但使用单选按钮。" @@ -45476,6 +56234,62 @@ msgid "" "Same as [method add_icon_check_shortcut], but uses a radio check button." msgstr "与 [method add_icon_check_shortcut] 相同,但使用一个单选按钮。" +msgid "" +"Adds a new item with text [param label].\n" +"An [param id] can optionally be provided, as well as an accelerator ([param " +"accel]). If no [param id] is provided, one will be created from the index. " +"If no [param accel] is provided, then the default value of 0 (corresponding " +"to [constant @GlobalScope.KEY_NONE]) will be assigned to the item (which " +"means it won't have any accelerator). See [method get_item_accelerator] for " +"more info on accelerators.\n" +"[b]Note:[/b] The provided [param id] is used only in [signal id_pressed] and " +"[signal id_focused] signals. It's not related to the [code]index[/code] " +"arguments in e.g. [method set_item_checked]." +msgstr "" +"添加一个带有文本 [param label] 的新项。\n" +"可以选择提供一个 [param id] 以及一个加速器([param accel])。如果未提供 " +"[param id],将从索引中创建一个。如果未提供 [param accel],则默认值 0(对应于 " +"[constant @GlobalScope.KEY_NONE])将被分配给该项(这意味着它不会有任何加速" +"器)。有关加速器的更多信息,请参阅 [method get_item_accelerator]。\n" +"[b]注意:[/b]提供的 [param id] 仅用于 [signal id_pressed] 和 [signal " +"id_focused] 信号。它与在函数中,例如在 [method set_item_checked] 中的 " +"[code]index[/code] 参数无关。" + +msgid "" +"Adds a new radio check button with text [param label].\n" +"An [param id] can optionally be provided, as well as an accelerator ([param " +"accel]). If no [param id] is provided, one will be created from the index. " +"If no [param accel] is provided, then the default value of 0 (corresponding " +"to [constant @GlobalScope.KEY_NONE]) will be assigned to the item (which " +"means it won't have any accelerator). See [method get_item_accelerator] for " +"more info on accelerators.\n" +"[b]Note:[/b] Checkable items just display a checkmark, but don't have any " +"built-in checking behavior and must be checked/unchecked manually. See " +"[method set_item_checked] for more info on how to control it." +msgstr "" +"添加一个带有文本 [param label] 的新单选勾选按钮。\n" +"可以选择提供一个 [param id] 以及一个加速器([param accel])。如果未提供 " +"[param id],将从索引中创建一个。如果未提供 [param accel],则默认值 0(对应于 " +"[constant @GlobalScope.KEY_NONE])将被分配给该项(这意味着它不会有任何加速" +"器)。有关加速器的更多信息,请参阅 [method get_item_accelerator]。\n" +"[b]注意:[/b] 可勾选项只显示一个勾选标记,但没有任何内置的勾选行为,必须手动" +"勾选/取消勾选。有关如何控制它的更多信息,请参阅 [method set_item_checked]。" + +msgid "" +"Adds a new radio check button and assigns a [Shortcut] to it. Sets the label " +"of the checkbox to the [Shortcut]'s name.\n" +"An [param id] can optionally be provided. If no [param id] is provided, one " +"will be created from the index.\n" +"[b]Note:[/b] Checkable items just display a checkmark, but don't have any " +"built-in checking behavior and must be checked/unchecked manually. See " +"[method set_item_checked] for more info on how to control it." +msgstr "" +"添加一个新的单选勾选按钮并为其分配一个 [ShortCut]。将复选框的标签设置为 " +"[ShortCut] 的名称。\n" +"可以选择提供一个 [param id]。如果未提供 [param id],将从索引中创建一个。\n" +"[b]注意:[/b]可勾选项只显示一个勾选标记,但没有任何内置的勾选行为,必须手动勾" +"选/取消勾选。有关如何控制它的更多信息,请参阅 [method set_item_checked]。" + msgid "Removes all items from the [PopupMenu]." msgstr "从该 [PopupMenu] 中移除所有项目。" @@ -45484,6 +56298,27 @@ msgid "" "no item is focused." msgstr "返回当前焦点项目的索引。如果没有焦点,则返回 [code]-1[/code]。" +msgid "Returns the icon of the item at the given [param index]." +msgstr "返回给定 [param index] 处的项的图标。" + +msgid "" +"Returns the ID of the item at the given [param index]. [code]id[/code] can " +"be manually assigned, while index can not." +msgstr "" +"返回给定 [param index] 处的项的 ID。[code]id[/code] 可以手动分配,而 index 则" +"不能。" + +msgid "Returns the horizontal offset of the item at the given [param index]." +msgstr "返回给定 [param index] 处的项的水平偏移量。" + +msgid "" +"Returns the index of the item containing the specified [param id]. Index is " +"automatically assigned to each item by the engine and can not be set " +"manually." +msgstr "" +"返回包含指定 [param id] 的项的索引。索引由引擎自动分配给每个项目,不能被手动" +"设置。" + msgid "" "Returns the metadata of the specified item, which might be of any type. You " "can set it with [method set_item_metadata], which provides a simple way of " @@ -45493,6 +56328,59 @@ msgstr "" "set_item_metadata] 来设置它,它提供了一种将上下文数据分配给项的简单方法。" msgid "" +"Returns the [Shortcut] associated with the item at the given [param index]." +msgstr "返回与给定 [param index] 处的项关联的 [Shortcut]。" + +msgid "" +"Returns the submenu name of the item at the given [param index]. See [method " +"add_submenu_item] for more info on how to add a submenu." +msgstr "" +"返回给定 [param index] 处项的子菜单名称。有关如何添加子菜单的更多信息,请参" +"见 [method add_submenu_item]。" + +msgid "Returns the text of the item at the given [param index]." +msgstr "返回索引为 [param index] 的菜单项的文本。" + +msgid "" +"Returns the tooltip associated with the item at the given [param index]." +msgstr "返回索引为 [param index] 的菜单项所关联的工具提示。" + +msgid "" +"Returns [code]true[/code] if the item at the given [param index] is " +"checkable in some way, i.e. if it has a checkbox or radio button.\n" +"[b]Note:[/b] Checkable items just display a checkmark or radio button, but " +"don't have any built-in checking behavior and must be checked/unchecked " +"manually." +msgstr "" +"如果给定 [param index] 处的项可以某种方式勾选,即如果它有一个复选框或单选按" +"钮,则返回 [code]true[/code]。\n" +"[b]注意:[/b]可勾选项仅显示一个勾选标记或单选按钮,但没有任何内置的勾选行为," +"必须手动勾选/取消勾选。" + +msgid "" +"Returns [code]true[/code] if the item at the given [param index] is checked." +msgstr "如果给定的 [param index] 处的项被勾选,则返回 [code]true[/code]。" + +msgid "" +"Returns [code]true[/code] if the item at the given [param index] is " +"disabled. When it is disabled it can't be selected, or its action invoked.\n" +"See [method set_item_disabled] for more info on how to disable an item." +msgstr "" +"如果给定 [param index] 处的项被禁用,则返回 [code]true[/code]。当被禁用时,它" +"不能被选择,且它的动作不能被调用。\n" +"有关如何禁用一个项目的更多信息,请参阅 [method set_item_disabled]。" + +msgid "" +"Returns [code]true[/code] if the item at the given [param index] 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." +msgstr "" +"如果给定 [param index] 处的项具有单选按钮样式的可勾选性,则返回 [code]true[/" +"code]。\n" +"[b]注意:[/b]这纯粹是装饰性的;必须添加用于单选组中勾选/取消勾选项目的逻辑。" + +msgid "" "Returns [code]true[/code] if the item is a separator. If it is, it will be " "displayed as a line. See [method add_separator] for more info on how to add " "a separator." @@ -45504,6 +56392,53 @@ msgid "Returns [code]true[/code] if the specified item's shortcut is disabled." msgstr "如果指定项的快捷方式被禁用,则返回 [code]true[/code]。" msgid "" +"Removes the item at the given [param index] from the menu.\n" +"[b]Note:[/b] The indices of items after the removed item will be shifted by " +"one." +msgstr "" +"从菜单中移除给定 [param index] 处的项。\n" +"[b]注意:[/b]被移除的项后面的项的索引将移动一位。" + +msgid "" +"Sets the currently focused item as the given [param index].\n" +"Passing [code]-1[/code] as the index makes so that no item is focused." +msgstr "" +"将当前聚焦的项设置为给定的 [param index]。\n" +"将 [code]-1[/code] 作为索引传入将不会聚焦任何项。" + +msgid "" +"Sets whether the item at the given [param index] has a checkbox. If " +"[code]false[/code], sets the type of the item to plain text.\n" +"[b]Note:[/b] Checkable items just display a checkmark, but don't have any " +"built-in checking behavior and must be checked/unchecked manually." +msgstr "" +"设置给定 [param index] 处的项是否具有一个复选框。如果为 [code]false[/code]," +"则将项的类型设置为纯文本。\n" +"[b]注意:[/b]可勾选的项只显示一个复选标记,但没有任何内置的勾选行为,必须手动" +"勾选/取消勾选。" + +msgid "" +"Sets the type of the item at the given [param index] to radio button. If " +"[code]false[/code], sets the type of the item to plain text." +msgstr "" +"将给定 [param index] 处的项的类型设置为一个单选按钮。如果为 [code]false[/" +"code],则将项的类型设置为纯文本。" + +msgid "" +"Mark the item at the given [param index] as a separator, which means that it " +"would be displayed as a line. If [code]false[/code], sets the type of the " +"item to plain text." +msgstr "" +"将给定 [param index] 处的项标记为分隔符,这意味着它将显示为直线段。如果为 " +"[code]false[/code],则将项的类型设置为纯文本。" + +msgid "Replaces the [Texture2D] icon of the item at the given [param index]." +msgstr "替换索引为 [param index] 的菜单项的 [Texture2D] 图标。" + +msgid "Sets the horizontal offset of the item at the given [param index]." +msgstr "设置索引为 [param index] 的菜单项的水平偏移量。" + +msgid "" "Sets the metadata of an item, which may be of any type. You can later get it " "with [method get_item_metadata], which provides a simple way of assigning " "context data to items." @@ -45516,6 +56451,21 @@ msgid "" "details." msgstr "设置一个多态项目的状态。详情请参阅 [method add_multistate_item]。" +msgid "Sets a [Shortcut] for the item at the given [param index]." +msgstr "设置索引为 [param index] 的菜单项的 [Shortcut]。" + +msgid "Disables the [Shortcut] of the item at the given [param index]." +msgstr "禁用索引为 [param index] 的菜单项的 [Shortcut]。" + +msgid "Sets the text of the item at the given [param index]." +msgstr "设置索引为 [param index] 的菜单项的文本。" + +msgid "Sets the [String] tooltip of the item at the given [param index]." +msgstr "设置索引为 [param index] 的菜单项的 [String] 工具提示。" + +msgid "Toggles the check state of the item at the given [param index]." +msgstr "切换索引为 [param index] 的菜单项的选中状态。" + msgid "" "Cycle to the next state of a multistate item. See [method " "add_multistate_item] for details." @@ -45659,6 +56609,15 @@ msgstr "用于显示带有面板背景的弹出窗口的类。" msgid "The background panel style of this [PopupPanel]." msgstr "这个 [PopupPanel] 的背景面板样式。" +msgid "Return the compression mode used (valid after initialized)." +msgstr "返回使用的压缩模式(初始化后有效)。" + +msgid "Return the image format used (valid after initialized)." +msgstr "返回使用的图像格式(初始化后有效)。" + +msgid "Allow overriding the texture size (for 2D only)." +msgstr "允许覆盖纹理大小(仅限 2D)。" + msgid "" "Base class for all primitive meshes. Handles applying a [Material] to a " "primitive mesh." @@ -45667,6 +56626,20 @@ msgstr "所有图元网格的基类。处理将 [Material] 应用到图元网格 msgid "The current [Material] of the primitive mesh." msgstr "该图元网格的当前 [Material]。" +msgid "" +"If [member add_uv2] is set, specifies the padding in pixels applied along " +"seams of the mesh. Lower padding values allow making better use of the " +"lightmap texture (resulting in higher texel density), but may introduce " +"visible lightmap bleeding along edges.\n" +"If the size of the lightmap texture can't be determined when generating the " +"mesh, UV2 is calculated assuming a texture size of 1024x1024." +msgstr "" +"如果设置了 [member add_uv2],则指定沿网格接缝被应用的以像素为单位的填充。较低" +"的填充值允许更好地利用光照贴图纹理(导致更高的纹素密度),但可能会沿边缘引入" +"可见的光照贴图渗色。\n" +"如果在生成网格时无法确定光照贴图纹理的大小,则计算 UV2 时假定纹理大小为 " +"1024x1024。" + msgid "Class representing a prism-shaped [PrimitiveMesh]." msgstr "表示棱柱形 [PrimitiveMesh] 的类。" @@ -45694,6 +56667,20 @@ msgstr "" "从 [member ground_horizon_color] 渐变到 [member ground_bottom_color] 的速度。" msgid "" +"The sky cover texture to use. This texture must use an equirectangular " +"projection (similar to [PanoramaSkyMaterial]). The texture's colors will be " +"[i]added[/i] to the existing sky color, and will be multiplied by [member " +"sky_energy_multiplier] and [member sky_cover_modulate]. This is mainly " +"suited to displaying stars at night, but it can also be used to display " +"clouds at day or night (with a non-physically-accurate look)." +msgstr "" +"要使用的天空覆盖纹理。这个纹理必须使用一个等角投影(类似于" +"[PanoramaSkyMaterial])。 该纹理的颜色将被[i]添加[/i]到现有的天空颜色中,并将" +"乘以 [member sky_energy_multiplier] 和 [member sky_cover_modulate]。这主要适" +"用于显示夜晚的星星,但也可以用来显示白天或夜晚的云彩(具有非物理精确性的外" +"观)。" + +msgid "" "How quickly the [member sky_horizon_color] fades into the [member " "sky_top_color]." msgstr "从 [member sky_horizon_color] 渐变到 [member sky_top_color] 的速度。" @@ -45737,6 +56724,18 @@ msgstr "[ProgressBar] 的文本轮廓的色调。" msgid "The color of the text's shadow." msgstr "文本阴影的颜色。" +msgid "" +"Font used to draw the fill percentage if [member show_percentage] is " +"[code]true[/code]." +msgstr "" +"[member show_percentage] 为 [code]true[/code] 时,用于绘制填充百分比的字体。" + +msgid "" +"Font size used to draw the fill percentage if [member show_percentage] is " +"[code]true[/code]." +msgstr "" +"[member show_percentage] 为 [code]true[/code] 时,用于绘制填充百分比的字体。" + msgid "The style of the background." msgstr "背景的样式。" @@ -45747,12 +56746,36 @@ msgid "3D projection (4x4 matrix)." msgstr "3D 投影(4×4 矩阵)。" msgid "" +"A 4x4 matrix used for 3D projective transformations. It can represent " +"transformations such as translation, rotation, scaling, shearing, and " +"perspective division. It consists of four [Vector4] columns.\n" +"For purely linear transformations (translation, rotation, and scale), it is " +"recommended to use [Transform3D], as it is more performant and has a lower " +"memory footprint.\n" +"Used internally as [Camera3D]'s projection matrix." +msgstr "" +"一个用于三维投影变换的4x4矩阵。它可以表示诸如平移、旋转、缩放、剪切和透视分割" +"等变换。它由四个[Vector4]列组成。\n" +"对于纯粹的线性变换(平移、旋转和缩放),建议使用[Transform3D],因为它的性能更" +"强,内存占用更少。\n" +"在内部作为[Camera3D]的投影矩阵使用。" + +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 "Constructs a Projection as a copy of the given [Transform3D]." +msgstr "将 Projection 作为给定 [Transform3D] 的副本进行构造。" + +msgid "Constructs a Projection from four [Vector4] values (matrix columns)." +msgstr "从四个 [Vector4] 值(矩阵列)构造 Projection。" + +msgid "Returns the X:Y aspect ratio of this [Projection]'s viewport." +msgstr "返回该 [Projection] 视口的 X:Y 纵横比。" + msgid "" "The projection matrix's W vector (column 3). Equivalent to array index " "[code]3[/code]." @@ -45791,6 +56814,46 @@ msgstr "该投影的右裁剪平面的索引值。" msgid "The index value of the projection bottom clipping plane." msgstr "该投影的下裁剪平面的索引值。" +msgid "" +"A [Projection] with no transformation defined. When applied to other data " +"structures, no transformation is performed." +msgstr "未定义变换的 [Projection]。对其他数据结构使用时,不会进行任何变换。" + +msgid "" +"A [Projection] with all values initialized to 0. When applied to other data " +"structures, they will be zeroed." +msgstr "" +"所有值都初始化为 0 的 [Projection]。对其他数据结构使用时,会进行清零操作。" + +msgid "" +"Returns [code]true[/code] if the projections are not equal.\n" +"[b]Note:[/b] Due to floating-point precision errors, this may return " +"[code]true[/code], even if the projections are virtually equal. An " +"[code]is_equal_approx[/code] method may be added in a future version of " +"Godot." +msgstr "" +"如果投影不相等,则返回 [code]true[/code]。\n" +"[b]注意:[/b]由于浮点精度误差,即使投影实际上相等,也可能会返回 [code]true[/" +"code] 。可能会在 Godot 的未来版本中添加 [code]is_equal_approx[/code] 方法。" + +msgid "" +"Returns [code]true[/code] if the projections are equal.\n" +"[b]Note:[/b] Due to floating-point precision errors, this may return " +"[code]false[/code], even if the projections are virtually equal. An " +"[code]is_equal_approx[/code] method may be added in a future version of " +"Godot." +msgstr "" +"如果投影相等,则返回 [code]true[/code]。\n" +"[b]注意:[/b]由于浮点精度错误,即使投影实际上相等,也可能会返回 [code]false[/" +"code]。可能会在 Godot 的未来版本中添加 [code]is_equal_approx[/code] 方法。" + +msgid "" +"Returns the column of the [Projection] with the given index.\n" +"Indices are in the following order: x, y, z, w." +msgstr "" +"返回具有给定索引的 [Projection] 的列。\n" +"索引按以下顺序排列:x、y、z、w。" + msgid "Contains global variables accessible from everywhere." msgstr "包含全局变量,可以从任何地方访问。" @@ -45835,14 +56898,113 @@ msgid "Clears the whole configuration (not recommended, may break things)." msgstr "清除整个配置(不推荐,可能会弄坏东西)。" msgid "" +"Returns an [Array] of registered global classes. Each global class is " +"represented as a [Dictionary] that contains the following entries:\n" +"- [code]base[/code] is a name of the base class;\n" +"- [code]class[/code] is a name of the registered global class;\n" +"- [code]icon[/code] is a path to a custom icon of the global class, if it " +"has any;\n" +"- [code]language[/code] is a name of a programming language in which the " +"global class is written;\n" +"- [code]path[/code] is a path to a file containing the global class.\n" +"[b]Note:[/b] Both the script and the icon paths are local to the project " +"filesystem, i.e. they start with [code]res://[/code]." +msgstr "" +"返回已注册的全局类的 [Array]。每个全局类都被表示为包含以下条目的 " +"[Dictionary]:\n" +"- [code]base[/code] 是基类的名称;\n" +"- [code]class[/code] 是被注册的全局类的名称;\n" +"- [code]icon[/code] 是全局类自定义图标的路径,如果有的话;\n" +"- [code]language[/code] 是编写全局类的编程语言的名称;\n" +"- [code]path[/code] 是包含全局类的文件的路径。\n" +"[b]注意:[/b]脚本和图标路径都是项目文件系统的本地路径,即它们以 [code]res://" +"[/code] 开头。" + +msgid "" "Returns the order of a configuration value (influences when saved to the " "config file)." msgstr "返回配置值的顺序(保存到配置文件时会产生影响)。" +msgid "" +"Returns the absolute, native OS path corresponding to the localized [param " +"path] (starting with [code]res://[/code] or [code]user://[/code]). The " +"returned path will vary depending on the operating system and user " +"preferences. See [url=$DOCS_URL/tutorials/io/data_paths.html]File paths in " +"Godot projects[/url] to see what those paths convert to. See also [method " +"localize_path].\n" +"[b]Note:[/b] [method globalize_path] with [code]res://[/code] will not work " +"in an exported project. Instead, prepend the executable's base directory to " +"the path when running from an exported project:\n" +"[codeblock]\n" +"var path = \"\"\n" +"if OS.has_feature(\"editor\"):\n" +" # Running from an editor binary.\n" +" # `path` will contain the absolute path to `hello.txt` located in the " +"project root.\n" +" path = ProjectSettings.globalize_path(\"res://hello.txt\")\n" +"else:\n" +" # Running from an exported project.\n" +" # `path` will contain the absolute path to `hello.txt` next to the " +"executable.\n" +" # This is *not* identical to using `ProjectSettings.globalize_path()` " +"with a `res://` path,\n" +" # but is close enough in spirit.\n" +" path = OS.get_executable_path().get_base_dir().path_join(\"hello.txt\")\n" +"[/codeblock]" +msgstr "" +"返回与本地化 [param path](以 [code]res://[/code] 或 [code]user://[/code] 开" +"头)相对应的绝对原生 OS 路径。返回的路径将因操作系统和用户首选项而异。 请参阅" +"[url=$DOCS_URL/tutorials/io/data_paths.html]《Godot 项目中的文件路径》[/url]" +"以查看这些路径转换成的内容。另请参阅 [method localize_path]。\n" +"[b]注意:[/b]对 [code]res://[/code] 调用 [method globalize_path] 在导出的项目" +"中不会起作用。而是,当从导出的项目运行时,将可执行文件的基目录添加到路径" +"中:\n" +"[codeblock]\n" +"var path = \"\"\n" +"if OS.has_feature(\"editor\"):\n" +" # 从编辑器二进制文件运行。\n" +" # `path` 将包含位于项目根目录中的 `hello.txt` 的绝对路径。\n" +" path = ProjectSettings.globalize_path(\"res://hello.txt\")\n" +"else:\n" +" # 从导出的项目运行。\n" +" # `path` 将包含可执行文件旁边的 `hello.txt` 的绝对路径。\n" +" # 这与使用 `ProjectSettings.globalize_path()` 和 `res://` 路径*不*相" +"同,\n" +" # 但在目的上足够接近。\n" +" path = OS.get_executable_path().get_base_dir().path_join(\"hello.txt\")\n" +"[/codeblock]" + msgid "Returns [code]true[/code] if a configuration value is present." msgstr "配置值存在时返回 [code]true[/code]。" msgid "" +"Loads the contents of the .pck or .zip file specified by [param pack] into " +"the resource filesystem ([code]res://[/code]). Returns [code]true[/code] on " +"success.\n" +"[b]Note:[/b] If a file from [param pack] shares the same path as a file " +"already in the resource filesystem, any attempts to load that file will use " +"the file from [param pack] unless [param replace_files] is set to " +"[code]false[/code].\n" +"[b]Note:[/b] The optional [param offset] parameter can be used to specify " +"the offset in bytes to the start of the resource pack. This is only " +"supported for .pck files." +msgstr "" +"将 [param pack] 指定的 .pck 或 .zip 文件的内容,加载到资源文件系统" +"([code]res://[/code])。成功时返回 [code]true[/code]。\n" +"[b]注意:[/b]如果来自 [param pack] 的文件与资源文件系统中已有的文件路径相同," +"则任何加载该文件的尝试,都将使用来自 [param pack] 的文件,除非 [param " +"replace_files] 被设置为 [code]false[/code]。\n" +"[b]注意:[/b]可选的 [param offset] 参数可用于指定资源包开头的字节偏移量。这只" +"支持 .pck 文件。" + +msgid "" +"Returns the localized path (starting with [code]res://[/code]) corresponding " +"to the absolute, native OS [param path]. See also [method globalize_path]." +msgstr "" +"返回对应于绝对本地操作系统 [param path] 的本地化路径(以 [code]res://[/code] " +"开头)。另见 [method globalize_path]。" + +msgid "" "Saves the configuration to the [code]project.godot[/code] file.\n" "[b]Note:[/b] This method is intended to be used by editor plugins, as " "modified [ProjectSettings] can't be loaded back in the running app. If you " @@ -45876,6 +57038,18 @@ msgid "" "file)." msgstr "设置配置值的顺序(保存到配置文件时会产生影响)。" +msgid "" +"Sets whether a setting requires restarting the editor to properly take " +"effect.\n" +"[b]Note:[/b] This is just a hint to display to the user that the editor must " +"be restarted for changes to take effect. Enabling [method " +"set_restart_if_changed] does [i]not[/i] delay the setting being set when " +"changed." +msgstr "" +"设置一个设置是否需要重新启动编辑器才能正确生效。\n" +"[b]注意:[/b]这只是向用户显示的提示,提示必须重新启动编辑器才能使更改生效。启" +"用 [method set_restart_if_changed] [i]不[/i]会延迟在更改时设置的设置。" + msgid "Background color for the boot splash." msgstr "启动界面的背景色。" @@ -45921,6 +57095,21 @@ msgstr "" "稿)。如果为 [code]false[/code],则使用最近邻插值(推荐用于像素画)。" msgid "" +"This user directory is used for storing persistent data ([code]user://[/" +"code] filesystem). If a custom directory name is defined, this name will be " +"appended to the system-specific user data directory (same parent folder as " +"the Godot configuration folder documented in [method OS." +"get_user_data_dir]).\n" +"The [member application/config/use_custom_user_dir] setting must be enabled " +"for this to take effect." +msgstr "" +"该用户目录用于存储持久数据([code]user://[/code] 文件系统)。如果定义了自定义" +"目录名称,则该名称将被追加到系统特定的用户数据目录(与 [method OS." +"get_user_data_dir] 中记录的 Godot 配置文件夹相同的父文件夹)。\n" +"[member application/config/use_custom_user_dir] 设置必须被启用,该设置才能生" +"效。" + +msgid "" "The project's description, displayed as a tooltip in the Project Manager " "when hovering the project." msgstr "项目的描述,在项目管理器中悬停时显示为工具提示。" @@ -45978,6 +57167,24 @@ msgstr "" "取来覆盖项目设置。" msgid "" +"If [code]true[/code], the project will save user data to its own user " +"directory. If [member application/config/custom_user_dir_name] is empty, " +"[code]<OS user data directory>/<project name>[/code] directory will be used. " +"If [code]false[/code], the project will save user data to [code]<OS user " +"data directory>/Godot/app_userdata/<project name>[/code].\n" +"See also [url=$DOCS_URL/tutorials/io/data_paths.html#accessing-persistent-" +"user-data-user]File paths in Godot projects[/url]. This setting is only " +"effective on desktop platforms." +msgstr "" +"如果为 [code]true[/code],项目会将用户数据保存到它自己的用户目录中。如果 " +"[member application/config/custom_user_dir_name] 为空,将使用 [code]<操作系统" +"用户数据目录>/<项目名称>[/code] 目录。如果为 [code]false[/code],项目会将用户" +"数据保存到 [code]<操作系统用户数据目录>/Godot/app_userdata/<项目名称>[/" +"code]。\n" +"另见 [url=$DOCS_URL/tutorials/io/data_paths.html#accessing-persistent-user-" +"data-user]Godot 项目中的文件路径[/url]。该设置仅在桌面平台上有效。" + +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]." @@ -46152,6 +57359,51 @@ msgid "Specifies the maximum number of log files allowed (used for rotation)." msgstr "指定允许的最大日志文件数量(用于轮换)。" msgid "" +"When set to [code]warn[/code] or [code]error[/code], produces a warning or " +"an error respectively when an [code]assert[/code] call always evaluates to " +"false." +msgstr "" +"设为 [code]warn[/code] 或 [code]error[/code] 时,会在 [code]assert[/code] 调" +"用永远求值为 false 时对应产生警告或错误。" + +msgid "" +"When set to [code]warn[/code] or [code]error[/code], produces a warning or " +"an error respectively when an [code]assert[/code] call always evaluates to " +"true." +msgstr "" +"设为 [code]warn[/code] 或 [code]error[/code] 时,会在 [code]assert[/code] 调" +"用永远求值为 true 时对应产生警告或错误。" + +msgid "" +"When set to [code]warn[/code] or [code]error[/code], produces a warning or " +"an error respectively when an identifier contains characters that can be " +"confused with something else, like when mixing different alphabets." +msgstr "" +"设为 [code]warn[/code] 或 [code]error[/code] 时,会在标识符中的字符可能与其他" +"东西产生混淆时对应产生警告或错误,例如混用不同的字母表。" + +msgid "" +"When set to [code]warn[/code] or [code]error[/code], produces a warning or " +"an error respectively when a constant is used as a function." +msgstr "" +"设为 [code]warn[/code] 或 [code]error[/code] 时,会在将常量当作函数使用时对应" +"产生警告或错误。" + +msgid "" +"When set to [code]warn[/code] or [code]error[/code], produces a warning or " +"an error respectively when deprecated keywords are used." +msgstr "" +"设为 [code]warn[/code] 或 [code]error[/code] 时,会在使用已启用的关键字时对应" +"产生警告或错误。" + +msgid "" +"When set to [code]warn[/code] or [code]error[/code], produces a warning or " +"an error respectively when an empty file is parsed." +msgstr "" +"设为 [code]warn[/code] 或 [code]error[/code] 时,会在解析空文件时对应产生警告" +"或错误。" + +msgid "" "If [code]true[/code], enables specific GDScript warnings (see [code]debug/" "gdscript/warnings/*[/code] settings). If [code]false[/code], disables all " "GDScript warnings." @@ -46168,25 +57420,327 @@ msgstr "" "警告。" msgid "" +"When set to [code]warn[/code] or [code]error[/code], produces a warning or " +"an error respectively when using a function as if it is a property." +msgstr "" +"设置为 [code]warn[/code] 或 [code]error[/code] 时,当函数作为属性使用时会分别" +"产生一个警告或一个错误。" + +msgid "" +"When set to [code]warn[/code] or [code]error[/code], produces a warning or " +"an error respectively when [method Node.get_node] (or the shorthand [code]$[/" +"code]) is used as default value of a class variable without the " +"[code]@onready[/code] annotation." +msgstr "" +"设置为 [code]warn[/code] 或 [code]error[/code] 时,当 [method Node.get_node]" +"(或简写 [code]$[/code])被用作一个没有 [code]@onready[/code] 注解的类变量的" +"默认值时,会分别产生一个警告或一个错误 。" + +msgid "" +"When set to [code]warn[/code] or [code]error[/code], produces a warning or " +"an error respectively when a ternary operator may emit values with " +"incompatible types." +msgstr "" +"设置为 [code]warn[/code] 或 [code]error[/code] 时,当三元运算符可能发出具有不" +"兼容类型的值时,分别产生一个警告或一个错误。" + +msgid "" +"When set to [code]warn[/code] or [code]error[/code], produces a warning or " +"an error respectively when a static inferred type uses a [Variant] as " +"initial value, which makes the static type to also be Variant." +msgstr "" +"设置为 [code]warn[/code] 或 [code]error[/code] 时,当静态推断类型使用一个 " +"[Variant] 作为初始值时,这使得静态类型也成为 Variant,会分别产生一个警告或一" +"个错误。" + +msgid "" +"When set to [code]warn[/code] or [code]error[/code], produces a warning or " +"an error respectively when trying to use an integer as an enum without an " +"explicit cast." +msgstr "" +"设置为 [code]warn[/code] 或 [code]error[/code] 时,当尝试将整数用作没有显式转" +"换的枚举时,会分别产生一个警告或一个错误。" + +msgid "" +"When set to [code]warn[/code] or [code]error[/code], produces a warning or " +"an error respectively when trying to use an integer as an enum when there is " +"no matching enum member for that numeric value." +msgstr "" +"设置为 [code]warn[/code] 或 [code]error[/code] 时,当在尝试将整数用作枚举,且" +"没有与该数值匹配的枚举成员时,会分别产生一个警告或一个错误。" + +msgid "" +"When set to [code]warn[/code] or [code]error[/code], produces a warning or " +"an error respectively when dividing an integer by another integer (the " +"decimal part will be discarded)." +msgstr "" +"设置为 [code]warn[/code] 或 [code]error[/code] 时,当一个整数除以另一个整数时" +"(小数部分将被丢弃),会分别产生一个警告或一个错误。" + +msgid "" +"When set to [code]warn[/code] or [code]error[/code], produces a warning or " +"an error respectively when passing a floating-point value to a function that " +"expects an integer (it will be converted and lose precision)." +msgstr "" +"设置为 [code]warn[/code] 或 [code]error[/code] 时,在将浮点值传递给需要整数的" +"函数时(它将被转换并失去精度),会分别产生一个警告或一个错误。" + +msgid "" +"When set to [code]warn[/code] or [code]error[/code], produces a warning or " +"an error respectively when a method in the script overrides a native method, " +"because it may not behave as expected." +msgstr "" +"设置为 [code]warn[/code] 或 [code]error[/code] 时,当脚本中的方法覆盖本地方" +"法,因为它可能不会按预期运行时,会分别产生一个警告或一个错误。" + +msgid "" +"When set to [code]warn[/code] or [code]error[/code], produces a warning or " +"an error respectively when the [code]@onready[/code] annotation is used " +"together with the [code]@export[/code] annotation, since it may not behave " +"as expected." +msgstr "" +"设置为 [code]warn[/code] 或 [code]error[/code] 时,当 [code]@onready[/code] " +"注解与 [code]@export[/code] 注解一起使用时,因为它可能不会按预期运行,会分别" +"产生一个警告或一个错误。" + +msgid "" +"When set to [code]warn[/code] or [code]error[/code], produces a warning or " +"an error respectively when using a property as if it is a function." +msgstr "" +"设置为 [code]warn[/code] 或 [code]error[/code] 时,当像函数一样使用一个属性" +"时,会分别产生一个警告或一个错误。" + +msgid "" +"When set to [code]warn[/code] or [code]error[/code], produces a warning or " +"an error respectively when a function that is not a coroutine is called with " +"await." +msgstr "" +"设置为 [code]warn[/code] 或 [code]error[/code] 时,当使用 await 调用一个非协" +"程的函数时,会分别产生一个警告或一个错误。" + +msgid "" +"When enabled, using a property, enum, or function that was renamed since " +"Godot 3 will produce a hint if an error occurs." +msgstr "" +"启用后,使用自 Godot 3 以来重命名的属性、枚举或函数,将在发生错误时产生一个提" +"示。" + +msgid "" +"When set to [code]warn[/code] or [code]error[/code], produces a warning or " +"an error respectively when calling a function without using its return value " +"(by assigning it to a variable or using it as a function argument). Such " +"return values are sometimes used to denote possible errors using the [enum " +"Error] enum." +msgstr "" +"设置为 [code]warn[/code] 或 [code]error[/code] 时,当调用函数却不使用其返回值" +"(通过将其分配给变量或将其用作函数参数)时,会分别产生一个警告或一个错误。此" +"类返回值有时使用 [enum Error] 枚举,用于表示可能的错误。" + +msgid "" +"When set to [code]warn[/code] or [code]error[/code], produces a warning or " +"an error respectively when defining a local or member variable, signal, or " +"enum that would have the same name as a built-in function or global class " +"name, thus shadowing it." +msgstr "" +"设置为 [code]warn[/code] 或 [code]error[/code] 时,当定义一个与内置函数或全局" +"类同名的局部变量或成员变量、信号、或枚举,从而隐藏该内置函数或全局类时,会分" +"别产生一个警告或一个错误。" + +msgid "" +"When set to [code]warn[/code] or [code]error[/code], produces a warning or " +"an error respectively when defining a local or member variable that would " +"shadow a member variable that the class defines." +msgstr "" +"设置为 [code]warn[/code] 或 [code]error[/code] 时,当定义一个局部变量或成员变" +"量,且该变量将隐藏该类定义的成员变量时,会分别产生一个警告或一个错误。" + +msgid "" +"When set to [code]warn[/code] or [code]error[/code], produces a warning or " +"an error respectively when defining a local or subclass member variable that " +"would shadow a variable that is inherited from a parent class." +msgstr "" +"设置为 [code]warn[/code] 或 [code]error[/code] 时,当定义一个局部变量或子类成" +"员变量,且该变量将隐藏从父类继承的变量时,将分别产生一个警告或一个错误。" + +msgid "" +"When set to [code]warn[/code] or [code]error[/code], produces a warning or " +"an error respectively when calling an expression that has no effect on the " +"surrounding code, such as writing [code]2 + 2[/code] as a statement." +msgstr "" +"设置为 [code]warn[/code] 或 [code]error[/code] 时,当调用对周围代码没有影响的" +"表达式,例如将 [code]2 + 2 [/code] 写为语句时,会分别产生一个警告或一个错误。" + +msgid "" +"When set to [code]warn[/code] or [code]error[/code], produces a warning or " +"an error respectively when calling a ternary expression that has no effect " +"on the surrounding code, such as writing [code]42 if active else 0[/code] as " +"a statement." +msgstr "" +"设置为 [code]warn[/code] 或 [code]error[/code] 时,当调用对周围代码没有影响的" +"三元表达式,例如将 [code]42 if active else 0[/code] 写为语句时,会分别产生一" +"个警告或一个错误。" + +msgid "" +"When set to [code]warn[/code] or [code]error[/code], produces a warning or " +"an error respectively when calling a static method from an instance of a " +"class instead of from the class directly." +msgstr "" +"设置为 [code]warn[/code] 或 [code]error[/code] 时,当从类的实例而不是直接从类" +"调用静态方法时,会分别产生一个警告或一个错误。" + +msgid "" +"When set to [code]warn[/code] or [code]error[/code], produces a warning or " +"an error respectively when using a variable that wasn't previously assigned." +msgstr "" +"设置为 [code]warn[/code] 或 [code]error[/code] 时,当使用以前未分配的变量时," +"会分别产生一个警告或一个错误。" + +msgid "" +"When set to [code]warn[/code] or [code]error[/code], produces a warning or " +"an error respectively when assigning a variable using an assignment operator " +"like [code]+=[/code] if the variable wasn't previously assigned." +msgstr "" +"设置为 [code]warn[/code] 或 [code]error[/code] 时,当使用 [code]+=[/code] 等" +"赋值运算符分配一个变量,且该变量以前未分配时,会分别产生一个警告或一个错误。" + +msgid "" +"When set to [code]warn[/code] or [code]error[/code], produces a warning or " +"an error respectively when unreachable code is detected (such as after a " +"[code]return[/code] statement that will always be executed)." +msgstr "" +"设置为 [code]warn[/code] 或 [code]error[/code] 时,当检测到无法访问的代码(例" +"如始终在 [code]return[/code] 语句之后被执行的代码)时,会分别产生一个警告或一" +"个错误。" + +msgid "" +"When set to [code]warn[/code] or [code]error[/code], produces a warning or " +"an error respectively when an unreachable [code]match[/code] pattern is " +"detected." +msgstr "" +"设置为 [code]warn[/code] 或 [code]error[/code] 时,当检测到无法到达的 " +"[code]match[/code] 模式时,会分别产生一个警告或一个错误。" + +msgid "" +"When set to [code]warn[/code] or [code]error[/code], produces a warning or " +"an error respectively when using an expression whose type may not be " +"compatible with the function parameter expected." +msgstr "" +"设置为 [code]warn[/code] 或 [code]error[/code] 时,当使用类型可能与函数参数预" +"期的类型不兼容的表达式时,会分别产生一个警告或一个错误。" + +msgid "" +"When set to [code]warn[/code] or [code]error[/code], produces a warning or " +"an error respectively when performing an unsafe cast." +msgstr "" +"设置为 [code]warn[/code] 或 [code]error[/code] 时,当执行不安全的转换时,会分" +"别产生一个警告或一个错误。" + +msgid "" +"When set to [code]warn[/code] or [code]error[/code], produces a warning or " +"an error respectively when calling a method whose presence is not guaranteed " +"at compile-time in the class." +msgstr "" +"设置为 [code]warn[/code] 或 [code]error[/code] 时,当调用类中不能保证在编译时" +"存在的方法时,会分别产生一个警告或一个错误。" + +msgid "" +"When set to [code]warn[/code] or [code]error[/code], produces a warning or " +"an error respectively when accessing a property whose presence is not " +"guaranteed at compile-time in the class." +msgstr "" +"设置为 [code]warn[/code] 或 [code]error[/code] 时,当访问类中不能保证在编译时" +"存在的属性时,会分别产生一个警告或一个错误。" + +msgid "" +"When set to [code]warn[/code] or [code]error[/code], produces a warning or " +"an error respectively when returning a call from a [code]void[/code] " +"function when such call cannot be guaranteed to be also [code]void[/code]." +msgstr "" +"设置为 [code]warn[/code] 或 [code]error[/code] 时,当从 [code]void[/code] 函" +"数返回一个调用,且无法保证该调用也是 [code]void[/code] 时,会分别产生一个警告" +"或一个错误。" + +msgid "" +"When set to [code]warn[/code] or [code]error[/code], produces a warning or " +"an error respectively when a local constant is never used." +msgstr "" +"设置为 [code]warn[/code] 或 [code]error[/code] 时,当一个局部常量从未被使用" +"时,分别产生一个警告或一个错误。" + +msgid "" +"When set to [code]warn[/code] or [code]error[/code], produces a warning or " +"an error respectively when a function parameter is never used." +msgstr "" +"设置为 [code]warn[/code] 或 [code]error[/code] 时,当一个函数参数从未使用时," +"会分别产生一个警告或一个错误。" + +msgid "" +"When set to [code]warn[/code] or [code]error[/code], produces a warning or " +"an error respectively when a private member variable is never used." +msgstr "" +"设置为 [code]warn[/code] 或 [code]error[/code] 时,当一个私有成员变量从未被使" +"用时,会分别产生一个警告或一个错误。" + +msgid "" +"When set to [code]warn[/code] or [code]error[/code], produces a warning or " +"an error respectively when a signal is declared but never emitted." +msgstr "" +"设置为 [code]warn[/code] 或 [code]error[/code] 时,当一个信号被声明但从未发出" +"时,会分别产生一个警告或一个错误。" + +msgid "" +"When set to [code]warn[/code] or [code]error[/code], produces a warning or " +"an error respectively when a local variable is unused." +msgstr "" +"设置为 [code]warn[/code] 或 [code]error[/code] 时,当一个局部变量未被使用时," +"会分别产生一个警告或一个错误。" + +msgid "" "Message to be displayed before the backtrace when the engine crashes. By " "default, this message is only used in exported projects due to the editor-" "only override applied to this setting." msgstr "" -"引擎崩溃时,在调用站回溯前显示的消息。默认情况下,这个消息只会在导出后的项目" -"中使用,因为编辑器会对这个设置进行覆盖。" +"引擎崩溃时,在回溯之前显示的消息。默认情况下,由于仅限编辑器的覆盖会应用于该" +"设置,故该消息仅用于导出的项目中。" msgid "" "Editor-only override for [member debug/settings/crash_handler/message]. Does " "not affect exported projects in debug or release mode." msgstr "" -"仅用于编辑器的 [member debug/settings/crash_handler/message] 覆盖项。不会影响" -"用调试或发布模式导出的项目。" +"[member debug/settings/crash_handler/message] 的仅限编辑器的覆盖。不会影响以" +"调试或发布模式导出的项目。" msgid "Maximum call stack allowed for debugging GDScript." msgstr "调试 GDScript 时允许的最大调用堆栈。" +msgid "Maximum number of functions per frame allowed when profiling." +msgstr "分析时单帧允许的最大函数数量。" + msgid "Print frames per second to standard output every second." -msgstr "每秒钟打印帧到标准输出。" +msgstr "每秒将帧率打印到标准输出。" + +msgid "" +"Print GPU profile information to standard output every second. This includes " +"how long each frame takes the GPU to render on average, broken down into " +"different steps of the render pipeline, such as CanvasItems, shadows, glow, " +"etc." +msgstr "" +"每秒将 GPU 配置文件信息打印到标准输出。这包括平均每帧需要 GPU 渲染多长时间," +"细分为渲染管道的不同步骤,例如 CanvasItems、阴影、辉光等。" + +msgid "" +"Print more information to standard output when running. It displays " +"information such as memory leaks, which scenes and resources are being " +"loaded, etc. This can also be enabled using the [code]--verbose[/code] or " +"[code]-v[/code] [url=$DOCS_URL/tutorials/editor/command_line_tutorial." +"html]command line argument[/url], even on an exported project. See also " +"[method OS.is_stdout_verbose] and [method @GlobalScope.print_verbose]." +msgstr "" +"运行时将更多信息打印到标准输出。它显示诸如内存泄漏、正在加载哪些场景和资源等" +"信息。这也可以使用 [code]--verbose[/code] 或 [code]-v[/code] [url=$DOCS_URL/" +"tutorials/editor/command_line_tutorial.html]命令行参数[/url]来启用,即使在导" +"出的项目中也是如此。另见 [method OS.is_stdout_verbose] and [method " +"@GlobalScope.print_verbose]。" msgid "" "Color of the contact points between collision shapes, visible when \"Visible " @@ -46215,6 +57769,63 @@ msgid "" msgstr "栅格大小(像素),如果导航代理启用了调试,则会用于渲染该代理的路径点。" msgid "" +"If enabled, displays navigation agent paths when an agent has debug enabled." +msgstr "如果处于启用状态,会在导航代理启用调试时显示其路径。" + +msgid "" +"If enabled, displays navigation agent paths through geometry when an agent " +"has debug enabled." +msgstr "如果处于启用状态,会在导航代理启用调试时透过几何体显示其路径。" + +msgid "" +"If enabled, displays edge connections between navigation regions when " +"\"Visible Navigation\" is enabled in the Debug menu." +msgstr "" +"如果处于启用状态,会在启用“调试”菜单中的“显示导航”时显示导航地区之间的边缘连" +"接。" + +msgid "" +"If enabled, displays edge connections between navigation regions through " +"geometry when \"Visible Navigation\" is enabled in the Debug menu." +msgstr "" +"如果处于启用状态,会在启用“调试”菜单中的“显示导航”时透过几何体显示导航地区之" +"间的边缘连接。" + +msgid "" +"If enabled, displays navigation mesh polygon edges when \"Visible " +"Navigation\" is enabled in the Debug menu." +msgstr "" +"如果处于启用状态,会在启用“调试”菜单中的“显示导航”时显示导航网格多边形的边" +"缘。" + +msgid "" +"If enabled, displays navigation mesh polygon edges through geometry when " +"\"Visible Navigation\" is enabled in the Debug menu." +msgstr "" +"如果处于启用状态,会在启用“调试”菜单中的“显示导航”时透过几何体显示导航网格多" +"边形的边缘。" + +msgid "" +"If enabled, colorizes each navigation mesh polygon face with a random color " +"when \"Visible Navigation\" is enabled in the Debug menu." +msgstr "" +"如果处于启用状态,会在启用“调试”菜单中的“显示导航”时为每个导航网格多边形面使" +"用随机颜色着色。" + +msgid "" +"If enabled, displays navigation link connections when \"Visible Navigation\" " +"is enabled in the Debug menu." +msgstr "" +"如果处于启用状态,会在启用“调试”菜单中的“显示导航”时显示导航链接的连接。" + +msgid "" +"If enabled, displays navigation link connections through geometry when " +"\"Visible Navigation\" is enabled in the Debug menu." +msgstr "" +"如果处于启用状态,会在启用“调试”菜单中的“显示导航”时透过几何体显示导航链接的" +"连接。" + +msgid "" "Color to display enabled navigation mesh polygon edges, visible when " "\"Visible Navigation\" is enabled in the Debug menu." msgstr "" @@ -46300,8 +57911,22 @@ msgid "" "If [code]true[/code], the home indicator is hidden automatically. This only " "affects iOS devices without a physical home button." msgstr "" -"如果为 [code]true[/code],主指示器将自动隐藏。这只会影响没有物理 home 键的 " -"iOS 设备。" +"如果为 [code]true[/code],home 指示器将自动隐藏。这只会影响没有物理 home 键" +"的 iOS 设备。" + +msgid "" +"If [code]true[/code], the status bar is hidden while the app is running." +msgstr "如果为 [code]true[/code],则状态栏将在应用程序运行时隐藏。" + +msgid "" +"If [code]true[/code], it will require two swipes to access iOS UI that uses " +"gestures.\n" +"[b]Note:[/b] This setting has no effect on the home indicator if " +"[code]hide_home_indicator[/code] is [code]true[/code]." +msgstr "" +"如果为 [code]true[/code],则需要两次滑动才能访问使用手势的 iOS UI。\n" +"[b]注意:[/b]如果 [code]hide_home_indicator[/code] 为 [code]true[/code],则该" +"设置对 home 指示器没有影响。" msgid "" "If [code]true[/code], allows per-pixel transparency for the window " @@ -46449,6 +58074,28 @@ msgstr "" "这个设置。" msgid "" +"Sets the V-Sync mode for the main game window.\n" +"See [enum DisplayServer.VSyncMode] for possible values and how they affect " +"the behavior of your application.\n" +"Depending on the platform and used renderer, the engine will fall back to " +"[b]Enabled[/b] if the desired mode is not supported.\n" +"[b]Note:[/b] V-Sync modes other than [b]Enabled[/b] are only supported in " +"the Forward+ and Mobile rendering methods, not Compatibility.\n" +"[b]Note:[/b] This property is only read when the project starts. To change " +"the V-Sync mode at runtime, call [method DisplayServer." +"window_set_vsync_mode] instead." +msgstr "" +"设置游戏主窗口的垂直同步模式。\n" +"请参阅 [enum DisplayServer.VSyncMode] 了解可能的值以及它们如何影响应用程序的" +"行为。\n" +"根据平台和所使用的渲染器,如果不支持所需的模式,引擎将回退到 [b]Enabled[/" +"b]。\n" +"[b]注意:[/b]除 [b]Enabled[/b] 以外的垂直同步模式仅支持 Forward+ 和 Mobile 渲" +"染方式,不支持 Compatibility。\n" +"[b]注意:[/b]这个属性只在项目启动时读取。要在运行时改变垂直同步模式,请改为调" +"用 [method DisplayServer.window_set_vsync_mode]。" + +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 " @@ -46611,6 +58258,9 @@ msgstr "" "[member ScrollContainer.scroll_deadzone],它将用于所有 [ScrollContainer],除" "非fug。" +msgid "Maximum undo/redo history size for [TextEdit] fields." +msgstr "[TextEdit] 字段的最大撤销/重做历史大小。" + 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)." @@ -46630,6 +58280,12 @@ msgid "Default font hinting mode. See [member FontFile.hinting]." msgstr "默认字体微调模式。见 [member FontFile.hinting]。" msgid "" +"Default font glyph subpixel positioning mode. See [member FontFile." +"subpixel_positioning]." +msgstr "" +"默认字体字形的次像素定位模式。见 [member FontFile.subpixel_positioning]。" + +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] " @@ -46640,6 +58296,12 @@ msgstr "" "[member ThemeDB.fallback_base_scale]。" msgid "" +"LCD subpixel layout used for font anti-aliasing. See [enum TextServer." +"FontLCDSubpixelLayout]." +msgstr "" +"LCD 次像素布局,用于字体抗锯齿。见 [enum TextServer.FontLCDSubpixelLayout]。" + +msgid "" "When [member BaseButton.shortcut_feedback] is enabled, this is the time the " "[BaseButton] will remain highlighted after a shortcut." msgstr "" @@ -46664,7 +58326,7 @@ msgid "" "necessary for the internal logic of several [Control]s. The events assigned " "to the action can however be modified." msgstr "" -"默认用于确认焦点按钮、菜单或列表项,或验证输入的 [InputEventAction]。\n" +"默认 [InputEventAction],用于确认焦点按钮、菜单或列表项,或用于验证输入。\n" "[b]注意:[/b]默认的 [code]ui_*[/code] 动作是部分 [Control] 的内部逻辑所必需" "的,无法删除。但是可以修改分配给该动作的事件。" @@ -46674,7 +58336,27 @@ msgid "" "necessary for the internal logic of several [Control]s. The events assigned " "to the action can however be modified." msgstr "" -"默认用于放弃模态或挂起的输入的 [InputEventAction]。\n" +"默认 [InputEventAction],用于放弃模态或挂起的输入。\n" +"[b]注意:[/b]默认的 [code]ui_*[/code] 动作是部分 [Control] 的内部逻辑所必需" +"的,无法删除。但是可以修改分配给该动作的事件。" + +msgid "" +"Default [InputEventAction] to copy a selection to the clipboard.\n" +"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are " +"necessary for the internal logic of several [Control]s. The events assigned " +"to the action can however be modified." +msgstr "" +"默认 [InputEventAction],用于将选中内容复制到剪贴板。\n" +"[b]注意:[/b]默认的 [code]ui_*[/code] 动作是部分 [Control] 的内部逻辑所必需" +"的,无法删除。但是可以修改分配给该动作的事件。" + +msgid "" +"Default [InputEventAction] to cut a selection to the clipboard.\n" +"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are " +"necessary for the internal logic of several [Control]s. The events assigned " +"to the action can however be modified." +msgstr "" +"默认 [InputEventAction],用于将选中内容剪切到剪贴板。\n" "[b]注意:[/b]默认的 [code]ui_*[/code] 动作是部分 [Control] 的内部逻辑所必需" "的,无法删除。但是可以修改分配给该动作的事件。" @@ -46684,7 +58366,7 @@ msgid "" "necessary for the internal logic of several [Control]s. The events assigned " "to the action can however be modified." msgstr "" -"默认在 UI 中向下移动的 [InputEventAction]。\n" +"默认 [InputEventAction],用于在 UI 中向下移动。\n" "[b]注意:[/b]默认的 [code]ui_*[/code] 动作是部分 [Control] 的内部逻辑所必需" "的,无法删除。但是可以修改分配给该动作的事件。" @@ -46696,8 +58378,41 @@ msgid "" "necessary for the internal logic of several [Control]s. The events assigned " "to the action can however be modified." msgstr "" -"默认[InputEventAction]去[Control]的结束位置(例如[ItemList]或[Tree]中的最后一" -"项),匹配典型桌面UI系统中[constant KEY_END]的行为。\n" +"默认 [InputEventAction],用于前往 [Control] 的末尾(例如 [ItemList] 和 " +"[Tree] 中的最后一个项目),与常见桌面 UI 系统中 [constant KEY_END] 的 行为一" +"致。\n" +"[b]注意:[/b]默认的 [code]ui_*[/code] 动作是部分 [Control] 的内部逻辑所必需" +"的,无法删除。但是可以修改分配给该动作的事件。" + +msgid "" +"Default [InputEventAction] to refresh the contents of the current directory " +"of a [FileDialog].\n" +"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are " +"necessary for the internal logic of several [Control]s. The events assigned " +"to the action can however be modified." +msgstr "" +"默认 [InputEventAction],用于刷新 [FileDialog] 中当前目录的内容。\n" +"[b]注意:[/b]默认的 [code]ui_*[/code] 动作是部分 [Control] 的内部逻辑所必需" +"的,无法删除。但是可以修改分配给该动作的事件。" + +msgid "" +"Default [InputEventAction] to toggle showing hidden files and directories in " +"a [FileDialog].\n" +"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are " +"necessary for the internal logic of several [Control]s. The events assigned " +"to the action can however be modified." +msgstr "" +"默认 [InputEventAction],用于开关 [FileDialog] 中隐藏文件和目录的显示。\n" +"[b]注意:[/b]默认的 [code]ui_*[/code] 动作是部分 [Control] 的内部逻辑所必需" +"的,无法删除。但是可以修改分配给该动作的事件。" + +msgid "" +"Default [InputEventAction] to go up one directory in a [FileDialog].\n" +"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are " +"necessary for the internal logic of several [Control]s. The events assigned " +"to the action can however be modified." +msgstr "" +"默认 [InputEventAction],用于在 [FileDialog] 前往上一级目录。\n" "[b]注意:[/b]默认的 [code]ui_*[/code] 动作是部分 [Control] 的内部逻辑所必需" "的,无法删除。但是可以修改分配给该动作的事件。" @@ -46708,8 +58423,8 @@ msgid "" "necessary for the internal logic of several [Control]s. The events assigned " "to the action can however be modified." msgstr "" -"默认聚焦场景中的下一个[Control]的[InputEventAction]。焦点行为可以通过[member " -"Control.focus_next]配置。\n" +"默认 [InputEventAction],用于聚焦场景中的下一个 [Control]。聚焦行为可以通过 " +"[member Control.focus_next] 配置。\n" "[b]注意:[/b]默认的 [code]ui_*[/code] 动作是部分 [Control] 的内部逻辑所必需" "的,无法删除。但是可以修改分配给该动作的事件。" @@ -46720,8 +58435,28 @@ msgid "" "necessary for the internal logic of several [Control]s. The events assigned " "to the action can however be modified." msgstr "" -"默认聚焦场景中的前一个[Control]的[InputEventAction]。焦点行为可以通过[member " -"Control.focus_previous]配置。\n" +"默认 [InputEventAction],用于聚焦场景中的上一个 [Control]。聚焦行为可以通过 " +"[member Control.focus_previous] 配置。\n" +"[b]注意:[/b]默认的 [code]ui_*[/code] 动作是部分 [Control] 的内部逻辑所必需" +"的,无法删除。但是可以修改分配给该动作的事件。" + +msgid "" +"Default [InputEventAction] to delete a [GraphNode] in a [GraphEdit].\n" +"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are " +"necessary for the internal logic of several [Control]s. The events assigned " +"to the action can however be modified." +msgstr "" +"默认 [InputEventAction],用于删除 [GraphEdit] 中的某个 [GraphNode]。\n" +"[b]注意:[/b]默认的 [code]ui_*[/code] 动作是部分 [Control] 的内部逻辑所必需" +"的,无法删除。但是可以修改分配给该动作的事件。" + +msgid "" +"Default [InputEventAction] to duplicate a [GraphNode] in a [GraphEdit].\n" +"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are " +"necessary for the internal logic of several [Control]s. The events assigned " +"to the action can however be modified." +msgstr "" +"默认 [InputEventAction],用于制作 [GraphEdit] 中某个 [GraphNode] 的副本。\n" "[b]注意:[/b]默认的 [code]ui_*[/code] 动作是部分 [Control] 的内部逻辑所必需" "的,无法删除。但是可以修改分配给该动作的事件。" @@ -46733,8 +58468,9 @@ msgid "" "necessary for the internal logic of several [Control]s. The events assigned " "to the action can however be modified." msgstr "" -"默认的将进入[Control]的起始位置(例如[ItemList]或[Tree]中的第一个项目)时的" -"[InputEventAction],与典型的桌面UI系统中[constant KEY_HOME]的行为相匹配。\n" +"默认 [InputEventAction],用于前往 [Control] 的开头(例如 [ItemList] 和 " +"[Tree] 中的第一个项目),与常见桌面 UI 系统中 [constant KEY_HOME] 的 行为一" +"致。\n" "[b]注意:[/b]默认的 [code]ui_*[/code] 动作不能被删除,因为它们是几个 " "[Control] 的内部逻辑所必需的。然而,分配给动作的事件可以被修改。" @@ -46744,7 +58480,17 @@ msgid "" "necessary for the internal logic of several [Control]s. The events assigned " "to the action can however be modified." msgstr "" -"默认在 UI 中向左移动的[InputEventAction]。\n" +"默认 [InputEventAction],用于在 UI 中向左移动。\n" +"[b]注意:[/b]默认的 [code]ui_*[/code] 动作是部分 [Control] 的内部逻辑所必需" +"的,无法删除。但是可以修改分配给该动作的事件。" + +msgid "" +"Default [InputEventAction] to open a context menu in a text field.\n" +"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are " +"necessary for the internal logic of several [Control]s. The events assigned " +"to the action can however be modified." +msgstr "" +"默认 [InputEventAction],用于在文本字段中打开上下文菜单。\n" "[b]注意:[/b]默认的 [code]ui_*[/code] 动作是部分 [Control] 的内部逻辑所必需" "的,无法删除。但是可以修改分配给该动作的事件。" @@ -46756,9 +58502,8 @@ msgid "" "necessary for the internal logic of several [Control]s. The events assigned " "to the action can however be modified." msgstr "" -"默认的在 [Control](例如 [ItemList] 或 [Tree])中向下翻页的 " -"[InputEventAction],与典型桌面 UI 系统中 [constant KEY_PAGEDOWN] 的行为相匹" -"配。\n" +"默认 [InputEventAction],用于在 [Control](例如 [ItemList] 和 [Tree])中向下" +"翻页,与常见桌面 UI 系统中 [constant KEY_PAGEDOWN] 的 行为一致。\n" "[b]注意:[/b]默认的 [code]ui_*[/code] 动作是部分 [Control] 的内部逻辑所必需" "的,无法删除。但是可以修改分配给该动作的事件。" @@ -46770,9 +58515,28 @@ msgid "" "necessary for the internal logic of several [Control]s. The events assigned " "to the action can however be modified." msgstr "" -"默认的在 [Control](例如 [ItemList] 或 [Tree])中向上翻页的 " -"[InputEventAction],与典型桌面 UI 系统中 [constant KEY_PAGEUP] 的行为相匹" -"配。\n" +"默认 [InputEventAction],用于在 [Control](例如 [ItemList] 和 [Tree])中向上" +"翻页,与常见桌面 UI 系统中 [constant KEY_PAGEUP] 的 行为一致。\n" +"[b]注意:[/b]默认的 [code]ui_*[/code] 动作是部分 [Control] 的内部逻辑所必需" +"的,无法删除。但是可以修改分配给该动作的事件。" + +msgid "" +"Default [InputEventAction] to paste from the clipboard.\n" +"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are " +"necessary for the internal logic of several [Control]s. The events assigned " +"to the action can however be modified." +msgstr "" +"默认 [InputEventAction],用于从剪贴板粘贴内容。\n" +"[b]注意:[/b]默认的 [code]ui_*[/code] 动作是部分 [Control] 的内部逻辑所必需" +"的,无法删除。但是可以修改分配给该动作的事件。" + +msgid "" +"Default [InputEventAction] to redo an undone action.\n" +"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are " +"necessary for the internal logic of several [Control]s. The events assigned " +"to the action can however be modified." +msgstr "" +"默认 [InputEventAction],用于重做被撤销的动作。\n" "[b]注意:[/b]默认的 [code]ui_*[/code] 动作是部分 [Control] 的内部逻辑所必需" "的,无法删除。但是可以修改分配给该动作的事件。" @@ -46782,7 +58546,7 @@ msgid "" "necessary for the internal logic of several [Control]s. The events assigned " "to the action can however be modified." msgstr "" -"默认在 UI 中右移的[InputEventAction]。\n" +"默认 [InputEventAction],用于在 UI 中向右移动。\n" "[b]注意:[/b]默认的 [code]ui_*[/code] 动作是部分 [Control] 的内部逻辑所必需" "的,无法删除。但是可以修改分配给该动作的事件。" @@ -46793,14 +58557,55 @@ msgid "" "necessary for the internal logic of several [Control]s. The events assigned " "to the action can however be modified." msgstr "" -"默认选择[Control](例如[ItemList]或[Tree])中的一个项目[InputEventAction]。\n" +"默认 [InputEventAction],用于在 [Control](例如 [ItemList] 和 [Tree])中选中" +"项目。\n" +"[b]注意:[/b]默认的 [code]ui_*[/code] 动作是部分 [Control] 的内部逻辑所必需" +"的,无法删除。但是可以修改分配给该动作的事件。" + +msgid "" +"Default [InputEventAction] to swap input direction, i.e. change between left-" +"to-right to right-to-left modes. Affects text-editting controls ([LineEdit], " +"[TextEdit])." +msgstr "" +"默认 [InputEventAction],用于交换输入方向,例如在“从左至右”和“从右至左”模式之" +"间切换。影响文本编辑控件([LineEdit]、[TextEdit])。" + +msgid "" +"Default [InputEventAction] to delete the character before the text cursor.\n" +"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are " +"necessary for the internal logic of several [Control]s. The events assigned " +"to the action can however be modified." +msgstr "" +"默认 [InputEventAction],用于删除文本光标前的字符。\n" +"[b]注意:[/b]默认的 [code]ui_*[/code] 动作是部分 [Control] 的内部逻辑所必需" +"的,无法删除。但是可以修改分配给该动作的事件。" + +msgid "" +"Default [InputEventAction] to delete [b]all[/b] text before the text " +"cursor.\n" +"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are " +"necessary for the internal logic of several [Control]s. The events assigned " +"to the action can however be modified." +msgstr "" +"默认 [InputEventAction],用于删除文本光标前的[b]所有[/b]文本。\n" +"[b]注意:[/b]默认的 [code]ui_*[/code] 动作是部分 [Control] 的内部逻辑所必需" +"的,无法删除。但是可以修改分配给该动作的事件。" + +msgid "" +"Default [InputEventAction] to delete all characters before the cursor up " +"until a whitespace or punctuation character.\n" +"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are " +"necessary for the internal logic of several [Control]s. The events assigned " +"to the action can however be modified." +msgstr "" +"默认 [InputEventAction],用于删除光标前、空白或标点字符后的所有字符。\n" "[b]注意:[/b]默认的 [code]ui_*[/code] 动作是部分 [Control] 的内部逻辑所必需" "的,无法删除。但是可以修改分配给该动作的事件。" msgid "" "Default [InputEventAction] to add an additional caret above every caret of a " "text." -msgstr "在文本的每个光标上方添加一个额外光标的默认 [InputEventAction]。" +msgstr "默认 [InputEventAction],用于在文本中各个光标上方再添加一个光标。" msgid "" "macOS specific override for the shortcut to add a caret above every caret." @@ -46809,13 +58614,327 @@ msgstr "macOS 特有的用于在每个光标上方添加一个光标的快捷键 msgid "" "Default [InputEventAction] to add an additional caret below every caret of a " "text." -msgstr "在文本的每个光标下方添加一个额外光标的默认 [InputEventAction]。" +msgstr "默认 [InputEventAction],用于在文本中各个光标下方再添加一个光标。" msgid "" "macOS specific override for the shortcut to add a caret below every caret." msgstr "macOS 特有的用于在每个光标下方添加一个光标的快捷键的覆盖。" msgid "" +"Default [InputEventAction] to move the text cursor the the end of the text.\n" +"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are " +"necessary for the internal logic of several [Control]s. The events assigned " +"to the action can however be modified." +msgstr "" +"默认 [InputEventAction],用于将文本光标移动到文本的末尾。\n" +"[b]注意:[/b]默认的 [code]ui_*[/code] 动作是部分 [Control] 的内部逻辑所必需" +"的,无法删除。但是可以修改分配给该动作的事件。" + +msgid "" +"Default [InputEventAction] to move the text cursor to the start of the " +"text.\n" +"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are " +"necessary for the internal logic of several [Control]s. The events assigned " +"to the action can however be modified." +msgstr "" +"默认 [InputEventAction],用于将文本光标移动到文本的开头。\n" +"[b]注意:[/b]默认的 [code]ui_*[/code] 动作是部分 [Control] 的内部逻辑所必需" +"的,无法删除。但是可以修改分配给该动作的事件。" + +msgid "" +"Default [InputEventAction] to move the text cursor down.\n" +"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are " +"necessary for the internal logic of several [Control]s. The events assigned " +"to the action can however be modified." +msgstr "" +"默认 [InputEventAction],用于将文本光标向下移动。\n" +"[b]注意:[/b]默认的 [code]ui_*[/code] 动作是部分 [Control] 的内部逻辑所必需" +"的,无法删除。但是可以修改分配给该动作的事件。" + +msgid "" +"Default [InputEventAction] to move the text cursor left.\n" +"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are " +"necessary for the internal logic of several [Control]s. The events assigned " +"to the action can however be modified." +msgstr "" +"默认 [InputEventAction],用于将文本光标向左移动。\n" +"[b]注意:[/b]默认的 [code]ui_*[/code] 动作是部分 [Control] 的内部逻辑所必需" +"的,无法删除。但是可以修改分配给该动作的事件。" + +msgid "" +"Default [InputEventAction] to move the text cursor to the end of the line.\n" +"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are " +"necessary for the internal logic of several [Control]s. The events assigned " +"to the action can however be modified." +msgstr "" +"默认 [InputEventAction],用于将文本光标移动到该行的末尾。\n" +"[b]注意:[/b]默认的 [code]ui_*[/code] 动作是部分 [Control] 的内部逻辑所必需" +"的,无法删除。但是可以修改分配给该动作的事件。" + +msgid "" +"Default [InputEventAction] to move the text cursor to the start of the " +"line.\n" +"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are " +"necessary for the internal logic of several [Control]s. The events assigned " +"to the action can however be modified." +msgstr "" +"默认 [InputEventAction],用于将文本光标移动到该行的开头。\n" +"[b]注意:[/b]默认的 [code]ui_*[/code] 动作是部分 [Control] 的内部逻辑所必需" +"的,无法删除。但是可以修改分配给该动作的事件。" + +msgid "" +"Default [InputEventAction] to move the text cursor down one page.\n" +"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are " +"necessary for the internal logic of several [Control]s. The events assigned " +"to the action can however be modified." +msgstr "" +"默认 [InputEventAction],用于将文本光标向下移动一页。\n" +"[b]注意:[/b]默认的 [code]ui_*[/code] 动作是部分 [Control] 的内部逻辑所必需" +"的,无法删除。但是可以修改分配给该动作的事件。" + +msgid "" +"Default [InputEventAction] to move the text cursor up one page.\n" +"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are " +"necessary for the internal logic of several [Control]s. The events assigned " +"to the action can however be modified." +msgstr "" +"默认 [InputEventAction],用于将文本光标向上移动一页。\n" +"[b]注意:[/b]默认的 [code]ui_*[/code] 动作是部分 [Control] 的内部逻辑所必需" +"的,无法删除。但是可以修改分配给该动作的事件。" + +msgid "" +"Default [InputEventAction] to move the text cursor right.\n" +"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are " +"necessary for the internal logic of several [Control]s. The events assigned " +"to the action can however be modified." +msgstr "" +"默认 [InputEventAction],用于将文本光标向右移动。\n" +"[b]注意:[/b]默认的 [code]ui_*[/code] 动作是部分 [Control] 的内部逻辑所必需" +"的,无法删除。但是可以修改分配给该动作的事件。" + +msgid "" +"Default [InputEventAction] to move the text cursor up.\n" +"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are " +"necessary for the internal logic of several [Control]s. The events assigned " +"to the action can however be modified." +msgstr "" +"默认 [InputEventAction],用于将文本光标向上移动。\n" +"[b]注意:[/b]默认的 [code]ui_*[/code] 动作是部分 [Control] 的内部逻辑所必需" +"的,无法删除。但是可以修改分配给该动作的事件。" + +msgid "" +"Default [InputEventAction] to move the text cursor left to the next " +"whitespace or punctuation.\n" +"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are " +"necessary for the internal logic of several [Control]s. The events assigned " +"to the action can however be modified." +msgstr "" +"默认 [InputEventAction],用于将文本光标向左移动到最近的空白或标点字符。\n" +"[b]注意:[/b]默认的 [code]ui_*[/code] 动作是部分 [Control] 的内部逻辑所必需" +"的,无法删除。但是可以修改分配给该动作的事件。" + +msgid "" +"Default [InputEventAction] to move the text cursor right to the next " +"whitespace or punctuation.\n" +"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are " +"necessary for the internal logic of several [Control]s. The events assigned " +"to the action can however be modified." +msgstr "" +"默认 [InputEventAction],用于将文本光标向右移动到最近的空白或标点字符。\n" +"[b]注意:[/b]默认的 [code]ui_*[/code] 动作是部分 [Control] 的内部逻辑所必需" +"的,无法删除。但是可以修改分配给该动作的事件。" + +msgid "" +"If there's only one caret active and with a selection, clears the " +"selection.\n" +"In case there's more than one caret active, removes the secondary carets and " +"clears their selections.\n" +"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are " +"necessary for the internal logic of several [Control]s. The events assigned " +"to the action can however be modified." +msgstr "" +"如果处于活动状态并且有选区的光标只有一个,则清除该选区。\n" +"如果有多个光标处于活动状态,请移除次要光标并清除其选区。\n" +"[b]注意:[/b]默认的 [code]ui_*[/code] 动作无法移除,因为它们对于部分 " +"[Control] 的内部逻辑是必需的。但是,可以修改分配给该动作的事件。" + +msgid "" +"Default [InputEventAction] to accept an autocompetion hint.\n" +"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are " +"necessary for the internal logic of several [Control]s. The events assigned " +"to the action can however be modified." +msgstr "" +"默认 [InputEventAction],用于接受某个自动补全提示。\n" +"[b]注意:[/b]默认的 [code]ui_*[/code] 动作是部分 [Control] 的内部逻辑所必需" +"的,无法删除。但是可以修改分配给该动作的事件。" + +msgid "" +"Default [InputEventAction] to request autocompetion.\n" +"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are " +"necessary for the internal logic of several [Control]s. The events assigned " +"to the action can however be modified." +msgstr "" +"默认 [InputEventAction],用于请求自动补全。\n" +"[b]注意:[/b]默认的 [code]ui_*[/code] 动作是部分 [Control] 的内部逻辑所必需" +"的,无法删除。但是可以修改分配给该动作的事件。" + +msgid "" +"Default [InputEventAction] to accept an autocompetion hint, replacing " +"existing text.\n" +"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are " +"necessary for the internal logic of several [Control]s. The events assigned " +"to the action can however be modified." +msgstr "" +"默认 [InputEventAction],用于接受某个自动补全提示并替换现有文本。\n" +"[b]注意:[/b]默认的 [code]ui_*[/code] 动作是部分 [Control] 的内部逻辑所必需" +"的,无法删除。但是可以修改分配给该动作的事件。" + +msgid "" +"Default [InputEventAction] to unindent text.\n" +"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are " +"necessary for the internal logic of several [Control]s. The events assigned " +"to the action can however be modified." +msgstr "" +"默认 [InputEventAction],用于取消文本缩进。\n" +"[b]注意:[/b]默认的 [code]ui_*[/code] 动作是部分 [Control] 的内部逻辑所必需" +"的,无法删除。但是可以修改分配给该动作的事件。" + +msgid "" +"Default [InputEventAction] to delete the character after the text cursor.\n" +"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are " +"necessary for the internal logic of several [Control]s. The events assigned " +"to the action can however be modified." +msgstr "" +"默认 [InputEventAction],用于删除文本光标后的字符。\n" +"[b]注意:[/b]默认的 [code]ui_*[/code] 动作是部分 [Control] 的内部逻辑所必需" +"的,无法删除。但是可以修改分配给该动作的事件。" + +msgid "" +"Default [InputEventAction] to delete [b]all[/b] text after the text cursor.\n" +"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are " +"necessary for the internal logic of several [Control]s. The events assigned " +"to the action can however be modified." +msgstr "" +"默认 [InputEventAction],用于删除文本光标后的[b]所有[/b]文本。\n" +"[b]注意:[/b]默认的 [code]ui_*[/code] 动作是部分 [Control] 的内部逻辑所必需" +"的,无法删除。但是可以修改分配给该动作的事件。" + +msgid "" +"Default [InputEventAction] to delete all characters after the cursor up " +"until a whitespace or punctuation character.\n" +"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are " +"necessary for the internal logic of several [Control]s. The events assigned " +"to the action can however be modified." +msgstr "" +"默认 [InputEventAction],用于删除光标后、空白或标点字符前的所有字符。\n" +"[b]注意:[/b]默认的 [code]ui_*[/code] 动作是部分 [Control] 的内部逻辑所必需" +"的,无法删除。但是可以修改分配给该动作的事件。" + +msgid "" +"Default [InputEventAction] to indent the current line.\n" +"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are " +"necessary for the internal logic of several [Control]s. The events assigned " +"to the action can however be modified." +msgstr "" +"默认 [InputEventAction],用于缩进当前行。\n" +"[b]注意:[/b]默认的 [code]ui_*[/code] 动作是部分 [Control] 的内部逻辑所必需" +"的,无法删除。但是可以修改分配给该动作的事件。" + +msgid "" +"Default [InputEventAction] to insert a new line at the position of the text " +"cursor.\n" +"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are " +"necessary for the internal logic of several [Control]s. The events assigned " +"to the action can however be modified." +msgstr "" +"默认 [InputEventAction],用于在文本光标处插入换行。\n" +"[b]注意:[/b]默认的 [code]ui_*[/code] 动作是部分 [Control] 的内部逻辑所必需" +"的,无法删除。但是可以修改分配给该动作的事件。" + +msgid "" +"Default [InputEventAction] to insert a new line before the current one.\n" +"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are " +"necessary for the internal logic of several [Control]s. The events assigned " +"to the action can however be modified." +msgstr "" +"默认 [InputEventAction],用于在当前行之前插入一个空行。\n" +"[b]注意:[/b]默认的 [code]ui_*[/code] 动作是部分 [Control] 的内部逻辑所必需" +"的,无法删除。但是可以修改分配给该动作的事件。" + +msgid "" +"Default [InputEventAction] to insert a new line after the current one.\n" +"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are " +"necessary for the internal logic of several [Control]s. The events assigned " +"to the action can however be modified." +msgstr "" +"默认 [InputEventAction],用于在当前行之后插入一个空行。\n" +"[b]注意:[/b]默认的 [code]ui_*[/code] 动作是部分 [Control] 的内部逻辑所必需" +"的,无法删除。但是可以修改分配给该动作的事件。" + +msgid "" +"Default [InputEventAction] to scroll down one line of text.\n" +"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are " +"necessary for the internal logic of several [Control]s. The events assigned " +"to the action can however be modified." +msgstr "" +"默认 [InputEventAction],用于向下滚动一行文本。\n" +"[b]注意:[/b]默认的 [code]ui_*[/code] 动作是部分 [Control] 的内部逻辑所必需" +"的,无法删除。但是可以修改分配给该动作的事件。" + +msgid "" +"Default [InputEventAction] to scroll up one line of text.\n" +"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are " +"necessary for the internal logic of several [Control]s. The events assigned " +"to the action can however be modified." +msgstr "" +"默认 [InputEventAction],用于向上滚动一行文本。\n" +"[b]注意:[/b]默认的 [code]ui_*[/code] 动作是部分 [Control] 的内部逻辑所必需" +"的,无法删除。但是可以修改分配给该动作的事件。" + +msgid "" +"Default [InputEventAction] to select all text.\n" +"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are " +"necessary for the internal logic of several [Control]s. The events assigned " +"to the action can however be modified." +msgstr "" +"默认 [InputEventAction],用于全选文本。\n" +"[b]注意:[/b]默认的 [code]ui_*[/code] 动作是部分 [Control] 的内部逻辑所必需" +"的,无法删除。但是可以修改分配给该动作的事件。" + +msgid "" +"Default [InputEventAction] to submit a text field.\n" +"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are " +"necessary for the internal logic of several [Control]s. The events assigned " +"to the action can however be modified." +msgstr "" +"默认 [InputEventAction],用于提交文本字段。\n" +"[b]注意:[/b]默认的 [code]ui_*[/code] 动作是部分 [Control] 的内部逻辑所必需" +"的,无法删除。但是可以修改分配给该动作的事件。" + +msgid "" +"Default [InputEventAction] to toggle [i]insert mode[/i] in a text field. " +"While in insert mode, inserting new text overrides the character after the " +"cursor, unless the next character is a new line.\n" +"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are " +"necessary for the internal logic of several [Control]s. The events assigned " +"to the action can however be modified." +msgstr "" +"默认 [InputEventAction],用于开关文本字段的[i]插入模式[/i]。在插入模式中,插" +"入新的文本会覆盖光标后的字符,除非下一个字符是换行符。\n" +"[b]注意:[/b]默认的 [code]ui_*[/code] 动作是部分 [Control] 的内部逻辑所必需" +"的,无法删除。但是可以修改分配给该动作的事件。" + +msgid "" +"Default [InputEventAction] to undo the most recent action.\n" +"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are " +"necessary for the internal logic of several [Control]s. The events assigned " +"to the action can however be modified." +msgstr "" +"默认 [InputEventAction],用于撤销最近的动作。\n" +"[b]注意:[/b]默认的 [code]ui_*[/code] 动作是部分 [Control] 的内部逻辑所必需" +"的,无法删除。但是可以修改分配给该动作的事件。" + +msgid "" "Default [InputEventAction] to move up in the UI.\n" "[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are " "necessary for the internal logic of several [Control]s. The events assigned " @@ -47931,12 +60050,12 @@ msgstr "" "码示例:\n" "[codeblocks]\n" "[gdscript]\n" -"# 将默认重力强度设置为 980。\n" +"# 将默认重力强度设置为 9.8。\n" "PhysicsServer3D.area_set_param(get_viewport().find_world().space, " "PhysicsServer3D.AREA_PARAM_GRAVITY, 9.8)\n" "[/gdscript]\n" "[csharp]\n" -"// 将默认重力强度设置为 980。\n" +"// 将默认重力强度设置为 9.8。\n" "PhysicsServer3D.AreaSetParam(GetViewport().FindWorld().Space, " "PhysicsServer3D.AreaParameter.Gravity, 9.8);\n" "[/csharp]\n" @@ -48107,6 +60226,117 @@ msgstr "" "将 [member physics/common/max_physics_steps_per_frame] 也调大。" msgid "" +"Sets the number of MSAA samples to use for 2D/Canvas rendering (as a power " +"of two). MSAA is used to reduce aliasing around the edges of polygons. A " +"higher MSAA value results in smoother edges but can be significantly slower " +"on some hardware. This has no effect on shader-induced aliasing or texture " +"aliasing.\n" +"[b]Note:[/b] MSAA is only supported in the Forward+ and Mobile rendering " +"methods, not Compatibility." +msgstr "" +"设置用于 2D/Canvas 渲染的 MSAA 采样数(为 2 的幂)。MSAA 可用于减少多边形边缘" +"周围的锯齿。较高的 MSAA 值会产生更平滑的边缘,但在某些硬件上可能会明显变慢。" +"这对着色器引起的锯齿或纹理锯齿无效。\n" +"[b]注意:[/b]MSAA 仅支持 Forward+ 和 Mobile 渲染方式,不支持 Compatibility。" + +msgid "" +"Sets the number of MSAA samples to use for 3D rendering (as a power of two). " +"MSAA is used to reduce aliasing around the edges of polygons. A higher MSAA " +"value results in smoother edges but can be significantly slower on some " +"hardware. See also bilinear scaling 3d [member rendering/scaling_3d/mode] " +"for supersampling, which provides higher quality but is much more expensive. " +"This has no effect on shader-induced aliasing or texture aliasing.\n" +"[b]Note:[/b] MSAA is only supported in the Forward+ and Mobile rendering " +"methods, not Compatibility." +msgstr "" +"设置用于 3D 渲染的 MSAA 采样数(为 2 的幂)。MSAA 用于减少多边形边缘周围的锯" +"齿。较高的 MSAA 值会产生更平滑的边缘,但在某些硬件上可能会明显变慢。另请参见" +"用于超级采样的双线性缩放 3d [member rendering/scaling_3d/mode],它提供更高的" +"质量但更昂贵。这对着色器引起的锯齿或纹理锯齿无效。\n" +"[b]注意:[/b]MSAA 仅支持 Forward+ 和 Mobile 渲染方式,不支持 Compatibility。" + +msgid "" +"Sets the screen-space antialiasing mode for the default screen [Viewport]. " +"Screen-space antialiasing works by selectively blurring edges in a post-" +"process shader. It differs from MSAA which takes multiple coverage samples " +"while rendering objects. Screen-space AA methods are typically faster than " +"MSAA and will smooth out specular aliasing, but tend to make scenes appear " +"blurry. The blurriness is partially counteracted by automatically using a " +"negative mipmap LOD bias (see [member rendering/textures/default_filters/" +"texture_mipmap_bias]).\n" +"Another way to combat specular aliasing is to enable [member rendering/" +"anti_aliasing/screen_space_roughness_limiter/enabled].\n" +"[b]Note:[/b] Screen-space antialiasing is only supported in the Forward+ and " +"Mobile rendering methods, not Compatibility." +msgstr "" +"设置默认屏幕 [Viewport] 的屏幕空间抗锯齿模式。屏幕空间抗锯齿的原理是使用后期" +"处理着色器选择性地让边缘模糊。与 MSAA 的区别在于,MSAA 是在渲染对象时进行了多" +"次覆盖采样。屏幕空间 AA 的方法通常比 MSAA 要快,会将镜面反射锯齿也进行平滑处" +"理,但容易让场景变得模糊。这种模糊可以通过自动使用负的 Mipmap LOD 偏置部分缓" +"解(见 [member rendering/textures/default_filters/texture_mipmap_bias])。\n" +"对抗镜面反射锯齿的另一种方法是启用 [member rendering/anti_aliasing/" +"screen_space_roughness_limiter/enabled]。\n" +"[b]注意:[/b]屏幕空间抗锯齿仅支持 Forward+ 和 Mobile 渲染方法,不支持 " +"Compatibility。" + +msgid "" +"If [code]true[/code], uses a fast post-processing filter to make banding " +"significantly less visible in 3D. 2D rendering is [i]not[/i] affected by " +"debanding unless the [member Environment.background_mode] is [constant " +"Environment.BG_CANVAS].\n" +"In some cases, debanding may introduce a slightly noticeable dithering " +"pattern. It's recommended to enable debanding only when actually needed " +"since the dithering pattern will make lossless-compressed screenshots " +"larger.\n" +"[b]Note:[/b] This property is only read when the project starts. To set " +"debanding at run-time, set [member Viewport.use_debanding] on the root " +"[Viewport] instead." +msgstr "" +"如果为 [code]true[/code],则使用一个快速的后处理滤镜使条带在 3D 中明显不那么" +"明显。除非 [member Environment.background_mode] 为 [constant Environment." +"BG_CANVAS],否则 2D 渲染[i]不会[/i]受到去条带的影响。\n" +"在某些情况下,去条带可能会引入稍微明显的抖动图案。建议只在实际需要时才启用去" +"条带,因为抖动图案会使无损压缩的屏幕截图变大。\n" +"[b]注意:[/b]只有在项目启动时才读取该属性。要在运行时设置去条带,请改为在根 " +"[Viewport] 上设置 [member Viewport.use_debanding]。" + +msgid "" +"Enables Temporal Anti-Aliasing for the default screen [Viewport]. TAA works " +"by jittering the camera and accumulating the images of the last rendered " +"frames, motion vector rendering is used to account for camera and object " +"motion. Enabling TAA can make the image blurrier, which is partially " +"counteracted by automatically using a negative mipmap LOD bias (see [member " +"rendering/textures/default_filters/texture_mipmap_bias]).\n" +"[b]Note:[/b] The implementation is not complete yet. Some visual instances " +"such as particles and skinned meshes may show ghosting artifacts in motion.\n" +"[b]Note:[/b] TAA is only supported in the Forward+ rendering method, not " +"Mobile or Compatibility." +msgstr "" +"为默认屏幕 [Viewport] 启用时间抗锯齿(Temporal Anti-Aliasing)。TAA 的原理是" +"让相机产生抖动并积累最近渲染的几帧图像,使用运动向量渲染让相机和对象产生运" +"动。启用 TAA 会让图像变模糊,这种模糊可以通过自动使用负的 Mipmap LOD 偏置部分" +"缓解(参见 [member rendering/textures/default_filters/" +"texture_mipmap_bias])。\n" +"[b]注意:[/b]实现尚未完成,粒子及蒙皮网格等某些视觉实例可能会显示运动中的重影" +"伪像。\n" +"[b]注意:[/b]TAA 只支持 Forward+ 渲染方式,不支持 Mobile 或 Compatibility。" + +msgid "" +"If [code]true[/code], enables a spatial filter to limit roughness in areas " +"with high-frequency detail. This can help reduce specular aliasing to an " +"extent, though not as much as enabling [member rendering/anti_aliasing/" +"quality/use_taa]. This filter has a small performance cost, so consider " +"disabling it if it doesn't benefit your scene noticeably.\n" +"[b]Note:[/b] TAA is only supported in the Forward+ and Mobile rendering " +"methods, not Compatibility." +msgstr "" +"如果为 [code]true[/code],则启用空间过滤器以限制具有高频细节的区域的粗糙度。" +"这可以在一定程度上帮助减少镜面反射锯齿,尽管不如启用 [member rendering/" +"anti_aliasing/quality/use_taa]。 该过滤器的性能成本很小,因此如果它对您的场景" +"没有明显好处,请考虑禁用它。\n" +"[b]注意:[/b]TAA 只支持 Forward+ 和 Mobile 渲染方式,不支持 Compatibility。" + +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." @@ -48296,6 +60526,78 @@ msgstr "" "directional_shadow/size] 以低配数值覆盖。" msgid "" +"The maximum number of clustered elements ([OmniLight3D] + [SpotLight3D] + " +"[Decal] + [ReflectionProbe]) that can be rendered at once in the camera " +"view. If there are more clustered elements present in the camera view, some " +"of them will not be rendered (leading to pop-in during camera movement). " +"Enabling distance fade on lights and decals ([member Light3D." +"distance_fade_enabled], [member Decal.distance_fade_enabled]) can help avoid " +"reaching this limit.\n" +"Decreasing this value may improve GPU performance on certain setups, even if " +"the maximum number of clustered elements is never reached in the project.\n" +"[b]Note:[/b] This setting is only effective when using the Forward+ " +"rendering method, not Mobile and Compatibility." +msgstr "" +"可以在相机视图中一次渲染的集群元素([OmniLight3D] + [SpotLight3D] + [Decal] " +"+ [ReflectionProbe])的最大数量。如果相机视图中存在更多的集群元素,其中一些将" +"不会被渲染(导致在相机移动期间弹出)。在灯光和贴花上启用距离淡入淡出" +"([member Light3D.distance_fade_enabled]、[member Decal." +"distance_fade_enabled])有助于避免达到该限制。\n" +"减小该值可能会提高某些设置的 GPU 性能,即使在项目中从未达到集群元素最大数量也" +"是如此。\n" +"[b]注意:[/b]该设置仅在使用 Forward+ 渲染方式时有效,对 Mobile 和 " +"Compatibility 无效。" + +msgid "" +"Max number of omnilights and spotlights renderable per object. At the " +"default value of 8, this means that each surface can be affected by up to 8 " +"omnilights and 8 spotlights. This is further limited by hardware support and " +"[member rendering/limits/opengl/max_renderable_lights]. Setting this low " +"will slightly reduce memory usage, may decrease shader compile times, and " +"may result in faster rendering on low-end, mobile, or web devices.\n" +"[b]Note:[/b] This setting is only effective when using the Compatibility " +"rendering method, not Forward+ and Mobile." +msgstr "" +"每个对象可渲染的全向灯和聚光灯的最大数量。默认值为 8,这意味着每个表面最多可" +"受到 8 个全向灯和 8 个聚光灯影响。这进一步受到硬件支持和 [member rendering/" +"limits/opengl/max_renderable_lights] 的限制。将该设置得较低会略微减少内存使" +"用,可能会减少着色器编译时间,并可能导致在低端、移动或 Web 设备上的渲染速度更" +"快。\n" +"[b]注意:[/b]该设置仅支持 Compatibility 渲染方式,不支持 Forward+ 和 Mobile。" + +msgid "" +"Max number of elements renderable in a frame. If more elements than this are " +"visible per frame, they will not be drawn. Keep in mind elements refer to " +"mesh surfaces and not meshes themselves. Setting this low will slightly " +"reduce memory usage and may decrease shader compile times, particularly on " +"web. For most uses, the default value is suitable, but consider lowering as " +"much as possible on web export.\n" +"[b]Note:[/b] This setting is only effective when using the Compatibility " +"rendering method, not Forward+ and Mobile." +msgstr "" +"一帧中可渲染的最大元素数。如果每帧可见的元素多于此,则不会绘制它们。请记住," +"元素指的是网格表面,而不是网格本身。将此值设置得较低会略微减少内存使用量,并" +"可能减少着色器编译时间,尤其是在 Web 上。对于大多数用途,默认值是合适的,但" +"在 Web 导出时可考虑尽可能降低。\n" +"[b]注意:[/b]该设置仅在支持 Compatibility 渲染方式,不支持 Forward+ 和 " +"Mobile。" + +msgid "" +"Max number of positional lights renderable in a frame. If more lights than " +"this number are used, they will be ignored. Setting this low will slightly " +"reduce memory usage and may decrease shader compile times, particularly on " +"web. For most uses, the default value is suitable, but consider lowering as " +"much as possible on web export.\n" +"[b]Note:[/b] This setting is only effective when using the Compatibility " +"rendering method, not Forward+ and Mobile." +msgstr "" +"一帧中可渲染的定位灯的最大数量。如果使用的灯多于此数量,则它们将被忽略。将此" +"值设置得较低会略微减少内存使用量,并可能减少着色器编译时间,尤其是在 Web 上。" +"对于大多数用途,默认值是合适的,但在 Web 导出时可考虑尽可能降低。\n" +"[b]注意:[/b]该设置仅在支持 Compatibility 渲染方式,不支持 Forward+ 和 " +"Mobile。" + +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 " @@ -48346,6 +60648,27 @@ msgid "Windows override for [member rendering/rendering_device/driver]." msgstr "[member rendering/rendering_device/driver] 在 Windows 的覆盖项。" msgid "" +"Sets the scaling 3D mode. Bilinear scaling renders at different resolution " +"to either undersample or supersample the viewport. FidelityFX Super " +"Resolution 1.0, abbreviated to FSR, is an upscaling technology that produces " +"high quality images at fast framerates by using a spatially-aware upscaling " +"algorithm. FSR is slightly more expensive than bilinear, but it produces " +"significantly higher image quality. On particularly low-end GPUs, the added " +"cost of FSR may not be worth it (compared to using bilinear scaling with a " +"slightly higher resolution scale to match performance).\n" +"[b]Note:[/b] FSR is only effective when using the Forward+ rendering method, " +"not Mobile or Compatibility. If using an incompatible rendering method, FSR " +"will fall back to bilinear scaling." +msgstr "" +"设置缩放 3D 模式。双线性缩放以不同的分辨率渲染,以对视口进行欠采样或超采样。" +"FidelityFX 超分辨率(FidelityFX Super Resolution) 1.0,缩写为 FSR,是一种放" +"大技术,可通过使用一种空间感知放大算法,以快速帧速率生成高质量图像。FSR 比双" +"线性稍微贵一点,但它产生的图像质量明显更高。在特别低端的 GPU 上,FSR 的性价比" +"过低(与使用具有一个稍高分辨率缩放以匹配性能的双线性缩放相比)。\n" +"[b]注意:[/b]FSR 只在使用 Forward+ 渲染方式时有效,对 Mobile 或 " +"Compatibility 无效。如果使用不兼容的渲染方法,FSR 将回退到双线性缩放。" + +msgid "" "If [code]true[/code], uses faster but lower-quality Lambert material " "lighting model instead of Burley." msgstr "" @@ -48353,6 +60676,28 @@ msgstr "" "使用 Burley 模型。" msgid "" +"If [code]true[/code], forces vertex shading for all rendering. This can " +"increase performance a lot, but also reduces quality immensely. Can be used " +"to optimize performance on low-end mobile devices.\n" +"[b]Note:[/b] This setting currently has no effect, as vertex shading is not " +"implemented yet." +msgstr "" +"如果为 [code]true[/code],为所有渲染强制顶点着色。这可以大大提高性能,但也会" +"极大地降低质量。可用于优化低端移动设备的性能。\n" +"[b]注意:[/b]这个设置目前没有效果,因为顶点着色还没有实现。" + +msgid "" +"Lower-end override for [member rendering/shading/overrides/" +"force_vertex_shading] on mobile devices, due to performance concerns or " +"driver support.\n" +"[b]Note:[/b] This setting currently has no effect, as vertex shading is not " +"implemented yet." +msgstr "" +"由于性能问题或驱动程序支持,移动设备上用于 [member rendering/shading/" +"overrides/force_vertex_shading] 的低端覆盖。\n" +"[b]注意:[/b]这个设置目前没有效果,因为顶点着色还没有实现。" + +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]." @@ -48413,6 +60758,41 @@ msgid "Interpolates an [Object]'s property over time." msgstr "随时间对 [Object] 的属性进行插值。" msgid "" +"When called, the final value will be used as a relative value instead.\n" +"[b]Example:[/b]\n" +"[codeblock]\n" +"var tween = get_tree().create_tween()\n" +"tween.tween_property(self, \"position\", Vector2.RIGHT * 100, 1)." +"as_relative() #the node will move by 100 pixels to the right\n" +"[/codeblock]" +msgstr "" +"调用时,最终值将用作相对值。\n" +"[b]示例:[/b]\n" +"[codeblock]\n" +"var tween = get_tree().create_tween()\n" +"tween.tween_property(self, \"position\", Vector2.RIGHT * 100, 1)." +"as_relative() # 该节点将向右移动 100 个像素\n" +"[/codeblock]" + +msgid "" +"Sets a custom initial value to the [PropertyTweener].\n" +"[b]Example:[/b]\n" +"[codeblock]\n" +"var tween = get_tree().create_tween()\n" +"tween.tween_property(self, \"position\", Vector2(200, 100), 1)." +"from(Vector2(100, 100)) #this will move the node from position (100, 100) to " +"(200, 100)\n" +"[/codeblock]" +msgstr "" +"设置该 [PropertyTweener] 的自定义初始值。\n" +"[b]示例:[/b]\n" +"[codeblock]\n" +"var tween = get_tree().create_tween()\n" +"tween.tween_property(self, \"position\", Vector2(200, 100), 1)." +"from(Vector2(100, 100)) # 这会将该节点从位置 (100, 100) 移动到 (200, 100)\n" +"[/codeblock]" + +msgid "" "Makes the [PropertyTweener] use the current property value (i.e. at the time " "of creating this [PropertyTweener]) as a starting point. This is equivalent " "of using [method from] with the current value. These two calls will do the " @@ -48473,9 +60853,27 @@ msgstr "构建一个由给定值定义的四元数。" msgid "Returns the dot product of two quaternions." msgstr "返回两个四元数的点积。" +msgid "Constructs a Quaternion from Euler angles in YXZ rotation order." +msgstr "按 YXZ 旋转顺序从欧拉角构造一个四元数。" + msgid "Returns the inverse of the quaternion." msgstr "返回四元数的取逆。" +msgid "" +"Returns [code]true[/code] if this quaternion and [param to] are " +"approximately equal, by running [method @GlobalScope.is_equal_approx] on " +"each component." +msgstr "" +"如果该四元数和 [param to] 近似相等,则返回 [code]true[/code],判断方法是通过" +"在每个分量上运行 [method @GlobalScope.is_equal_approx]。" + +msgid "" +"Returns [code]true[/code] if this quaternion is finite, by calling [method " +"@GlobalScope.is_finite] on each component." +msgstr "" +"如果该四元数是有限的,则返回 [code]true[/code],判断方法是在每个分量上调用 " +"[method @GlobalScope.is_finite]。" + msgid "Returns whether the quaternion is normalized or not." msgstr "返回四元数是否被归一化。" @@ -48489,6 +60887,26 @@ msgid "Returns a copy of the quaternion, normalized to unit length." msgstr "返回四元数的副本,归一化为单位长度。" msgid "" +"Returns the result of the spherical linear interpolation between this " +"quaternion and [param to] by amount [param weight].\n" +"[b]Note:[/b] Both quaternions must be normalized." +msgstr "" +"返回该四元数与 [param to] 之间的球面线性插值 [param weight] 的结果。\n" +"[b]注意:[/b]两个四元数都必须被归一化。" + +msgid "" +"Performs a spherical cubic interpolation between quaternions [param pre_a], " +"this vector, [param b], and [param post_b], by the given amount [param " +"weight].\n" +"It can perform smoother interpolation than " +"[code]spherical_cubic_interpolate()[/code] by the time values." +msgstr "" +"在四元数 [param pre_a]、该向量、[param b] 和 [param post_b] 之间,按给定量 " +"[param weight] 执行三次球面插值。\n" +"它可以根据时间值执行比 [code]spherical_cubic_interpolate()[/code] 更平滑的插" +"值。" + +msgid "" "W component of the quaternion (real part).\n" "Quaternion components should usually not be manipulated directly." msgstr "" @@ -48525,6 +60943,15 @@ msgstr "" "变换,它不会改变。" msgid "" +"Returns [code]true[/code] if the quaternions 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 "" "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." @@ -48540,10 +60967,51 @@ msgstr "" "将该 [Quaternion] 的每个分量除以给定的值。此操作本身没有意义,但可以用作更大" "表达式的一部分。" +msgid "" +"Returns [code]true[/code] if the quaternions 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 "" +"如果四元数完全相等,则返回 [code]true[/code]。\n" +"[b]注意:[/b]由于浮点数精度误差,请考虑改用 [method is_equal_approx],会更可" +"靠。" + msgid "A class for generating pseudo-random numbers." msgstr "用于生成伪随机数的类。" msgid "" +"RandomNumberGenerator is a class for generating pseudo-random numbers. It " +"currently uses [url=https://www.pcg-random.org/]PCG32[/url].\n" +"[b]Note:[/b] The underlying algorithm is an implementation detail. As a " +"result, it should not be depended upon for reproducible random streams " +"across Godot versions.\n" +"To generate a random float number (within a given range) based on a time-" +"dependant seed:\n" +"[codeblock]\n" +"var rng = RandomNumberGenerator.new()\n" +"func _ready():\n" +" var my_random_number = rng.randf_range(-10.0, 10.0)\n" +"[/codeblock]\n" +"[b]Note:[/b] The default values of [member seed] and [member state] " +"properties are pseudo-random, and change when calling [method randomize]. " +"The [code]0[/code] value documented here is a placeholder, and not the " +"actual default seed." +msgstr "" +"RandomNumberGenerator 是一个用于生成伪随机数的类。它目前使用 [url=https://" +"www.pcg-random.org/]PCG32[/url]。\n" +"[b]注意:[/b]底层算法是一个实现细节。因此,跨 Godot 版本的可重现随机流不应依" +"赖于它。\n" +"要根据时间相关种子生成(给定范围内的)随机浮点数:\n" +"[codeblock]\n" +"var rng = RandomNumberGenerator.new()\n" +"func _ready():\n" +" var my_random_number = rng.randf_range(-10.0, 10.0)\n" +"[/codeblock]\n" +"[b]注意:[/b][member seed] 和 [member state] 属性的默认值是伪随机的,在调用 " +"[method randomize] 时会发生变化。此处记录的 [code]0[/code] 值是一个占位符,而" +"不是实际的默认种子。" + +msgid "" "The current state of the random number generator. Save and restore this " "property to restore the generator to a previous state:\n" "[codeblock]\n" @@ -48660,6 +61128,20 @@ msgstr "" "在 [member min_value]、[member max_value]、[member page]、[member step] 改变" "时释放信号。" +msgid "" +"Emitted when [member value] changes. When used on a [Slider], this is called " +"continuously while dragging (potentially every frame). If you are performing " +"an expensive operation in a function connected to [signal value_changed], " +"consider using a [i]debouncing[/i] [Timer] to call the function less often.\n" +"[b]Note:[/b] Unlike signals such as [signal LineEdit.text_changed], [signal " +"value_changed] is also emitted when [param value] is set directly via code." +msgstr "" +"[member value] 更改时发出。在 [Slider] 上使用时,会在拖动时连续调用(可能是每" +"一帧)。如果在连接到 [signal value_changed] 的函数中执行昂贵的操作,请考虑使" +"用[i]去除抖动[/i] [Timer] 来减少调用该函数的频率。\n" +"[b]注意:[/b]与 [signal LineEdit.text_changed] 等信号不同,当直接通过代码设" +"置 [param value] 时,[signal value_changed] 仍会发出。" + msgid "Query the closest object intersecting a ray." msgstr "查询与射线相交的最近物体。" @@ -48680,6 +61162,14 @@ msgstr "" "(即 [method is_colliding] 返回 [code]false[/code])。" msgid "" +"Returns the [RID] of the first object that the ray intersects, or an empty " +"[RID] if no object is intersecting the ray (i.e. [method is_colliding] " +"returns [code]false[/code])." +msgstr "" +"返回该射线相交的第一个对象的 [RID],如果没有对象与该射线相交,则返回空 [RID]" +"(即 [method is_colliding] 返回 [code]false[/code])。" + +msgid "" "Returns the shape ID of the first object that the ray intersects, or " "[code]0[/code] if no object is intersecting the ray (i.e. [method " "is_colliding] returns [code]false[/code])." @@ -48779,6 +61269,41 @@ msgid "" "Returns [code]true[/code] if this [Rect2] completely encloses another one." msgstr "如果此 [Rect2] 完全包含另一个,则返回 [code]true[/code]。" +msgid "" +"Returns a copy of this [Rect2] expanded to include a given point.\n" +"[b]Example:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"# position (-3, 2), size (1, 1)\n" +"var rect = Rect2(Vector2(-3, 2), Vector2(1, 1))\n" +"# position (-3, -1), size (3, 4), so we fit both rect and Vector2(0, -1)\n" +"var rect2 = rect.expand(Vector2(0, -1))\n" +"[/gdscript]\n" +"[csharp]\n" +"// position (-3, 2), size (1, 1)\n" +"var rect = new Rect2(new Vector2(-3, 2), new Vector2(1, 1));\n" +"// position (-3, -1), size (3, 4), so we fit both rect and Vector2(0, -1)\n" +"var rect2 = rect.Expand(new Vector2(0, -1));\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回该 [Rect2] 的副本,该副本扩展至包含给定点。\n" +"[b]示例:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"# 位置 (-3, 2),大小 (1, 1)\n" +"var rect = Rect2(Vector2(-3, 2), Vector2(1, 1))\n" +"# 位置 (-3, -1),大小 (3, 4),所以我们同时适配 rect 和 Vector2(0, -1)\n" +"var rect2 = rect.expand(Vector2(0, -1))\n" +"[/gdscript]\n" +"[csharp]\n" +"// 位置 (-3, 2),大小 (1, 1)\n" +"var rect = new Rect2(new Vector2(-3, 2), new Vector2(1, 1));\n" +"// 位置 (-3, -1),大小 (3, 4),所以我们同时适配 rect 和 Vector2(0, -1)\n" +"var rect2 = rect.Expand(new Vector2(0, -1));\n" +"[/csharp]\n" +"[/codeblocks]" + msgid "Returns the area of the [Rect2]. See also [method has_area]." msgstr "返回该 [Rect2] 的面积。另请参阅 [method has_area]。" @@ -48809,6 +61334,49 @@ msgstr "" "[b]注意:[/b]对于[i]大小为负[/i]的 [Rect2],该方法并不可靠。请使用 [method " "abs] 获取等价的正数大小矩形再检查是否包含某个点。" +msgid "" +"Returns [code]true[/code] if the [Rect2] overlaps with [code]b[/code] (i.e. " +"they have at least one point in common).\n" +"If [param include_borders] is [code]true[/code], they will also be " +"considered overlapping if their borders touch, even without intersection." +msgstr "" +"如果该 [Rect2] 与 [code]b[/code] 重叠(即它们至少有一个共同点),则返回 " +"[code]true[/code]。\n" +"如果 [param include_borders] 为 [code]true[/code],如果它们的边界接触,即使没" +"有交点,它们也将被视为重叠。" + +msgid "" +"Returns [code]true[/code] if this [Rect2] and [param rect] are approximately " +"equal, by calling [code]is_equal_approx[/code] on each component." +msgstr "" +"如果该 [Rect2] 和 [param rect] 近似相等,则返回 [code]true[/code],判断方法是" +"通过在每个分量上调用 [code]is_equal_approx[/code]。" + +msgid "" +"Returns [code]true[/code] if this [Rect2] is finite, by calling [method " +"@GlobalScope.is_finite] on each component." +msgstr "" +"如果该 [Rect2] 是有限的,则返回 [code]true[/code],判断方法是在每个分量上调" +"用 [method @GlobalScope.is_finite]。" + +msgid "" +"Returns [code]true[/code] if the rectangles 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 "" +"Returns [code]true[/code] if the rectangles are exactly equal.\n" +"[b]Note:[/b] Due to floating-point precision errors, consider using [method " +"is_equal_approx] instead, which is more reliable." +msgstr "" +"如果矩形完全相等,则返回 [code]true[/code]。\n" +"[b]注意:[/b]由于浮点数精度误差,请考虑改用 [method is_equal_approx],会更可" +"靠。" + msgid "Constructs a [Rect2i] as a copy of the given [Rect2i]." msgstr "构造给定 [Rect2i] 的副本。" @@ -48823,6 +61391,40 @@ msgstr "按位置和大小构造 [Rect2i]。" msgid "Constructs a [Rect2i] by x, y, width, and height." msgstr "按 x、y、宽度和高度构造 [Rect2i]。" +msgid "" +"Returns a copy of this [Rect2i] expanded so that the borders align with the " +"given point.\n" +"[codeblocks]\n" +"[gdscript]\n" +"# position (-3, 2), size (1, 1)\n" +"var rect = Rect2i(Vector2i(-3, 2), Vector2i(1, 1))\n" +"# position (-3, -1), size (3, 4), so we fit both rect and Vector2i(0, -1)\n" +"var rect2 = rect.expand(Vector2i(0, -1))\n" +"[/gdscript]\n" +"[csharp]\n" +"// position (-3, 2), size (1, 1)\n" +"var rect = new Rect2I(new Vector2I(-3, 2), new Vector2I(1, 1));\n" +"// position (-3, -1), size (3, 4), so we fit both rect and Vector2I(0, -1)\n" +"var rect2 = rect.Expand(new Vector2I(0, -1));\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回该 [Rect2i] 的副本,该副本扩展至包含给定点。\n" +"[codeblocks]\n" +"[gdscript]\n" +"# 位置 (-3, 2),大小 (1, 1)\n" +"var rect = Rect2i(Vector2i(-3, 2), Vector2i(1, 1))\n" +"# 位置 (-3, -1),大小 (3, 4),所以我们同时适配 rect 和 Vector2i(0, -1)\n" +"var rect2 = rect.expand(Vector2i(0, -1))\n" +"[/gdscript]\n" +"[csharp]\n" +"// 位置 (-3, 2),大小 (1, 1)\n" +"var rect = new Rect2I(new Vector2I(-3, 2), new Vector2I(1, 1));\n" +"// 位置 (-3, -1),大小 (3, 4),所以我们同时适配 rect 和 Vector2i(0, -1)\n" +"var rect2 = rect.Expand(new Vector2I(0, -1));\n" +"[/csharp]\n" +"[/codeblocks]" + msgid "Returns the area of the [Rect2i]. See also [method has_area]." msgstr "返回该 [Rect2i] 的面积。另请参阅 [method has_area]。" @@ -48922,6 +61524,58 @@ msgid "" msgstr "捕捉某个位置周围的环境,用于快速创建准确的反射。" msgid "" +"Captures its surroundings as a cubemap, and stores versions of it with " +"increasing levels of blur to simulate different material roughnesses.\n" +"The [ReflectionProbe] is used to create high-quality reflections at a low " +"performance cost (when [member update_mode] is [constant UPDATE_ONCE]). " +"[ReflectionProbe]s can be blended together and with the rest of the scene " +"smoothly. [ReflectionProbe]s can also be combined with [VoxelGI], SDFGI " +"([member Environment.sdfgi_enabled]) and screen-space reflections ([member " +"Environment.ssr_enabled]) to get more accurate reflections in specific " +"areas. [ReflectionProbe]s render all objects within their [member " +"cull_mask], so updating them can be quite expensive. It is best to update " +"them once with the important static objects and then leave them as-is.\n" +"[b]Note:[/b] Unlike [VoxelGI] and SDFGI, [ReflectionProbe]s only source " +"their environment from a [WorldEnvironment] node. If you specify an " +"[Environment] resource within a [Camera3D] node, it will be ignored by the " +"[ReflectionProbe]. This can lead to incorrect lighting within the " +"[ReflectionProbe].\n" +"[b]Note:[/b] Reflection probes are only supported in the Forward+ and Mobile " +"rendering methods, not Compatibility. When using the Mobile rendering " +"method, only 8 reflection probes can be displayed on each mesh resource. " +"Attempting to display more than 8 reflection probes on a single mesh " +"resource will result in reflection probes flickering in and out as the " +"camera moves.\n" +"[b]Note:[/b] When using the Mobile rendering method, reflection probes will " +"only correctly affect meshes whose visibility AABB intersects with the " +"reflection probe's AABB. If using a shader to deform the mesh in a way that " +"makes it go outside its AABB, [member GeometryInstance3D.extra_cull_margin] " +"must be increased on the mesh. Otherwise, the reflection probe may not be " +"visible on the mesh." +msgstr "" +"将其周围环境捕捉为立方体贴图,并存储不同版本,其模糊级别递增以模拟不同的材质" +"粗糙度。\n" +"[ReflectionProbe] 用于以低性能成本(当 [member update_mode] 为 [constant " +"UPDATE_ONCE] 时),创建高质量反射。[ReflectionProbe] 可以与场景的其余部分,平" +"滑地混合在一起。[ReflectionProbe] 还可以与 [VoxelGI]、SDFGI([member " +"Environment.sdfgi_enabled])和屏幕空间反射([member Environment." +"ssr_enabled])结合使用,以在特定区域获得更准确的反射。[ReflectionProbe] 渲染" +"其 [member cull_mask] 内的所有对象,因此更新它们可能会非常昂贵。最好仅用重要" +"的静态对象更新一次,然后保持原样。\n" +"[b]注意:[/b]与 [VoxelGI] 和 SDFGI 不同,[ReflectionProbe] 仅从一个 " +"[WorldEnvironment] 节点获取环境。如果您在一个 [Camera3D] 节点中指定了一个 " +"[Environment] 资源,它将被该 [ReflectionProbe] 忽略。这可能会导致 " +"[ReflectionProbe] 内的照明不正确。\n" +"[b]注意:[/b]反射探针仅支持 Forward+ 和 Mobile 渲染方法,不支持 " +"Compatibility。使用移动渲染方法时,每个网格资源上最多只能显示 8 个反射探针。" +"尝试在单个网格资源上显示 8 个以上的反射探针,将导致反射探针随着相机移动而闪" +"烁。\n" +"[b]注意:[/b]当使用移动渲染方法时,反射探针只会正确地影响可见 AABB 与反射探针" +"的 AABB 相交的网格。如果使用着色器以使网格超出其 AABB 的方式变形该网格,则必" +"须在网格上增加 [member GeometryInstance3D.extra_cull_margin]。否则,反射探针" +"可能在网格上不可见。" + +msgid "" "If [code]true[/code], enables box projection. This makes reflections look " "more correct in rectangle-shaped rooms by offsetting the reflection center " "depending on the camera's location.\n" @@ -49015,6 +61669,68 @@ msgstr "返回被编译的原始搜索模式。" msgid "Returns whether this object has a valid search pattern assigned." msgstr "返回此对象是否分配了有效的搜索模式。" +msgid "" +"Searches the text for the compiled pattern. Returns a [RegExMatch] container " +"of the first matching result if found, otherwise [code]null[/code].\n" +"The region to search within can be specified with [param offset] and [param " +"end]. This is useful when searching for another match in the same [param " +"subject] by calling this method again after a previous success. Note that " +"setting these parameters differs from passing over a shortened string. For " +"example, the start anchor [code]^[/code] is not affected by [param offset], " +"and the character before [param offset] will be checked for the word " +"boundary [code]\\b[/code]." +msgstr "" +"在文本中搜索编译后的模式。如果找到,则将首个匹配结果放在 [RegExMatch] 容器中" +"返回,否则返回 [code]null[/code]。\n" +"可以使用 [param offset] 和 [param end] 指定要搜索的区域。这对在上一次成功后再" +"次调用该方法,以相同的 [param subject] 搜索另一个匹配项时很有用。请注意,设置" +"这些参数不同于传递缩短后的字符串。例如,起始锚点 [code]^[/code] 不受 [param " +"offset] 的影响,会为单词边界 [code]\\b[/code] 检查 [param offset] 之前的字" +"符。" + +msgid "" +"Searches the text for the compiled pattern. Returns an array of [RegExMatch] " +"containers for each non-overlapping result. If no results were found, an " +"empty array is returned instead.\n" +"The region to search within can be specified with [param offset] and [param " +"end]. This is useful when searching for another match in the same [param " +"subject] by calling this method again after a previous success. Note that " +"setting these parameters differs from passing over a shortened string. For " +"example, the start anchor [code]^[/code] is not affected by [param offset], " +"and the character before [param offset] will be checked for the word " +"boundary [code]\\b[/code]." +msgstr "" +"在文本中搜索编译后的模式。返回 [RegExMatch] 容器的数组,其中每个容器包含的是" +"互不重叠的匹配结果。如果没有找到结果,则返回一个空数组。\n" +"可以使用 [param offset] 和 [param end] 指定要搜索的区域。这对在上一次成功后再" +"次调用该方法,以相同的 [param subject] 搜索另一个匹配项时很有用。请注意,设置" +"这些参数不同于传递缩短后的字符串。例如,起始锚点 [code]^[/code] 不受 [param " +"offset] 的影响,会为单词边界 [code]\\b[/code] 检查 [param offset] 之前的字" +"符。" + +msgid "" +"Searches the text for the compiled pattern and replaces it with the " +"specified string. Escapes and backreferences such as [code]$1[/code] and " +"[code]$name[/code] are expanded and resolved. By default, only the first " +"instance is replaced, but it can be changed for all instances (global " +"replacement).\n" +"The region to search within can be specified with [param offset] and [param " +"end]. This is useful when searching for another match in the same [param " +"subject] by calling this method again after a previous success. Note that " +"setting these parameters differs from passing over a shortened string. For " +"example, the start anchor [code]^[/code] is not affected by [param offset], " +"and the character before [param offset] will be checked for the word " +"boundary [code]\\b[/code]." +msgstr "" +"在文本中搜索编译后的模式,并将其替换为指定的字符串。诸如 [code]$1[/code] 和 " +"[code]$name[/code] 等转义和反向引用会被扩展和解析。默认情况下,只有第一个实例" +"被替换,但可以修改为针对所有实例(全局替换)。\n" +"可以使用 [param offset] 和 [param end] 指定要搜索的区域。这对在上一次成功后再" +"次调用该方法,以相同的 [param subject] 搜索另一个匹配项时很有用。请注意,设置" +"这些参数不同于传递缩短后的字符串。例如,起始锚点 [code]^[/code] 不受 [param " +"offset] 的影响,会为单词边界 [code]\\b[/code] 检查 [param offset] 之前的字" +"符。" + msgid "Contains the results of a [RegEx] search." msgstr "包含 [RegEx] 搜索的结果。" @@ -49212,10 +61928,117 @@ msgstr "返回格式 ID 的函数会在值无效时返回此值。" msgid "Server for anything visible." msgstr "任何可见的东西的服务器。" +msgid "" +"The rendering server is the API backend for everything visible. The whole " +"scene system mounts on it to display.\n" +"The rendering server is completely opaque, the internals are entirely " +"implementation specific and cannot be accessed.\n" +"The rendering server can be used to bypass the scene/[Node] system " +"entirely.\n" +"Resources are created using the [code]*_create[/code] functions. These " +"functions return [RID]s which are not references to the objects themselves, " +"but opaque [i]pointers[/i] towards these objects.\n" +"All objects are drawn to a viewport. You can use the [Viewport] attached to " +"the [SceneTree] or you can create one yourself with [method " +"viewport_create]. When using a custom scenario or canvas, the scenario or " +"canvas needs to be attached to the viewport using [method " +"viewport_set_scenario] or [method viewport_attach_canvas].\n" +"In 3D, all visual objects must be associated with a scenario. The scenario " +"is a visual representation of the world. If accessing the rendering server " +"from a running game, the scenario can be accessed from the scene tree from " +"any [Node3D] node with [method Node3D.get_world_3d]. Otherwise, a scenario " +"can be created with [method scenario_create].\n" +"Similarly, in 2D, a canvas is needed to draw all canvas items.\n" +"In 3D, all visible objects are comprised of a resource and an instance. A " +"resource can be a mesh, a particle system, a light, or any other 3D object. " +"In order to be visible resources must be attached to an instance using " +"[method instance_set_base]. The instance must also be attached to the " +"scenario using [method instance_set_scenario] in order to be visible.\n" +"In 2D, all visible objects are some form of canvas item. In order to be " +"visible, a canvas item needs to be the child of a canvas attached to a " +"viewport, or it needs to be the child of another canvas item that is " +"eventually attached to the canvas.\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 [RenderingServer] will return dummy values in this case." +msgstr "" +"渲染服务是所有可见内容的 API 后端。整个场景系统挂载在它上面来显示。\n" +"渲染服务是完全不透明的,其内部完全是特定于实现的,无法访问。\n" +"渲染服务可用于完全绕过场景/[Node] 系统。\n" +"资源是使用 [code]*_create[/code] 函数创建的。这些函数返回的 [RID] 不是对对象" +"本身的引用,而是指向这些对象的不透明[i]指针[/i]。\n" +"所有对象都被绘制到视口。可以使用附加到 [SceneTree] 的 [Viewport],或者可以使" +"用 [method viewport_create] 自己创建一个。使用自定义场景或画布时,需要使用 " +"[method viewport_set_scenario] 或 [method viewport_attach_canvas] 将场景或画" +"布附加到视口。\n" +"在 3D 中,所有视觉对象都必须与一个场景相关联。场景是世界的一个视觉表示。如果" +"从一个正在运行的游戏访问渲染服务,则可以使用 [method Node3D.get_world_3d] 从" +"任何 [Node3D] 节点的场景树访问场景。此外,可以使用 [method scenario_create] " +"创建一个场景。\n" +"相类似地,在2D中,需要一个画布来绘制所有的画布项。\n" +"在 3D 中,所有可见对象都由资源和实例组成。资源可以是网格、粒子系统、灯光或任" +"何其他 3D 对象。为了使资源可见,必须使用 [method instance_set_base] 将其附加" +"到一个实例。该实例还必须使用 [method instance_set_scenario] 附加到场景中才能" +"可见。\n" +"在 2D 中,所有可见对象都是某种形式的画布项。为了使一个画布项可见,它需要是附" +"加到视口的画布的子项,或者它需要是最终附加到画布的另一个画布项的子项。\n" +"[b]无头模式:[/b]使用 [code]--headless[/code] [url=$DOCS_URL/tutorials/" +"editor/command_line_tutorial.html]命令行参数[/url]启动引擎,将禁用所有渲染和" +"窗口管理功能。在这种情况下,来自 [RenderingServer] 的大多数函数将返回虚拟值。" + msgid "Optimization using Servers" msgstr "使用服务器进行优化" msgid "" +"Bakes the material data of the Mesh passed in the [param base] parameter " +"with optional [param material_overrides] to a set of [Image]s of size [param " +"image_size]. Returns an array of [Image]s containing material properties as " +"specified in [enum BakeChannels]." +msgstr "" +"使用可选的 [param material_overrides],将 [param base] 参数中传递的 Mesh 的材" +"质数据,烘焙为一组大小为 [param image_size] 的 [Image]。返回包含 [enum " +"BakeChannels] 中指定的材质属性的 [Image] 数组。" + +msgid "" +"Sets the parameters to use with the auto-exposure effect. These parameters " +"take on the same meaning as their counterparts in [CameraAttributes] and " +"[CameraAttributesPractical]." +msgstr "" +"设置用于自动曝光效果的参数。这些参数与 [CameraAttributes] 和 " +"[CameraAttributesPractical] 中的对应参数具有相同的含义。" + +msgid "" +"Sets the parameters to use with the DOF blur effect. These parameters take " +"on the same meaning as their counterparts in [CameraAttributesPractical]." +msgstr "" +"设置用于 DOF 模糊效果的参数。这些参数与 [CameraAttributesPractical] 中的对应" +"参数具有相同的含义。" + +msgid "" +"Sets the shape of the DOF bokeh pattern. Different shapes may be used to " +"achieve artistic effect, or to meet performance targets. For more detail on " +"available options see [enum DOFBokehShape]." +msgstr "" +"设置 DOF 散景图案的形状。可以使用不同的形状来达到艺术效果,或达到性能目标。有" +"关可用选项的更多详细信息,请参阅 [enum DOFBokehShape]。" + +msgid "" +"Sets the quality level of the DOF blur effect to one of the options in [enum " +"DOFBlurQuality]. [param use_jitter] can be used to jitter samples taken " +"during the blur pass to hide artifacts at the cost of looking more fuzzy." +msgstr "" +"将 DOF 模糊效果的质量级别设置为 [enum DOFBlurQuality] 中的选项之一。[param " +"use_jitter] 可用于抖动模糊过程中采集的样本,以隐藏伪影,代价是看起来更模糊。" + +msgid "" +"Sets the camera_attributes created with [method camera_attributes_create] to " +"the given camera." +msgstr "" +"将使用 [method camera_attributes_create] 创建的 camera_attributes 设置给给定" +"的相机。" + +msgid "" "Sets camera to use orthogonal projection, also known as orthographic " "projection. Objects remain the same size on the screen no matter how far " "away they are." @@ -49231,9 +62054,85 @@ msgstr "将相机设置为使用透视投影。屏幕上的物体在远处时变 msgid "Sets [Transform3D] of camera." msgstr "设置相机的 [Transform3D]。" +msgid "" +"Draws a circle on the [CanvasItem] pointed to by the [param item] [RID]. See " +"also [method CanvasItem.draw_circle]." +msgstr "" +"在 [param item] [RID] 指向的 [CanvasItem] 上绘制一个圆圈。另见 [method " +"CanvasItem.draw_circle]。" + +msgid "" +"If [param ignore] is [code]true[/code], ignore clipping on items drawn with " +"this canvas item until this is called again with [param ignore] set to false." +msgstr "" +"如果 [param ignore] 为 [code]true[/code],则忽略使用该画布项绘制的项目的裁" +"剪,直到将 [param ignore] 设置为 false 时再次调用。" + msgid "See also [method CanvasItem.draw_lcd_texture_rect_region]." msgstr "另见 [method CanvasItem.draw_lcd_texture_rect_region]。" +msgid "" +"Draws a line on the [CanvasItem] pointed to by the [param item] [RID]. See " +"also [method CanvasItem.draw_line]." +msgstr "" +"在 [param item] [RID] 指向的 [CanvasItem] 上画一条线。另见 [method " +"CanvasItem.draw_line]。" + +msgid "" +"Draws a mesh created with [method mesh_create] with given [param transform], " +"[param modulate] color, and [param texture]. This is used internally by " +"[MeshInstance2D]." +msgstr "" +"使用给定的 [param transform]、[param modulate] 颜色、和 [param texture] 绘制" +"使用 [method mesh_create] 创建的网格。这由 [MeshInstance2D] 内部使用。" + +msgid "See also [method CanvasItem.draw_msdf_texture_rect_region]." +msgstr "另见 [method CanvasItem.draw_msdf_texture_rect_region]。" + +msgid "" +"Draws a 2D [MultiMesh] on the [CanvasItem] pointed to by the [param item] " +"[RID]. See also [method CanvasItem.draw_multimesh]." +msgstr "" +"在 [param item] [RID] 指向的 [CanvasItem] 上,绘制一个 2D [MultiMesh]。另见 " +"[method CanvasItem.draw_multimesh]。" + +msgid "" +"Draws a nine-patch rectangle on the [CanvasItem] pointed to by the [param " +"item] [RID]." +msgstr "在 [param item] [RID] 指向的 [CanvasItem] 上,绘制一个九宫格矩形。" + +msgid "" +"Draws particles on the [CanvasItem] pointed to by the [param item] [RID]." +msgstr "在 [param item] [RID] 指向的 [CanvasItem] 上绘制粒子。" + +msgid "" +"Draws a 2D polygon on the [CanvasItem] pointed to by the [param item] [RID]. " +"See also [method CanvasItem.draw_polygon]." +msgstr "" +"在 [param item] [RID] 指向的 [CanvasItem] 上绘制一个二维多边形。另见 [method " +"CanvasItem.draw_polygon]。" + +msgid "" +"Draws a 2D polyline on the [CanvasItem] pointed to by the [param item] " +"[RID]. See also [method CanvasItem.draw_polyline]." +msgstr "" +"在 [param item] [RID] 指向的 [CanvasItem] 上绘制一个 2D 折线。另见 [method " +"CanvasItem.draw_polyline]。" + +msgid "" +"Draws a 2D primitive on the [CanvasItem] pointed to by the [param item] " +"[RID]. See also [method CanvasItem.draw_primitive]." +msgstr "" +"在 [param item] [RID] 指向的 [CanvasItem] 上绘制一个 2D 图元。另见 [method " +"CanvasItem.draw_primitive]。" + +msgid "" +"Draws a rectangle on the [CanvasItem] pointed to by the [param item] [RID]. " +"See also [method CanvasItem.draw_rect]." +msgstr "" +"在 [param item] [RID] 指向的 [CanvasItem] 上绘制一个矩形。另见 [method " +"CanvasItem.draw_rect]。" + msgid "Clears the [CanvasItem] and removes all commands in it." msgstr "清除[CanvasItem]并删除其中的所有命令。" @@ -49410,6 +62309,19 @@ msgid "Returns the ID of the test texture. Creates one if none exists." msgstr "返回测试纹理的 ID。如果不存在,则会创建一个。" msgid "" +"Returns the version of the graphics video adapter [i]currently in use[/i] (e." +"g. \"1.2.189\" for Vulkan, \"3.3.0 NVIDIA 510.60.02\" for OpenGL). This " +"version may be different from the actual latest version supported by the " +"hardware, as Godot may not always request the latest version.\n" +"[b]Note:[/b] When running a headless or server binary, this function returns " +"an empty string." +msgstr "" +"返回[i]当前使用的[/i]图形视频适配器的版本(例如,Vulkan 为“1.2.189”,OpenGL " +"为“3.3.0 NVIDIA 510.60.02”)。该版本可能与硬件支持的实际最新版本不同,因为 " +"Godot 可能并不总是要求最新版本。\n" +"[b]注意:[/b]当运行无头或服务器可执行文件时,该函数返回一个空字符串。" + +msgid "" "Returns the name of the video adapter (e.g. \"GeForce GTX 1080/PCIe/" "SSE2\").\n" "[b]Note:[/b] When running a headless or server binary, this function returns " @@ -49593,6 +62505,22 @@ msgstr "" "设置在给定时间内可见的实例的数量。如果是 -1,所有被分配的实例都会被画出来。相" "当于 [member MultiMesh.visible_instance_count]。" +msgid "" +"Creates a new omni light and adds it to the RenderingServer. It can be " +"accessed with the RID that is returned. This RID can be used in most " +"[code]light_*[/code] RenderingServer functions.\n" +"Once finished with your RID, you will want to free the RID using the " +"RenderingServer's [method free_rid] static method.\n" +"To place in a scene, attach this omni light to an instance using [method " +"instance_set_base] using the returned RID." +msgstr "" +"创建一个新的全向灯并将其添加到 RenderingServer。可以使用返回的 RID 访问它。" +"该 RID 可用于大多数 [code]light_*[/code] RenderingServer 函数。\n" +"一旦使用 RID 完成操作后,需要使用 RenderingServer 的静态方法 [method " +"free_rid] 来释放该 RID。\n" +"要放置在场景中,请使用 [method instance_set_base] 使用该返回的 RID 将该全向灯" +"附加到一个实例。" + msgid "Returns [code]true[/code] if particles are currently set to emitting." msgstr "如果当前粒子被设置发射,则返回 [code]true[/code]。" @@ -49675,6 +62603,18 @@ msgstr "" "提供一个默认环境。" msgid "" +"Sets a boot image. The color defines the background color. If [param scale] " +"is [code]true[/code], the image will be scaled to fit the screen size. If " +"[param use_filter] is [code]true[/code], the image will be scaled with " +"linear interpolation. If [param use_filter] is [code]false[/code], the image " +"will be scaled with nearest-neighbor interpolation." +msgstr "" +"设置一个启动图像。颜色定义背景颜色。如果 [param scale] 为 [code]true[/code]," +"则该图像将被缩放以适应屏幕大小。如果 [param use_filter] 为 [code]true[/" +"code],则该图像将使用线性插值的方式进行缩放。如果 [param use_filter] 为 " +"[code]false[/code],则该图像将使用最近邻插值的方式进行缩放。" + +msgid "" "If [code]true[/code], the engine will generate wireframes for use with the " "wireframe debug mode." msgstr "如果为 [code]true[/code],引擎将生成用于线框调试模式的线框。" @@ -49687,6 +62627,14 @@ msgstr "设置未选择特定透明色时使用的默认透明色。" msgid "Returns a shader's code." msgstr "返回着色器的代码。" +msgid "" +"Sets a shader's default texture. Overwrites the texture given by name.\n" +"[b]Note:[/b] If the sampler array is used use [param index] to access the " +"specified texture." +msgstr "" +"设置着色器的默认纹理。覆盖给定名称的纹理。\n" +"[b]注意:[/b]使用采样器数组时,使用 [param index] 访问指定的纹理。" + msgid "Returns the [Transform3D] set for a specific bone of this skeleton." msgstr "返回该骨架中指定骨骼的 [Transform3D]。" @@ -49708,6 +62656,45 @@ msgstr "设置视图的相机。" msgid "Sets a viewport's canvas." msgstr "设置视口的画布。" +msgid "" +"Copies the viewport to a region of the screen specified by [param rect]. If " +"[method viewport_set_render_direct_to_screen] is [code]true[/code], then the " +"viewport does not use a framebuffer and the contents of the viewport are " +"rendered directly to screen. However, note that the root viewport is drawn " +"last, therefore it will draw over the screen. Accordingly, you must set the " +"root viewport to an area that does not cover the area that you have attached " +"this viewport to.\n" +"For example, you can set the root viewport to not render at all with the " +"following code:\n" +"FIXME: The method seems to be non-existent.\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _ready():\n" +" get_viewport().set_attach_to_screen_rect(Rect2())\n" +" $Viewport.set_attach_to_screen_rect(Rect2(0, 0, 600, 600))\n" +"[/gdscript]\n" +"[/codeblocks]\n" +"Using this can result in significant optimization, especially on lower-end " +"devices. However, it comes at the cost of having to manage your viewports " +"manually. For further optimization, see [method " +"viewport_set_render_direct_to_screen]." +msgstr "" +"将该视口复制到 [param rect] 指定的屏幕区域。如果 [method " +"viewport_set_render_direct_to_screen] 为 [code]true[/code],则视口不使用帧缓" +"冲区,视口的内容将直接渲染到屏幕。但是,请注意根视口是最后绘制的,因此它会覆" +"盖屏幕。相应地,必须将根视口的区域设置为不覆盖附加该视口的区域。\n" +"例如,可以使用以下代码将根视口设置为完全不渲染:\n" +"FIXME:该方法似乎不存在。\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _ready():\n" +" get_viewport().set_attach_to_screen_rect(Rect2())\n" +" $Viewport.set_attach_to_screen_rect(Rect2(0, 0, 600, 600))\n" +"[/gdscript]\n" +"[/codeblocks]\n" +"使用它可以带来显著的优化,尤其是在低端设备上。但是,这是以必须手动管理视口为" +"代价的。进一步优化请参见 [method viewport_set_render_direct_to_screen]。" + msgid "Returns the viewport's last rendered frame." msgstr "返回视口的最后渲染帧。" @@ -49733,6 +62720,22 @@ msgstr "设置视口的调试绘图模式。可选项见 [enum ViewportDebugDraw msgid "If [code]true[/code], the viewport's canvas is not rendered." msgstr "如果为 [code]true[/code],则不渲染视口的画布。" +msgid "" +"Sets the viewport's environment mode which allows enabling or disabling " +"rendering of 3D environment over 2D canvas. When disabled, 2D will not be " +"affected by the environment. When enabled, 2D will be affected by the " +"environment if the environment background mode is [constant ENV_BG_CANVAS]. " +"The default behavior is to inherit the setting from the viewport's parent. " +"If the topmost parent is also set to [constant " +"VIEWPORT_ENVIRONMENT_INHERIT], then the behavior will be the same as if it " +"was set to [constant VIEWPORT_ENVIRONMENT_ENABLED]." +msgstr "" +"设置视口的环境模式,该模式允许启用或禁用 2D 画布上的 3D 环境渲染。禁用时,2D " +"将不受环境影响。启用时,如果环境背景模式为 [constant ENV_BG_CANVAS],则 2D 会" +"受到环境的影响。默认行为是从视口的父级继承设置。如果最顶层的父级也被设置为 " +"[constant VIEWPORT_ENVIRONMENT_INHERIT],则该行为将与设置为 [constant " +"VIEWPORT_ENVIRONMENT_ENABLED] 时相同。" + msgid "Sets the viewport's global transformation matrix." msgstr "设置视口的全局变换矩阵。" @@ -49742,6 +62745,39 @@ msgstr "设置视口的父视口到另一个视口。" msgid "Sets the shadow atlas quadrant's subdivision." msgstr "设置阴影图集象限的细分。" +msgid "" +"Sets the size of the shadow atlas's images (used for omni and spot lights). " +"The value will be rounded up to the nearest power of 2.\n" +"[b]Note:[/b] If this is set to [code]0[/code], no shadows will be visible at " +"all (including directional shadows)." +msgstr "" +"设置阴影图集图像的大小(用于全向灯和聚光灯)。该值将向上舍入到最接近的 2 次" +"幂。\n" +"[b]注意:[/b]如果被设置为 [code]0[/code],将根本看不到任何阴影(包括定向阴" +"影)。" + +msgid "" +"If [code]true[/code], render the contents of the viewport directly to " +"screen. This allows a low-level optimization where you can skip drawing a " +"viewport to the root viewport. While this optimization can result in a " +"significant increase in speed (especially on older devices), it comes at a " +"cost of usability. When this is enabled, you cannot read from the viewport " +"or from the screen_texture. You also lose the benefit of certain window " +"settings, such as the various stretch modes. Another consequence to be aware " +"of is that in 2D the rendering happens in window coordinates, so if you have " +"a viewport that is double the size of the window, and you set this, then " +"only the portion that fits within the window will be drawn, no automatic " +"scaling is possible, even if your game scene is significantly larger than " +"the window size." +msgstr "" +"如果为 [code]true[/code],则将视口的内容直接渲染到屏幕。这允许一个低级别的优" +"化,可以跳过将视口绘制到根视口。虽然这种优化可以显著提高速度(尤其是在旧设备" +"上),但它是以可用性为代价的。启用后,无法从视口或 screen_texture 读取。而且" +"还会失去某些窗口设置的好处,例如各种拉伸模式。另一个需要注意的后果是,在 2D " +"中,渲染是以窗口坐标进行的,所以如果有一个两倍于窗口大小的视口,并且设置了这" +"个属性,那么只会绘制适合窗口的部分, 无法自动缩放,即使游戏场景明显大于窗口大" +"小。" + msgid "Sets the viewport's width and height." msgstr "设置视口的宽度和高度。" @@ -49922,6 +62958,11 @@ msgstr "灯光对镜面反射的影响。" msgid "The light's range." msgstr "灯光的范围。" +msgid "" +"The size of the light when using spot light or omni light. The angular size " +"of the light when using directional light." +msgstr "使用聚光灯或全向灯时的灯光大小。使用定向光时是光的角度大小。" + msgid "The light's attenuation." msgstr "光线的衰减。" @@ -50028,6 +63069,14 @@ msgstr "禁用在 2D 画布上渲染 3D 环境。" msgid "Enable rendering of 3D environment over 2D canvas." msgstr "启用在 2D 画布上渲染 3D 环境。" +msgid "" +"Inherit enable/disable value from parent. If topmost parent is also set to " +"inherit, then this has the same behavior as [constant " +"VIEWPORT_ENVIRONMENT_ENABLED]." +msgstr "" +"从父级继承启用/禁用值。如果最顶层的父级也被设置为继承,那么这与 [constant " +"VIEWPORT_ENVIRONMENT_ENABLED] 具有相同的行为。" + msgid "Max value of [enum ViewportEnvironmentMode] enum." msgstr "[enum ViewportEnvironmentMode] 枚举的最大值。" @@ -50234,6 +63283,48 @@ msgid "" "Only render the shadows from the object. The object itself will not be drawn." msgstr "仅渲染对象的阴影。对象本身不会被绘制。" +msgid "" +"Index of [Image] in array of [Image]s returned by [method bake_render_uv2]. " +"Image uses [constant Image.FORMAT_RGBA8] and contains albedo color in the " +"[code].rgb[/code] channels and alpha in the [code].a[/code] channel." +msgstr "" +"[method bake_render_uv2] 返回的 [Image] 数组中 [Image] 的索引。图像使用 " +"[constant Image.FORMAT_RGBA8] 格式,并在 [code].rgb[/code] 通道中包含反照率颜" +"色,在 [code].a[/code] 通道中包含 Alpha。" + +msgid "" +"Index of [Image] in array of [Image]s returned by [method bake_render_uv2]. " +"Image uses [constant Image.FORMAT_RGBA8] and contains the per-pixel normal " +"of the object in the [code].rgb[/code] channels and nothing in the [code].a[/" +"code] channel. The per-pixel normal is encoded as [code]normal * 0.5 + 0.5[/" +"code]." +msgstr "" +"[method bake_render_uv2] 返回的 [Image] 数组中 [Image] 的索引。图像使用 " +"[constant Image.FORMAT_RGBA8] 格式,并在 [code].rgb[/code] 通道中包含该对象的" +"每像素法线,在 [code].a[/code] 通道中不包含任何内容。每像素法线被编码为 " +"[code]normal * 0.5 + 0.5[/code]。" + +msgid "" +"Index of [Image] in array of [Image]s returned by [method bake_render_uv2]. " +"Image uses [constant Image.FORMAT_RGBA8] and contains ambient occlusion " +"(from material and decals only) in the [code].r[/code] channel, roughness in " +"the [code].g[/code] channel, metallic in the [code].b[/code] channel and sub " +"surface scattering amount in the [code].a[/code] channel." +msgstr "" +"[method bake_render_uv2] 返回的 [Image] 数组中 [Image] 的索引。图像使用 " +"[constant Image.FORMAT_RGBA8] 格式,并在 [code].r[/code] 通道中包含环境光遮挡" +"(仅来自材质和贴花),在 [code].g[/code] 通道中包含粗糙度,在 [code].b[/" +"code] 通道中包含金属度,并且中 [code].a[/code] 通道中包含次表面散射量。" + +msgid "" +"Index of [Image] in array of [Image]s returned by [method bake_render_uv2]. " +"Image uses [constant Image.FORMAT_RGBAH] and contains emission color in the " +"[code].rgb[/code] channels and nothing in the [code].a[/code] channel." +msgstr "" +"[method bake_render_uv2] 返回的 [Image] 数组中 [Image] 的索引。图像使用 " +"[constant Image.FORMAT_RGBAH] 格式,并在 [code].rgb[/code] 通道中包含自发光颜" +"色,在 [code].a[/code] 通道中不包含任何内容。" + msgid "The nine patch gets stretched where needed." msgstr "九宫格在需要的地方被拉伸。" @@ -50421,6 +63512,19 @@ msgstr "" msgid "Loads a specific resource type from a file." msgstr "从文件中加载特定资源类型。" +msgid "" +"If implemented, gets the dependencies of a given resource. If [param " +"add_types] is [code]true[/code], paths should be appended [code]::TypeName[/" +"code], where [code]TypeName[/code] is the class name of the dependency.\n" +"[b]Note:[/b] Custom resource types defined by scripts aren't known by the " +"[ClassDB], so you might just return [code]\"Resource\"[/code] for them." +msgstr "" +"如果实现,则获取给定资源的依赖项。如果 [param add_types] 为 [code]true[/" +"code],路径应追加 [code]::TypeName[/code],其中 [code]TypeName[/code] 是依赖" +"项的类名。\n" +"[b]注意:[/b]脚本定义的自定义资源类型并不为 [ClassDB] 所知,因此可能只能为它" +"们返回 [code]\"Resource\"[/code]。" + msgid "Gets the list of extensions for files this loader is able to read." msgstr "获取该加载器能够读取的文件的扩展名列表。" @@ -50444,6 +63548,31 @@ msgstr "" "[b]注意:[/b][ClassDB] 不知道脚本定义的自定义资源类型,因此您可以只为它们处" "理 [code]\"Resource\"[/code]。" +msgid "" +"Loads a resource when the engine finds this loader to be compatible. If the " +"loaded resource is the result of an import, [param original_path] will " +"target the source file. Returns a [Resource] object on success, or an [enum " +"Error] constant in case of failure.\n" +"The [param cache_mode] property defines whether and how the cache should be " +"used or updated when loading the resource. See [enum CacheMode] for details." +msgstr "" +"当引擎发现该加载程序兼容时加载资源。如果加载的资源是导入的结果,[param " +"original_path] 将以源文件为目标。成功时返回一个 [Resource] 对象,失败时返回一" +"个 [enum Error] 常量。\n" +"[param cache_mode] 属性定义加载资源时是否以及如何使用或更新缓存。有关详细信" +"息,请参阅 [enum CacheMode]。" + +msgid "" +"If implemented, renames dependencies within the given resource and saves it. " +"[param renames] is a dictionary [code]{ String => String }[/code] mapping " +"old dependency paths to new paths.\n" +"Returns [constant OK] on success, or an [enum Error] constant in case of " +"failure." +msgstr "" +"如果被实现,将重命名给定资源中的依赖项并保存它。[param renames] 是一个字典 " +"[code]{ String => String }[/code],将旧依赖路径映射到新路径。\n" +"成功时返回 [constant OK],失败时返回 [enum Error] 常量。" + msgid "Saves a specific resource type to a file." msgstr "将特定资源类型保存到文件。" @@ -50471,6 +63600,13 @@ msgstr "" msgid "Returns whether the given resource object can be saved by this saver." msgstr "返回此保存程序能否保存给定的资源对象。" +msgid "" +"Sets a new UID for the resource at the given [param path]. Returns [constant " +"OK] on success, or an [enum Error] constant in case of failure." +msgstr "" +"为给定 [param path] 处的资源设置新的 UID。成功时返回 [constant OK],失败时返" +"回 [enum Error] 常量。" + msgid "Base class for the implementation of core resource importers." msgstr "用于实现核心资源导入器的基类。" @@ -50512,6 +63648,12 @@ msgstr "更改缺少子资源时的行为。默认行为是中止加载。" msgid "Returns the list of resources inside the preloader." msgstr "返回预加载器内的资源列表。" +msgid "" +"Returns [code]true[/code] if the preloader contains a resource associated to " +"[param name]." +msgstr "" +"如果预加载器包含一个与 [param name] 关联的资源,则返回 [code]true[/code]。" + msgid "Singleton for saving Godot-specific resource types." msgstr "用于保存 Godot 特定资源类型的单例。" @@ -50586,15 +63728,91 @@ msgstr "从给定的 [code]uid://[/code] 字符串中提取 UID 值。" msgid "A custom effect for use with [RichTextLabel]." msgstr "与 [RichTextLabel] 一起使用的自定义效果。" +msgid "" +"Override this method to modify properties in [param char_fx]. The method " +"must return [code]true[/code] if the character could be transformed " +"successfully. If the method returns [code]false[/code], it will skip " +"transformation to avoid displaying broken text." +msgstr "" +"覆盖该方法以修改 [param char_fx] 中的属性。如果字符可以被成功转换,则该方法必" +"须返回 [code]true[/code]。如果该方法返回 [code]false[/code],则它将跳过转换以" +"避免显示损坏的文本。" + msgid "Label that displays rich text." msgstr "显示富文本的标签。" +msgid "" +"Rich text can contain custom text, fonts, images and some basic formatting. " +"The label manages these as an internal tag stack. It also adapts itself to " +"given width/heights.\n" +"[b]Note:[/b] Assignments to [member text] clear the tag stack and " +"reconstruct it from the property's contents. Any edits made to [member text] " +"will erase previous edits made from other manual sources such as [method " +"append_text] and the [code]push_*[/code] / [method pop] methods.\n" +"[b]Note:[/b] RichTextLabel doesn't support entangled BBCode tags. For " +"example, instead of using [code][b]bold[i]bold italic[/b]italic[/i][/code], " +"use [code][b]bold[i]bold italic[/i][/b][i]italic[/i][/code].\n" +"[b]Note:[/b] [code]push_*/pop[/code] functions won't affect BBCode.\n" +"[b]Note:[/b] Unlike [Label], RichTextLabel doesn't have a [i]property[/i] to " +"horizontally align text to the center. Instead, enable [member " +"bbcode_enabled] and surround the text in a [code][center][/code] tag as " +"follows: [code][center]Example[/center][/code]. There is currently no built-" +"in way to vertically align text either, but this can be emulated by relying " +"on anchors/containers and the [member fit_content] property." +msgstr "" +"富文本可以包含自定义文本、字体、图像和一些基本格式。该标签将这些作为一个内部" +"标签栈进行管理。它还可以适应给定的宽度/高度。\n" +"[b]注意:[/b]对 [member text] 赋值会清除标签栈,并根据属性的内容重建它。对 " +"[member text] 所做的任何编辑都将删除以前从其他手动来源——例如 [method " +"append_text] 和 [code]push_*[/code] / [method pop] 方法——所做的编辑。\n" +"[b]注意:[/b]RichTextLabel 不支持纠缠的 BBCode 标签。例如,不要使用 [code][b]" +"加粗[i]加粗斜体[/b]斜体[/i][/code],而应使用 [code][b]加粗[i]加粗斜体[/i][/b]" +"[i]斜体[/i][/code]。\n" +"[b]注意:[/b][code]push_*/pop[/code] 函数不会影响 BBCode。\n" +"[b]注意:[/b]与 [Label] 不同,RichTextLabel 没有[i]属性[/i]使文本水平居中。不" +"过,可以启用 [member bbcode_enabled] 并将文本包围在 [code][center][/code] 标" +"签中,类似:[code][center]示例[/center][/code]。目前也没有垂直对齐文本的内置" +"方法,但这可以通过依赖锚点/容器和 [member fit_content] 属性来模拟。" + msgid "GUI Rich Text/BBcode Demo" msgstr "GUI 富文本/BBcode 演示" +msgid "" +"Adds an image's opening and closing tags to the tag stack, optionally " +"providing a [param width] and [param height] to resize the image, a [param " +"color] to tint the image and a [param region] to only use parts of the " +"image.\n" +"If [param width] or [param height] is set to 0, the image size will be " +"adjusted in order to keep the original aspect ratio.\n" +"If [param width] and [param height] are not set, but [param region] is, the " +"region's rect will be used." +msgstr "" +"将图像的开始和结束标签添加到标签栈中,可选择提供 [param width] 和 [param " +"height] 来调整图像大小,提供 [param color] 来给图像混色, [param region] 只使" +"用图像的一部分。\n" +"如果 [param width] 或 [param height] 被设置为 0,图像的大小将被调整以保持原始" +"长宽比。\n" +"如果未设置 [param width] 和 [param height],但设置了 [param region],则将使用" +"该区域的矩形。" + msgid "Adds raw non-BBCode-parsed text to the tag stack." msgstr "将非 BBCode 解析的原始文本添加到标签栈中。" +msgid "" +"Parses [param bbcode] and adds tags to the tag stack as needed.\n" +"[b]Note:[/b] Using this method, you can't close a tag that was opened in a " +"previous [method append_text] call. This is done to improve performance, " +"especially when updating large RichTextLabels since rebuilding the whole " +"BBCode every time would be slower. If you absolutely need to close a tag in " +"a future method call, append the [member text] instead of using [method " +"append_text]." +msgstr "" +"解析 [param bbcode] 并根据需要将标签添加到标签栈中。\n" +"[b]注意:[/b]使用该方法,无法关闭在之前的 [method append_text] 调用中打开的标" +"签。这样做是为了提高性能,尤其是在更新大型 RichTextLabel 时,因为每次都重建整" +"个 BBCode 会比较慢。如果您绝对需要在接下来的方法调用中关闭标签,请追加 " +"[member text] 而不是使用 [method append_text]。" + msgid "Clears the tag stack and sets [member text] to an empty string." msgstr "清空标签堆栈,并将 [member text] 设置为空字符串。" @@ -50744,6 +63962,13 @@ msgstr "" msgid "Adds a [code][color][/code] tag to the tag stack." msgstr "在标签栈中添加 [code][color][/code] 标签。" +msgid "" +"Adds a custom effect tag to the tag stack. The effect does not need to be in " +"[member custom_effects]. The environment is directly passed to the effect." +msgstr "" +"将一个自定义效果标签添加到标签栈。效果不需要在 [member custom_effects] 中。环" +"境被直接传入给效果。" + msgid "Adds a [code][fgcolor][/code] tag to the tag stack." msgstr "向标签栈中添加 [code][fgcolor][/code] 标签。" @@ -50766,6 +63991,13 @@ msgstr "" "[hint=something]{text}[/hint][/code]。" msgid "" +"Adds an [code][indent][/code] tag to the tag stack. Multiplies [param level] " +"by current [member tab_size] to determine new margin length." +msgstr "" +"添加一个 [code][indent][/code] 标签到标签栈。将 [param level] 乘以当前 " +"[member tab_size] 以确定新的边距长度。" + +msgid "" "Adds a [code][font][/code] tag with a italics font to the tag stack. This is " "the same as adding a [code][i][/code] tag if not currently in a [code][b][/" "code] tag." @@ -50812,6 +64044,16 @@ msgstr "向标签栈中添加 [code][table=columns,inline_align][/code] 标签 msgid "Adds a [code][u][/code] tag to the tag stack." msgstr "向标签栈中添加 [code][u][/code] 标签。" +msgid "" +"Removes a paragraph of content from the label. Returns [code]true[/code] if " +"the paragraph exists.\n" +"The [param paragraph] argument is the index of the paragraph to remove, it " +"can take values in the interval [code][0, get_paragraph_count() - 1][/code]." +msgstr "" +"从标签中移除一段内容。如果该段落存在,则返回 [code]true[/code]。\n" +"[param paragraph] 参数是要移除的段落的索引,它可以在 [code][0, " +"get_paragraph_count() - 1][/code] 区间内取值。" + msgid "Scrolls the window's top line to match [param line]." msgstr "滚动窗口,让第一行与 [param line] 匹配。" @@ -50843,6 +64085,21 @@ msgstr "设置某个表格单元格的颜色。可以为交替行指定单独的 msgid "Sets minimum and maximum size overrides for a table cell." msgstr "设置某个表格单元格的最小和最大尺寸覆盖。" +msgid "" +"Edits the selected column's expansion options. If [param expand] is " +"[code]true[/code], the column expands in proportion to its expansion ratio " +"versus the other columns' ratios.\n" +"For example, 2 columns with ratios 3 and 4 plus 70 pixels in available width " +"would expand 30 and 40 pixels, respectively.\n" +"If [param expand] is [code]false[/code], the column will not contribute to " +"the total ratio." +msgstr "" +"编辑选定列的扩展选项。如果 [param expand] 为 [code]true[/code],则该列按其扩" +"展比率相对于其他列的比率进行扩展。\n" +"例如,比率为 3 和 4 的两列,加上 70 像素的可用宽度,将分别扩展 30 和 40 像" +"素。\n" +"如果 [param expand] 为 [code]false[/code],则该列将不会对总比率产生影响。" + msgid "If [code]true[/code], the label uses BBCode formatting." msgstr "如果为 [code]true[/code],则该标签使用 BBCode 格式。" @@ -50937,6 +64194,14 @@ msgstr "默认文本颜色。" msgid "The default tint of text outline." msgstr "文本轮廓的默认色调。" +msgid "" +"The color of selected text, used when [member selection_enabled] is " +"[code]true[/code]. If equal to [code]Color(0, 0, 0, 0)[/code], it will be " +"ignored." +msgstr "" +"选中文本的颜色,当 [member selection_enabled] 为 [code]true[/code] 时使用。如" +"果等于 [code]Color(0, 0, 0, 0)[/code],则它将被忽略。" + msgid "The color of the font's shadow." msgstr "字体阴影的颜色。" @@ -50967,6 +64232,12 @@ msgstr "表中元素的水平间距。" msgid "The vertical separation of elements in a table." msgstr "表中元素的垂直间距。" +msgid "The horizontal padding around a highlighting and background color box." +msgstr "水平边距,用于高亮及背景色框。" + +msgid "The vertical padding around a highlighting and background color box." +msgstr "垂直边距,用于高亮及背景色框。" + msgid "The font used for bold text." msgstr "用于粗体字的字体。" @@ -51019,6 +64290,19 @@ msgstr "[RichTextLabel] 的正常背景。" msgid "Handle for a [Resource]'s unique ID." msgstr "[Resource] 的唯一 ID 的句柄。" +msgid "" +"The RID [Variant] type is used to access a low-level resource by its unique " +"ID. RIDs are opaque, which means they do not grant access to the resource by " +"themselves. They are used by the low-level server classes, such as " +"[DisplayServer], [RenderingServer], [TextServer], etc.\n" +"A low-level resource may correspond to a high-level [Resource], such as " +"[Texture] or [Mesh]." +msgstr "" +"RID [Variant] 类型用于通过其唯一 ID 访问低级资源。RID 是不透明的,这意味着它" +"们不会自行授予对资源的访问权限。它们由低级服务类使用,例如 [DisplayServer]、" +"[RenderingServer]、[TextServer] 等。\n" +"低级资源可能对应于高级 [Resource],例如 [Texture] 或 [Mesh]。" + msgid "Constructs an empty [RID] with the invalid ID [code]0[/code]." msgstr "构造空的 [RID],内容为无效的 ID [code]0[/code]。" @@ -51070,6 +64354,39 @@ msgid "" "that have gravity and can be pushed by other objects." msgstr "能够被 2D 物理仿真移动的物理物体。可用于具有重力并且可以被推动的对象。" +msgid "" +"This node implements simulated 2D physics. You do not control a RigidBody2D " +"directly. Instead, you apply forces to it (gravity, impulses, etc.) and the " +"physics simulation calculates the resulting movement based on its mass, " +"friction, and other physical properties.\n" +"You can switch the body's behavior using [member lock_rotation], [member " +"freeze], and [member freeze_mode].\n" +"[b]Note:[/b] You should not change a RigidBody2D's [code]position[/code] or " +"[code]linear_velocity[/code] every frame or even very often. If you need to " +"directly affect the body's state, use [method _integrate_forces], which " +"allows you to directly access the physics state.\n" +"Please also keep in mind that physics bodies manage their own transform " +"which overwrites the ones you set. So any direct or indirect transformation " +"(including scaling of the node or its parent) will be visible in the editor " +"only, and immediately reset at runtime.\n" +"If you need to override the default physics behavior or add a transformation " +"at runtime, you can write a custom force integration. See [member " +"custom_integrator]." +msgstr "" +"该节点实现了模拟的 2D 物理。不应直接控制 RigidBody2D。而是,对其施加力(重" +"力、冲力等),然后物理模拟将根据其质量、摩擦力和其他物理属性来计算产生的运" +"动。\n" +"您可以使用 [member lock_rotation]、[member freeze] 和 [member freeze_mode] 切" +"换实体的行为。\n" +"[b]注意:[/b]不应该每帧甚至经常改变 RigidBody2D 的 [code]position[/code] 或 " +"[code]linear_velocity[/code]。如果需要直接影响实体的状态,请使用 [method " +"_integrate_forces],它允许直接访问物理状态。\n" +"还请记住,物理实体管理它们自己的变换,这会覆盖您设置的变换。因此,任何直接或" +"间接的变换(包括节点或其父节点的缩放),将仅在编辑器中可见,并在运行时立即重" +"置。\n" +"如果需要覆盖默认物理行为或在运行时添加变换,可以编写自定义的力积分函数。请参" +"阅 [member custom_integrator]。" + msgid "2D Physics Platformer Demo" msgstr "2D 物理平台跳跃演示" @@ -51090,6 +64407,34 @@ msgstr "" "custom_integrator] 允许你禁用默认行为并为一个物体编写自定义的合力。" msgid "" +"Applies a rotational force without affecting position. A force is time " +"dependent and meant to be applied every physics update.\n" +"[b]Note:[/b] [member inertia] is required for this to work. To have [member " +"inertia], an active [CollisionShape2D] must be a child of the node, or you " +"can manually set [member inertia]." +msgstr "" +"施加旋转力但不影响位置。力是与时间相关的,应该每次物理更新时都要进行施加。\n" +"[b]注意:[/b]有 [member inertia] 才能正常工作。要让 [member inertia] 存在,必" +"须有一个 [CollisionShape2D] 作为该节点的子节点,或者你也可以手动设置 [member " +"inertia]。" + +msgid "" +"Applies a rotational impulse to the body without affecting the position.\n" +"An impulse is time-independent! Applying an impulse every frame would result " +"in a framerate-dependent force. For this reason, it should only be used when " +"simulating one-time impacts (use the \"_force\" functions otherwise).\n" +"[b]Note:[/b] [member inertia] is required for this to work. To have [member " +"inertia], an active [CollisionShape2D] must be a child of the node, or you " +"can manually set [member inertia]." +msgstr "" +"在不影响位置的情况下,向实体施加一个旋转冲力。\n" +"冲力是时间无关的!每帧施加一个冲力将产生依赖于帧速率的力。出于这个原因,它应" +"该只在模拟一次性影响时使用(否则使用“_force”函数)。\n" +"[b]注意:[/b]需要 [member inertia] 才能发挥作用。要具有 [member inertia],活" +"动的 [CollisionShape2D] 必须是该节点的一个子节点,或者可以手动设置 [member " +"inertia]。" + +msgid "" "Sets the body's velocity on the given axis. The velocity in the given vector " "axis will be set as the given vector length. This is useful for jumping " "behavior." @@ -51098,6 +64443,17 @@ msgstr "" "行为很有用。" msgid "" +"If [code]true[/code], the RigidBody2D will emit signals when it collides " +"with another RigidBody2D.\n" +"[b]Note:[/b] By default the maximum contacts reported is set to 0, meaning " +"nothing will be recorded, see [member max_contacts_reported]." +msgstr "" +"如果为 [code]true[/code],则该 RigidBody2D 将在与另一个 RigidBody2D 碰撞时发" +"出信号。\n" +"[b]注意:[/b]默认情况下,报告的接触的最大值被设置为 0,表示不会记录任何内容," +"请参阅 [member max_contacts_reported]。" + +msgid "" "Continuous collision detection mode.\n" "Continuous collision detection tries to predict where a moving body will " "collide instead of moving it and correcting its movement after collision. " @@ -51127,6 +64483,69 @@ msgstr "" "[b]默认重力[/b]值和/或任何由 [Area2D] 应用的额外重力向量计算出来的。" msgid "" +"The body's moment of inertia. This is like mass, but for rotation: it " +"determines how much torque it takes to rotate the body. The moment of " +"inertia is usually computed automatically from the mass and the shapes, but " +"this property allows you to set a custom value.\n" +"If set to [code]0[/code], inertia is automatically computed (default " +"value).\n" +"[b]Note:[/b] This value does not change when inertia is automatically " +"computed. Use [PhysicsServer2D] to get the computed inertia.\n" +"[codeblocks]\n" +"[gdscript]\n" +"@onready var ball = $Ball\n" +"\n" +"func get_ball_inertia():\n" +" return 1.0 / PhysicsServer2D.body_get_direct_state(ball.get_rid())." +"inverse_inertia\n" +"[/gdscript]\n" +"[csharp]\n" +"private RigidBody2D _ball;\n" +"\n" +"public override void _Ready()\n" +"{\n" +" _ball = GetNode<RigidBody2D>(\"Ball\");\n" +"}\n" +"\n" +"private float GetBallInertia()\n" +"{\n" +" return 1.0f / PhysicsServer2D.BodyGetDirectState(_ball.GetRid())." +"InverseInertia;\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"该物体的惯性力矩。与质量类似,但适用于旋转:用于确定需要施加多少扭矩才能让该" +"物体旋转。通常会自动根据质量和形状计算惯性力矩,但这个属性能够让你设置自定义" +"的值。\n" +"设置为 [code]0[/code] 时,会自动计算惯性(默认值)。\n" +"[b]注意:[/b]自动计算出惯性后,这个值不会改变。请使用 [PhysicsServer2D] 获取" +"计算出的惯性。\n" +"[codeblocks]\n" +"[gdscript]\n" +"@onready var ball = $Ball\n" +"\n" +"func get_ball_inertia():\n" +" return 1.0 / PhysicsServer2D.body_get_direct_state(ball.get_rid())." +"inverse_inertia\n" +"[/gdscript]\n" +"[csharp]\n" +"private RigidBody2D _ball;\n" +"\n" +"public override void _Ready()\n" +"{\n" +" _ball = GetNode<RigidBody2D>(\"Ball\");\n" +"}\n" +"\n" +"private float GetBallInertia()\n" +"{\n" +" return 1.0f / PhysicsServer2D.BodyGetDirectState(_ball.GetRid())." +"InverseInertia;\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" "The body's linear velocity in pixels per second. Can be used sporadically, " "but [b]don't set this every frame[/b], because physics may run in another " "thread and runs at a different granularity. Use [method _integrate_forces] " @@ -51146,6 +64565,106 @@ msgstr "" "质。" msgid "" +"Emitted when a collision with another [PhysicsBody2D] or [TileMap] occurs. " +"Requires [member contact_monitor] to be set to [code]true[/code] and [member " +"max_contacts_reported] to be set high enough to detect all the collisions. " +"[TileMap]s are detected if the [TileSet] has Collision [Shape2D]s.\n" +"[param body] the [Node], if it exists in the tree, of the other " +"[PhysicsBody2D] or [TileMap]." +msgstr "" +"当与另一个 [PhysicsBody2D] 或 [TileMap] 发生碰撞时发出。需要将 [member " +"contact_monitor] 设置为 [code]true[/code],并将 [member " +"max_contacts_reported] 设置得足够高以检测所有碰撞。如果 [TileSet] 具有碰撞 " +"[Shape2D],则 [TileMap] 将被检测。\n" +"[param body] 是其他 [PhysicsBody2D] 或 [TileMap] 的 [Node],如果该节点存在于" +"树中。" + +msgid "" +"Emitted when the collision with another [PhysicsBody2D] or [TileMap] ends. " +"Requires [member contact_monitor] to be set to [code]true[/code] and [member " +"max_contacts_reported] to be set high enough to detect all the collisions. " +"[TileMap]s are detected if the [TileSet] has Collision [Shape2D]s.\n" +"[param body] the [Node], if it exists in the tree, of the other " +"[PhysicsBody2D] or [TileMap]." +msgstr "" +"当与另一个 [PhysicsBody2D] 或 [TileMap] 的碰撞结束时发出。需要将 [member " +"contact_monitor] 设置为 [code]true[/code],并将 [member " +"max_contacts_reported] 设置得足够高以检测所有碰撞。如果 [TileSet] 具有碰撞 " +"[Shape2D],则 [TileMap] 将被检测。\n" +"[param body] 是其他 [PhysicsBody2D] 或 [TileMap] 的 [Node],如果该节点存在于" +"树中。" + +msgid "" +"Emitted when one of this RigidBody2D's [Shape2D]s collides with another " +"[PhysicsBody2D] or [TileMap]'s [Shape2D]s. Requires [member contact_monitor] " +"to be set to [code]true[/code] and [member max_contacts_reported] to be set " +"high enough to detect all the collisions. [TileMap]s are detected if the " +"[TileSet] has Collision [Shape2D]s.\n" +"[param body_rid] the [RID] of the other [PhysicsBody2D] or [TileSet]'s " +"[CollisionObject2D] used by the [PhysicsServer2D].\n" +"[param body] the [Node], if it exists in the tree, of the other " +"[PhysicsBody2D] or [TileMap].\n" +"[param body_shape_index] the index of the [Shape2D] of the other " +"[PhysicsBody2D] or [TileMap] used by the [PhysicsServer2D]. Get the " +"[CollisionShape2D] node with [code]body.shape_owner_get_owner(body." +"shape_find_owner(body_shape_index))[/code].\n" +"[param local_shape_index] the index of the [Shape2D] of this RigidBody2D " +"used by the [PhysicsServer2D]. Get the [CollisionShape2D] node with " +"[code]self.shape_owner_get_owner(self.shape_find_owner(local_shape_index))[/" +"code]." +msgstr "" +"当该 RigidBody2D 的一个 [Shape2D] 与另一个 [PhysicsBody2D] 或 [TileMap] 的 " +"[Shape2D] 碰撞时发出。需要将 [member contact_monitor] 设置为 [code]true[/" +"code],并将 [member max_contacts_reported] 设置得足够高以检测所有碰撞。如果 " +"[TileSet] 具有 Collision [Shape2D],则 [TileMap] 会被检测到。\n" +"[param body_rid] 由 [PhysicsServer2D] 使用的其他 [PhysicsBody2D] 或 " +"[TileSet] 的 [CollisionObject2D] 的 [RID]。\n" +"[param body] 其他 [PhysicsBody2D] 或 [TileMap] 的 [Node],如果该节点存在于树" +"中。\n" +"[param body_shape_index] 由 [PhysicsServer2D] 使用的其他 [PhysicsBody2D] 或 " +"[TileMap] 的 [Shape2D] 的索引。该 [CollisionShape2D] 节点可以使用 [code]body." +"shape_owner_get_owner(body.shape_find_owner(body_shape_index))[/code] 获" +"取。\n" +"[param local_shape_index] 由 [PhysicsServer2D] 使用的该 RigidBody2D 的 " +"[Shape2D] 的索引。该 [CollisionShape2D] 节点可以使用 [code]self." +"shape_owner_get_owner(self.shape_find_owner(local_shape_index))[/code] 获取。" + +msgid "" +"Emitted when the collision between one of this RigidBody2D's [Shape2D]s and " +"another [PhysicsBody2D] or [TileMap]'s [Shape2D]s ends. Requires [member " +"contact_monitor] to be set to [code]true[/code] and [member " +"max_contacts_reported] to be set high enough to detect all the collisions. " +"[TileMap]s are detected if the [TileSet] has Collision [Shape2D]s.\n" +"[param body_rid] the [RID] of the other [PhysicsBody2D] or [TileSet]'s " +"[CollisionObject2D] used by the [PhysicsServer2D].\n" +"[param body] the [Node], if it exists in the tree, of the other " +"[PhysicsBody2D] or [TileMap].\n" +"[param body_shape_index] the index of the [Shape2D] of the other " +"[PhysicsBody2D] or [TileMap] used by the [PhysicsServer2D]. Get the " +"[CollisionShape2D] node with [code]body.shape_owner_get_owner(body." +"shape_find_owner(body_shape_index))[/code].\n" +"[param local_shape_index] the index of the [Shape2D] of this RigidBody2D " +"used by the [PhysicsServer2D]. Get the [CollisionShape2D] node with " +"[code]self.shape_owner_get_owner(self.shape_find_owner(local_shape_index))[/" +"code]." +msgstr "" +"当该 RigidBody2D 的一个 [Shape2D] 与另一个 [PhysicsBody2D] 或 [TileMap] 的 " +"[Shape2D] 之间的碰撞结束时发出。需要将 [member contact_monitor] 设置为 " +"[code]true[/code],并将 [member max_contacts_reported] 设置得足够高以检测所有" +"碰撞。如果 [TileSet] 具有 Collision [Shape2D],则 [TileMap] 会被检测到。\n" +"[param body_rid] 由 [PhysicsServer2D] 使用的其他 [PhysicsBody2D] 或 " +"[TileSet] 的 [CollisionObject2D] 的 [RID]。\n" +"[param body] 其他 [PhysicsBody2D] 或 [TileMap] 的 [Node],如果该节点存在于树" +"中。\n" +"[param body_shape_index] 由 [PhysicsServer2D] 使用的其他 [PhysicsBody2D] 或 " +"[TileMap] 的 [Shape2D] 的索引。该 [CollisionShape2D] 节点可以使用 [code]body." +"shape_owner_get_owner(body.shape_find_owner(body_shape_index))[/code] 获" +"取。\n" +"[param local_shape_index] 由 [PhysicsServer2D] 使用的该 RigidBody2D 的 " +"[Shape2D] 的索引。该 [CollisionShape2D] 节点可以使用 [code]self." +"shape_owner_get_owner(self.shape_find_owner(local_shape_index))[/code] 获取。" + +msgid "" "Emitted when the physics engine changes the body's sleeping state.\n" "[b]Note:[/b] Changing the value [member sleeping] will not trigger this " "signal. It is only emitted if the sleeping state is changed by the physics " @@ -51178,10 +64697,82 @@ msgid "" "that have gravity and can be pushed by other objects." msgstr "能够被 3D 物理仿真移动的物理物体。可用于具有重力并且可以被推动的对象。" +msgid "" +"This is the node that implements full 3D physics. This means that you do not " +"control a RigidBody3D directly. Instead, you can apply forces to it " +"(gravity, impulses, etc.), and the physics simulation will calculate the " +"resulting movement, collision, bouncing, rotating, etc.\n" +"You can switch the body's behavior using [member lock_rotation], [member " +"freeze], and [member freeze_mode].\n" +"[b]Note:[/b] Don't change a RigidBody3D's position every frame or very " +"often. Sporadic changes work fine, but physics runs at a different " +"granularity (fixed Hz) than usual rendering (process callback) and maybe " +"even in a separate thread, so changing this from a process loop may result " +"in strange behavior. If you need to directly affect the body's state, use " +"[method _integrate_forces], which allows you to directly access the physics " +"state.\n" +"If you need to override the default physics behavior, you can write a custom " +"force integration function. See [member custom_integrator].\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 物理的节点。这意味着不直接控制 RigidBody3D。而是,可以对其施" +"加力(重力、冲力等),物理模拟将计算由此产生的运动、碰撞、弹跳、旋转等。\n" +"可以使用 [member lock_rotation]、[member freeze]、和 [member freeze_mode] 切" +"换实体的行为。\n" +"[b]注意:[/b]不要每帧或经常更改 RigidBody3D 的位置。零星的更改正常工作,但物" +"理运行的粒度(固定 Hz)与通常的渲染(进程回调)不同,甚至可能在单独的线程中运" +"行,因此从进程循环更改它可能会导致奇怪的行为。如果需要直接影响实体的状态,请" +"使用 [method _integrate_forces],它允许直接访问物理状态。\n" +"如果需要覆盖默认的物理行为,可以编写自定义的力积分函数。请参阅 [member " +"custom_integrator]。\n" +"[b]警告:[/b]如果缩放不一致,该节点可能无法按预期运行。请确保保持其缩放统一" +"(即在所有轴上相同),并改为更改其碰撞形状的大小。" + +msgid "" +"Applies a rotational force without affecting position. A force is time " +"dependent and meant to be applied every physics update.\n" +"[b]Note:[/b] [member inertia] is required for this to work. To have [member " +"inertia], an active [CollisionShape3D] must be a child of the node, or you " +"can manually set [member inertia]." +msgstr "" +"施加旋转力但不影响位置。力是与时间相关的,应该每次物理更新时都要进行施加。\n" +"[b]注意:[/b]有 [member inertia] 才能正常工作。要让 [member inertia] 存在,必" +"须有一个 [CollisionShape3D] 作为该节点的子节点,或者你也可以手动设置 [member " +"inertia]。" + +msgid "" +"Applies a rotational impulse to the body without affecting the position.\n" +"An impulse is time-independent! Applying an impulse every frame would result " +"in a framerate-dependent force. For this reason, it should only be used when " +"simulating one-time impacts (use the \"_force\" functions otherwise).\n" +"[b]Note:[/b] [member inertia] is required for this to work. To have [member " +"inertia], an active [CollisionShape3D] must be a child of the node, or you " +"can manually set [member inertia]." +msgstr "" +"在不影响位置的情况下,向实体施加一个旋转冲力。\n" +"冲力是时间无关的!每帧施加一个冲力将产生一个依赖于帧速率的力。出于这个原因," +"它应该只在模拟一次性影响时使用(否则使用“_force”函数)。\n" +"[b]注意:[/b]需要 [member inertia] 才能发挥作用。要具有 [member inertia],活" +"动的 [CollisionShape3D] 必须是该节点的一个子节点,或者可以手动设置 [member " +"inertia]。" + msgid "The RigidBody3D's rotational velocity in [i]radians[/i] per second." msgstr "该 RigidBody3D 的旋转速度,单位为[i]弧度[/i]每秒。" msgid "" +"If [code]true[/code], the RigidBody3D will emit signals when it collides " +"with another RigidBody3D.\n" +"[b]Note:[/b] By default the maximum contacts reported is set to 0, meaning " +"nothing will be recorded, see [member max_contacts_reported]." +msgstr "" +"如果为 [code]true[/code],则该 RigidBody3D 将在与另一个 RigidBody3D 碰撞时发" +"出信号。\n" +"[b]注意:[/b]默认情况下,报告的接触的最大值被设置为 0,表示不会记录任何内容," +"请参阅 [member max_contacts_reported]。" + +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. " @@ -51194,6 +64785,171 @@ msgstr "" "纠正它的运动。连续碰撞检测更精确,并且错过了较小的、快速移动的物体的撞击。不" "使用连续碰撞检测的计算速度更快,但可能会错过小的、快速移动的物体。" +msgid "" +"The body's moment of inertia. This is like mass, but for rotation: it " +"determines how much torque it takes to rotate the body on each axis. The " +"moment of inertia is usually computed automatically from the mass and the " +"shapes, but this property allows you to set a custom value.\n" +"If set to [code]Vector3.ZERO[/code], inertia is automatically computed " +"(default value).\n" +"[b]Note:[/b] This value does not change when inertia is automatically " +"computed. Use [PhysicsServer3D] to get the computed inertia.\n" +"[codeblocks]\n" +"[gdscript]\n" +"@onready var ball = $Ball\n" +"\n" +"func get_ball_inertia():\n" +" return PhysicsServer3D.body_get_direct_state(ball.get_rid())." +"inverse_inertia.inverse()\n" +"[/gdscript]\n" +"[csharp]\n" +"private RigidBody3D _ball;\n" +"\n" +"public override void _Ready()\n" +"{\n" +" _ball = GetNode<RigidBody3D>(\"Ball\");\n" +"}\n" +"\n" +"private Vector3 GetBallInertia()\n" +"{\n" +" return PhysicsServer3D.BodyGetDirectState(_ball.GetRid()).InverseInertia." +"Inverse();\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"该物体的惯性力矩。与质量类似,但适用于旋转:用于确定各个轴上需要施加多少扭矩" +"才能让该物体旋转。通常会自动根据质量和形状计算惯性力矩,但这个属性能够让你设" +"置自定义的值。\n" +"设置为 [code]Vector3.ZERO[/code] 时,会自动计算惯性(默认值)。\n" +"[b]注意:[/b]自动计算出惯性后,这个值不会改变。请使用 [PhysicsServer3D] 获取" +"计算出的惯性。\n" +"[codeblocks]\n" +"[gdscript]\n" +"@onready var ball = $Ball\n" +"\n" +"func get_ball_inertia():\n" +" return PhysicsServer3D.body_get_direct_state(ball.get_rid())." +"inverse_inertia.inverse()\n" +"[/gdscript]\n" +"[csharp]\n" +"private RigidBody3D _ball;\n" +"\n" +"public override void _Ready()\n" +"{\n" +" _ball = GetNode<RigidBody3D>(\"Ball\");\n" +"}\n" +"\n" +"private Vector3 GetBallInertia()\n" +"{\n" +" return PhysicsServer3D.BodyGetDirectState(_ball.GetRid()).InverseInertia." +"Inverse();\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Emitted when a collision with another [PhysicsBody3D] or [GridMap] occurs. " +"Requires [member contact_monitor] to be set to [code]true[/code] and [member " +"max_contacts_reported] to be set high enough to detect all the collisions. " +"[GridMap]s are detected if the [MeshLibrary] has Collision [Shape3D]s.\n" +"[param body] the [Node], if it exists in the tree, of the other " +"[PhysicsBody3D] or [GridMap]." +msgstr "" +"当与另一个 [PhysicsBody3D] 或 [GridMap] 发生碰撞时发出。需要将 [member " +"contact_monitor] 设置为 [code]true[/code],并将 [member " +"max_contacts_reported] 设置得足够高以检测所有碰撞。如果 [MeshLibrary] 具有碰" +"撞 [Shape3D],则 [GridMap] 会被检测。\n" +"[param body] 是其他 [PhysicsBody3D] 或 [GridMap] 的 [Node],如果该节点存在于" +"树中。" + +msgid "" +"Emitted when the collision with another [PhysicsBody3D] or [GridMap] ends. " +"Requires [member contact_monitor] to be set to [code]true[/code] and [member " +"max_contacts_reported] to be set high enough to detect all the collisions. " +"[GridMap]s are detected if the [MeshLibrary] has Collision [Shape3D]s.\n" +"[param body] the [Node], if it exists in the tree, of the other " +"[PhysicsBody3D] or [GridMap]." +msgstr "" +"当与另一个 [PhysicsBody3D] 或 [GridMap] 的碰撞结束时发出。需要将 [member " +"contact_monitor] 设置为 [code]true[/code],并将 [member " +"max_contacts_reported] 设置得足够高以检测所有碰撞。如果 [MeshLibrary] 具有碰" +"撞 [Shape3D],则 [GridMap] 会被检测。\n" +"[param body] 是其他 [PhysicsBody3D] 或 [GridMap] 的 [Node],如果该节点存在于" +"树中。" + +msgid "" +"Emitted when one of this RigidBody3D's [Shape3D]s collides with another " +"[PhysicsBody3D] or [GridMap]'s [Shape3D]s. Requires [member contact_monitor] " +"to be set to [code]true[/code] and [member max_contacts_reported] to be set " +"high enough to detect all the collisions. [GridMap]s are detected if the " +"[MeshLibrary] has Collision [Shape3D]s.\n" +"[param body_rid] the [RID] of the other [PhysicsBody3D] or [MeshLibrary]'s " +"[CollisionObject3D] used by the [PhysicsServer3D].\n" +"[param body] the [Node], if it exists in the tree, of the other " +"[PhysicsBody3D] or [GridMap].\n" +"[param body_shape_index] the index of the [Shape3D] of the other " +"[PhysicsBody3D] or [GridMap] used by the [PhysicsServer3D]. Get the " +"[CollisionShape3D] node with [code]body.shape_owner_get_owner(body." +"shape_find_owner(body_shape_index))[/code].\n" +"[param local_shape_index] the index of the [Shape3D] of this RigidBody3D " +"used by the [PhysicsServer3D]. Get the [CollisionShape3D] node with " +"[code]self.shape_owner_get_owner(self.shape_find_owner(local_shape_index))[/" +"code]." +msgstr "" +"当该 RigidBody3D 的一个 [Shape3D] 与另一个 [PhysicsBody3D] 或 [GridMap] 的 " +"[Shape3D] 碰撞时发出。需要将 [member contact_monitor] 设置为 [code]true[/" +"code],并将 [member max_contacts_reported] 设置得足够高以检测所有碰撞。如果 " +"[MeshLibrary] 具有 Collision [Shape3D],则 [GridMap] 会被检测到。\n" +"[param body_rid] 由 [PhysicsServer3D] 使用的其他 [PhysicsBody3D] 或 " +"[MeshLibrary] 的 [CollisionObject3D] 的 [RID]。\n" +"[param body] 其他 [PhysicsBody3D] 或 [GridMap] 的 [Node],如果该节点存在于树" +"中。\n" +"[param body_shape_index] 由 [PhysicsServer3D] 使用的其他 [PhysicsBody3D] 或 " +"[GridMap] 的 [Shape3D] 的索引。该 [CollisionShape3D] 节点可以使用 [code]body." +"shape_owner_get_owner(body.shape_find_owner(body_shape_index))[/code] 获" +"取。\n" +"[param local_shape_index] 由 [PhysicsServer3D] 使用的该 RigidBody3D 的 " +"[Shape3D] 的索引。该 [CollisionShape3D] 节点可以使用 [code]self." +"shape_owner_get_owner(self.shape_find_owner(local_shape_index))[/code] 获取。" + +msgid "" +"Emitted when the collision between one of this RigidBody3D's [Shape3D]s and " +"another [PhysicsBody3D] or [GridMap]'s [Shape3D]s ends. Requires [member " +"contact_monitor] to be set to [code]true[/code] and [member " +"max_contacts_reported] to be set high enough to detect all the collisions. " +"[GridMap]s are detected if the [MeshLibrary] has Collision [Shape3D]s.\n" +"[param body_rid] the [RID] of the other [PhysicsBody3D] or [MeshLibrary]'s " +"[CollisionObject3D] used by the [PhysicsServer3D]. [GridMap]s are detected " +"if the Meshes have [Shape3D]s.\n" +"[param body] the [Node], if it exists in the tree, of the other " +"[PhysicsBody3D] or [GridMap].\n" +"[param body_shape_index] the index of the [Shape3D] of the other " +"[PhysicsBody3D] or [GridMap] used by the [PhysicsServer3D]. Get the " +"[CollisionShape3D] node with [code]body.shape_owner_get_owner(body." +"shape_find_owner(body_shape_index))[/code].\n" +"[param local_shape_index] the index of the [Shape3D] of this RigidBody3D " +"used by the [PhysicsServer3D]. Get the [CollisionShape3D] node with " +"[code]self.shape_owner_get_owner(self.shape_find_owner(local_shape_index))[/" +"code]." +msgstr "" +"当该 RigidBody3D 的一个 [Shape3D] 与另一个 [PhysicsBody3D] 或 [GridMap] 的 " +"[Shape3D] 之间的碰撞结束时发出。需要将 [member contact_monitor] 设置为 " +"[code]true[/code],并将 [member max_contacts_reported] 设置得足够高以检测所有" +"碰撞。如果 [MeshLibrary] 具有碰撞 [Shape3D],则 [GridMap] 将被检测。\n" +"[param body_rid] 由 [PhysicsServer3D] 使用的其他 [PhysicsBody3D] 或 " +"[MeshLibrary] 的 [CollisionObject3D] 的 [RID]。如果网格具有 [Shape3D],则 " +"[GridMap] 将被检测。\n" +"[param body] 其他 [PhysicsBody3D] 或 [GridMap] 的 [Node],如果该节点存在于树" +"中。\n" +"[param body_shape_index] 由 [PhysicsServer3D] 使用的其他 [PhysicsBody3D] 或" +"[GridMap] 的[Shape3D] 的索引。该 [CollisionShape3D] 节点可以使用 [code]body." +"shape_owner_get_owner(body.shape_find_owner(body_shape_index))[/code] 获" +"取。\n" +"[param local_shape_index] 由 [PhysicsServer3D] 使用的该 RigidBody3D 的 " +"[Shape3D] 的索引。该 [CollisionShape3D] 节点可以使用 [code]self." +"shape_owner_get_owner(self.shape_find_owner(local_shape_index))[/code] 获取。" + msgid "Editor-only helper for setting up root motion in [AnimationTree]." msgstr "在 [AnimationTree] 中设置根运动的仅编辑器可用的辅助工具。" @@ -51256,6 +65012,24 @@ msgstr "" "Android 阻止。" msgid "" +"Enable or disable the server feature that notifies clients of other peers' " +"connection/disconnection, and relays messages between them. When this option " +"is [code]false[/code], clients won't be automatically notified of other " +"peers and won't be able to send them packets through the server.\n" +"[b]Note:[/b] Changing this option while other peers are connected may lead " +"to unexpected behaviors.\n" +"[b]Note:[/b] Support for this feature may depend on the current " +"[MultiplayerPeer] configuration. See [method MultiplayerPeer." +"is_server_relay_supported]." +msgstr "" +"启用或禁用服务器功能,该功能通知客户端其他对等体的连接/断开,并在它们之间转发" +"消息。当此选项为 [code]false[/code] 时,客户端将不会自动收到其他对等体的通" +"知,也无法通过服务器向它们发送数据包。\n" +"[b]注意:[/b]在其他对等体连接时更改此选项可能会导致意外行为。\n" +"[b]注意:[/b]对该功能的支持可能取决于当前的 [MultiplayerPeer] 配置。请参阅 " +"[method MultiplayerPeer.is_server_relay_supported]。" + +msgid "" "Configuration for properties to synchronize with a [MultiplayerSynchronizer]." msgstr "配置,能够让 [MultiplayerSynchronizer] 对属性进行同步。" @@ -51332,10 +65106,38 @@ msgstr "" "[code]idx[/code] 参数用于在其他 [code]get_node_*[/code] 方法中查询节点数据," "范围为 [code][0, get_node_count() - 1][/code]。" +msgid "" +"Returns a [PackedScene] for the node at [param idx] (i.e. the whole branch " +"starting at this node, with its child nodes and resources), or [code]null[/" +"code] if the node is not an instance." +msgstr "" +"为 [param idx] 处的节点返回一个 [PackedScene](即从该节点开始的整个分支,包括" +"其子节点和资源),如果该节点不是一个实例,则返回 [code]null[/code]。" + msgid "Returns the name of the node at [param idx]." msgstr "返回索引为 [param idx] 的节点的名称。" msgid "" +"Returns the path to the node at [param idx].\n" +"If [param for_parent] is [code]true[/code], returns the path of the [param " +"idx] node's parent instead." +msgstr "" +"返回 [param idx] 处的节点的路径。\n" +"如果 [param for_parent] 为 [code]true[/code],则返回 [param idx] 节点的父节点" +"的路径。" + +msgid "" +"Returns the number of exported or overridden properties for the node at " +"[param idx].\n" +"The [code]prop_idx[/code] argument used to query node property data in other " +"[code]get_node_property_*[/code] methods in the interval [code][0, " +"get_node_property_count() - 1][/code]." +msgstr "" +"返回在 [param idx] 处的节点的导出的或覆盖的属性数量。\n" +"[code]prop_idx[/code] 参数介于区间 [code][0, get_node_property_count() - 1][/" +"code],用于在其他 [code]get_node_property_*[/code] 方法中查询节点属性数据。" + +msgid "" "Returns the name of the property at [param prop_idx] for the node at [param " "idx]." msgstr "" @@ -51349,6 +65151,13 @@ msgstr "返回索引为 [param idx] 的节点中,索引为 [param prop_idx] msgid "Returns the type of the node at [param idx]." msgstr "返回索引为 [param idx] 的节点的类型。" +msgid "" +"Returns [code]true[/code] if the node at [param idx] is an " +"[InstancePlaceholder]." +msgstr "" +"如果 [param idx] 处的节点是一个 [InstancePlaceholder],则返回 [code]true[/" +"code]。" + msgid "Manages the game loop via a hierarchy of nodes." msgstr "通过节点层次结构管理游戏循环。" @@ -51378,8 +65187,121 @@ msgstr "SceneTree" msgid "Multiple resolutions" msgstr "多分辨率" -msgid "Creates and returns a new [Tween]." -msgstr "创建并返回一个新的 [Tween]。" +msgid "" +"Calls [param method] on each member of the given group. You can pass " +"arguments to [param method] by specifying them at the end of the method " +"call. If a node doesn't have the given method or the argument list does not " +"match (either in count or in types), it will be skipped.\n" +"[b]Note:[/b] [method call_group] will call methods immediately on all " +"members at once, which can cause stuttering if an expensive method is called " +"on lots of members. To wait for one frame after [method call_group] was " +"called, use [method call_group_flags] with the [constant " +"GROUP_CALL_DEFERRED] flag." +msgstr "" +"对给定分组的每个成员调用 [param method]。可以通过在方法调用结束时指定参数,来" +"将参数传递给 [param method]。如果该节点没有给定的方法或参数列表不匹配(无论是" +"计数还是类型),它将被跳过。\n" +"[b]注意:[/b][method call_group] 将立即对所有成员调用一次方法,如果对大量成员" +"调用昂贵的方法,这可能会导致卡顿。要在调用 [method call_group] 后等待一帧,请" +"将 [method call_group_flags] 和 [constant GROUP_CALL_DEFERRED] 标志一起使用。" + +msgid "" +"Changes the running scene to the one at the given [param path], after " +"loading it into a [PackedScene] and creating a new instance.\n" +"Returns [constant OK] on success, [constant ERR_CANT_OPEN] if the [param " +"path] cannot be loaded into a [PackedScene], or [constant ERR_CANT_CREATE] " +"if that scene cannot be instantiated.\n" +"[b]Note:[/b] The scene change is deferred, which means that the new scene " +"node is added on the next idle frame. This ensures that both scenes are " +"never loaded at the same time, which can exhaust system resources if the " +"scenes are too large or if running in a memory constrained environment. As " +"such, you won't be able to access the loaded scene immediately after the " +"[method change_scene_to_file] call." +msgstr "" +"将位于给定路径 [param path] 的场景加载进一个 [PackedScene] 并新建其实例,然后" +"将正在运行的场景修改为这个场景。\n" +"成功时返回 [constant OK],如果 [param path] 不能被加载到一个 [PackedScene] " +"中,则返回 [constant ERR_CANT_OPEN];如果该场景无法被实例化,则返回 " +"[constant ERR_CANT_CREATE]。\n" +"[b]注意:[/b]场景改变是延迟的,即新的场景节点是在下一个空闲帧中添加的。这确保" +"了两个场景永远不会同时加载,如果场景太大或在内存受限的环境中运行,这会耗尽系" +"统资源。因此,无法在 [method change_scene_to_file] 调用后,立即访问该加载的场" +"景。" + +msgid "" +"Changes the running scene to a new instance of the given [PackedScene] " +"(which must be valid).\n" +"Returns [constant OK] on success, [constant ERR_CANT_CREATE] if the scene " +"cannot be instantiated, or [constant ERR_INVALID_PARAMETER] if the scene is " +"invalid.\n" +"[b]Note:[/b] The scene change is deferred, which means that the new scene " +"node is added on the next idle frame. You won't be able to access it " +"immediately after the [method change_scene_to_packed] call." +msgstr "" +"将正在运行的场景改变为给定 [PackedScene] (必须有效)的一个新实例。\n" +"成功时返回 [constant OK],场景无法实例化时返回 [constant ERR_CANT_CREATE],场" +"景无效时返回 [constant ERROR_INVALID_PARAMETER]。\n" +"[b]注意:[/b]场景改变是延迟的,即新的场景节点是在下一个空闲帧中添加的。无法" +"在 [method change_scene_to_packed] 调用后立即访问它。" + +msgid "" +"Returns a [SceneTreeTimer] which will [signal SceneTreeTimer.timeout] after " +"the given time in seconds elapsed in this [SceneTree].\n" +"If [code]process_always[/code] is set to [code]false[/code], pausing the " +"[SceneTree] will also pause the timer.\n" +"If [code]process_in_physics[/code] is set to [code]true[/code], will update " +"the [SceneTreeTimer] during the physics frame instead of the process frame " +"(fixed framerate processing).\n" +"If [code]ignore_time_scale[/code] is set to [code]true[/code], will ignore " +"[member Engine.time_scale] and update the [SceneTreeTimer] with the actual " +"frame delta.\n" +"Commonly used to create a one-shot delay timer as in the following example:\n" +"[codeblocks]\n" +"[gdscript]\n" +"func some_function():\n" +" print(\"start\")\n" +" await get_tree().create_timer(1.0).timeout\n" +" print(\"end\")\n" +"[/gdscript]\n" +"[csharp]\n" +"public async Task SomeFunction()\n" +"{\n" +" GD.Print(\"start\");\n" +" await ToSignal(GetTree().CreateTimer(1.0f), SceneTreeTimer.SignalName." +"Timeout);\n" +" GD.Print(\"end\");\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"The timer will be automatically freed after its time elapses." +msgstr "" +"返回一个 [SceneTreeTimer],它将在该 [SceneTree] 中经过给定时间(以秒为单位)" +"后发出 [signal SceneTreeTimer.timeout] 信号。\n" +"如果 [code]process_always[/code] 被设置为 [code]false[/code],则暂停 " +"[SceneTree] 也会暂停计时器。\n" +"如果 [code]process_in_physics[/code] 被设置为 [code]true[/code],则将在物理帧" +"而不是进程帧期间更新 [SceneTreeTimer](固定帧率处理)。\n" +"如果 [code]ignore_time_scale[/code] 被设置为 [code]true[/code],则将忽略 " +"[member Engine.time_scale] 并使用实际帧增量来更新 [SceneTreeTimer]。\n" +"通常用于创建一次性的延迟定时器,如下例所示:\n" +"[codeblocks]\n" +"[gdscript]\n" +"func some_function():\n" +" print(\"start\")\n" +" await get_tree().create_timer(1.0).timeout\n" +" print(\"end\")\n" +"[/gdscript]\n" +"[csharp]\n" +"public async Task SomeFunction()\n" +"{\n" +" GD.Print(\"start\");\n" +" await ToSignal(GetTree().CreateTimer(1.0f), SceneTreeTimer.SignalName." +"Timeout);\n" +" GD.Print(\"end\");\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"计时器将在其时间结束后被自动释放。" msgid "" "Returns the current frame number, i.e. the total frame count since the " @@ -51401,6 +65323,25 @@ msgid "" msgstr "将给定的对象排队准备删除,即在当前帧之后调用 [method Object.free] 。" msgid "" +"Quits the application at the end of the current iteration. Argument [param " +"exit_code] can optionally be given (defaulting to 0) to customize the exit " +"status code.\n" +"By convention, an exit code of [code]0[/code] indicates success whereas a " +"non-zero exit code indicates an error.\n" +"For portability reasons, the exit code should be set between 0 and 125 " +"(inclusive).\n" +"[b]Note:[/b] On iOS this method doesn't work. Instead, as recommended by the " +"iOS Human Interface Guidelines, the user is expected to close apps via the " +"Home button." +msgstr "" +"在当前迭代结束时退出应用程序。可以选择给出参数 [param exit_code](默认为 " +"0),以自定义退出状态代码。\n" +"按照惯例,退出代码 [code]0[/code] 表示成功,而非零的退出代码表示错误。\n" +"出于可移植性的原因,退出代码应设置在 0 到 125(含)之间。\n" +"[b]注意:[/b]这个方法在 iOS 上不起作用。根据《iOS 人机界面指南》中的建议,用" +"户应该通过 Home 键来关闭应用程序。" + +msgid "" "Reloads the currently active scene.\n" "Returns [constant OK] on success, [constant ERR_UNCONFIGURED] if no [member " "current_scene] was defined yet, [constant ERR_CANT_OPEN] if [member " @@ -51521,6 +65462,20 @@ msgstr "当计时器到 0 时发出。" msgid "A class stored as a resource." msgstr "作为资源存储的类。" +msgid "" +"A class stored as a resource. A script extends the functionality of all " +"objects that instantiate it.\n" +"This is the base class for all scripts and should not be used directly. " +"Trying to create a new script with this class will result in an error.\n" +"The [code]new[/code] method of a script subclass creates a new instance. " +"[method Object.set_script] extends an existing object, if that object's " +"class matches one of the script's base classes." +msgstr "" +"作为资源存储的类。脚本可以扩展所有以它为实例的对象的功能。\n" +"这是所有脚本的基类,不应直接使用。尝试使用此类创建新脚本将导致错误。\n" +"脚本子类的 [code]new[/code] 方法会创建新的实例。如果一个现有的对象的类与脚本" +"的基类之一相匹配,[method Object.set_script] 会扩展该对象。" + msgid "Scripting documentation index" msgstr "脚本文档索引" @@ -51557,6 +65512,11 @@ msgid "Returns [code]true[/code] if the script contains non-empty source code." msgstr "如果脚本包含非空源代码,则返回 [code]true[/code]。" msgid "" +"Returns [code]true[/code] if [param base_object] is an instance of this " +"script." +msgstr "如果 [param base_object] 是该脚本的实例,则返回 [code]true[/code]。" + +msgid "" "Returns [code]true[/code] if the script is a tool script. A tool script can " "run in the editor." msgstr "" @@ -51679,6 +65639,53 @@ msgid "A helper node for displaying scrollable elements such as lists." msgstr "用于显示可滚动元素(例如列表)的辅助节点。" msgid "" +"A ScrollContainer node meant to contain a [Control] child.\n" +"ScrollContainers will automatically create a scrollbar child ([HScrollBar], " +"[VScrollBar], or both) when needed and will only draw the Control within the " +"ScrollContainer area. Scrollbars will automatically be drawn at the right " +"(for vertical) or bottom (for horizontal) and will enable dragging to move " +"the viewable Control (and its children) within the ScrollContainer. " +"Scrollbars will also automatically resize the grabber based on the [member " +"Control.custom_minimum_size] of the Control relative to the " +"ScrollContainer.\n" +"Works great with a [Panel] control. You can set [constant Control." +"SIZE_EXPAND] on the children's size flags, so they will upscale to the " +"ScrollContainer's size if it's larger (scroll is invisible for the chosen " +"dimension)." +msgstr "" +"一个 ScrollContainer 节点,用于包含一个 [Control] 子节点。\n" +"ScrollContainer 将在需要时自动创建滚动条子项([HScrollBar]、[VScrollBar] 或两" +"者),并且只会在 ScrollContainer 区域内绘制该控件。滚动条将自动绘制在右侧(对" +"于垂直)或底部(对于水平),并且允许拖动以在 ScrollContainer 中移动可视控件" +"(及其子控件)。滚动条还将根据控件相对于 ScrollContainer 的 [member Control." +"custom_minimum_size],自动调整抓取器的大小。\n" +"与 [Panel] 控件配合使用效果很好。可以在子项的大小标志上设置 [constant " +"Control.SIZE_EXPAND],因此如果 ScrollContainer 较大(滚动对于所选维度不可" +"见),它们将放大到 ScrollContainer 的大小。" + +msgid "" +"Ensures the given [param control] is visible (must be a direct or indirect " +"child of the ScrollContainer). Used by [member follow_focus].\n" +"[b]Note:[/b] This will not work on a node that was just added during the " +"same frame. If you want to scroll to a newly added child, you must wait " +"until the next frame using [signal SceneTree.process_frame]:\n" +"[codeblock]\n" +"add_child(child_node)\n" +"await get_tree().process_frame\n" +"ensure_control_visible(child_node)\n" +"[/codeblock]" +msgstr "" +"确保给定的 [param control] 控件可见(必须是 ScrollContainer 的直接或间接子节" +"点)。会被 [member follow_focus] 使用。\n" +"[b]注意:[/b]这不适用于在同一帧内刚刚添加的节点。如果想滚动到一个新添加的子节" +"点,就必须使用 [signal SceneTree.process_frame] 等待至下一帧:\n" +"[codeblock]\n" +"add_child(child_node)\n" +"await get_tree().process_frame\n" +"ensure_control_visible(child_node)\n" +"[/codeblock]" + +msgid "" "If [code]true[/code], the ScrollContainer will automatically scroll to " "focused children (including indirect children) to make sure they are fully " "visible." @@ -51735,6 +65742,14 @@ msgstr "" "可用于同步多个 [Thread] 的同步信号量。创建时初始化为零。小心避免死锁。对于二" "进制版本,请参阅 [Mutex]。" +msgid "" +"Like [method wait], but won't block, so if the value is zero, fails " +"immediately and returns [code]false[/code]. If non-zero, it returns " +"[code]true[/code] to report success." +msgstr "" +"与 [method wait] 类似,但不会阻塞,所以如果值为零,则会立即失败并返回 " +"[code]false[/code]。如果非零,则返回 [code]true[/code] 以报告成功。" + msgid "The ray's length." msgstr "射线的长度。" @@ -51766,6 +65781,17 @@ msgid "Shaders documentation index" msgstr "着色器文档索引" msgid "" +"Returns the texture that is set as default for the specified parameter.\n" +"[b]Note:[/b] [param name] must match the name of the uniform in the code " +"exactly.\n" +"[b]Note:[/b] If the sampler array is used use [param index] to access the " +"specified texture." +msgstr "" +"返回被设置为指定参数的默认值的纹理。\n" +"[b]注意:[/b][param name] 必须与代码中的 uniform 名称完全匹配。\n" +"[b]注意:[/b]如果使用采样器数组,则使用 [param index] 访问指定的纹理。" + +msgid "" "Returns the shader mode for the shader, either [constant MODE_CANVAS_ITEM], " "[constant MODE_SPATIAL] or [constant MODE_PARTICLES]." msgstr "" @@ -51773,6 +65799,19 @@ msgstr "" "或 [constant MODE_PARTICLES]。" msgid "" +"Sets the default texture to be used with a texture uniform. The default is " +"used if a texture is not set in the [ShaderMaterial].\n" +"[b]Note:[/b] [param name] must match the name of the uniform in the code " +"exactly.\n" +"[b]Note:[/b] If the sampler array is used use [param index] to access the " +"specified texture." +msgstr "" +"设置要与纹理 uniform 一起使用的默认纹理。如果未在 [ShaderMaterial] 中设置纹" +"理,则使用该默认值。\n" +"[b]注意:[/b][param name] 必须与代码中的 uniform 名称完全匹配。\n" +"[b]注意:[/b]如果使用采样器数组,则使用 [param index] 访问指定的纹理。" + +msgid "" "Returns the shader's code as the user has written it, not the full generated " "code used internally." msgstr "返回用户编写的着色器代码,而不是内部使用的完整生成代码。" @@ -51804,6 +65843,68 @@ msgstr "所有 2D 形状的基类。" msgid "Base class for all 2D shapes. All 2D shape types inherit from this." msgstr "所有 2D 形状的基类。所有的 2D 形状类型都继承于此。" +msgid "" +"Returns [code]true[/code] if this shape is colliding with another.\n" +"This method needs the transformation matrix for this shape ([param " +"local_xform]), the shape to check collisions with ([param with_shape]), and " +"the transformation matrix of that shape ([param shape_xform])." +msgstr "" +"如果该形状与另一个形状发生碰撞,返回 [code]true[/code]。\n" +"本方法需要该形状的变换矩阵([param local_xform])、要检查与该形状碰撞的形状" +"([param with_shape])、以及那个形状的变换矩阵([param shape_xform])。" + +msgid "" +"Returns a list of contact point pairs where this shape touches another.\n" +"If there are no collisions, the returned list is empty. Otherwise, the " +"returned list contains contact points arranged in pairs, with entries " +"alternating between points on the boundary of this shape and points on the " +"boundary of [param with_shape].\n" +"A collision pair A, B can be used to calculate the collision normal with " +"[code](B - A).normalized()[/code], and the collision depth with [code](B - " +"A).length()[/code]. This information is typically used to separate shapes, " +"particularly in collision solvers.\n" +"This method needs the transformation matrix for this shape ([param " +"local_xform]), the shape to check collisions with ([param with_shape]), and " +"the transformation matrix of that shape ([param shape_xform])." +msgstr "" +"返回该形状与另一形状接触的接触点对的列表。\n" +"如果不存在碰撞,则返回的列表为空。否则,返回的列表中包含的是成对排列的接触" +"点,在该形状边界上的点和 [param with_shape] 边界上的点之间交替排列。\n" +"有了碰撞对 A 和 B,就可以通过 [code](B - A).normalized()[/code] 计算碰撞法" +"线,通过 [code](B - A).length()[/code] 计算碰撞深度。这些信息通常用于分离形" +"状,在碰撞求解器中比较常见。\n" +"这个方法需要用到该形状的变换矩阵([param local_xform])、要检查与该形状是否碰" +"撞的形状([param with_shape])、以及那个形状的变换矩阵([param " +"shape_xform])。" + +msgid "" +"Returns a list of contact point pairs where this shape would touch another, " +"if a given movement was applied.\n" +"If there would be no collisions, the returned list is empty. Otherwise, the " +"returned list contains contact points arranged in pairs, with entries " +"alternating between points on the boundary of this shape and points on the " +"boundary of [param with_shape].\n" +"A collision pair A, B can be used to calculate the collision normal with " +"[code](B - A).normalized()[/code], and the collision depth with [code](B - " +"A).length()[/code]. This information is typically used to separate shapes, " +"particularly in collision solvers.\n" +"This method needs the transformation matrix for this shape ([param " +"local_xform]), the movement to test on this shape ([param local_motion]), " +"the shape to check collisions with ([param with_shape]), the transformation " +"matrix of that shape ([param shape_xform]), and the movement to test onto " +"the other object ([param shape_motion])." +msgstr "" +"返回如果应用了给定的移动后,该形状将接触另一形状的接触点对列表。\n" +"如果不存在碰撞,则返回的列表为空。否则,返回的列表中包含的是成对排列的接触" +"点,在该形状边界上的点和 [param with_shape] 边界上的点之间会交替出现。\n" +"有了碰撞对 A 和 B,就可以通过 [code](B - A).normalized()[/code] 计算碰撞法" +"线,通过 [code](B - A).length()[/code] 计算碰撞深度。这些信息通常用于分离形" +"状,在碰撞求解器中比较常见。\n" +"本方法需要用到该形状的变换矩阵([param local_xform])、要在该形状上测试的运动" +"([param local_motion])、要检查与该形状是否碰撞的形状([param " +"with_shape])、那个形状的变换矩阵([param shape_xform])、以及要在其他形状上" +"测试的运动([param shape_motion])。" + msgid "Returns a [Rect2] representing the shapes boundary." msgstr "返回代表形状边界的 [Rect2]。" @@ -52052,6 +66153,27 @@ msgstr "返回 Skeleton2D 实例的 [RID]。" msgid "Skeleton for characters and animated objects." msgstr "角色和动画对象的骨架。" +msgid "" +"Skeleton3D provides a hierarchical interface for managing bones, including " +"pose, rest and animation (see [Animation]). It can also use ragdoll " +"physics.\n" +"The overall transform of a bone with respect to the skeleton is determined " +"by the following hierarchical order: rest pose, custom pose and pose.\n" +"Note that \"global pose\" below refers to the overall transform of the bone " +"with respect to skeleton, so it not the actual global/world transform of the " +"bone.\n" +"To setup different types of inverse kinematics, consider using " +"[SkeletonIK3D], or add a custom IK implementation in [method Node._process] " +"as a child node." +msgstr "" +"Skeleton3D 提供了一个层次化的界面来管理骨骼,包括姿势、放松和动画(参见 " +"[Animation])。它还可以使用布娃娃物理。\n" +"骨骼相对于骨架的整体变换由以下层次顺序确定:放松姿势、自定义姿势、和姿势。\n" +"请注意,下面的“全局姿势”是指骨骼相对于骨架的整体变换,因此它不是骨骼的实际全" +"局/世界变换。\n" +"要设置不同类型的反向运动学,请考虑使用 [SkeletonIK3D],或在 [method Node." +"_process] 中添加一个自定义 IK 实现作为子节点。" + msgid "Clear all the bones in this skeleton." msgstr "清除这个骨架上的所有骨骼。" @@ -52072,12 +66194,59 @@ msgstr "" "的,这不是该骨骼的实际“全局”变换。" msgid "" +"Returns the bone index which is the parent of the bone at [param bone_idx]. " +"If -1, then bone has no parent.\n" +"[b]Note:[/b] The parent bone returned will always be less than [param " +"bone_idx]." +msgstr "" +"返回 [param bone_idx] 处的骨骼的父级骨骼索引。如果为 -1,则该骨骼没有父级。\n" +"[b]注意:[/b]返回的父骨骼索引总是小于 [param bone_idx]。" + +msgid "" "Returns the pose transform of the specified bone. Pose is applied on top of " "the custom pose, which is applied on top the rest pose." msgstr "" "返回指定骨骼的姿势变换。姿势应用于自定义姿势之上,自定义姿势应用于放松姿势之" "上。" +msgid "Returns all bones in the skeleton to their rest poses." +msgstr "将骨架中的所有骨骼都恢复到放松姿势。" + +msgid "" +"Adds a collision exception to the physical bone.\n" +"Works just like the [RigidBody3D] node." +msgstr "" +"向物理骨骼添加一个碰撞例外。\n" +"就像 [RigidBody3D] 节点一样工作。" + +msgid "" +"Removes a collision exception to the physical bone.\n" +"Works just like the [RigidBody3D] node." +msgstr "" +"移除物理骨骼的一个碰撞例外。\n" +"就像 [RigidBody3D] 节点一样工作。" + +msgid "" +"Tells the [PhysicalBone3D] nodes in the Skeleton to start simulating and " +"reacting to the physics world.\n" +"Optionally, a list of bone names can be passed-in, allowing only the passed-" +"in bones to be simulated." +msgstr "" +"让 Skeleton 中的 [PhysicalBone3D] 节点开始仿真模拟,对物理世界做出反应。\n" +"可以传入骨骼名称列表,只对传入的骨骼进行仿真模拟。" + +msgid "Tells the [PhysicalBone3D] nodes in the Skeleton to stop simulating." +msgstr "让 Skeleton 中的 [PhysicalBone3D] 节点停止仿真模拟。" + +msgid "Binds the given Skin to the Skeleton." +msgstr "将给定的 Skin 绑定到 Skeleton。" + +msgid "Sets the bone pose to rest for [param bone_idx]." +msgstr "将 [param bone_idx] 骨骼设置为放松姿势。" + +msgid "Sets all bone poses to rests." +msgstr "将所有骨骼都设置为放松姿势。" + msgid "" "Sets the global pose transform, [param pose], for the bone at [param " "bone_idx].\n" @@ -52097,6 +66266,18 @@ msgstr "" "affine_inverse] 乘以所期望的世界变换。" msgid "" +"Sets the bone index [param parent_idx] as the parent of the bone at [param " +"bone_idx]. If -1, then bone has no parent.\n" +"[b]Note:[/b] [param parent_idx] must be less than [param bone_idx]." +msgstr "" +"将骨骼索引 [param parent_idx] 设置为 [param bone_idx] 处骨骼的父级。如果为 " +"-1,则该骨骼没有父级。\n" +"[b]注意:[/b][param parent_idx] 必须小于 [param bone_idx]。" + +msgid "Sets the rest transform for bone [param bone_idx]." +msgstr "设置骨骼 [param bone_idx] 的放松变换。" + +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 "" @@ -52225,6 +66406,15 @@ msgid "A resource that operates on [Bone2D] nodes in a [Skeleton2D]." msgstr "对 [Skeleton2D] 中的 [Bone2D] 节点进行操作的资源。" msgid "" +"Returns the [Bone2D] node assigned to the CCDIK joint at [param joint_idx]." +msgstr "返回分配给位于 [param joint_idx] 的 CCDIK 关节的 [Bone2D] 节点。" + +msgid "" +"Returns the index of the [Bone2D] node assigned to the CCDIK joint at [param " +"joint_idx]." +msgstr "返回分配给位于 [param joint_idx] 的 CCDIK 关节的 [Bone2D] 节点的索引。" + +msgid "" "Returns the maximum angle constraint for the joint at [param joint_idx]." msgstr "返回索引为 [param joint_idx] 的关节的最大角约束。" @@ -52232,6 +66422,10 @@ msgid "" "Returns the minimum angle constraint for the joint at [param joint_idx]." msgstr "返回索引为 [param joint_idx] 的关节的最小角约束。" +msgid "" +"Sets the [Bone2D] node assigned to the CCDIK joint at [param joint_idx]." +msgstr "设置分配给位于 [param joint_idx] 的 CCDIK 关节的 [Bone2D] 节点。" + msgid "Sets the maximum angle constraint for the joint at [param joint_idx]." msgstr "设置索引为 [param joint_idx] 的关节的最大角约束。" @@ -52241,6 +66435,20 @@ msgstr "设置索引为 [param joint_idx] 的关节的最小角约束。" msgid "The number of CCDIK joints in the CCDIK modification." msgstr "CCDIK 修改中 CCDIK 关节的数量。" +msgid "" +"Returns the [Bone2D] node assigned to the FABRIK joint at [param joint_idx]." +msgstr "返回分配给位于 [param joint_idx] 的 FABRIK 关节的 [Bone2D] 节点。" + +msgid "" +"Returns the index of the [Bone2D] node assigned to the FABRIK joint at " +"[param joint_idx]." +msgstr "" +"返回分配给位于 [param joint_idx] 的 FABRIK 关节的 [Bone2D] 节点的索引。" + +msgid "" +"Sets the [Bone2D] node assigned to the FABRIK joint at [param joint_idx]." +msgstr "设置分配给位于 [param joint_idx] 的 FABRIK 关节的 [Bone2D] 节点。" + msgid "The number of FABRIK joints in the FABRIK modification." msgstr "FABRIK 修改中 FABRIK 关节的数量。" @@ -52256,6 +66464,15 @@ msgstr "设置该约束允许的最大角度。" msgid "Sets the constraint's minimum allowed angle." msgstr "设置该约束允许的最小角度。" +msgid "A resource that holds a stack of [SkeletonModification2D]s." +msgstr "存放 [SkeletonModification2D] 栈的资源。" + +msgid "Adds the passed-in [SkeletonModification2D] to the stack." +msgstr "将传入的 [SkeletonModification2D] 入栈。" + +msgid "Enables all [SkeletonModification2D]s in the stack." +msgstr "启用栈中的所有 [SkeletonModification2D]。" + msgid "Returns the group of the bone at [param bone_idx]." msgstr "返回索引为 [param bone_idx] 的骨骼的分组。" @@ -52276,6 +66493,9 @@ msgstr "不计算方向。" msgid "A humanoid [SkeletonProfile] preset." msgstr "人形 [SkeletonProfile] 预设。" +msgid "Background that uses a [Material] to draw a sky." +msgstr "使用 [Material] 绘制天空的背景。" + msgid "Radiance texture size is 32×32 pixels." msgstr "辐照度纹理尺寸为 32×32 像素。" @@ -52392,6 +66612,42 @@ msgstr "返回表面数组中顶点的局部平移。" msgid "Returns [code]true[/code] if vertex is set to pinned." msgstr "如果顶点设置为固定,则返回 [code]true[/code]。" +msgid "" +"Sets the pinned state of a surface vertex. When set to [code]true[/code], " +"the optional [param attachment_path] can define a [Node3D] the pinned vertex " +"will be attached to." +msgstr "" +"设置表面顶点的固定状态。当设置为 [code]true[/code] 时,可选的 [param " +"attachment_path] 可以定义一个 [Node3D],该固定顶点将被附加到该节点。" + +msgid "" +"The physics layers this SoftBody3D [b]is in[/b]. Collision objects can exist " +"in one or more of 32 different layers. See also [member collision_mask].\n" +"[b]Note:[/b] Object A can detect a contact with object B only if object B is " +"in any of the layers that object A scans. See [url=$DOCS_URL/tutorials/" +"physics/physics_introduction.html#collision-layers-and-masks]Collision " +"layers and masks[/url] in the documentation for more information." +msgstr "" +"该 SoftBody3D [b]所在[/b]的物理层。碰撞对象可以存在于 32 个不同层中的一个或多" +"个层中。另见 [member collision_mask]。\n" +"[b]注意:[/b]只有当对象 B 位于对象 A 扫描的任意层中时,对象 A 才能检测到与对" +"象 B 的接触。有关更多信息,请参阅文档中的[url=$DOCS_URL/tutorials/physics/" +"physics_introduction.html#collision-layers-and-masks]《碰撞层与掩码》[/url]。" + +msgid "" +"The physics layers this SoftBody3D [b]scans[/b]. Collision objects can scan " +"one or more of 32 different layers. See also [member collision_layer].\n" +"[b]Note:[/b] Object A can detect a contact with object B only if object B is " +"in any of the layers that object A scans. See [url=$DOCS_URL/tutorials/" +"physics/physics_introduction.html#collision-layers-and-masks]Collision " +"layers and masks[/url] in the documentation for more information." +msgstr "" +"该 SoftBody3D [b]扫描[/b]的物理层。碰撞对象可以扫描 32 个不同层中的一个或多个" +"层。另见 [member collision_layer]。\n" +"[b]注意:[/b]只有当对象 B 位于对象 A 扫描的任何层中时,对象 A 才能检测到与对" +"象 B 的接触。有关更多信息,请参阅文档中的[url=$DOCS_URL/tutorials/physics/" +"physics_introduction.html#collision-layers-and-masks]《碰撞层与掩码》[/url]。" + msgid "If [code]true[/code], the [SoftBody3D] will respond to [RayCast3D]s." msgstr "如果为 [code]true[/code],则该 [SoftBody3D] 会响应 [RayCast3D]。" @@ -52527,12 +66783,96 @@ msgstr "拆分拖动器永远不可见。" msgid "The split dragger is never visible and its space collapsed." msgstr "拆分拖动器永远不可见,其空间也被折叠。" +msgid "" +"The icon used for the grabber drawn in the middle area when [member " +"vertical] is [code]false[/code]." +msgstr "[member vertical] 为 [code]false[/code] 时绘制在中间区域的抓取器图标。" + +msgid "" +"The icon used for the grabber drawn in the middle area when [member " +"vertical] is [code]true[/code]." +msgstr "[member vertical] 为 [code]true[/code] 时绘制在中间区域的抓取器图标。" + msgid "A spotlight, such as a reflector spotlight or a lantern." msgstr "聚光灯,如反射器聚光灯或灯笼。" +msgid "" +"A Spotlight is a type of [Light3D] node that emits lights in a specific " +"direction, in the shape of a cone. The light is attenuated through the " +"distance. This attenuation can be configured by changing the energy, radius " +"and attenuation parameters of [Light3D].\n" +"[b]Note:[/b] When using the Mobile rendering method, only 8 spot lights can " +"be displayed on each mesh resource. Attempting to display more than 8 spot " +"lights on a single mesh resource will result in spot lights flickering in " +"and out as the camera moves. When using the Compatibility rendering method, " +"only 8 spot lights can be displayed on each mesh resource by default, but " +"this can be increased by adjusting [member ProjectSettings.rendering/limits/" +"opengl/max_lights_per_object].\n" +"[b]Note:[/b] When using the Mobile or Compatibility rendering methods, spot " +"lights will only correctly affect meshes whose visibility AABB intersects " +"with the light's AABB. If using a shader to deform the mesh in a way that " +"makes it go outside its AABB, [member GeometryInstance3D.extra_cull_margin] " +"must be increased on the mesh. Otherwise, the light may not be visible on " +"the mesh." +msgstr "" +"聚光灯是一种 [Light3D] 节点,向指定的方向发出圆锥形的灯光。光线会随距离增大而" +"衰减。衰减可以通过修改 [Light3D] 的能量、半径、衰减参数进行控制。\n" +"[b]注意:[/b]使用 Mobile 渲染方法时,单个网格资源只能用到 8 盏聚光灯。尝试对" +"单个网格资源使用超过 8 盏聚光灯会导致聚光灯在相机移动时产生闪烁。使用 " +"Compatibility 渲染方法时,单个网格资源默认只能用到 8 盏聚光灯,但可以通过调" +"整 [member ProjectSettings.rendering/limits/opengl/max_lights_per_object] 增" +"加。\n" +"[b]注意:[/b]使用 Mobile 或 Compatibility 渲染方法时,聚光灯只能影响可见 " +"AABB 与灯光 AABB 相交的网格。如果使用了着色器将网格进行了变形,超出了 AABB 的" +"范围,则必须将该网格的 [member GeometryInstance3D.extra_cull_margin] 增大。否" +"则灯光在该网格上可能不可见。" + +msgid "" +"The spotlight's angle in degrees.\n" +"[b]Note:[/b] [member spot_angle] is not affected by [member Node3D.scale] " +"(the light's scale or its parent's scale)." +msgstr "" +"聚光灯的角度,单位为度。\n" +"[b]注意:[/b][member spot_angle] 不受 [member Node3D.scale] 的影响(无论是该" +"灯光的缩放还是其父节点的缩放)。" + +msgid "" +"The spotlight's [i]angular[/i] attenuation curve. See also [member " +"spot_attenuation]." +msgstr "聚光灯的[i]角度[/i]衰减曲线。另见 [member spot_attenuation]。" + +msgid "" +"The spotlight's light energy (drop-off) attenuation curve. A number of " +"presets are available in the [b]Inspector[/b] by right-clicking the curve. " +"Zero and negative values are allowed but can produce unusual effects. See " +"also [member spot_angle_attenuation].\n" +"[b]Note:[/b] Very high [member spot_attenuation] values (typically above 10) " +"can impact performance negatively if the light is made to use a larger " +"[member spot_range] to compensate. This is because culling opportunities " +"will become less common and shading costs will be increased (as the light " +"will cover more pixels on screen while resulting in the same amount of " +"brightness). To improve performance, use the lowest [member " +"spot_attenuation] value possible for the visuals you're trying to achieve." +msgstr "" +"聚光灯的光照能量(下降)衰减曲线。在[b]检查器[/b]中右键单击曲线会提供一些预" +"设。允许零和负数,但可能产生异常效果。另见 [member " +"spot_angle_attenuation]。\n" +"[b]注意:[/b]如果 [member spot_attenuation] 值很高(一般大于 10),将灯光的 " +"[member spot_range] 调大去进行补偿会对性能产生负面影响。这是因为剔除的机会会" +"变少,从而增加在着色上的消耗(因为在亮度相同的前提下,灯光会覆盖屏幕上的更多" +"像素)。为了提升性能,请使用尽可能低的 [member spot_attenuation] 值来达成想要" +"的显示效果。" + msgid "A helper node, mostly used in 3rd person cameras." msgstr "辅助节点,主要用于第三人称相机。" +msgid "" +"Adds the [PhysicsBody3D] object with the given [RID] to the list of " +"[PhysicsBody3D] objects excluded from the collision check." +msgstr "" +"将具有给定 [RID] 的 [PhysicsBody3D] 对象,添加到从碰撞检查中排除的 " +"[PhysicsBody3D] 对象列表中。" + msgid "Returns the spring arm's current length." msgstr "返回弹簧臂的当前长度。" @@ -52692,6 +67032,12 @@ msgid "The direction in which the front of the texture faces." msgstr "纹理正面朝向的方向。" msgid "" +"The billboard mode to use for the sprite. See [enum BaseMaterial3D." +"BillboardMode] for possible values." +msgstr "" +"该精灵使用的公告板模式。可能的值见 [enum BaseMaterial3D.BillboardMode]。" + +msgid "" "If [code]true[/code], texture can be seen from the back as well, if " "[code]false[/code], it is invisible when looking at it from behind." msgstr "" @@ -52780,7 +67126,7 @@ msgstr "返回 [param anim] 动画中的帧数。" msgid "" "Returns the texture of the frame [param idx] in the [param anim] animation." -msgstr "移除 [param anim] 动画中索引为 [param idx] 的帧的纹理。" +msgstr "返回 [param anim] 动画中帧索引为 [param idx] 的纹理。" msgid "Returns [code]true[/code] if the [param anim] animation exists." msgstr "如果 [param anim] 动画存在,则返回 [code]true[/code]。" @@ -53149,6 +67495,20 @@ msgstr "处理 GZIP 和 deflate 压缩/解压缩的流对等体。" msgid "Clears this stream, resetting the internal state." msgstr "将流清空,重设内部状态。" +msgid "" +"Start the stream in compression mode with the given [param buffer_size], if " +"[param use_deflate] is [code]true[/code] uses deflate instead of GZIP." +msgstr "" +"开始压缩模式的流,缓冲区大小为 [param buffer_size],如果 [param use_deflate] " +"为 [code]true[/code] 则使用 deflate 而不是 GZIP。" + +msgid "" +"Start the stream in decompression mode with the given [param buffer_size], " +"if [param use_deflate] is [code]true[/code] uses deflate instead of GZIP." +msgstr "" +"开始解压模式的流,缓冲区大小为 [param buffer_size],如果 [param use_deflate] " +"为 [code]true[/code] 则使用 deflate 而不是 GZIP。" + msgid "TCP stream peer." msgstr "TCP 流对等体。" @@ -53200,6 +67560,22 @@ msgid "Poll the socket, updating its state. See [method get_status]." msgstr "轮询套接字,更新其状态。见 [method get_status]。" msgid "" +"If [param enabled] is [code]true[/code], packets will be sent immediately. " +"If [param enabled] is [code]false[/code] (the default), packet transfers " +"will be delayed and combined using [url=https://en.wikipedia.org/wiki/" +"Nagle%27s_algorithm]Nagle's algorithm[/url].\n" +"[b]Note:[/b] It's recommended to leave this disabled for applications that " +"send large packets or need to transfer a lot of data, as enabling this can " +"decrease the total available bandwidth." +msgstr "" +"如果 [param enabled] 为 [code]true[/code],数据包会立即发送。如果 [param " +"enabled] 为 [code]false[/code](默认值),数据包传输将被延迟,并使用" +"[url=https://zh.wikipedia.org/wiki/%E7%B4%8D%E6%A0%BC%E7%AE%97%E6%B3%95]纳格" +"算法[/url]合并。\n" +"[b]注意:[/b]对于发送大数据包或需要传输大量数据的应用程序,建议将本属性保持禁" +"用,因为启用本属性会减少总体可用带宽。" + +msgid "" "The initial status of the [StreamPeerTCP]. This is also the status after " "disconnecting." msgstr "[StreamPeerTCP]的初始状态。这也是断开连接后的状态。" @@ -54742,70 +69118,6 @@ 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 "" @@ -55013,6 +69325,70 @@ msgstr "" "[code]StringName(\"example\")[/code] 与 [code]&\"example\"[/code] 等价。" 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 [code]true[/code] if this [StringName] is not equivalent to the " "given [String]." msgstr "" @@ -55203,6 +69579,48 @@ msgid "" "Customizable [StyleBox] with a given set of parameters (no texture required)." msgstr "可通过一系列参数自定义的 [StyleBox](无需纹理) 。" +msgid "" +"This [StyleBox] can be used to achieve all kinds of looks without the need " +"of a texture. The following properties are customizable:\n" +"- Color\n" +"- Border width (individual width for each border)\n" +"- Rounded corners (individual radius for each corner)\n" +"- Shadow (with blur and offset)\n" +"Setting corner radius to high values is allowed. As soon as corners overlap, " +"the stylebox will switch to a relative system.\n" +"[b]Example:[/b]\n" +"[codeblock]\n" +"height = 30\n" +"corner_radius_top_left = 50\n" +"corner_radius_bottom_left = 100\n" +"[/codeblock]\n" +"The relative system now would take the 1:2 ratio of the two left corners to " +"calculate the actual corner width. Both corners added will [b]never[/b] be " +"more than the height. Result:\n" +"[codeblock]\n" +"corner_radius_top_left: 10\n" +"corner_radius_bottom_left: 20\n" +"[/codeblock]" +msgstr "" +"这个 [StyleBox] 可以用来实现各种外观,无需纹理。以下属性是可定制的:\n" +"- 颜色\n" +"- 边框宽度(每个边框的单独宽度)\n" +"- 圆角(每个角的单独半径)\n" +"- 阴影(带有模糊和偏移)\n" +"允许将圆角半径设置为较高的值。两角重叠时,样式盒将切换到相对系统。\n" +"[b]示例:[/b]\n" +"[codeblock]\n" +"height = 30\n" +"corner_radius_top_left = 50\n" +"corner_radius_bottom_left = 100\n" +"[/codeblock]\n" +"相对系统现在将采用两个左角的 1:2 比率来计算实际角宽度。添加的两个角[b]永远[/" +"b]不会超过高度。结果:\n" +"[codeblock]\n" +"corner_radius_top_left: 10\n" +"corner_radius_bottom_left: 20\n" +"[/codeblock]" + msgid "Returns the specified [enum Side]'s border width." msgstr "返回指定边 [enum Side] 的边框宽度。" @@ -55518,6 +69936,16 @@ msgstr "绘制时扩展此样式盒的上边距,使其绘制得比请求的大 msgid "Modulates the color of the texture when this style box is drawn." msgstr "绘制此样式盒时用于调制纹理的颜色。" +msgid "" +"Species a sub-region of the texture to use.\n" +"This is equivalent to first wrapping the texture in an [AtlasTexture] with " +"the same region.\n" +"If empty ([code]Rect2(0, 0, 0, 0)[/code]), the whole texture will be used." +msgstr "" +"指定要使用的纹理的子区域。\n" +"这相当于首先将纹理包裹在具有相同区域的 [AtlasTexture] 中。\n" +"如果为空([code]Rect2(0, 0, 0, 0)[/code]),则将使用整个纹理。" + msgid "The texture to use when drawing this style box." msgstr "绘制此样式盒时所使用的纹理。" @@ -55624,6 +70052,25 @@ msgstr "" msgid "The update mode when the sub-viewport is used as a render target." msgstr "该子视口用作渲染目标时的更新模式。" +msgid "" +"The width and height of the sub-viewport. Must be set to a value greater " +"than or equal to 2 pixels on both dimensions. Otherwise, nothing will be " +"displayed.\n" +"[b]Note:[/b] If the parent node is a [SubViewportContainer] and its [member " +"SubViewportContainer.stretch] is [code]true[/code], the viewport size cannot " +"be changed manually." +msgstr "" +"子视口的宽度和高度。必须在两个维度上设置为大于或等于 2 像素的值。否则,不会显" +"示任何内容。\n" +"[b]注意:[/b]如果父节点是一个 [SubViewportContainer],并且它的 [member " +"SubViewportContainer.stretch] 为 [code]true[/code],则无法手动更改该视口大" +"小。" + +msgid "" +"The 2D size override of the sub-viewport. If either the width or height is " +"[code]0[/code], the override is disabled." +msgstr "子视口的 2D 尺寸覆盖。如果宽度或高度为 [code]0[/code],则禁用覆盖。" + msgid "If [code]true[/code], the 2D size override affects stretch as well." msgstr "如果为 [code]true[/code],则 2D 尺寸覆盖也会影响拉伸。" @@ -55725,6 +70172,18 @@ msgid "Clear all information passed into the surface tool so far." msgstr "清除到目前为止传入表面工具(surface tool)的所有信息。" msgid "" +"Returns a constructed [ArrayMesh] from current information passed in. If an " +"existing [ArrayMesh] is passed in as an argument, will add an extra surface " +"to the existing [ArrayMesh].\n" +"[b]FIXME:[/b] Document possible values for [param flags], it changed in 4.0. " +"Likely some combinations of [enum Mesh.ArrayFormat]." +msgstr "" +"根据传入的当前信息返回构造的 [ArrayMesh]。如果将一个已有的 [ArrayMesh] 作为参" +"数传入,则会向该已有的 [ArrayMesh] 添加一个额外的表面。\n" +"[b]修订说明:[/b][param flags] 的记录可能值,它在 4.0 中发生了变化。可能是 " +"[enum Mesh.ArrayFormat] 的一些组合。" + +msgid "" "Commits the data to the same format used by [method ArrayMesh." "add_surface_from_arrays]. This way you can further process the mesh data " "using the [ArrayMesh] API." @@ -55746,6 +70205,34 @@ msgid "Removes the index array by expanding the vertex array." msgstr "通过扩展顶点数组移除索引数组。" msgid "" +"Generates normals from vertices so you do not have to do it manually. If " +"[param flip] is [code]true[/code], the resulting normals will be inverted. " +"[method generate_normals] should be called [i]after[/i] generating geometry " +"and [i]before[/i] committing the mesh using [method commit] or [method " +"commit_to_arrays]. For correct display of normal-mapped surfaces, you will " +"also have to generate tangents using [method generate_tangents].\n" +"[b]Note:[/b] [method generate_normals] only works if the primitive type to " +"be set to [constant Mesh.PRIMITIVE_TRIANGLES].\n" +"[b]Note:[/b] [method generate_normals] takes smooth groups into account. To " +"generate smooth normals, set the smooth group to a value greater than or " +"equal to [code]0[/code] using [method set_smooth_group] or leave the smooth " +"group at the default of [code]0[/code]. To generate flat normals, set the " +"smooth group to [code]-1[/code] using [method set_smooth_group] prior to " +"adding vertices." +msgstr "" +"从顶点生成法线,因此不必手动执行。如果 [param flip] 为 [code]true[/code],则" +"生成的法线将被反转。[method generate_normals] 的调用,应在生成几何体[i]之后[/" +"i],且在使用 [method commit] 或 [method commit_to_arrays] 提交网格[i]之前[/" +"i]。为了正确显示法线贴图表面,还必须使用 [method generate_tangents] 生成切" +"线。\n" +"[b]注意:[/b][method generate_normals] 仅在图元类型被设置为 [constant Mesh." +"PRIMITIVE_TRIANGLES] 时有效。\n" +"[b]注意:[/b][method generate_normals] 考虑了平滑组。要生成平滑法线,请使用 " +"[method set_smooth_group] 将平滑组设置为大于或等于 [code]0[/code] 的值,或者" +"将平滑组保留为默认值 [code]0[/code]。要生成平面法线,请在添加顶点之前,使用 " +"[method set_smooth_group] 将平滑组设置为 [code]-1[/code]。" + +msgid "" "Generates a tangent vector for each vertex. Requires that each vertex have " "UVs and normals set already (see [method generate_normals])." msgstr "" @@ -55757,6 +70244,11 @@ msgid "" "performance by avoiding vertex reuse." msgstr "通过创建索引数组来缩小顶点数组。这可以避免顶点重复而提高性能。" +msgid "" +"Specifies an array of bones to use for the [i]next[/i] vertex. [param bones] " +"must contain 4 integers." +msgstr "指定用于[i]下一个[/i]顶点的骨骼数组。[param bones] 必须包含 4 个整数。" + msgid "Sets [Material] to be used by the [Mesh] you are constructing." msgstr "设置要由您正在构建的 [Mesh] 使用的 [Material]。" @@ -55769,6 +70261,16 @@ msgstr "" "一个顶点提交,则可能根本无法使用此信息。" msgid "" +"Specifies the smooth group to use for the [i]next[/i] vertex. If this is " +"never called, all vertices will have the default smooth group of [code]0[/" +"code] and will be smoothed with adjacent vertices of the same group. To " +"produce a mesh with flat normals, set the smooth group to [code]-1[/code]." +msgstr "" +"指定用于[i]下一个[/i]顶点的平滑组。如果从未调用过,则所有顶点都将具有默认的 " +"[code]0[/code] 平滑组,并将与同一组的相邻顶点一起平滑。要生成具有平坦法线的网" +"格,请将平滑组设置为 [code]-1[/code]。" + +msgid "" "Specifies a tangent to use for the [i]next[/i] vertex. If every vertex needs " "to have this information set and you fail to submit it for the first vertex, " "this information may not be used at all." @@ -55793,6 +70295,15 @@ msgstr "" "而你没有为第一个顶点提交这个信息,此信息可能根本就不会被使用。" msgid "" +"Specifies weight values to use for the [i]next[/i] vertex. [param weights] " +"must contain 4 values. If every vertex needs to have this information set " +"and you fail to submit it for the first vertex, this information may not be " +"used at all." +msgstr "" +"指定用于[i]下一个[/i]顶点的权重值。[param weights] 必须包含 4 个值。如果每个" +"顶点都需要设置该信息,且为第一个顶点提交失败,则可能根本不会使用该信息。" + +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 "" @@ -55947,6 +70458,28 @@ msgstr "" msgid "Returns the previously active tab index." msgstr "返回上一个活动选项卡的索引。" +msgid "" +"Returns the [Texture2D] for the right button of the tab at index [param " +"tab_idx] or [code]null[/code] if the button has no [Texture2D]." +msgstr "" +"返回索引 [param tab_idx] 处选项卡右侧按钮的 [Texture2D],如果该按钮没有 " +"[Texture2D],则返回 [code]null[/code]。" + +msgid "" +"Returns the [Texture2D] for the tab at index [param tab_idx] or [code]null[/" +"code] if the tab has no [Texture2D]." +msgstr "" +"返回索引 [param tab_idx] 处选项卡的 [Texture2D],如果该选项卡没有 " +"[Texture2D],则返回 [code]null[/code]。" + +msgid "" +"Returns the index of the tab at local coordinates [param point]. Returns " +"[code]-1[/code] if the point is outside the control boundaries or if there's " +"no tab at the queried position." +msgstr "" +"返回位于局部坐标 [param point] 处的选项卡的索引。如果该点在控件边界之外或查询" +"位置没有选项卡,则返回 [code]-1[/code]。" + msgid "Returns tab title language code." msgstr "返回选项卡标题的语言代码。" @@ -55976,6 +70509,20 @@ msgstr "将选项卡从 [param from] 移动到 [param to]。" msgid "Removes the tab at index [param tab_idx]." msgstr "删除索引 [param tab_idx] 处的选项卡。" +msgid "" +"If [param disabled] is [code]true[/code], disables the tab at index [param " +"tab_idx], making it non-interactable." +msgstr "" +"如果 [param disabled] 为 [code]true[/code],则禁用索引 [param tab_idx] 处的选" +"项卡,使其不可交互。" + +msgid "" +"If [param hidden] is [code]true[/code], hides the tab at index [param " +"tab_idx], making it disappear from the tab area." +msgstr "" +"如果 [param hidden] 为 [code]true[/code],则隐藏索引 [param tab_idx] 处的选项" +"卡,使其从选项卡区域消失。" + msgid "Sets an [param icon] for the tab at index [param tab_idx]." msgstr "设置索引 [param tab_idx] 处的选项卡的图标。" @@ -56014,6 +70561,11 @@ msgid "" msgstr "如果为 [code]true[/code],启用鼠标右键选择选项卡。" msgid "" +"Sets the position at which tabs will be placed. See [enum AlignmentMode] for " +"details." +msgstr "设置放置选项卡的位置。详情见 [enum AlignmentMode]。" + +msgid "" "Sets when the close button will appear on the tabs. See [enum " "CloseButtonDisplayPolicy] for details." msgstr "" @@ -56320,6 +70872,27 @@ msgid "Multiline text editing control." msgstr "多行文本编辑控件。" msgid "" +"TextEdit is meant for editing large, multiline text. It also has facilities " +"for editing code, such as syntax highlighting support and multiple levels of " +"undo/redo.\n" +"[b]Note:[/b] Most viewport, caret and edit methods contain a " +"[code]caret_index[/code] argument for [member caret_multiple] support. The " +"argument should be one of the following: [code]-1[/code] for all carets, " +"[code]0[/code] for the main caret, or greater than [code]0[/code] for " +"secondary carets.\n" +"[b]Note:[/b] When holding down [kbd]Alt[/kbd], the vertical scroll wheel " +"will scroll 5 times as fast as it would normally do. This also works in the " +"Godot script editor." +msgstr "" +"TextEdit 是用来编辑大型多行文本的。它还具有用于编辑代码的功能,例如语法高亮支" +"持和多级撤消/重做。\n" +"[b]注意:[/b]大多数视口、光标和编辑方法都包含 [code]caret_index[/code] 参数以" +"支持 [member caret_multiple]。该参数应为以下之一:[code]-1[/code] 用于所有光" +"标,[code]0[/code] 用于主光标,或大于 [code]0[/code] 用于辅助光标。\n" +"[b]注意:[/b]当按住 [kbd]Alt[/kbd] 时,垂直滚轮的滚动速度将是正常速度的 5 " +"倍。这也适用于 Godot 脚本编辑器。" + +msgid "" "Override this method to define what happens when the user presses the " "backspace key." msgstr "覆盖此方法可以定义用户按下退格键时应该发生什么。" @@ -56353,6 +70926,13 @@ msgstr "" "覆盖此方法可以定义用户使用鼠标中键执行粘贴操作时应该发生什么。\n" "[b]注意:[/b]此方法仅在 Linux 上实现。" +msgid "" +"Adds a new caret at the given location. Returns the index of the new caret, " +"or [code]-1[/code] if the location is invalid." +msgstr "" +"在给定的位置添加新的光标。返回新光标的索引,如果位置无效则返回 [code]-1[/" +"code]。" + msgid "Adjust the viewport so the caret is visible." msgstr "调整视口,让光标可见。" @@ -56362,6 +70942,13 @@ msgstr "执行对 [TextEdit] 的完全重置,包括撤消历史。" msgid "Clears the undo history." msgstr "清除撤销历史。" +msgid "" +"Copies the current text selection. Can be overridden with [method _copy]." +msgstr "复制当前选区。可以使用 [method _copy] 覆盖。" + +msgid "Cut's the current selection. Can be overridden with [method _cut]." +msgstr "剪切当前选区。可以使用 [method _cut] 覆盖。" + msgid "Deletes the selected text." msgstr "删除选定的文本。" @@ -56380,9 +70967,15 @@ msgstr "返回光标的像素绘制位置。" msgid "Returns the line the editing caret is on." msgstr "返回编辑光标所在的行。" +msgid "Returns the first column containing a non-whitespace character." +msgstr "返回第一个非空白字符列。" + msgid "Returns the first visible line." msgstr "返回第一个可见行。" +msgid "Returns the number of gutters registered." +msgstr "返回注册的边栏数量。" + msgid "Returns the name of the gutter at the given index." msgstr "返回给定索引处边栏的名称。" @@ -56395,9 +70988,24 @@ msgstr "返回给定索引处边栏的宽度。" msgid "Returns the [HScrollBar] used by [TextEdit]." msgstr "设置该 [TextEdit] 所使用的 [HScrollBar]。" +msgid "" +"Returns the number of spaces and [code]tab * tab_size[/code] before the " +"first char." +msgstr "返回第一个字符前的空格和 [code]tab * tab_size[/code] 数。" + msgid "Returns the text of a specific line." msgstr "返回特定行的文本。" +msgid "" +"Returns the line and column at the given position. In the returned vector, " +"[code]x[/code] is the column, [code]y[/code] is the line. If [param " +"allow_out_of_bounds] is [code]false[/code] and the position is not over the " +"text, both vector values will be set to [code]-1[/code]." +msgstr "" +"返回给定位置的行和列。在返回的向量中,[code]x[/code] 是列,[code]y[/code] 是" +"行。如果 [param allow_out_of_bounds] 为 [code]false[/code],且该位置不在文本" +"上方,则两个向量值都将被设置为 [code]-1[/code]。" + msgid "Returns the number of lines in the text." msgstr "返回文本中的行数。" @@ -56422,6 +71030,98 @@ msgstr "返回给定行换行的次数。" msgid "Returns an array of [String]s representing each wrapped index." msgstr "返回代表各个换行索引的 [String] 数组。" +msgid "" +"Returns the [PopupMenu] of this [TextEdit]. By default, this menu is " +"displayed when right-clicking on the [TextEdit].\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 all items after \"Redo\".\n" +" menu.item_count = menu.get_item_index(MENU_REDO) + 1\n" +" # Add custom items.\n" +" menu.add_separator()\n" +" menu.add_item(\"Insert Date\", 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" +" insert_text_at_caret(Time.get_date_string_from_system())\n" +"[/gdscript]\n" +"[csharp]\n" +"public override void _Ready()\n" +"{\n" +" var menu = GetMenu();\n" +" // Remove all items after \"Redo\".\n" +" menu.ItemCount = menu.GetItemIndex(TextEdit.MenuItems.Redo) + 1;\n" +" // Add custom items.\n" +" menu.AddSeparator();\n" +" menu.AddItem(\"Insert Date\", TextEdit.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" +" InsertTextAtCaret(Time.GetDateStringFromSystem());\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 "" +"返回该 [TextEdit] 的 [PopupMenu]。默认情况下,会在右键单击 [TextEdit] 时显示" +"改菜单。\n" +"你可以添加自定义菜单项,也可以移除标准菜单项。请确保你使用的 ID 与标准菜单项" +"的 ID 不冲突(见 [enum MenuItems])。例如:\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _ready():\n" +" var menu = get_menu()\n" +" # 移除“撤销”后的所有菜单项。\n" +" menu.item_count = menu.get_item_index(MENU_REDO) + 1\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" +" insert_text_at_caret(Time.get_date_string_from_system())\n" +"[/gdscript]\n" +"[csharp]\n" +"public override void _Ready()\n" +"{\n" +" var menu = GetMenu();\n" +" // 移除“撤销”后的所有菜单项。\n" +" menu.ItemCount = menu.GetItemIndex(TextEdit.MenuItems.Redo) + 1;\n" +" // 添加自定义菜单项。\n" +" menu.AddSeparator();\n" +" menu.AddItem(\"插入日期\", TextEdit.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" +" InsertTextAtCaret(Time.GetDateStringFromSystem());\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]警告:[/b]这是必要的内部节点,将其移除或释放会导致崩溃。如果你想要将其隐" +"藏,或者将其子节点隐藏,请使用对应的 [member Window.visible] 属性。" + msgid "Returns the equivalent minimap line at [param position]." msgstr "返回小地图 [param position] 处等价的行。" @@ -56429,6 +71129,19 @@ msgid "Returns the number of lines that may be drawn on the minimap." msgstr "返回小地图上能够绘制的行数。" msgid "" +"Returns the local position for the given [param line] and [param column]. If " +"[code]x[/code] or [code]y[/code] of the returned vector equal [code]-1[/" +"code], the position is outside of the viewable area of the control.\n" +"[b]Note:[/b] The Y position corresponds to the bottom side of the line. Use " +"[method get_rect_at_line_column] to get the top side position." +msgstr "" +"返回给定 [param line] 和 [param column] 的局部位置。如果返回的向量的 " +"[code]x[/code] 或 [code]y[/code] 等于 [code]-1[/code],则该位置在该控件的可视" +"区域之外。\n" +"[b]注意:[/b]Y 位置对应于行的底部。请使用 [method get_rect_at_line_column] 来" +"获取顶部位置。" + +msgid "" "Returns the local position and size for the grapheme at the given [param " "line] and [param column]. If [code]x[/code] or [code]y[/code] position of " "the returned rect equal [code]-1[/code], the position is outside of the " @@ -56449,9 +71162,18 @@ msgstr "从 [method tag_saved_version] 返回最后一个标记的保存版本 msgid "Returns the text inside the selection." msgstr "返回选择内的文本。" +msgid "Returns the original start column of the selection." +msgstr "返回选区的原始起始列。" + msgid "Returns the selection begin line." msgstr "返回选择开始行。" +msgid "Returns the original start line of the selection." +msgstr "返回选区的原始起始行。" + +msgid "Returns the current selection mode." +msgstr "返回当前的选区模式。" + msgid "Returns the selection end line." msgstr "返回选择结束行。" @@ -56473,12 +71195,24 @@ msgstr "返回可见行数,包括自动换行。" msgid "Returns the word at [param position]." msgstr "返回位于 [param position] 的单词。" +msgid "Returns if the user has IME text." +msgstr "返回用户是否有 IME 文本。" + 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 "Inserts a new line with [param text] at [param line]." +msgstr "在第 [param line] 行插入文本为 [param text] 的新行。" + +msgid "Insert the specified text at the caret position." +msgstr "在光标位置插入指定的文本。" + +msgid "Returns [code]true[/code] if the caret is visible on the screen." +msgstr "如果光标在屏幕上可见,则返回 [code]true[/code]。" + msgid "Returns whether the gutter is clickable." msgstr "返回该边栏是否可点击。" @@ -56494,12 +71228,22 @@ msgstr "返回该边栏的给定行是否可点击。" msgid "Returns if the given line is wrapped." msgstr "返回给定的行是否换行。" +msgid "" +"Returns whether the mouse is over selection. If [param edges] is [code]true[/" +"code], the edges are considered part of the selection." +msgstr "" +"返回鼠标是否位于选区之上。如果 [param edges] 为 [code]true[/code],则边界会被" +"认为是选区的一部分。" + msgid "Pastes the primary clipboard." msgstr "粘贴主剪贴板。" msgid "Perform redo operation." msgstr "执行重做操作。" +msgid "Removes the gutter from this [TextEdit]." +msgstr "从 [TextEdit] 中移除该边栏。" + msgid "Removes all additional carets." msgstr "移除所有额外的光标。" @@ -56520,6 +71264,36 @@ msgstr "" msgid "Selects the word under the caret." msgstr "选中光标下的单词。" +msgid "" +"Moves the caret to the specified [param column] index.\n" +"If [param adjust_viewport] is [code]true[/code], the viewport will center at " +"the caret position after the move occurs.\n" +"[b]Note:[/b] If supporting multiple carets this will not check for any " +"overlap. See [method merge_overlapping_carets]." +msgstr "" +"将光标移动到指定的 [param column] 索引。\n" +"如果 [param adjust_viewport] 为 [code]true[/code],则视口将在移动发生后以光标" +"位置为中心。\n" +"[b]注意:[/b]如果支持多个光标,则不会检查任何重叠。请参阅 [method " +"merge_overlapping_carets]。" + +msgid "" +"Moves the caret to the specified [param line] index.\n" +"If [param adjust_viewport] is [code]true[/code], the viewport will center at " +"the caret position after the move occurs.\n" +"If [param can_be_hidden] is [code]true[/code], the specified [code]line[/" +"code] can be hidden.\n" +"[b]Note:[/b] If supporting multiple carets this will not check for any " +"overlap. See [method merge_overlapping_carets]." +msgstr "" +"将光标移动到指定的 [param line] 索引。\n" +"如果 [param adjust_viewport] 为 [code]true[/code],则视口将在移动发生后以光标" +"位置为中心。\n" +"如果 [param can_be_hidden] 为 [code]true[/code],则可以隐藏指定的 " +"[code]line[/code]。\n" +"[b]注意:[/b]如果支持多个光标,则不会检查任何重叠。请参阅 [method " +"merge_overlapping_carets]。" + msgid "Sets whether the gutter should be drawn." msgstr "设置该边栏是否应被绘制。" @@ -56538,6 +71312,12 @@ msgstr "设置该边栏的宽度。" msgid "Sets the text for a specific line." msgstr "设置特定行的文本。" +msgid "" +"Sets the current background color of the line. Set to [code]Color(0, 0, 0, 0)" +"[/code] for no color." +msgstr "" +"设置该行的当前背景色。设置为 [code]Color(0, 0, 0, 0)[/code] 则没有颜色。" + msgid "Sets the icon for [param gutter] on [param line] to [param icon]." msgstr "将边栏 [param gutter] 在第 [param line] 行的图标设置为 [param icon]。" @@ -56552,6 +71332,9 @@ msgstr "" msgid "Sets the text for [param gutter] on [param line] to [param text]." msgstr "将边栏 [param gutter] 在第 [param line] 行的文本设置为 [param text]。" +msgid "Sets the search text. See [method set_search_flags]." +msgstr "设置搜索文本。见 [method set_search_flags]。" + msgid "Sets the current selection mode." msgstr "设置当前的选区模式。" @@ -56568,6 +71351,9 @@ msgstr "" msgid "Swaps the two lines." msgstr "交换两行。" +msgid "Tag the current version as saved." +msgstr "将当前版本标记为已保存。" + msgid "Perform undo operation." msgstr "执行撤销操作。" @@ -56763,6 +71549,22 @@ msgid "" "Sets the [StyleBox] of this [TextEdit] when [member editable] is disabled." msgstr "设置这个 [TextEdit] 在禁用 [member editable] 时的 [StyleBox]。" +msgid "Holds a line of text." +msgstr "存放一行文本。" + +msgid "Abstraction over [TextServer] for handling single line of text." +msgstr "基于 [TextServer] 的抽象,用于处理单行文本。" + +msgid "" +"Adds inline object to the text buffer, [param key] must be unique. In the " +"text, object is represented as [param length] object replacement characters." +msgstr "" +"向文本缓冲中添加内联对象,[param key] 必须唯一。在文本中,对象使用 [param " +"length] 个对象替换字符表示。" + +msgid "Returns array of inline objects." +msgstr "返回内联对象的数组。" + msgid "Returns TextServer buffer RID." msgstr "返回 TextServer 缓冲区 RID。" @@ -56848,6 +71650,21 @@ msgstr "对 [TextServer] 的抽象,用于处理文本段落。" msgid "Clears text paragraph (removes text and inline objects)." msgstr "清空文本段落(移除文本和内联对象)。" +msgid "Removes dropcap." +msgstr "移除首字下沉。" + +msgid "Returns number of lines used by dropcap." +msgstr "返回首字下沉使用的行数。" + +msgid "Returns drop cap text buffer RID." +msgstr "返回首字下沉文本缓冲 RID。" + +msgid "Returns drop cap bounding box size." +msgstr "返回首字下沉边界框大小。" + +msgid "Returns number of lines in the paragraph." +msgstr "返回段落中的行数。" + msgid "Returns TextServer line buffer RID." msgstr "返回 TextServer 行缓冲 RID。" @@ -56859,6 +71676,10 @@ msgid "" "of text." msgstr "返回文本行的宽度(水平排版)或高度(垂直排版)。" +msgid "" +"Returns the size of the bounding box of the paragraph, without line breaks." +msgstr "返回段落边界框的大小,不带换行符。" + msgid "Paragraph horizontal alignment." msgstr "段落的水平对齐。" @@ -56973,6 +71794,9 @@ msgstr "返回该字形的大小。" msgid "Returns the font hinting mode. Used by dynamic fonts only." msgstr "返回字体微调模式。仅用于动态字体。" +msgid "Returns source font size used to generate MSDF textures." +msgstr "返回用于生成 MSDF 纹理的源字体大小。" + msgid "Returns font OpenType feature set override." msgstr "返回字体 OpenType 特性集覆盖。" @@ -56982,12 +71806,37 @@ msgstr "返回字体样式标志,见 [enum FontStyle]。" msgid "Returns font subpixel glyph positioning mode." msgstr "返回字体的次像素字形定位模式。" +msgid "Returns a string containing all the characters available in the font." +msgstr "返回包含字体中所有可用字符的字符串。" + +msgid "Returns font cache texture image data." +msgstr "返回字体缓存纹理图像数据。" + +msgid "Returns 2D transform applied to the font outlines." +msgstr "返回应用于字体轮廓的 2D 变换。" + +msgid "" +"Returns [code]true[/code] if system fonts can be automatically used as " +"fallbacks." +msgstr "如果可以自动使用系统字体作为回退字体,则返回 [code]true[/code]。" + +msgid "" +"Returns [code]true[/code], if font supports given script (ISO 15924 code)." +msgstr "如果字体支持给定的文字(ISO 15924 代码),则返回 [code]true[/code]。" + msgid "Sets font anti-aliasing mode." msgstr "使用字体抗锯齿模式。" msgid "Sets font source data, e.g contents of the dynamic font source file." msgstr "设置字体源数据,例如动态字体的源文件内容。" +msgid "" +"Sets font embolden strength. If [param strength] is not equal to zero, " +"emboldens the font outlines. Negative values reduce the outline thickness." +msgstr "" +"设置字体的加粗强度。如果 [param strength] 不等于零,则会加粗字体轮廓。负值会" +"减小轮廓的粗细度。" + msgid "Sets size of the glyph." msgstr "设置字形的大小。" @@ -57015,6 +71864,12 @@ msgstr "设置字体的次像素字形定位模式。" msgid "Sets font cache texture image data." msgstr "设置字体的缓存纹理图像数据。" +msgid "Returns the dictionary of the supported OpenType features." +msgstr "返回支持的 OpenType 特性的字典。" + +msgid "Returns the dictionary of the supported OpenType variation coordinates." +msgstr "返回支持的 OpenType 变体坐标的字典。" + msgid "" "Converts a number from the Western Arabic (0..9) to the numeral systems used " "in [param language].\n" @@ -57052,6 +71907,9 @@ msgstr "" "将数字 [param number] 从 [param language] 的记数系统转换为阿拉伯数字" "(0..9)。" +msgid "Clears text buffer (removes text and inline objects)." +msgstr "清空文本缓冲(移除文本和内联对象)。" + msgid "Returns direction of the text." msgstr "返回文本的方向。" @@ -57079,9 +71937,35 @@ msgstr "" "返回字素的索引,该字素位于基线上指定像素偏移的位置,如果没有找到,则返回 " "[code]-1[/code]。" +msgid "Trims text if it exceeds the given width." +msgstr "如果文本超出给定宽度,则修剪文本。" + msgid "Aligns shaped text to the given tab-stops." msgstr "将塑形文本与给定的制表位对齐。" +msgid "Font glyphs are rasterized as 1-bit bitmaps." +msgstr "字体字形栅格化为 1 位的位图。" + +msgid "Font glyphs are rasterized as 8-bit grayscale anti-aliased bitmaps." +msgstr "字体字形栅格化为 8 位的灰度抗锯齿位图。" + +msgid "" +"Font glyphs are rasterized for LCD screens.\n" +"LCD subpixel layout is determined by the value of [code]gui/theme/" +"lcd_subpixel_layout[/code] project settings.\n" +"LCD subpixel anti-aliasing mode is suitable only for rendering horizontal, " +"unscaled text in 2D." +msgstr "" +"字体字形针对 LCD 屏幕栅格化。\n" +"LCD 次像素布局由项目设置 [code]gui/theme/lcd_subpixel_layout[/code] 的值决" +"定。\n" +"LCD 次像素抗锯齿模式仅适用于在 2D 中渲染横向、无缩放的文本。" + +msgid "" +"Unknown or unsupported subpixel layout, LCD subpixel antialiasing is " +"disabled." +msgstr "未知或不支持的次像素布局,禁用 LCD 次像素抗锯齿。" + msgid "Horizontal RGB subpixel layout." msgstr "水平 RGB 次像素布局。" @@ -57161,6 +72045,29 @@ msgstr "" msgid "Remove edge spaces from the broken line segments." msgstr "移除每一行头尾的空格。" +msgid "" +"Displays [member Label.visible_ratio] or [member RichTextLabel." +"visible_ratio] glyphs, starting from the left or from the right, depending " +"on [member Control.layout_direction] value." +msgstr "" +"显示字形数量由 [member Label.visible_ratio] 或 [member RichTextLabel." +"visible_ratio] 决定,从左至右计数还是从右至左计数由 [member Control." +"layout_direction] 的值决定。" + +msgid "" +"Displays [member Label.visible_ratio] or [member RichTextLabel." +"visible_ratio] glyphs, starting from the left." +msgstr "" +"显示字形数量由 [member Label.visible_ratio] 或 [member RichTextLabel." +"visible_ratio] 决定,从左侧开始计数。" + +msgid "" +"Displays [member Label.visible_ratio] or [member RichTextLabel." +"visible_ratio] glyphs, starting from the right." +msgstr "" +"显示字形数量由 [member Label.visible_ratio] 或 [member RichTextLabel." +"visible_ratio] 决定,从右侧开始计数。" + msgid "No text trimming is performed." msgstr "不执行文本修剪。" @@ -57242,6 +72149,50 @@ msgstr "禁用字体提示(更平滑但不那么清晰)。" msgid "Use the light font hinting mode." msgstr "使用浅色字体提示模式。" +msgid "" +"Glyph horizontal position is rounded to the whole pixel size, each glyph is " +"rasterized once." +msgstr "将字形的水平位置舍入至整数像素大小,每个字形光栅化一次。" + +msgid "" +"Glyph horizontal position is rounded based on font size.\n" +"- To one quarter of the pixel size if font size is smaller or equal to " +"[constant SUBPIXEL_POSITIONING_ONE_QUARTER_MAX_SIZE].\n" +"- To one half of the pixel size if font size is smaller or equal to " +"[constant SUBPIXEL_POSITIONING_ONE_HALF_MAX_SIZE].\n" +"- To the whole pixel size for larger fonts." +msgstr "" +"将字形的水平位置根据字体大小进行舍入。\n" +"- 如果字体大小小于等于 [constant SUBPIXEL_POSITIONING_ONE_QUARTER_MAX_SIZE]," +"则舍入至四分之一像素大小。\n" +"- 如果字体大小小于等于 [constant SUBPIXEL_POSITIONING_ONE_HALF_MAX_SIZE],则" +"舍入至二分之一像素大小。\n" +"- 如果是更大的字体,则舍入至整数像素大小。" + +msgid "" +"Glyph horizontal position is rounded to one half of the pixel size, each " +"glyph is rasterized up to two times." +msgstr "将字形的水平位置舍入至像素大小的一半,每个字形最多光栅化两次。" + +msgid "" +"Glyph horizontal position is rounded to one quarter of the pixel size, each " +"glyph is rasterized up to four times." +msgstr "将字形的水平位置舍入至像素大小的四分之一,每个字形最多光栅化四次。" + +msgid "" +"Maximum font size which will use one half of the pixel subpixel positioning " +"in [constant SUBPIXEL_POSITIONING_AUTO] mode." +msgstr "" +"在 [constant SUBPIXEL_POSITIONING_AUTO] 模式下,次像素定位时使用二分之一像素" +"大小的最大字体大小。" + +msgid "" +"Maximum font size which will use one quarter of the pixel subpixel " +"positioning in [constant SUBPIXEL_POSITIONING_AUTO] mode." +msgstr "" +"在 [constant SUBPIXEL_POSITIONING_AUTO] 模式下,次像素定位时使用四分之一像素" +"大小的最大字体大小。" + msgid "TextServer supports simple text layouts." msgstr "TextServer 支持简单排版。" @@ -57464,6 +72415,25 @@ msgid "" "Called when the presence of an alpha channel in the [Texture2D] is queried." msgstr "查询该 [Texture2D] 是否存在 alpha 通道时调用。" +msgid "" +"Creates a placeholder version of this resource ([PlaceholderTexture2D])." +msgstr "创建该资源的占位符版本([PlaceholderTexture2D])。" + +msgid "" +"Draws the texture using a [CanvasItem] with the [RenderingServer] API at the " +"specified [param position]." +msgstr "" +"使用 [RenderingServer] API 在 [CanvasItem] 上的指定位置 [param position] 绘制" +"该纹理。" + +msgid "Draws the texture using a [CanvasItem] with the [RenderingServer] API." +msgstr "使用 [RenderingServer] API 在 [CanvasItem] 上绘制该纹理。" + +msgid "" +"Draws a part of the texture using a [CanvasItem] with the [RenderingServer] " +"API." +msgstr "使用 [RenderingServer] API 在 [CanvasItem] 上绘制纹理的一部分。" + msgid "Returns the texture height in pixels." msgstr "返回该纹理的高度,单位为像素。" @@ -57473,6 +72443,13 @@ msgstr "返回该纹理的大小,单位为像素。" msgid "Returns the texture width in pixels." msgstr "返回该纹理的宽度,单位为像素。" +msgid "Returns [code]true[/code] if this [Texture2D] has an alpha channel." +msgstr "如果该 [Texture2D] 具有 Alpha 通道,则返回 [code]true[/code]。" + +msgid "" +"Creates a placeholder version of this resource ([PlaceholderTexture2DArray])." +msgstr "创建该资源的占位符版本([PlaceholderTexture2DArray])。" + msgid "Base class for 3-dimensionnal textures." msgstr "3D 纹理的基类。" @@ -57495,6 +72472,10 @@ msgid "Called when the presence of mipmaps in the [Texture3D] is queried." msgstr "查询该 [Texture3D] 的 Mipmap 是否存在时被调用。" msgid "" +"Creates a placeholder version of this resource ([PlaceholderTexture3D])." +msgstr "创建该资源的占位符版本([PlaceholderTexture3D])。" + +msgid "" "Returns the current format being used by this texture. See [enum Image." "Format] for details." msgstr "返回纹理当前使用的格式。详情见 [enum Image.Format]。" @@ -57591,6 +72572,25 @@ msgid "" "other side clips to the node's limits." msgstr "缩放纹理,使较短的一边适应边界矩形。另一边则裁剪到节点的界限内。" +msgid "" +"Base class for [ImageTextureLayered]. Cannot be used directly, but contains " +"all the functions necessary for accessing the derived resource types. See " +"also [Texture3D].\n" +"Data is set on a per-layer basis. For [Texture2DArray]s, the layer specifies " +"the array layer.\n" +"All images need to have the same width, height and number of mipmap levels.\n" +"A [TextureLayered] can be loaded with [method ResourceLoader.load].\n" +"Internally, Godot maps these files to their respective counterparts in the " +"target rendering driver (Vulkan, OpenGL3)." +msgstr "" +"[ImageTextureLayered] 的基类。不能直接使用,但包含访问派生资源类型所需的所有" +"功能。另见 [Texture3D]。\n" +"数据是按层设置的。对于 [Texture2DArray],层指定数组层。\n" +"所有图像都需要具有相同的宽度、高度和 mipmap 级别数。\n" +"[TextureLayered] 可以用 [method ResourceLoader.load] 加载。\n" +"在内部,Godot 将这些文件映射到目标渲染驱动程序(Vulkan、OpenGL3)中的对应文" +"件。" + msgid "Called when the [TextureLayered]'s format is queried." msgstr "查询该 [TextureLayered] 的格式时被调用。" @@ -57612,9 +72612,19 @@ msgstr "查询该 [TextureLayered] 的宽度时被调用。" msgid "Called when the presence of mipmaps in the [TextureLayered] is queried." msgstr "查询该 [TextureLayered] 的 Mipmap 是否存在时被调用。" +msgid "" +"Returns the height of the texture in pixels. Height is typically represented " +"by the Y axis." +msgstr "返回该纹理的高度,单位为像素。高度通常由 Y 轴表示。" + msgid "Returns the number of referenced [Image]s." msgstr "返回引用的 [Image] 数。" +msgid "" +"Returns the width of the texture in pixels. Width is typically represented " +"by the X axis." +msgstr "返回该纹理的宽度,单位为像素。宽度通常由 X 轴表示。" + msgid "Texture is a generic [Texture2DArray]." msgstr "纹理为通用的 [Texture2DArray]。" @@ -57690,6 +72700,13 @@ msgid "The height of the 9-patch's top row." msgstr "九宫格顶行的高度。" msgid "" +"[Texture2D] that draws over the progress bar. Use it to add highlights or an " +"upper-frame that hides part of [member texture_progress]." +msgstr "" +"在进度条至上绘制的 [Texture2D]。可用于添加高光,也可用于添加遮挡部分 [member " +"texture_progress] 的上层边框。" + +msgid "" "The offset of [member texture_progress]. Useful for [member texture_over] " "and [member texture_under] with fancy borders, to avoid transparent margins " "in your progress texture." @@ -57770,6 +72787,29 @@ msgid "Control for drawing textures." msgstr "控件绘制纹理。" msgid "" +"Used to draw icons and sprites in a user interface. The texture's placement " +"can be controlled with the [member stretch_mode] property. It can scale, " +"tile, or stay centered inside its bounding rectangle." +msgstr "" +"用于在用户界面中绘制图标和精灵。纹理的放置由 [member stretch_mode] 属性控制。" +"可以在边界框中进行缩放、平铺、居中。" + +msgid "" +"Defines how minimum size is determined based on the texture's size. See " +"[enum ExpandMode] for options.\n" +"[b]Note:[/b] Using [constant EXPAND_FIT_WIDTH], [constant " +"EXPAND_FIT_WIDTH_PROPORTIONAL], [constant EXPAND_FIT_HEIGHT] or [constant " +"EXPAND_FIT_HEIGHT_PROPORTIONAL] may result in unstable behavior in some " +"containers. This functionality is being re-evaluated and will change in the " +"future." +msgstr "" +"定义如何根据该纹理的大小确定最小大小。有关选项,请参阅 [enum ExpandMode]。\n" +"[b]注意:[/b]使用 [constant EXPAND_FIT_WIDTH]、[constant " +"EXPAND_FIT_WIDTH_PROPORTIONAL]、[constant EXPAND_FIT_HEIGHT]、或 [constant " +"EXPAND_FIT_HEIGHT_PROPORTIONAL],可能会导致某些容器的行为不稳定。该功能正在重" +"新评估,将来可能会发生变化。" + +msgid "" "Controls the texture's behavior when resizing the node's bounding rectangle. " "See [enum StretchMode]." msgstr "控件纹理在调整节点边界矩形时的行为。见 [enum StretchMode]。" @@ -57778,10 +72818,45 @@ msgid "The node's [Texture2D] resource." msgstr "该节点的 [Texture2D] 资源。" msgid "" +"The minimum size will be equal to texture size, i.e. [TextureRect] can't be " +"smaller than the texture." +msgstr "最小尺寸将等于纹理尺寸,即 [TextureRect] 不能小于纹理。" + +msgid "" +"The size of the texture won't be considered for minimum size calculation, so " +"the [TextureRect] can be shrunk down past the texture size." +msgstr "" +"纹理尺寸不会用于计算最小尺寸,所以 [TextureRect] 可以缩减得比纹理尺寸小。" + +msgid "" +"The height of the texture will be ignored. Minimum width will be equal to " +"the current height. Useful for horizontal layouts, e.g. inside " +"[HBoxContainer]." +msgstr "" +"会忽略纹理的高度。最小宽度与当前高度一致。可用于横向布局,例如在 " +"[HBoxContainer] 中。" + +msgid "Same as [constant EXPAND_FIT_WIDTH], but keeps texture's aspect ratio." +msgstr "与 [constant EXPAND_FIT_WIDTH] 相同,但保持纹理的长宽比。" + +msgid "" +"The width of the texture will be ignored. Minimum height will be equal to " +"the current width. Useful for vertical layouts, e.g. inside [VBoxContainer]." +msgstr "" +"会忽略纹理的宽度。最小高度与当前宽度一致。可用于纵向布局,例如在 " +"[VBoxContainer] 中。" + +msgid "Same as [constant EXPAND_FIT_HEIGHT], but keeps texture's aspect ratio." +msgstr "与 [constant EXPAND_FIT_HEIGHT] 相同,但保持纹理的长宽比。" + +msgid "" "Scale the texture to fit the node's bounding rectangle, center it and " "maintain its aspect ratio." msgstr "缩放纹理以适应节点的边界矩形,使其居中并保持其长宽比。" +msgid "Theme resource for styling/skinning [Control]s and [Window]s." +msgstr "用于样式化/皮肤化 [Control] 和 [Windows] 的主题资源。" + msgid "GUI skinning" msgstr "GUI 皮肤" @@ -57798,6 +72873,263 @@ msgstr "" "[b]注意:[/b]空类型不会随该主题保存。这个方法的存在是为了对资源执行内存中的更" "改。请使用 [code]set_*[/code] 方法添加主题项目。" +msgid "Removes all the theme properties defined on the theme resource." +msgstr "移除在该主题资源上定义的所有主题属性。" + +msgid "" +"Removes the [Color] property defined by [param name] and [param theme_type], " +"if it exists.\n" +"Fails if it doesn't exist. Use [method has_color] to check for existence." +msgstr "" +"如果存在由 [param name] 和 [param theme_type] 定义的 [Color] 属性,则将其移" +"除。\n" +"如果不存在则失败。请使用 [method has_color] 检查是否存在。" + +msgid "" +"Removes the constant property defined by [param name] and [param " +"theme_type], if it exists.\n" +"Fails if it doesn't exist. Use [method has_constant] to check for existence." +msgstr "" +"如果存在由 [param name] 和 [param theme_type] 定义的常量属性,则将其移除。\n" +"如果不存在则失败。请使用 [method has_constant] 检查是否存在。" + +msgid "" +"Removes the [Font] property defined by [param name] and [param theme_type], " +"if it exists.\n" +"Fails if it doesn't exist. Use [method has_font] to check for existence." +msgstr "" +"如果存在由 [param name] 和 [param theme_type] 定义的 [Font] 属性,则将其移" +"除。\n" +"如果不存在则失败。请使用 [method has_font] 检查是否存在。" + +msgid "" +"Removes the font size property defined by [param name] and [param " +"theme_type], if it exists.\n" +"Fails if it doesn't exist. Use [method has_font_size] to check for existence." +msgstr "" +"如果存在由 [param name] 和 [param theme_type] 定义的字体大小属性,则将其移" +"除。\n" +"如果不存在则失败。请使用 [method has_font_size] 检查是否存在。" + +msgid "" +"Removes the icon property defined by [param name] and [param theme_type], if " +"it exists.\n" +"Fails if it doesn't exist. Use [method has_icon] to check for existence." +msgstr "" +"如果存在由 [param name] 和 [param theme_type] 定义的图标属性,则将其移除。\n" +"如果不存在则失败。请使用 [method has_icon] 检查是否存在。" + +msgid "" +"Removes the [StyleBox] property defined by [param name] and [param " +"theme_type], if it exists.\n" +"Fails if it doesn't exist. Use [method has_stylebox] to check for existence." +msgstr "" +"如果存在由 [param name] 和 [param theme_type] 定义的 [StyleBox] 属性,则将其" +"移除。\n" +"如果不存在则失败。请使用 [method has_stylebox] 检查是否存在。" + +msgid "" +"Removes the theme property of [param data_type] defined by [param name] and " +"[param theme_type], if it exists.\n" +"Fails if it doesn't exist. Use [method has_theme_item] to check for " +"existence.\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] 定义的 [param data_type] 属性," +"则将其移除。\n" +"如果不存在则失败。请使用 [method has_theme_item] 检查是否存在。\n" +"[b]注意:[/b]这个方法类似于调用相应的数据类型特定方法,但可以用于更通用逻辑。" + +msgid "" +"Returns the [Color] property defined by [param name] and [param theme_type], " +"if it exists.\n" +"Returns the default color value if the property doesn't exist. Use [method " +"has_color] to check for existence." +msgstr "" +"如果存在由 [param name] 和 [param theme_type] 定义的 [Color] 属性,则将其返" +"回。\n" +"如果不存在则返回默认颜色。请使用 [method has_color] 检查是否存在。" + +msgid "" +"Returns a list of names for [Color] properties defined with [param " +"theme_type]. Use [method get_color_type_list] to get a list of possible " +"theme type names." +msgstr "" +"返回为 [param theme_type] 类型定义的 [Color] 属性的名称列表。请使用 [method " +"get_color_type_list] 获取可能的主题类型名称。" + +msgid "" +"Returns a list of all unique theme type names for [Color] properties. Use " +"[method get_type_list] to get a list of all unique theme types." +msgstr "" +"返回 [Color] 属性的所有唯一主题类型名称的列表。请使用 [method get_type_list] " +"获取所有主题类型。" + +msgid "" +"Returns the constant property defined by [param name] and [param " +"theme_type], if it exists.\n" +"Returns [code]0[/code] if the property doesn't exist. Use [method " +"has_constant] to check for existence." +msgstr "" +"如果存在由 [param name] 和 [param theme_type] 定义的常量属性,则将其返回。\n" +"如果不存在则返回 [code]0[/code]。请使用 [method has_constant] 检查是否存在。" + +msgid "" +"Returns a list of names for constant properties defined with [param " +"theme_type]. Use [method get_constant_type_list] to get a list of possible " +"theme type names." +msgstr "" +"返回为 [param theme_type] 类型定义的常量属性的名称列表。请使用 [method " +"get_constant_type_list] 获取可能的主题类型名称。" + +msgid "" +"Returns a list of all unique theme type names for constant properties. Use " +"[method get_type_list] to get a list of all unique theme types." +msgstr "" +"返回常量属性的所有唯一主题类型名称的列表。请使用 [method get_type_list] 获取" +"所有主题类型。" + +msgid "" +"Returns the [Font] property defined by [param name] and [param theme_type], " +"if it exists.\n" +"Returns the default theme font if the property doesn't exist and the default " +"theme font is set up (see [member default_font]). Use [method has_font] to " +"check for existence of the property and [method has_default_font] to check " +"for existence of the default theme font.\n" +"Returns the engine fallback font value, if neither exist (see [member " +"ThemeDB.fallback_font])." +msgstr "" +"如果存在由 [param name] 和 [param theme_type] 定义的 [Font] 属性,则将其返" +"回。\n" +"如果不存在且存在默认主题字体,则返回默认主题字体(见 [member " +"default_font])。请使用 [method has_font] 检查是否存在,使用 [method " +"has_default_font] 检查默认主题字体是否存在。\n" +"如果两者都不存在,则返回引擎的回退字体值(见 [member ThemeDB." +"fallback_font])。" + +msgid "" +"Returns a list of names for [Font] properties defined with [param " +"theme_type]. Use [method get_font_type_list] to get a list of possible theme " +"type names." +msgstr "" +"返回为 [param theme_type] 类型定义的 [Font] 属性的名称列表。请使用 [method " +"get_font_type_list] 获取可能的主题类型名称。" + +msgid "" +"Returns the font size property defined by [param name] and [param " +"theme_type], if it exists.\n" +"Returns the default theme font size if the property doesn't exist and the " +"default theme font size is set up (see [member default_font_size]). Use " +"[method has_font_size] to check for existence of the property and [method " +"has_default_font_size] to check for existence of the default theme font.\n" +"Returns the engine fallback font size value, if neither exist (see [member " +"ThemeDB.fallback_font_size])." +msgstr "" +"如果存在由 [param name] 和 [param theme_type] 定义的字体大小属性,则将其返" +"回。\n" +"如果不存在且存在默认主题字体大小,则返回默认主题字体大小(见 [member " +"default_font_size])。请使用 [method has_font_size] 检查是否存在,使用 " +"[method has_default_font_size] 检查默认主题字体大小是否存在。\n" +"如果两者都不存在,则返回引擎的回退字体大小值(见 [member ThemeDB." +"fallback_font_size])。" + +msgid "" +"Returns a list of names for font size properties defined with [param " +"theme_type]. Use [method get_font_size_type_list] to get a list of possible " +"theme type names." +msgstr "" +"返回为 [param theme_type] 类型定义的字体大小属性的名称列表。请使用 [method " +"get_font_size_type_list] 获取可能的主题类型名称。" + +msgid "" +"Returns a list of all unique theme type names for font size properties. Use " +"[method get_type_list] to get a list of all unique theme types." +msgstr "" +"返回字体大小属性的所有唯一主题类型名称的列表。请使用 [method get_type_list] " +"获取所有主题类型。" + +msgid "" +"Returns a list of all unique theme type names for [Font] properties. Use " +"[method get_type_list] to get a list of all unique theme types." +msgstr "" +"返回 [Font] 属性的所有唯一主题类型名称的列表。请使用 [method get_type_list] " +"获取所有主题类型。" + +msgid "" +"Returns the icon property defined by [param name] and [param theme_type], if " +"it exists.\n" +"Returns the engine fallback icon value if the property doesn't exist (see " +"[member ThemeDB.fallback_icon]). Use [method has_icon] to check for " +"existence." +msgstr "" +"如果存在由 [param name] 和 [param theme_type] 定义的图标属性,则将其返回。\n" +"如果不存在则返回引擎的回退图标值(见 [member ThemeDB.fallback_icon])。请使" +"用 [method has_icon] 检查是否存在。" + +msgid "" +"Returns a list of names for icon properties defined with [param theme_type]. " +"Use [method get_icon_type_list] to get a list of possible theme type names." +msgstr "" +"返回为 [param theme_type] 类型定义的图标属性的名称列表。请使用 [method " +"get_icon_type_list] 获取可能的主题类型名称。" + +msgid "" +"Returns a list of all unique theme type names for icon properties. Use " +"[method get_type_list] to get a list of all unique theme types." +msgstr "" +"返回图标属性的所有唯一主题类型名称的列表。请使用 [method get_type_list] 获取" +"所有主题类型。" + +msgid "" +"Returns the [StyleBox] property defined by [param name] and [param " +"theme_type], if it exists.\n" +"Returns the engine fallback stylebox value if the property doesn't exist " +"(see [member ThemeDB.fallback_stylebox]). Use [method has_stylebox] to check " +"for existence." +msgstr "" +"如果存在由 [param name] 和 [param theme_type] 定义的 [StyleBox] 属性,则将其" +"返回。\n" +"如果不存在则返回引擎的回退样式盒值(见 [member ThemeDB.fallback_stylebox])。" +"请使用 [method has_stylebox] 检查是否存在。" + +msgid "" +"Returns a list of names for [StyleBox] properties defined with [param " +"theme_type]. Use [method get_stylebox_type_list] to get a list of possible " +"theme type names." +msgstr "" +"返回为 [param theme_type] 类型定义的 [StyleBox] 属性的名称列表。请使用 " +"[method get_stylebox_type_list] 获取可能的主题类型名称。" + +msgid "" +"Returns a list of all unique theme type names for [StyleBox] properties. Use " +"[method get_type_list] to get a list of all unique theme types." +msgstr "" +"返回 [StyleBox] 属性的所有唯一主题类型名称的列表。请使用 [method " +"get_type_list] 获取所有主题类型。" + +msgid "" +"Returns a list of names for properties of [param data_type] defined with " +"[param theme_type]. Use [method get_theme_item_type_list] to get a list of " +"possible theme type names.\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 theme_type] 类型定义的 [param data_type] 属性的名称列表。请使" +"用 [method get_theme_item_type_list] 获取可能的主题类型名称。\n" +"[b]注意:[/b]这个方法类似于调用相应的数据类型特定方法,但可以用于更通用逻辑。" + +msgid "" +"Returns a list of all unique theme type names for [param data_type] " +"properties. Use [method get_type_list] to get a list of all unique theme " +"types.\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 data_type] 属性的所有唯一主题类型名称的列表。请使用 [method " +"get_type_list] 获取所有主题类型。\n" +"[b]注意:[/b]这个方法类似于调用相应的数据类型特定方法,但可以用于更通用逻辑。" + msgid "" "Returns [code]true[/code] if the [Color] property defined by [param name] " "and [param theme_type] exists.\n" @@ -57819,6 +73151,29 @@ msgstr "" "不存在时返回 [code]false[/code]。定义请使用 [method set_constant]。" msgid "" +"Returns [code]true[/code] if [member default_base_scale] has a valid value.\n" +"Returns [code]false[/code] if it doesn't. The value must be greater than " +"[code]0.0[/code] to be considered valid." +msgstr "" +"如果 [member default_base_scale] 的值有效,则返回 [code]true[/code]。\n" +"如果无效则返回 [code]false[/code]。有效值必须大于 [code]0.0[/code]。" + +msgid "" +"Returns [code]true[/code] if [member default_font] has a valid value.\n" +"Returns [code]false[/code] if it doesn't." +msgstr "" +"如果 [member default_font] 的值有效,则返回 [code]true[/code]。\n" +"如果无效则返回 [code]false[/code]。" + +msgid "" +"Returns [code]true[/code] if [member default_font_size] has a valid value.\n" +"Returns [code]false[/code] if it doesn't. The value must be greater than " +"[code]0[/code] to be considered valid." +msgstr "" +"如果 [member default_font_size] 的值有效,则返回 [code]true[/code]。\n" +"如果无效则返回 [code]false[/code]。有效值必须大于 [code]0[/code]。" + +msgid "" "Returns [code]true[/code] if the [Font] property defined by [param name] and " "[param theme_type] exists, or if the default theme font is set up (see " "[method has_default_font]).\n" @@ -57874,6 +73229,24 @@ msgstr "" "[b]注意:[/b]这个方法类似于调用相应的数据类型特定方法,但可以用于更通用逻辑。" msgid "" +"Returns [code]true[/code] if [param theme_type] is marked as a variation of " +"[param base_type]." +msgstr "" +"如果主题类型 [param theme_type] 被标记为基础类型 [param base_type] 的变种,则" +"返回 [code]true[/code]。" + +msgid "" +"Adds missing and overrides existing definitions with values from the [param " +"other] theme resource.\n" +"[b]Note:[/b] This modifies the current theme. If you want to merge two " +"themes together without modifying either one, create a new empty theme and " +"merge the other two into it one after another." +msgstr "" +"添加缺失的定义,并使用 [param other] 主题资源中的值覆盖已有的定义。\n" +"[b]注意:[/b]这修改了当前的主题。如果想将两个主题合并在一起且不修改任何一个," +"请创建一个新的空主题,并将其他两个依次合并到其中。" + +msgid "" "Removes the theme type, gracefully discarding defined theme items. If the " "type is a variation, this information is also erased. If the type is a base " "for type variations, those variations lose their base." @@ -58027,6 +73400,26 @@ msgstr "" "[b]注意:[/b]这个方法类似于调用相应的数据类型特定方法,但可以用于更通用逻辑。" msgid "" +"Marks [param theme_type] as a variation of [param base_type].\n" +"This adds [param theme_type] as a suggested option for [member Control." +"theme_type_variation] on a [Control] that is of the [param base_type] " +"class.\n" +"Variations can also be nested, i.e. [param base_type] can be another " +"variation. If a chain of variations ends with a [param base_type] matching " +"the class of the [Control], the whole chain is going to be suggested as " +"options.\n" +"[b]Note:[/b] Suggestions only show up if this theme resource is set as the " +"project default theme. See [member ProjectSettings.gui/theme/custom]." +msgstr "" +"将主题类型 [param theme_type] 标记为基础类型 [param base_type] 的变种。\n" +"这会将 [param theme_type] 添加为属于 [param base_type] 类的 [Control] 的 " +"[member Control.theme_type_variation] 的建议选项。\n" +"变种也可以嵌套,即 [param base_type] 可以是另一个变种。如果变种链以匹配 " +"[Control] 类的 [param base_type] 结束,则整个链将被建议为选项。\n" +"[b]注意:[/b]仅当该主题资源被设置为项目的默认主题时才会显示建议。参见 " +"[member ProjectSettings.gui/theme/custom]。" + +msgid "" "The default base scale factor of this theme resource. Used by some controls " "to scale their visual properties based on the global scale factor. If this " "value is set to [code]0.0[/code], the global scale factor is used (see " @@ -58092,6 +73485,34 @@ msgstr "" "引擎单例,用于访问静态 [Theme] 信息,如默认主题和项目主题,以及回退值等。" msgid "" +"This engine singleton provides access to static information about [Theme] " +"resources used by the engine and by your projects. You can fetch the default " +"engine theme, as well as your project configured theme.\n" +"[ThemeDB] also contains fallback values for theme properties." +msgstr "" +"这个引擎单例可用于访问 [Theme] 资源的静态信息,包括引擎使用的主题资源和项目使" +"用的主题资源。可以获取引擎默认的主题,也可以获取你在项目中配置的主题。\n" +"[ThemeDB] 也包含了主题属性的回退值。" + +msgid "" +"Returns a reference to the default engine [Theme]. This theme resource is " +"responsible for the out-of-the-box look of [Control] nodes and cannot be " +"overridden." +msgstr "" +"返回默认引擎 [Theme] 的引用。该主题资源负责 [Control] 节点的原始外观,无法进" +"行覆盖。" + +msgid "" +"Returns a reference to the custom project [Theme]. This theme resources " +"allows to override the default engine theme for every control node in the " +"project.\n" +"To set the project theme, see [member ProjectSettings.gui/theme/custom]." +msgstr "" +"返回自定义项目 [Theme] 的引用。该主题资源能够影响项目中的所有控件节点,覆盖默" +"认引擎主题。\n" +"项目主题的设置请参阅 [member ProjectSettings.gui/theme/custom]。" + +msgid "" "The fallback base scale factor of every [Control] node and [Theme] resource. " "Used when no other value is available to the control.\n" "See also [member Theme.default_base_scale]." @@ -58131,6 +73552,11 @@ msgstr "" "所有 [Control] 节点和 [Theme] 资源的回退样式盒。用于控件没有其他值可用的情" "况。" +msgid "" +"Emitted when one of the fallback values had been changed. Use it to refresh " +"the look of controls that may rely on the fallback theme items." +msgstr "任意回退值发生改变时发出。可用于刷新依赖于回退主题项的控件的外观。" + msgid "A unit of execution in a process." msgstr "执行过程中的执行单元。" @@ -58150,13 +73576,6 @@ msgid "Thread-safe APIs" msgstr "线程安全的 API" msgid "" -"Returns the current [Thread]'s ID, uniquely identifying it among all " -"threads. If the [Thread] is not running this returns an empty string." -msgstr "" -"返回当前 [Thread] 的 ID,在所有线程中唯一标识它。如果 [Thread] 未运行,则返回" -"空字符串。" - -msgid "" "Returns [code]true[/code] if this [Thread] has been started. Once started, " "this will return [code]true[/code] until it is joined using [method " "wait_to_finish]. For checking if a [Thread] is still executing its task, use " @@ -58166,6 +73585,20 @@ msgstr "" "[code]true[/code] ,直到它使用 [method wait_to_finish] 加入。要检查 [Thread] " "是否仍在执行其任务,请使用 [method is_alive]。" +msgid "" +"Starts a new [Thread] that calls [param callable].\n" +"If the method takes some arguments, you can pass them using [method Callable." +"bind].\n" +"The [param priority] of the [Thread] can be changed by passing a value from " +"the [enum Priority] enum.\n" +"Returns [constant OK] on success, or [constant ERR_CANT_CREATE] on failure." +msgstr "" +"启动一个调用 [param callable] 的新 [Thread]。\n" +"如果该方法需要一些参数,可以使用 [method Callable.bind] 传递它们。\n" +"[Thread] 的 [param priority] 可以通过传递 [enum Priority] 枚举中的值来更" +"改。\n" +"成功时返回 [constant OK],失败时返回 [constant ERR_CANT_CREATE]。" + msgid "A thread running with lower priority than normally." msgstr "线程以比正常情况下更低的优先级运行。" @@ -58186,9 +73619,98 @@ msgstr "" "[TileData] 对象代表 [TileSet] 中的单个图块,通常使用图块集编辑器进行编辑,但" "也可以在运行时使用 [method TileMap._tile_data_runtime_update] 进行修改。" +msgid "" +"Returns the constant angular velocity applied to objects colliding with this " +"tile." +msgstr "返回恒定角速度,将应用于与此图块碰撞的对象。" + +msgid "" +"Returns the constant linear velocity applied to objects colliding with this " +"tile." +msgstr "返回恒定线速度,将应用于与此图块碰撞的对象。" + +msgid "" +"Returns the custom data value for custom data layer named [param layer_name]." +msgstr "" +"返回自定义数据层的自定义数据值,自定义数据层用名称 [param layer_name] 指定。" + +msgid "" +"Returns the custom data value for custom data layer with index [param " +"layer_id]." +msgstr "" +"返回自定义数据层的自定义数据值,自定义数据层用索引 [param layer_id] 指定。" + +msgid "" +"Sets the constant angular velocity. This does not rotate the tile. This " +"angular velocity is applied to objects colliding with this tile." +msgstr "设置恒定角速度。不会旋转图块。会对与该图块发生碰撞的对象应用该角速度。" + +msgid "" +"Sets the constant linear velocity. This does not move the tile. This linear " +"velocity is applied to objects colliding with this tile. This is useful to " +"create conveyor belts." +msgstr "" +"设置恒定线速度。不会旋转图块。会对与该图块发生碰撞的对象应用该线速度。可用于" +"创建传送带。" + +msgid "" +"Sets the tile's custom data value for the TileSet custom data layer with " +"name [param layer_name]." +msgstr "" +"设置该图块的自定义数据值,TileSet 自定义数据层由名称 [param layer_name] 指" +"定。" + +msgid "" +"Sets the tile's custom data value for the TileSet custom data layer with " +"index [param layer_id]." +msgstr "" +"设置该图块的自定义数据值,TileSet 自定义数据层由索引 [param layer_id] 指定。" + +msgid "" +"If [code]true[/code], the tile will have its texture flipped horizontally." +msgstr "如果为 [code]true[/code],则该图块的纹理会被水平翻转。" + +msgid "" +"If [code]true[/code], the tile will have its texture flipped vertically." +msgstr "如果为 [code]true[/code],则该图块的纹理会被垂直翻转。" + +msgid "" +"The [Material] to use for this [TileData]. This can be a " +"[CanvasItemMaterial] to use the default shader, or a [ShaderMaterial] to use " +"a custom shader." +msgstr "" +"用于此 [TileData] 的 [Material]。使用默认着色器可以设为 " +"[CanvasItemMaterial],使用自定义着色器可以设为 [ShaderMaterial]。" + msgid "Color modulation of the tile." msgstr "该图块的颜色调制。" +msgid "" +"Relative probability of this tile being selected when drawing a pattern of " +"random tiles." +msgstr "绘制随机图块图案时选择该图块的相对概率。" + +msgid "ID of the terrain from the terrain set that the tile uses." +msgstr "该图块所使用的地形集中地形的 ID。" + +msgid "ID of the terrain set that the tile uses." +msgstr "该图块所使用的地形集的 ID。" + +msgid "Offsets the position of where the tile is drawn." +msgstr "该图块绘制时的位置偏移量。" + +msgid "" +"If [code]true[/code], the tile will display transposed, i.e. with horizontal " +"and vertical texture UVs swapped." +msgstr "" +"如果为 [code]true[/code],则该图块会转置显示,即调换水平和垂直纹理 UV。" + +msgid "Vertical point of the tile used for determining y-sorted order." +msgstr "该图块用于确定 Y 排序顺序的垂直点。" + +msgid "Ordering index of this tile, relative to [TileMap]." +msgstr "该图块的排序索引,相对于 [TileMap]。" + msgid "Emitted when any of the properties are changed." msgstr "任何属性发生变化时发出。" @@ -58280,6 +73802,14 @@ msgstr "" "[b]警告:[/b]更新 TileMap 的计算量很大,可能会影响性能。请尽量限制更新的次数" "和受影响的图块(例如,将经常更新的图块放在专门的层中)。" +msgid "" +"Returns the coordinates of the tile for given physics body RID. Such RID can " +"be retrieved from [method KinematicCollision2D.get_collider_rid], when " +"colliding with a tile." +msgstr "" +"返回给定物理物体 RID 对应图块的坐标。与图块发生碰撞时,可以通过 [method " +"KinematicCollision2D.get_collider_rid] 获取该 RID。" + msgid "Returns a TileMap layer's modulate." msgstr "返回 TileMap 图层的调制颜色。" @@ -58296,9 +73826,65 @@ msgid "Returns the number of layers in the TileMap." msgstr "返回 TileMap 图层的数量。" msgid "" +"Returns the [NavigationServer2D] navigation map [RID] currently assigned to " +"the specified TileMap [param layer].\n" +"By default the TileMap uses the default [World2D] navigation map for the " +"first TileMap layer. For each additional TileMap layer a new navigation map " +"is created for the additional layer.\n" +"In order to make [NavigationAgent2D] switch between TileMap layer navigation " +"maps use [method NavigationAgent2D.set_navigation_map] with the navigation " +"map received from [method get_navigation_map]." +msgstr "" +"返回当前分配给指定 TileMap [param layer] 的 [NavigationServer2D] 导航地图 " +"[RID]。\n" +"默认情况下,TileMap 为第一个 TileMap 层,使用默认的 [World2D] 导航地图。对于" +"每个附加的 TileMap 层,都会为附加层创建一个新的导航地图。\n" +"为了使 [NavigationAgent2D] 在 TileMap 层导航地图之间切换,使用 [method " +"NavigationAgent2D.set_navigation_map] 和从 [method get_navigation_map] 接收的" +"导航地图。" + +msgid "Creates a new [TileMapPattern] from the given layer and set of cells." +msgstr "从给定的层和一组单元格,新建 [TileMapPattern]。" + +msgid "" "Returns the list of all neighbourings cells to the one at [param coords]." msgstr "返回与 [param coords] 处的单元格相邻的所有单元格的列表。" +msgid "" +"Returns a [Vector2i] array with the positions of all cells containing a tile " +"in the given layer. A cell is considered empty if its source identifier " +"equals -1, its atlas coordinates identifiers is [code]Vector2(-1, -1)[/code] " +"and its alternative identifier is -1." +msgstr "" +"返回 [Vector2i] 数组,其中存放的是给定图层中所有包含图块的单元格的位置。空单" +"元格的源标识符等于 -1、图集坐标标识符为 [code]Vector2(-1, -1)[/code]、备选标" +"识符为 -1。" + +msgid "" +"Returns a [Vector2i] array with the positions of all cells containing a tile " +"in the given layer. Tiles may be filtered according to their source ([param " +"source_id]), their atlas coordinates ([param atlas_coords]) or alternative " +"id ([param alternative_tile]).\n" +"If a parameter has it's value set to the default one, this parameter is not " +"used to filter a cell. Thus, if all parameters have their respective default " +"value, this method returns the same result as [method get_used_cells].\n" +"A cell is considered empty if its source identifier equals -1, its atlas " +"coordinates identifiers is [code]Vector2(-1, -1)[/code] and its alternative " +"identifier is -1." +msgstr "" +"返回 [Vector2i] 数组,其中存放的是给定图层中所有包含图块的单元格的位置。可以" +"根据源([param source_id])、图集坐标([param atlas_coords])、备选 ID" +"([param alternative_tile])进行过滤。\n" +"如果某个参数为默认值,则该参数不会用于单元格的过滤。因此,如果所有参数都使用" +"默认值,则返回的结果与 [method get_used_cells] 相同。\n" +"空单元格的源标识符等于 -1、图集坐标标识符为 [code]Vector2(-1, -1)[/code]、备" +"选标识符为 -1。" + +msgid "" +"Returns a rectangle enclosing the used (non-empty) tiles of the map, " +"including all layers." +msgstr "返回该地图的包围矩形,包围所有图层中的已使用(非空)的图块。" + msgid "Returns if a layer is enabled." msgstr "返回图层是否被启用。" @@ -58319,13 +73905,111 @@ msgstr "" "算 [code]position_in_tile_map + coords_in_pattern[/code] 工作。" msgid "" +"Moves the layer at index [param layer] to the given position [param " +"to_position] in the array." +msgstr "" +"将索引 [param layer] 处的图层移动到数组中给定的位置 [param to_position]。" + +msgid "Removes the layer at index [param layer]." +msgstr "移除索引为 [param layer] 的层。" + +msgid "" +"Sets a layer's color. It will be multiplied by tile's color and TileMap's " +"modulate.\n" +"If [code]layer[/code] is negative, the layers are accessed from the last one." +msgstr "" +"设置图层的颜色。该颜色会与图块的颜色以及 TileMap 的调制色相乘。\n" +"如果 [code]layer[/code] 为负,则逆序访问图层。" + +msgid "" +"Sets a layer's name. This is mostly useful in the editor.\n" +"If [code]layer[/code] is negative, the layers are accessed from the last one." +msgstr "" +"设置图层的名称。主要在编辑器中使用。\n" +"如果 [code]layer[/code] 为负,则逆序访问图层。" + +msgid "" +"Enables or disables a layer's Y-sorting. If a layer is Y-sorted, the layer " +"will behave as a CanvasItem node where each of its tile gets Y-sorted.\n" +"Y-sorted layers should usually be on different Z-index values than not Y-" +"sorted layers, otherwise, each of those layer will be Y-sorted as whole with " +"the Y-sorted one. This is usually an undesired behavior.\n" +"If [code]layer[/code] is negative, the layers are accessed from the last one." +msgstr "" +"启用或禁用图层的 Y 排序。如果进行了 Y 排序,则该图层和 CanvasItem 节点的行为" +"一致,会将其中的每个图块都进行 Y 排序。\n" +"Y 排序图层的 Z 索引一般应该和未 Y 排序的图层不同,否则未 Y 排序的图层会作为一" +"个整体,和 Y 排序图层一起进行 Y 排序。通常不希望发生这样的行为。\n" +"如果 [code]layer[/code] 为负,则逆序访问图层。" + +msgid "" +"Sets a layer's Y-sort origin value. This Y-sort origin value is added to " +"each tile's Y-sort origin value.\n" +"This allows, for example, to fake a different height level on each layer. " +"This can be useful for top-down view games.\n" +"If [code]layer[/code] is negative, the layers are accessed from the last one." +msgstr "" +"设置图层的 Y 排序原点。各个图块的 Y 排序原点值都会加上这个 Y 排序原点值。\n" +"用例是为图层冒充不同的高度级别。俯视角游戏比较有用。\n" +"如果 [code]layer[/code] 为负,则逆序访问图层。" + +msgid "" +"Sets a layers Z-index value. This Z-index is added to each tile's Z-index " +"value.\n" +"If [code]layer[/code] is negative, the layers are accessed from the last one." +msgstr "" +"设置图层的 Z 索引值。各个图块的 Z 索引值都会加上这个 Z 索引。\n" +"如果 [code]layer[/code] 为负,则逆序访问图层。" + +msgid "" +"Assigns a [NavigationServer2D] navigation map [RID] to the specified TileMap " +"[param layer].\n" +"By default the TileMap uses the default [World2D] navigation map for the " +"first TileMap layer. For each additional TileMap layer a new navigation map " +"is created for the additional layer.\n" +"In order to make [NavigationAgent2D] switch between TileMap layer navigation " +"maps use [method NavigationAgent2D.set_navigation_map] with the navigation " +"map received from [method get_navigation_map]." +msgstr "" +"将 [NavigationServer2D] 导航地图 [RID] 分配给指定的 TileMap [param layer]。\n" +"默认情况下,TileMap 为第一个 TileMap 层使用默认的 [World2D] 导航地图。对于每" +"个附加的 TileMap 层,都会为附加层创建一个新的导航地图。\n" +"为了使 [NavigationAgent2D] 在 TileMap 层导航地图之间切换,使用 [method " +"NavigationAgent2D.set_navigation_map] 和从 [method get_navigation_map] 接收的" +"导航地图。" + +msgid "" +"Paste the given [TileMapPattern] at the given [param position] and [param " +"layer] in the tile map." +msgstr "" +"将给定的 [TileMapPattern] 粘贴到图块地图中的 [param position] 位置和 [param " +"layer] 层。" + +msgid "" "The TileMap's quadrant size. Optimizes drawing by batching, using chunks of " "this size." msgstr "该 TileMap 的象限大小。会使用这个大小的区块对绘制进行批处理优化。" +msgid "" +"Show or hide the TileMap's collision shapes. If set to [constant " +"VISIBILITY_MODE_DEFAULT], this depends on the show collision debug settings." +msgstr "" +"显示或隐藏该 TileMap 的碰撞形状。如果设置为 [constant VISIBILITY " +"MODE_DEFAULT],则取决于调试设置“显示碰撞”。" + +msgid "" +"Show or hide the TileMap's navigation meshes. If set to [constant " +"VISIBILITY_MODE_DEFAULT], this depends on the show navigation debug settings." +msgstr "" +"显示或隐藏该 TileMap 的导航网格。如果设置为 [constant " +"VISIBILITY_MODE_DEFAULT],则取决于调试设置“显示导航”。" + msgid "The assigned [TileSet]." msgstr "指定的 [TileSet] 图块集。" +msgid "Emitted when the [TileSet] of this TileMap changes." +msgstr "该 TileMap 的 [TileSet] 发生改变时发出。" + msgid "Use the debug settings to determine visibility." msgstr "使用调试设置确定可见性。" @@ -58335,6 +74019,50 @@ msgstr "始终隐藏。" msgid "Always show." msgstr "始终显示。" +msgid "Holds a pattern to be copied from or pasted into [TileMap]s." +msgstr "存放 [TileMap] 的图案,用于复制粘贴。" + +msgid "" +"This resource holds a set of cells to help bulk manipulations of [TileMap].\n" +"A pattern always start at the [code](0,0)[/code] coordinates and cannot have " +"cells with negative coordinates." +msgstr "" +"这个资源存放的是一组单元格,能够帮助进行 [TileMap] 的批量操作。\n" +"图案始终从 [code](0,0)[/code] 坐标开始,不能存在负数坐标的单元格。" + +msgid "Returns the tile alternative ID of the cell at [param coords]." +msgstr "返回位于 [param coords] 的单元格的备选图块 ID。" + +msgid "Returns the tile atlas coordinates ID of the cell at [param coords]." +msgstr "返回位于 [param coords] 的单元格的图块图集坐标 ID。" + +msgid "Returns the tile source ID of the cell at [param coords]." +msgstr "返回位于 [param coords] 的单元格的图块源 ID。" + +msgid "Returns the size, in cells, of the pattern." +msgstr "返回该图案的大小(单位为单元格)。" + +msgid "Returns the list of used cell coordinates in the pattern." +msgstr "返回该图案中使用的单元格坐标列表。" + +msgid "Returns whether the pattern has a tile at the given coordinates." +msgstr "返回该图案是否在给定坐标处有图块。" + +msgid "Returns whether the pattern is empty or not." +msgstr "返回该图案是否为空。" + +msgid "Remove the cell at the given coordinates." +msgstr "移除给定坐标的单元格。" + +msgid "" +"Sets the tile indentifiers for the cell at coordinates [param coords]. See " +"[method TileMap.set_cell]." +msgstr "" +"设置位于 [param coords] 的单元格的图块标识符。见 [method TileMap.set_cell]。" + +msgid "Sets the size of the pattern." +msgstr "设置图案的大小。" + msgid "Tile library for tilemaps." msgstr "Tilemap 的图块库。" @@ -58365,18 +74093,107 @@ msgstr "" "罩),要实现不同类型的碰撞,你也可以添加多个 TileSet 物理层。\n" "更多信息请参阅添加新层的函数。" +msgid "" +"Adds a custom data layer to the TileSet at the given position [param " +"to_position] in the array. If [param to_position] is -1, adds it at the end " +"of the array.\n" +"Custom data layers allow assigning custom properties to atlas tiles." +msgstr "" +"在 TileSet 中添加自定义数据层,放置到数组中的 [param to_position] 位置。如果 " +"[param to_position] 为 -1,则会将其添加到数组的末尾。\n" +"自定义数据层能够为图集图块分配自定义属性。" + +msgid "" +"Adds a navigation layer to the TileSet at the given position [param " +"to_position] in the array. If [param to_position] is -1, adds it at the end " +"of the array.\n" +"Navigation layers allow assigning a navigable area to atlas tiles." +msgstr "" +"在 TileSet 中添加导航层,放置到数组中的 [param to_position] 位置。如果 " +"[param to_position] 为 -1,则会将其添加到数组的末尾。\n" +"导航层能够为图集图块分配导航区域。" + +msgid "" +"Adds an occlusion layer to the TileSet at the given position [param " +"to_position] in the array. If [param to_position] is -1, adds it at the end " +"of the array.\n" +"Occlusion layers allow assigning occlusion polygons to atlas tiles." +msgstr "" +"在 TileSet 中添加遮挡层,放置到数组中的 [param to_position] 位置。如果 " +"[param to_position] 为 -1,则会将其添加到数组的末尾。\n" +"遮挡层能够为图集图块分配遮挡多边形。" + +msgid "" +"Adds a physics layer to the TileSet at the given position [param " +"to_position] in the array. If [param to_position] is -1, adds it at the end " +"of the array.\n" +"Physics layers allow assigning collision polygons to atlas tiles." +msgstr "" +"在 TileSet 中添加物理层,放置到数组中的 [param to_position] 位置。如果 " +"[param to_position] 为 -1,则会将其添加到数组的末尾。\n" +"物理层能够为图集图块分配碰撞多边形。" + +msgid "" +"Adds a new terrain to the given terrain set [param terrain_set] at the given " +"position [param to_position] in the array. If [param to_position] is -1, " +"adds it at the end of the array." +msgstr "" +"在 TileSet 的 [param terrain_set] 地形集中添加新的地形,放置到数组中的 " +"[param to_position] 位置。如果 [param to_position] 为 -1,则会将其添加到数组" +"的末尾。" + +msgid "" +"Adds a new terrain set at the given position [param to_position] in the " +"array. If [param to_position] is -1, adds it at the end of the array." +msgstr "" +"在 TileSet 添加新的地形集,放置到数组中的 [param to_position] 位置。如果 " +"[param to_position] 为 -1,则会将其添加到数组的末尾。" + +msgid "Clears tile proxies pointing to invalid tiles." +msgstr "清除指向无效图块的图块代理。" + +msgid "Clears all tile proxies." +msgstr "清除所有图块代理。" + +msgid "" +"Returns the index of the custom data layer identified by the given name." +msgstr "返回自定义数据层的索引,该自定义数据层由名称表示。" + +msgid "" +"Returns the name of the custom data layer identified by the given index." +msgstr "返回自定义数据层的名称,该自定义数据层由索引表示。" + +msgid "" +"Returns the type of the custom data layer identified by the given index." +msgstr "返回自定义数据层的类型,该自定义数据层由索引表示。" + msgid "Returns the custom data layers count." msgstr "返回自定义数据层的数量。" msgid "Returns the navigation layers count." msgstr "返回导航层的数量。" +msgid "Returns the light mask of the occlusion layer." +msgstr "返回遮挡层的光照掩码。" + msgid "Returns the occlusion layers count." msgstr "返回遮挡层的数量。" +msgid "Returns the [TileMapPattern] at the given [param index]." +msgstr "返回给定 [param index] 处的 [TileMapPattern]。" + msgid "Returns the physics layers count." msgstr "返回物理层的数量。" +msgid "Returns the [TileSetSource] with ID [param source_id]." +msgstr "返回 ID 为 [param source_id] 的 [TileSetSource]。" + +msgid "Returns the number of [TileSetSource] in this TileSet." +msgstr "返回该 TileSet 中 [TileSetSource] 的数量。" + +msgid "Returns the source ID for source with index [param index]." +msgstr "返回索引为 [param index] 的源的源 ID。" + msgid "Returns a terrain's color." msgstr "返回地形的颜色。" @@ -58453,6 +74270,33 @@ msgid "" "tiles accordingly." msgstr "移除索引为 [param terrain_set] 的地形集。也会相应地更新图集中的图块。" +msgid "Sets the type of the custom data layer identified by the given index." +msgstr "设置自定义数据层的类型,该自定义数据层由索引表示。" + +msgid "" +"Sets the navigation layers (as in the navigation server) for navigation " +"regions is the given TileSet navigation layer." +msgstr "设置给定 TileSet 导航层中导航区域的导航层(导航服务器中使用)。" + +msgid "" +"Sets the occlusion layer (as in the rendering server) for occluders in the " +"given TileSet occlusion layer." +msgstr "设置给定 TileSet 遮挡层中遮挡器的遮挡层(渲染服务器中使用)。" + +msgid "" +"Enables or disables sdf collision for occluders in the given TileSet " +"occlusion layer." +msgstr "启用或禁用给定 TileSet 遮挡层中遮挡器的 SDF 碰撞。" + +msgid "" +"Sets the physics layer (as in the physics server) for bodies in the given " +"TileSet physics layer." +msgstr "设置给定 TileSet 物理层中物体的物理层(物理服务器中使用)。" + +msgid "" +"Sets the physics material for bodies in the given TileSet physics layer." +msgstr "设置给定 TileSet 物理层中物体的物理材质。" + msgid "Changes a source's ID." msgstr "更改源的 ID。" @@ -58515,6 +74359,38 @@ msgstr "矩形图块形状,每隔一行/列偏移半个图块。" msgid "Hexagonal tile shape." msgstr "六边形图块形状。" +msgid "" +"Tile coordinates layout where both axis stay consistent with their " +"respective local horizontal and vertical axis." +msgstr "图块坐标布局,两个轴与对应的局部水平轴和垂直轴保持一致。" + +msgid "" +"Same as [constant TILE_LAYOUT_STACKED], but the first half-offset is " +"negative instead of positive." +msgstr "" +"与 [constant TILE_LAYOUT_STACKED] 相同,但第一个半偏移偏向负方向,而不是正方" +"向。" + +msgid "" +"Tile coordinates layout where the horizontal axis stay horizontal, and the " +"vertical one goes down-right." +msgstr "图块坐标布局,水平轴保持水平,垂直轴朝向右下方。" + +msgid "" +"Tile coordinates layout where the vertical axis stay vertical, and the " +"horizontal one goes down-right." +msgstr "图块坐标布局,垂直轴保持垂直,水平轴朝向右下方。" + +msgid "" +"Tile coordinates layout where the horizontal axis goes up-right, and the " +"vertical one goes down-right." +msgstr "图块坐标布局,水平轴朝向右上方,垂直轴朝向右下方。" + +msgid "" +"Tile coordinates layout where the horizontal axis goes down-right, and the " +"vertical one goes down-left." +msgstr "图块坐标布局,水平轴朝向右下方,垂直轴朝向左下方。" + msgid "Horizontal half-offset." msgstr "水平半偏移。" @@ -58579,6 +74455,9 @@ msgstr "要求与相邻图块地形的角相匹配。" msgid "Requires sides to match with neighboring tiles' terrains." msgstr "要求与相邻图块地形的边相匹配。" +msgid "Exposes a 2D atlas texture as a set of tiles for a [TileSet] resource." +msgstr "以一组图块的形式向 [TileSet] 资源暴露 2D 图集纹理。" + msgid "" "Returns how many columns the tile at [param atlas_coords] has in its " "animation layout." @@ -58616,6 +74495,9 @@ msgstr "" "纹理中的基础图块大小(以像素为单位)。该大小必须大于该 TileSet 中的 " "[code]tile_size[/code] 值。" +msgid "Exposes a set of scenes as tiles for a [TileSet] resource." +msgstr "以图块的形式向 [TileSet] 资源暴露一组场景。" + msgid "" "Returns whether the scene tile with [param id] displays a placeholder in the " "editor." @@ -58636,6 +74518,69 @@ msgstr "返回该 TileSet 源是否包含 ID 为 [param id] 的场景图块。" msgid "Remove the scene tile with [param id]." msgstr "移除 ID 为 [param id] 的场景图块。" +msgid "Exposes a set of tiles for a [TileSet] resource." +msgstr "向 [TileSet] 资源暴露一组图块。" + +msgid "" +"Exposes a set of tiles for a [TileSet] resource.\n" +"Tiles in a source are indexed with two IDs, coordinates ID (of type " +"Vector2i) and an alternative ID (of type int), named according to their use " +"in the [TileSetAtlasSource] class.\n" +"Depending on the TileSet source type, those IDs might have restrictions on " +"their values, this is why the base [TileSetSource] class only exposes " +"getters for them.\n" +"You can iterate over all tiles exposed by a TileSetSource by first iterating " +"over coordinates IDs using [method get_tiles_count] and [method " +"get_tile_id], then over alternative IDs using [method " +"get_alternative_tiles_count] and [method get_alternative_tile_id]." +msgstr "" +"向 [TileSet] 资源暴露一组图块。\n" +"源中的图块具有索引,索引为两个 ID,分别是坐标 ID(类型为 Vector2i)和备选 ID" +"(类型为 int),名称反映了在 [TileSetAtlasSource] 中的使用方法。\n" +"根据 TileSet 源类型的不同,对这些 ID 的值可能有不同的限制,这就是 " +"[TileSetSource] 基类仅暴露了 getter 的原因。\n" +"要遍历 TileSetSource 中暴露的所有图块,你可以首先使用 [method " +"get_tiles_count] 和 [method get_tile_id] 遍历坐标 ID,然后使用 [method " +"get_alternative_tiles_count] 和 [method get_alternative_tile_id] 遍历备选 " +"ID。" + +msgid "" +"Returns the alternative ID for the tile with coordinates ID [param " +"atlas_coords] at index [param index]." +msgstr "" +"返回坐标 ID 为 [parma atlas_coords] 的图块的索引为 [parma index] 的备选 ID。" + +msgid "" +"Returns the number of alternatives tiles for the coordinates ID [param " +"atlas_coords].\n" +"For [TileSetAtlasSource], this always return at least 1, as the base tile " +"with ID 0 is always part of the alternatives list.\n" +"Returns -1 if there is not tile at the given coords." +msgstr "" +"返回坐标 ID 为 [parma atlas_coords] 的图块的备选图块数量。\n" +"[TileSetAtlasSource] 返回的数量至少为 1,因为备选列表中始终存在 ID 为 0 的基" +"础图块。\n" +"如果给定的坐标处没有图块,则返回 -1。" + +msgid "Returns the tile coordinates ID of the tile with index [param index]." +msgstr "返回索引为 [param index] 的图块的图块坐标 ID。" + +msgid "" +"Returns how many tiles this atlas source defines (not including alternative " +"tiles)." +msgstr "返回该图集源中定义的图块数量(不含备选图块)。" + +msgid "" +"Returns if the base tile at coordinates [param atlas_coords] has an " +"alternative with ID [param alternative_tile]." +msgstr "" +"返回位于坐标 [param atlas_coords] 的基础图块是否存在 ID 为 [param " +"alternative_tile] 的备选图块。" + +msgid "" +"Returns if this atlas has a tile with coordinates ID [param atlas_coords]." +msgstr "返回该图集中是否存在坐标 ID 为 [param atlas_coords] 的图块。" + msgid "Time singleton for working with time." msgstr "用于处理时间的 Time 单例。" @@ -58736,6 +74681,21 @@ msgstr "" "Time)。" msgid "" +"Converts the given Unix timestamp to a dictionary of keys: [code]year[/" +"code], [code]month[/code], [code]day[/code], [code]weekday[/code], " +"[code]hour[/code], [code]minute[/code], and [code]second[/code].\n" +"The returned Dictionary's values will be the same as the [method " +"get_datetime_dict_from_system] if the Unix timestamp is the current time, " +"with the exception of Daylight Savings Time as it cannot be determined from " +"the epoch." +msgstr "" +"将给定的 Unix 时间戳转换为字典,包含的键为:[code]year[/code]、[code]month[/" +"code]、[code]day[/code]、[code]weekday[/code]、[code]hour[/code]、" +"[code]minute[/code]、和 [code]second[/code]。\n" +"如果 Unix 时间戳是当前时间,则返回的字典值将与 [method " +"get_datetime_dict_from_system] 相同,夏令时除外,因为它无法根据纪元确定。" + +msgid "" "Converts the given dictionary of keys to an ISO 8601 date and time string " "(YYYY-MM-DDTHH:MM:SS).\n" "The given dictionary can be populated with the following keys: [code]year[/" @@ -59278,6 +75238,13 @@ msgid "Returns the transform's skew (in radians)." msgstr "返回该变换的偏斜(单位为弧度)。" msgid "" +"Returns a transform interpolated between this transform and another by a " +"given [param weight] (on the range of 0.0 to 1.0)." +msgstr "" +"返回将该变换与其他变换使用给定权重 [param weight] 进行插值的结果(权重范围为 " +"0.0 到 1.0)。" + +msgid "" "Returns the inverse of the transform, under the assumption that the " "transformation is composed of rotation and translation (no scaling, use " "[method affine_inverse] for transforms with scaling)." @@ -59286,12 +75253,11 @@ msgstr "" "[method affine_inverse])。" msgid "" -"Returns [code]true[/code] if this transform and [code]transform[/code] are " -"approximately equal, by calling [code]is_equal_approx[/code] on each " -"component." +"Returns [code]true[/code] if this transform is finite, by calling [method " +"@GlobalScope.is_finite] on each component." msgstr "" -"如果这个变换和[code]transform[/code]近似相等,通过对每个分量调用" -"[code]is_equal_approx[/code],而返回 [code]true[/code]。" +"如果该变换是有限的,则返回 [code]true[/code],判断方法是在每个分量上调用 " +"[method @GlobalScope.is_finite]。" msgid "" "Returns the transform with the basis orthogonal (90 degrees), and normalized " @@ -59299,6 +75265,88 @@ msgid "" msgstr "返回使用正交基(90 度)以及归一化的轴向量(缩放为 1 或 -1)的变换。" msgid "" +"Returns a copy of the transform rotated by the given [param angle] (in " +"radians).\n" +"This method is an optimized version of multiplying the given transform " +"[code]X[/code]\n" +"with a corresponding rotation transform [code]R[/code] from the left, i.e., " +"[code]R * X[/code].\n" +"This can be seen as transforming with respect to the global/parent frame." +msgstr "" +"返回该变换的副本,该副本进行了夹角为 [parma angle] 的旋转操作(单位为弧" +"度)。\n" +"这个方法的结果和让 [code]X[/code] 变换与相应的旋转变换 [code]R[/code]\n" +"从左侧相乘一致,即 [code]R * X[/code],但进行了优化。\n" +"可以视作在全局/父级坐标系中的变换。" + +msgid "" +"Returns a copy of the transform rotated by the given [param angle] (in " +"radians).\n" +"This method is an optimized version of multiplying the given transform " +"[code]X[/code]\n" +"with a corresponding rotation transform [code]R[/code] from the right, i.e., " +"[code]X * R[/code].\n" +"This can be seen as transforming with respect to the local frame." +msgstr "" +"返回该变换的副本,该副本进行了夹角为 [parma angle] 的旋转操作(单位为弧" +"度)。\n" +"这个方法的结果和让 [code]X[/code] 变换与相应的旋转变换 [code]R[/code]\n" +"从右侧相乘一致,即 [code]X * R[/code],但进行了优化。\n" +"可以视作在局部坐标系中的变换。" + +msgid "" +"Returns a copy of the transform scaled by the given [param scale] factor.\n" +"This method is an optimized version of multiplying the given transform " +"[code]X[/code]\n" +"with a corresponding scaling transform [code]S[/code] from the left, i.e., " +"[code]S * X[/code].\n" +"This can be seen as transforming with respect to the global/parent frame." +msgstr "" +"返回该变换的副本,该副本进行了系数为 [parma scale] 的缩放操作。\n" +"这个方法的结果和让 [code]X[/code] 变换与相应的缩放变换 [code]S[/code]\n" +"从左侧相乘一致,即 [code]S * X[/code],但进行了优化。\n" +"可以视作在全局/父级坐标系中的变换。" + +msgid "" +"Returns a copy of the transform scaled by the given [param scale] factor.\n" +"This method is an optimized version of multiplying the given transform " +"[code]X[/code]\n" +"with a corresponding scaling transform [code]S[/code] from the right, i.e., " +"[code]X * S[/code].\n" +"This can be seen as transforming with respect to the local frame." +msgstr "" +"返回该变换的副本,该副本进行了系数为 [parma scale] 的缩放操作。\n" +"这个方法的结果和让 [code]X[/code] 变换与相应的缩放变换 [code]S[/code]\n" +"从右侧相乘一致,即 [code]X * S[/code],但进行了优化。\n" +"可以视作在局部坐标系中的变换。" + +msgid "" +"Returns a copy of the transform translated by the given [param offset].\n" +"This method is an optimized version of multiplying the given transform " +"[code]X[/code]\n" +"with a corresponding translation transform [code]T[/code] from the left, i." +"e., [code]T * X[/code].\n" +"This can be seen as transforming with respect to the global/parent frame." +msgstr "" +"返回该变换的副本,该副本进行了偏移量为 [parma offset] 的平移操作。\n" +"这个方法的结果和让 [code]X[/code] 变换与相应的平移变换 [code]T[/code]\n" +"从左侧相乘一致,即 [code]T * X[/code],但进行了优化。\n" +"可以视作在全局/父级坐标系中的变换。" + +msgid "" +"Returns a copy of the transform translated by the given [param offset].\n" +"This method is an optimized version of multiplying the given transform " +"[code]X[/code]\n" +"with a corresponding translation transform [code]T[/code] from the right, i." +"e., [code]X * T[/code].\n" +"This can be seen as transforming with respect to the local frame." +msgstr "" +"返回该变换的副本,该副本进行了偏移量为 [parma offset] 的平移操作。\n" +"这个方法的结果和让 [code]X[/code] 变换与相应的平移变换 [code]T[/code]\n" +"从右侧相乘一致,即 [code]X * T[/code],但进行了优化。\n" +"可以视作在局部坐标系中的变换。" + +msgid "" "The origin vector (column 2, the third column). Equivalent to array index " "[code]2[/code]. The origin vector represents translation." msgstr "" @@ -59319,6 +75367,38 @@ msgstr "将沿 X 轴翻转的 [Transform2D]。" msgid "The [Transform2D] that will flip something along the Y axis." msgstr "将沿 Y 轴翻转的 [Transform2D]。" +msgid "" +"Returns [code]true[/code] if the transforms 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 "" +"Transforms (multiplies) each element of the [Vector2] array by the given " +"[Transform2D] matrix." +msgstr "" +"使用给定的 [Transform2D] 矩阵将该 [Vector2] 数组中的每个元素进行变换(相" +"乘)。" + +msgid "Transforms (multiplies) the [Rect2] by the given [Transform2D] matrix." +msgstr "使用给定的 [Transform2D] 矩阵将该 [Rect2] 进行变换(相乘)。" + +msgid "" +"Transforms (multiplies) the [Vector2] by the given [Transform2D] matrix." +msgstr "使用给定的 [Transform2D] 矩阵将该 [Vector2] 进行变换(相乘)。" + +msgid "" +"Returns [code]true[/code] if the transforms 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 "" +"如果变换完全相等,则返回 [code]true[/code]。\n" +"[b]注意:[/b]由于浮点数精度误差,请考虑改用 [method is_equal_approx],会更可" +"靠。" + msgid "3D transformation (3×4 matrix)." msgstr "3D 变换(3×4 矩阵)。" @@ -59335,9 +75415,65 @@ msgstr "" "列)组成。\n" "更多信息请阅读文档文章《矩阵与变换》。" +msgid "" +"Constructs a default-initialized [Transform3D] set to [constant IDENTITY]." +msgstr "构造默认初始化为 [constant IDENTITY] 的 [Transform3D]。" + msgid "Constructs a [Transform3D] as a copy of the given [Transform3D]." msgstr "构造给定 [Transform3D] 的副本。" +msgid "Constructs a Transform3D from a [Basis] and [Vector3]." +msgstr "从 [Basis] 和 [Vector3] 构造 Transform3D。" + +msgid "" +"Returns a copy of the transform rotated such that the forward axis (-Z) " +"points towards the [param target] position.\n" +"The up axis (+Y) points as close to the [param up] vector as possible while " +"staying perpendicular to the forward axis. The resulting transform is " +"orthonormalized. The existing rotation, scale, and skew information from the " +"original transform is discarded. The [param target] and [param up] vectors " +"cannot be zero, cannot be parallel to each other, and are defined in global/" +"parent space." +msgstr "" +"返回旋转后的变换副本,使前向轴(-Z)指向 [param target] 位置。\n" +"向上轴(+Y)指向尽可能靠近 [param up] 向量,同时保持垂直于前向轴。生成的变换" +"是正交归一化的。来自原始变换的原有旋转、缩放和倾斜信息将被丢弃。[param " +"target] 和 [param up] 向量不能为零,不能相互平行,并且在全局/父空间中定义。" + +msgid "" +"Returns a copy of the transform rotated around the given [param axis] by the " +"given [param angle] (in radians).\n" +"The [param axis] must be a normalized vector.\n" +"This method is an optimized version of multiplying the given transform " +"[code]X[/code]\n" +"with a corresponding rotation transform [code]R[/code] from the left, i.e., " +"[code]R * X[/code].\n" +"This can be seen as transforming with respect to the global/parent frame." +msgstr "" +"返回该变换的副本,该副本围绕给定的 [param axis] 轴进行了夹角为 [parma angle] " +"的旋转操作(单位为弧度)。\n" +"[param axis] 必须为归一化的向量。\n" +"这个方法的结果和让 [code]X[/code] 变换与相应的旋转变换 [code]R[/code]\n" +"从左侧相乘一致,即 [code]R * X[/code],但进行了优化。\n" +"可以视作在全局/父级坐标系中的变换。" + +msgid "" +"Returns a copy of the transform rotated around the given [param axis] by the " +"given [param angle] (in radians).\n" +"The [param axis] must be a normalized vector.\n" +"This method is an optimized version of multiplying the given transform " +"[code]X[/code]\n" +"with a corresponding rotation transform [code]R[/code] from the right, i.e., " +"[code]X * R[/code].\n" +"This can be seen as transforming with respect to the local frame." +msgstr "" +"返回该变换的副本,该副本围绕给定的 [param axis] 轴进行了夹角为 [parma angle] " +"的旋转操作(单位为弧度)。\n" +"[param axis] 必须为归一化的向量。\n" +"这个方法的结果和让 [code]X[/code] 变换与相应的旋转变换 [code]R[/code]\n" +"从右侧相乘一致,即 [code]R * X[/code],但进行了优化。\n" +"可以视作在局部坐标系中的变换。" + msgid "" "The basis is a matrix containing 3 [Vector3] as its columns: X axis, Y axis, " "and Z axis. These vectors can be interpreted as the basis vectors of local " @@ -59358,6 +75494,24 @@ msgstr "" "没有应用平移、旋转、缩放的 [Transform3D]。当应用于其他数据结构时,[constant " "IDENTITY] 不执行变换。" +msgid "Transforms (multiplies) the [AABB] by the given [Transform3D] matrix." +msgstr "使用给定的 [Transform3D] 矩阵对 [AABB] 进行变换(相乘)。" + +msgid "" +"Transforms (multiplies) each element of the [Vector3] array by the given " +"[Transform3D] matrix." +msgstr "" +"使用给定的 [Transform3D] 矩阵对 [Vector3] 数组中的每个元素进行变换(相乘)。" + +msgid "" +"Transforms (multiplies) the [Plane] by the given [Transform3D] " +"transformation matrix." +msgstr "使用给定的 [Transform3D] 矩阵对 [Plane] 进行变换(相乘)。" + +msgid "" +"Transforms (multiplies) the [Vector3] by the given [Transform3D] matrix." +msgstr "使用给定的 [Transform3D] 矩阵对 [Vector3] 进行变换(相乘)。" + msgid "Language Translation." msgstr "语言翻译。" @@ -59407,6 +75561,13 @@ msgstr "添加一个 [Translation] 资源。" msgid "Clears the server from all translations." msgstr "清除服务器中的所有翻译。" +msgid "" +"Compares two locales and return similarity score between [code]0[/code](no " +"match) and [code]10[/code](full match)." +msgstr "" +"比较两个区域设置,返回 [code]0[/code](不匹配)和 [code]10[/code](完全匹配)" +"之间的相似度得分。" + msgid "Returns array of known country codes." msgstr "返回已知地区代码的数组。" @@ -59452,9 +75613,34 @@ msgstr "" "返回编辑器的当前区域设置。\n" "[b]注意:[/b]从导出后的项目中调用时,返回值与 [method get_locale] 相同。" +msgid "" +"Returns the pseudolocalized string based on the [param message] passed in." +msgstr "根据传入的 [param message] 返回伪本地化字符串。" + +msgid "Reparses the pseudolocalization options and reloads the translation." +msgstr "重新解析伪本地化选项,并重新加载翻译。" + msgid "Removes the given translation from the server." msgstr "从服务器中删除给定的翻译。" +msgid "" +"Sets the locale of the project. The [param locale] string will be " +"standardized to match known locales (e.g. [code]en-US[/code] would be " +"matched to [code]en_US[/code]).\n" +"If translations have been loaded beforehand for the new locale, they will be " +"applied." +msgstr "" +"设置项目的区域设置。[param locale] 字符串将被标准化,以匹配已知的区域设置(例" +"如 [code]en-US[/code] 将与 [code]en_US[/code] 匹配)。\n" +"如果已经为新区域设置预先加载了翻译,则它们将被应用。" + +msgid "" +"Returns [param locale] string standardized to match known locales (e.g. " +"[code]en-US[/code] would be matched to [code]en_US[/code])." +msgstr "" +"返回标准化的 [param locale] 字符串,以匹配已知的语言环境(例如 [code]en-US[/" +"code] 将与 [code]en_US[/code] 匹配)。" + msgid "Control to show a tree of items." msgstr "以树状形式显示项目的控件。" @@ -59462,6 +75648,21 @@ msgid "Clears the tree. This removes all items." msgstr "清除树。这将删除所有项目。" msgid "" +"Creates an item in the tree and adds it as a child of [param parent], which " +"can be either a valid [TreeItem] or [code]null[/code].\n" +"If [param parent] is [code]null[/code], the root item will be the parent, or " +"the new item will be the root itself if the tree is empty.\n" +"The new item will be the [param index]-th child of parent, or it will be the " +"last child if there are not enough siblings." +msgstr "" +"在树中创建一个项,并将其添加为父项 [param parent] 的子项,该父项可以是一个有" +"效的 [TreeItem] 或 [code]null[/code]。\n" +"如果 [param parent] 为 [code]null[/code],则根项将是父项;或者如果该树为空," +"则该新项将是根本身。\n" +"新项将是父项的第 [param index] 个子项,如果没有足够的同级项,它将是最后一个子" +"项。" + +msgid "" "Edits the selected tree item as if it was clicked. The item must be set " "editable with [method TreeItem.set_editable]. Returns [code]true[/code] if " "the item could be edited. Fails if no item is selected." @@ -59484,6 +75685,16 @@ msgstr "" "[b]注意:[/b]尽管这个方法的名称是这样的,但焦点光标本身只在 [constant " "SELECT_MULTI] 模式下可见。" +msgid "Returns the button ID at [param position], or -1 if no button is there." +msgstr "返回位于 [param position] 的按钮 ID,如果没有按钮则返回 -1。" + +msgid "" +"Returns the column index at [param position], or -1 if no item is there." +msgstr "返回位于 [param position] 的列索引,如果没有项目则返回 -1。" + +msgid "Returns the expand ratio assigned to the column." +msgstr "返回分配给该列的扩展比例。" + msgid "Returns the column's title." msgstr "返回该列的标题。" @@ -59511,6 +75722,15 @@ msgid "" "position)." msgstr "返回指定位置,即相对于树的原点位置的树中项。" +msgid "" +"Returns the next selected [TreeItem] after the given one, or [code]null[/" +"code] if the end is reached.\n" +"If [param from] is [code]null[/code], this returns the first selected item." +msgstr "" +"返回给定的 [TreeItem] 之后的下一个选中项,如果到达末尾,则返回 [code]null[/" +"code]。\n" +"如果 [param from] 为 [code]null[/code],则将返回第一个被选中的项。" + msgid "Returns the last pressed button's index." msgstr "返回最后按下的按钮的索引。" @@ -59553,6 +75773,16 @@ msgstr "" msgid "Causes the [Tree] to jump to the specified [TreeItem]." msgstr "使 [Tree] 跳转到指定的 [TreeItem]。" +msgid "" +"Overrides the calculated minimum width of a column. It can be set to " +"[code]0[/code] to restore the default behavior. Columns that have the " +"\"Expand\" flag will use their \"min_width\" in a similar fashion to [member " +"Control.size_flags_stretch_ratio]." +msgstr "" +"覆盖某一列的计算的最小宽度。它可以被设置为 [code]0[/code] 以恢复默认行为。具" +"有“扩展”标志的列将以与 [member Control.size_flags_stretch_ratio] 类似的方式使" +"用它们的最小宽度“min_width”。" + msgid "Sets the title of a column." msgstr "设置某一列的标题。" @@ -60057,6 +76287,17 @@ msgid "" "none." msgstr "返回树中的下一个兄弟 TreeItem,如果没有,则返回一个空对象。" +msgid "" +"Returns the next visible sibling TreeItem in the tree or a null object if " +"there is none.\n" +"If [param wrap] is enabled, the method will wrap around to the first visible " +"element in the tree when called on the last visible element, otherwise it " +"returns [code]null[/code]." +msgstr "" +"返回树中下一个可见的同级 TreeItem,如果不存在则返回 null 对象。\n" +"如果启用了 [param wrap],则当在最后一个可见元素调用时,该方法将环绕到树中的第" +"一个可见元素,否则它将返回 [code]null[/code]。" + msgid "Returns the parent TreeItem or a null object if there is none." msgstr "返回父级 TreeItem,如果没有,则返回一个空对象。" @@ -60065,6 +76306,17 @@ msgid "" "is none." msgstr "返回树中的前一个兄弟 TreeItem,如果没有,则返回一个空对象。" +msgid "" +"Returns the previous visible sibling TreeItem in the tree or a null object " +"if there is none.\n" +"If [param wrap] is enabled, the method will wrap around to the last visible " +"element in the tree when called on the first visible element, otherwise it " +"returns [code]null[/code]." +msgstr "" +"返回树中前一个可见的同级 TreeItem,如果不存在则返回 null 对象。\n" +"如果启用了 [param wrap],则在第一个可见元素上调用时,该方法将环绕到树中的最后" +"一个可见元素,否则它将返回 [code]null[/code]。" + msgid "Returns the value of a [constant CELL_MODE_RANGE] column." msgstr "返回 [constant CELL_MODE_RANGE] 列的值。" @@ -60088,6 +76340,13 @@ msgstr "设置给定列的工具提示文本。" msgid "Returns the [Tree] that owns this TreeItem." msgstr "返回拥有此 TreeItem 的 [Tree]。" +msgid "" +"Returns [code]true[/code] if the button at index [param button_index] for " +"the given [param column] is disabled." +msgstr "" +"如果给定列 [param column] 上索引为 [param button_index] 的按钮被禁用,则返回 " +"[code]true[/code]。" + msgid "Returns [code]true[/code] if the given [param column] is checked." msgstr "如果给定的列 [param column] 被勾选,则返回 [code]true[/code]。" @@ -60209,6 +76468,16 @@ msgstr "" msgid "Sets the value of a [constant CELL_MODE_RANGE] column." msgstr "设置 [constant CELL_MODE_RANGE] 列的值。" +msgid "" +"Sets the range of accepted values for a column. The column must be in the " +"[constant CELL_MODE_RANGE] mode.\n" +"If [param expr] is [code]true[/code], the edit mode slider will use an " +"exponential scale as with [member Range.exp_edit]." +msgstr "" +"设置列的可接受值的范围。该列必须处于 [constant CELL_MODE_RANGE] 模式。\n" +"如果 [param expr] 为 [code]true[/code],则编辑模式滑块将使用与 [member Range." +"exp_edit] 一样的指数刻度。" + msgid "If [code]true[/code], the given column is selectable." msgstr "如果为 [code]true[/code],给定的列是可选中的。" @@ -60220,6 +76489,11 @@ msgstr "设置字符串,显示在列的值之后(例如,单位的缩写) msgid "Sets the given column's text value." msgstr "设置给定列的文本值。" +msgid "" +"Sets the given column's text alignment. See [enum HorizontalAlignment] for " +"possible values." +msgstr "设置给定列的文本对齐方式。可能的值见 [enum HorizontalAlignment]。" + msgid "Sets the given column's tooltip text." msgstr "设置给定列的工具提示文本。" @@ -60316,24 +76590,6 @@ msgstr "" "[/codeblocks]" msgid "" -"Processes the [Tween] by the given [param delta] value, in seconds. This is " -"mostly useful for manual control when the [Tween] is paused. It can also be " -"used to end the [Tween] animation immediately, by setting [param delta] " -"longer than the whole duration of the [Tween] animation.\n" -"Returns [code]true[/code] if the [Tween] still has [Tweener]s that haven't " -"finished.\n" -"[b]Note:[/b] The [Tween] will become invalid in the next processing frame " -"after its animation finishes. Calling [method stop] after performing [method " -"custom_step] instead keeps and resets the [Tween]." -msgstr "" -"使用给定的增量秒数 [param delta] 处理该 [Tween]。最常见的用法是在该 [Tween] " -"暂停时对其进行手动控制。也可用于立即停止该 [Tween] 的动画,将 [param delta] " -"设得比完整长度更大即可。\n" -"如果该 [Tween] 仍然有未完成的 [Tweener],则返回 [code]true[/code]。\n" -"[b]注意:[/b]该 [Tween] 完成动画后,会在下一个处理帧中失效。你可以在执行 " -"[method custom_step] 后调用 [method stop] 将该 [Tween] 保留并重置。" - -msgid "" "Returns the total time in seconds the [Tween] has been animating (i.e. the " "time since it started, not counting pauses etc.). The time is affected by " "[method set_speed_scale], and [method stop] will reset it to [code]0[/" @@ -60444,6 +76700,15 @@ msgid "Resumes a paused or stopped [Tween]." msgstr "恢复已暂停或已停止的 [Tween]。" msgid "" +"Sets the default ease type for [PropertyTweener]s and [MethodTweener]s " +"animated by this [Tween].\n" +"If not specified, the default value is [constant EASE_IN_OUT]." +msgstr "" +"设置 [PropertyTweener] 的默认缓动类型,[MethodTweener] 由该 [Tween] 设置动" +"画。\n" +"如果未指定,默认值为 [constant EASE_IN_OUT]。" + +msgid "" "Sets the number of times the tweening sequence will be repeated, i.e. " "[code]set_loops(2)[/code] will run the animation twice.\n" "Calling this method without arguments will make the [Tween] run infinitely, " @@ -60495,6 +76760,15 @@ msgid "" msgstr "补间的速度缩放。影响所有 [Tweener] 及其延迟。" msgid "" +"Sets the default transition type for [PropertyTweener]s and [MethodTweener]s " +"animated by this [Tween].\n" +"If not specified, the default value is [constant TRANS_LINEAR]." +msgstr "" +"为此 [Tween] 设置动画化的 [PropertyTweener] 和 [MethodTweener] 的默认过渡类" +"型。\n" +"如果未指定,则默认值为 [constant TRANS_LINEAR]。" + +msgid "" "Stops the tweening and resets the [Tween] to its initial state. This will " "not remove any appended [Tweener]s." msgstr "停止补间,并将该 [Tween] 重置为初始状态。不会移除已追加的 [Tweener]。" @@ -60838,18 +77112,6 @@ msgstr "" "[/codeblocks]" msgid "" -"Emitted when the [Tween] has finished all tweening. Never emitted when the " -"[Tween] is set to infinite looping (see [method set_loops]).\n" -"[b]Note:[/b] The [Tween] is removed (invalidated) in the next processing " -"frame after this signal is emitted. Calling [method stop] inside the signal " -"callback will prevent the [Tween] from being removed." -msgstr "" -"在该 [Tween] 完成所有补间时触发。该 [Tween] 被设为无限循环时不会触发(见 " -"[method set_loops])。\n" -"[b]注意:[/b]触发这个信号后,该 [Tween] 会在下一个处理帧中被移除(置为无" -"效)。在该信号的回调中调用 [method stop] 可以防止该 [Tween] 被移除。" - -msgid "" "Emitted when a full loop is complete (see [method set_loops]), providing the " "loop index. This signal is not emitted after the final loop, use [signal " "finished] instead for this case." @@ -60959,257 +77221,6 @@ 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 "" @@ -61221,6 +77232,14 @@ msgid "" msgstr "如果套接字是打开的,并且在监听端口,则返回 [code]true[/code]。" msgid "" +"Starts the server by opening a UDP socket listening on the given [param " +"port]. You can optionally specify a [param bind_address] to only listen for " +"packets sent to that address. See also [method PacketPeerUDP.bind]." +msgstr "" +"启动服务器,打开监听给定端口 [param port] 的 UDP 套接字。还可以指定 [param " +"bind_address],仅监听发送至该地址的数据包。另见 [method PacketPeerUDP.bind]。" + +msgid "" "Call this method at regular intervals (e.g. inside [method Node._process]) " "to process new packets. And packet from known address/port pair will be " "delivered to the appropriate [PacketPeerUDP], any packet received from an " @@ -61265,6 +77284,131 @@ msgstr "" msgid "Helper to manage undo/redo operations in the editor or custom tools." msgstr "在编辑器或自定义工具中管理撤销及重做操作的辅助工具。" +msgid "" +"Helper to manage undo/redo operations in the editor or custom tools. It " +"works by registering methods and property changes inside \"actions\".\n" +"Common behavior is to create an action, then add do/undo calls to functions " +"or property changes, then committing the action.\n" +"Here's an example on how to add an action to the Godot editor's own " +"[UndoRedo], from a plugin:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var undo_redo = get_undo_redo() # Method of EditorPlugin.\n" +"\n" +"func do_something():\n" +" pass # Put your code here.\n" +"\n" +"func undo_something():\n" +" pass # Put here the code that reverts what's done by " +"\"do_something()\".\n" +"\n" +"func _on_my_button_pressed():\n" +" var node = get_node(\"MyNode2D\")\n" +" undo_redo.create_action(\"Move the node\")\n" +" undo_redo.add_do_method(self, \"do_something\")\n" +" undo_redo.add_undo_method(self, \"undo_something\")\n" +" undo_redo.add_do_property(node, \"position\", Vector2(100,100))\n" +" undo_redo.add_undo_property(node, \"position\", node.position)\n" +" undo_redo.commit_action()\n" +"[/gdscript]\n" +"[csharp]\n" +"private UndoRedo _undoRedo;\n" +"\n" +"public override void _Ready()\n" +"{\n" +" _undoRedo = GetUndoRedo(); // Method of EditorPlugin.\n" +"}\n" +"\n" +"public void DoSomething()\n" +"{\n" +" // Put your code here.\n" +"}\n" +"\n" +"public void UndoSomething()\n" +"{\n" +" // Put here the code that reverts what's done by \"DoSomething()\".\n" +"}\n" +"\n" +"private void OnMyButtonPressed()\n" +"{\n" +" var node = GetNode<Node2D>(\"MyNode2D\");\n" +" _undoRedo.CreateAction(\"Move the node\");\n" +" _undoRedo.AddDoMethod(new Callable(this, MethodName.DoSomething));\n" +" _undoRedo.AddUndoMethod(new Callable(this, MethodName.UndoSomething));\n" +" _undoRedo.AddDoProperty(node, \"position\", new Vector2(100, 100));\n" +" _undoRedo.AddUndoProperty(node, \"position\", node.Position);\n" +" _undoRedo.CommitAction();\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[method create_action], [method add_do_method], [method add_undo_method], " +"[method add_do_property], [method add_undo_property], and [method " +"commit_action] should be called one after the other, like in the example. " +"Not doing so could lead to crashes.\n" +"If you don't need to register a method, you can leave [method add_do_method] " +"and [method add_undo_method] out; the same goes for properties. You can also " +"register more than one method/property." +msgstr "" +"在编辑器或自定义工具中管理撤销及重做操作的辅助工具。它的工作原理是" +"在“action”(动作)中注册方法和属性更改。\n" +"常见行为是创建一个动作,然后添加对函数或属性更改的执行及撤消调用,然后提交该" +"动作。\n" +"这是一个关于如何从插件向 Godot 编辑器拥有的 [UndoRedo] 添加一个动作的示例:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var undo_redo = get_undo_redo() # EditorPlugin 的方法。\n" +"\n" +"func do_something():\n" +" pass # 在此处添加你的代码。\n" +"\n" +"func undo_something():\n" +" pass # 在此处添加用于恢复“do_something()”所做修改的代码。\n" +"\n" +"func _on_my_button_pressed():\n" +" var node = get_node(\"MyNode2D\")\n" +" undo_redo.create_action(\"移动节点\")\n" +" undo_redo.add_do_method(self, \"do_something\")\n" +" undo_redo.add_undo_method(self, \"undo_something\")\n" +" undo_redo.add_do_property(node, \"position\", Vector2(100,100))\n" +" undo_redo.add_undo_property(node, \"position\", node.position)\n" +" undo_redo.commit_action()\n" +"[/gdscript]\n" +"[csharp]\n" +"private UndoRedo _undoRedo;\n" +"\n" +"public override void _Ready()\n" +"{\n" +" _undoRedo = GetUndoRedo(); // EditorPlugin 的方法。\n" +"}\n" +"\n" +"public void DoSomething()\n" +"{\n" +" // 在此处添加你的代码。\n" +"}\n" +"\n" +"public void UndoSomething()\n" +"{\n" +" // 在此处添加用于恢复“do_something()”所做修改的代码。\n" +"}\n" +"\n" +"private void OnMyButtonPressed()\n" +"{\n" +" var node = GetNode<Node2D>(\"MyNode2D\");\n" +" _undoRedo.CreateAction(\"移动节点\");\n" +" _undoRedo.AddDoMethod(new Callable(this, MethodName.DoSomething));\n" +" _undoRedo.AddUndoMethod(new Callable(this, MethodName.UndoSomething));\n" +" _undoRedo.AddDoProperty(node, \"position\", new Vector2(100, 100));\n" +" _undoRedo.AddUndoProperty(node, \"position\", node.Position);\n" +" _undoRedo.CommitAction();\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[method create_action]、[method add_do_method]、[method add_undo_method]、" +"[method add_do_property]、[method add_undo_property]、和 [method " +"commit_action] 应该如示例所示依次调用。否则可能会导致崩溃。\n" +"如果不需要注册某个方法,可以省略 [method add_do_method] 和 [method " +"add_undo_method];属性也是如此。也可以注册多个方法/属性。" + msgid "Register a [Callable] that will be called when the action is committed." msgstr "注册 [Callable],会在提交动作时调用。" @@ -61281,6 +77425,27 @@ msgid "" "when the action is undone." msgstr "注册 [param property],会在撤销动作时将其值更改为 [param value]。" +msgid "" +"Commit the action. If [param execute] is [code]true[/code] (which it is by " +"default), all \"do\" methods/properties are called/set when this function is " +"called." +msgstr "" +"提交动作。如果 [param execute] 为 [code]true[/code](默认情况),则会在调用此" +"函数时调用/设置所有“执行(do)”方法/属性。" + +msgid "" +"Create a new action. After this is called, do all your calls to [method " +"add_do_method], [method add_undo_method], [method add_do_property], and " +"[method add_undo_property], then commit the action with [method " +"commit_action].\n" +"The way actions are merged is dictated by [param merge_mode]. See [enum " +"MergeMode] for details." +msgstr "" +"新建动作。调用此方法后,请执行所有对 [method add_do_method]、[method " +"add_undo_method]、[method add_do_property]、[method add_undo_property] 的调" +"用,然后使用 [method commit_action] 提交这个动作。\n" +"合并操作的方式由 [param merge_mode] 决定。详情见 [enum MergeMode]。" + msgid "Gets the action name from its index." msgstr "根据索引获取动作名称。" @@ -61833,9 +77998,35 @@ msgstr "[VBoxContainer] 的元素之间的垂直空间。" msgid "Vector used for 2D math using floating point coordinates." msgstr "浮点数坐标向量,用于 2D 数学。" +msgid "" +"2-element structure that can be used to represent positions in 2D space or " +"any other pair of numeric values.\n" +"It uses floating-point coordinates. By default, these floating-point values " +"use 32-bit precision, unlike [float] which is always 64-bit. If double " +"precision is needed, compile the engine with the option " +"[code]precision=double[/code].\n" +"See [Vector2i] for its integer counterpart.\n" +"[b]Note:[/b] In a boolean context, a Vector2 will evaluate to [code]false[/" +"code] if it's equal to [code]Vector2(0, 0)[/code]. Otherwise, a Vector2 will " +"always evaluate to [code]true[/code]." +msgstr "" +"双元素结构,可用于表示 2D 空间中的坐标或其他任何一对数值。\n" +"使用的是浮点数坐标。默认情况下,这些浮点值的精度为 32 位,和始终为 64 位的 " +"[float] 存在区别。如果需要双精度,请使用 [code]precision=double[/code] 选项编" +"译引擎。\n" +"对应的整数版本见 [Vector2i]。\n" +"[b]注意:[/b]在布尔语境中,如果 Vector2 等于 [code]Vector2(0, 0)[/code],求值" +"结果即为 [code]false[/code]。否则,Vector2 的求值结果始终为 [code]true[/" +"code]。" + msgid "3Blue1Brown Essence of Linear Algebra" msgstr "3Blue1Brown《线性代数的本质》" +msgid "" +"Constructs a default-initialized [Vector2] with all components set to " +"[code]0[/code]." +msgstr "构造默认初始化的 [Vector2],所有分量均为 [code]0[/code]。" + msgid "Constructs a [Vector2] as a copy of the given [Vector2]." msgstr "构造给定 [Vector2] 的副本。" @@ -61847,26 +78038,173 @@ msgstr "从给定的 [param x] 和 [param y] 构造新的 [Vector2]。" msgid "" "Returns a new vector with all components in absolute values (i.e. positive)." -msgstr "返回一个新的向量,其所有分量都是绝对值,即正值。" +msgstr "返回一个新向量,其所有分量都是绝对值,即正值。" + +msgid "" +"Returns this vector's angle with respect to the positive X axis, or [code]" +"(1, 0)[/code] vector, in radians.\n" +"For example, [code]Vector2.RIGHT.angle()[/code] will return zero, " +"[code]Vector2.DOWN.angle()[/code] will return [code]PI / 2[/code] (a quarter " +"turn, or 90 degrees), and [code]Vector2(1, -1).angle()[/code] will return " +"[code]-PI / 4[/code] (a negative eighth turn, or -45 degrees).\n" +"[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/" +"vector2_angle.png]Illustration of the returned angle.[/url]\n" +"Equivalent to the result of [method @GlobalScope.atan2] when called with the " +"vector's [member y] and [member x] as parameters: [code]atan2(y, x)[/code]." +msgstr "" +"返回该向量与 X 轴正方向的夹角,单位为弧度。X 轴正方向为 [code](1, 0)[/code] " +"向量。\n" +"例如,[code]Vector2.RIGHT.angle()[/code] 将返回 0,[code]Vector2.DOWN.angle()" +"[/code] 将返回 [code]PI / 2[/code](四分之一圈,即 90 度),[code]Vector2(1, " +"-1).angle()[/code] 将返回 [code]-PI / 4[/code](负八分之一圈,即 -45 度)。\n" +"[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/" +"vector2_angle.png]返回夹角图示。[/url]\n" +"相当于使用该向量的 [member y] 和 [member x] 作为参数对 [method @GlobalScope." +"atan2] 进行调用的结果:[code]atan2(y, x)[/code]。" msgid "" "Returns the angle to the given vector, in radians.\n" "[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/" "vector2_angle_to.png]Illustration of the returned angle.[/url]" msgstr "" -"返回与给定向量的角度,单位为弧度。\n" +"返回与给定向量的夹角,单位为弧度。\n" +"[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/" +"vector2_angle_to.png]返回夹角图示。[/url]" + +msgid "" +"Returns the angle between the line connecting the two points and the X axis, " +"in radians.\n" +"[code]a.angle_to_point(b)[/code] is equivalent of doing [code](b - a).angle()" +"[/code].\n" +"[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/" +"vector2_angle_to_point.png]Illustration of the returned angle.[/url]" +msgstr "" +"返回连接两点的直线与 X 轴之间的夹角,单位为弧度。\n" +"[code]a.angle_to_point(b)[/code] 等价于 [code](b - a).angle()[/code]。\n" "[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/" -"vector2_angle_to.png]返回角度的说明。[/url]" +"vector2_angle_to_point.png]返回夹角图示。[/url]" msgid "" "Returns the aspect ratio of this vector, the ratio of [member x] to [member " "y]." -msgstr "返回这个向量的长宽比,即 [member x] 与 [member y] 的比例。" +msgstr "返回该向量的长宽比,即 [member x] 与 [member y] 的比例。" + +msgid "" +"Returns the derivative at the given [param t] on the [url=https://en." +"wikipedia.org/wiki/B%C3%A9zier_curve]Bézier curve[/url] defined by this " +"vector and the given [param control_1], [param control_2], and [param end] " +"points." +msgstr "" +"返回[url=https://zh.wikipedia.org/zh-cn/%E8%B2%9D%E8%8C%B2%E6%9B%B2%E7%B7%9A]" +"贝赛尔曲线[/url]上 [param t] 处的导数,该曲线由此向量和控制点 [param " +"control_1]、[param control_2]、终点 [param end] 定义。" + +msgid "" +"Returns the point at the given [param t] on the [url=https://en.wikipedia." +"org/wiki/B%C3%A9zier_curve]Bézier curve[/url] defined by this vector and the " +"given [param control_1], [param control_2], and [param end] points." +msgstr "" +"返回[url=https://zh.wikipedia.org/zh-cn/%E8%B2%9D%E8%8C%B2%E6%9B%B2%E7%B7%9A]" +"贝赛尔曲线[/url]上 [param t] 处的点,该曲线由此向量和控制点 [param " +"control_1]、[param control_2]、终点 [param end] 定义。" + +msgid "" +"Returns a new vector \"bounced off\" from a plane defined by the given " +"normal." +msgstr "返回从平面上“反弹”的向量,该平面由给定的法线定义。" msgid "" "Returns a new vector with all components rounded up (towards positive " "infinity)." -msgstr "返回一个新的向量,所有的分量都是四舍五入的,向正无穷大。" +msgstr "返回一个新向量,所有的分量都是向上舍入(正无穷大方向)。" + +msgid "" +"Returns a new vector with all components clamped between the components of " +"[param min] and [param max], by running [method @GlobalScope.clamp] on each " +"component." +msgstr "" +"返回一个新向量,每个分量都使用 [method @GlobalScope.clamp] 限制在 [param " +"min] 和 [param max] 之间。" + +msgid "" +"Returns the 2D analog of the cross product for this vector and [param " +"with].\n" +"This is the signed area of the parallelogram formed by the two vectors. If " +"the second vector is clockwise from the first vector, then the cross product " +"is the positive area. If counter-clockwise, the cross product is the " +"negative area.\n" +"[b]Note:[/b] Cross product is not defined in 2D mathematically. This method " +"embeds the 2D vectors in the XY plane of 3D space and uses their cross " +"product's Z component as the analog." +msgstr "" +"返回该向量和 [param with] 的 2D 类比叉积。\n" +"这是由两个向量所形成的平行四边形的有符号面积。如果第二个向量是从第一个向量的" +"顺时针方向出发的,则叉积为正面积。如果是逆时针方向,则叉积为负面积。\n" +"[b]注意:[/b]数学中没有定义二维空间的叉乘。此方法是将 2D 向量嵌入到 3D 空间" +"的 XY 平面中,并使用它们的叉积的 Z 分量作为类比。" + +msgid "" +"Cubically interpolates between this vector and [param b] using [param pre_a] " +"and [param post_b] as handles, and returns the result at position [param " +"weight]. [param weight] is on the range of 0.0 to 1.0, representing the " +"amount of interpolation." +msgstr "" +"返回该向量和 [param b] 之间进行三次插值 [param weight] 处的结果,使用 [param " +"pre_a] 和 [param post_b] 作为控制柄。[param weight] 在 0.0 到 1.0 的范围内," +"代表插值的量。" + +msgid "" +"Cubically interpolates between this vector and [param b] using [param pre_a] " +"and [param post_b] as handles, and returns the result at position [param " +"weight]. [param weight] is on the range of 0.0 to 1.0, representing the " +"amount of interpolation.\n" +"It can perform smoother interpolation than [code]cubic_interpolate()[/code] " +"by the time values." +msgstr "" +"返回该向量和 [param b] 之间进行三次插值 [param weight] 处的结果,使用 [param " +"pre_a] 和 [param post_b] 作为控制柄。[param weight] 在 0.0 到 1.0 的范围内," +"代表插值的量。\n" +"通过使用时间值,可以比 [code]cubic_interpolate()[/code] 进行更平滑的插值。" + +msgid "" +"Returns the normalized vector pointing from this vector to [param to]. This " +"is equivalent to using [code](b - a).normalized()[/code]." +msgstr "" +"返回从该向量指向 [param to] 的归一化向量。相当于使用 [code](b - a)." +"normalized()[/code]。" + +msgid "" +"Returns the squared distance between this vector and [param to].\n" +"This method runs faster than [method distance_to], so prefer it if you need " +"to compare vectors or need the squared distance for some formula." +msgstr "" +"返回该向量与 [param to] 之间的距离的平方。\n" +"该方法比 [method distance_to] 运行得更快,因此请在需要比较向量或者用于某些公" +"式的平方距离时,优先使用这个方法。" + +msgid "Returns the distance between this vector and [param to]." +msgstr "返回该向量与 [param to] 之间的距离。" + +msgid "" +"Returns the dot product of this vector and [param with]. This can be used to " +"compare the angle between two vectors. For example, this can be used to " +"determine whether an enemy is facing the player.\n" +"The dot product will be [code]0[/code] for a straight angle (90 degrees), " +"greater than 0 for angles narrower than 90 degrees and lower than 0 for " +"angles wider than 90 degrees.\n" +"When using unit (normalized) vectors, the result will always be between " +"[code]-1.0[/code] (180 degree angle) when the vectors are facing opposite " +"directions, and [code]1.0[/code] (0 degree angle) when the vectors are " +"aligned.\n" +"[b]Note:[/b] [code]a.dot(b)[/code] is equivalent to [code]b.dot(a)[/code]." +msgstr "" +"返回该向量与 [param with] 的点积。可用于比较两个向量之间的夹角。例如,可用于" +"确定敌人是否面向玩家。\n" +"直角(90 度)的点积为 [code]0[/code];大于 0 则夹角小于 90 度;小于 0 则夹角" +"大于 90 度。\n" +"使用(归一化的)单位向量时,如果向量朝向相反,则结果始终为 [code]-1.0[/code]" +"(180 度角);如果向量方向一致,则结果始终为 [code]1.0[/code](0 度角)。\n" +"[b]注意:[/b][code]a.dot(b)[/code] 等价于 [code]b.dot(a)[/code]。" msgid "" "Returns a new vector with all components rounded down (towards negative " @@ -61874,6 +78212,25 @@ msgid "" msgstr "返回一个新的向量,所有的向量都被四舍五入,向负无穷大。" msgid "" +"Creates a unit [Vector2] rotated to the given [param angle] in radians. This " +"is equivalent to doing [code]Vector2(cos(angle), sin(angle))[/code] or " +"[code]Vector2.RIGHT.rotated(angle)[/code].\n" +"[codeblock]\n" +"print(Vector2.from_angle(0)) # Prints (1, 0).\n" +"print(Vector2(1, 0).angle()) # Prints 0, which is the angle used above.\n" +"print(Vector2.from_angle(PI / 2)) # Prints (0, 1).\n" +"[/codeblock]" +msgstr "" +"创建单位 [Vector2] 并将其旋转到给定的 [param angle],单位为弧度。相当于执行 " +"[code]Vector2(cos(angle), sin(angle))[/code] 或 [code]Vector2.RIGHT." +"rotated(angle)[/code]。\n" +"[codeblock]\n" +"print(Vector2.from_angle(0)) # 输出 (1, 0)。\n" +"print(Vector2(1, 0).angle()) # 输出 0,即上一行所使用的角度。\n" +"print(Vector2.from_angle(PI / 2)) # 输出 (0, 1)。\n" +"[/codeblock]" + +msgid "" "Returns [code]true[/code] if this vector is finite, by calling [method " "@GlobalScope.is_finite] on each component." msgstr "" @@ -61886,6 +78243,16 @@ msgid "" msgstr "" "如果向量被归一化,返回 [code]true[/code],否则返回 [code]false[/code]。" +msgid "" +"Returns [code]true[/code] if this vector's values are approximately zero, by " +"running [method @GlobalScope.is_zero_approx] on each component.\n" +"This method is faster than using [method is_equal_approx] with one value as " +"a zero vector." +msgstr "" +"如果该向量的值大约为零,则返回 [code]true[/code],判断方法是对每个分量运行 " +"[method @GlobalScope.is_zero_approx]。\n" +"该方法比使用 [method is_equal_approx] 和零向量比较要快。" + msgid "Returns the length (magnitude) of this vector." msgstr "返回这个向量的长度,即大小。" @@ -61899,6 +78266,11 @@ msgstr "" "平方距离时,更喜欢用它。" msgid "" +"Returns the vector with a maximum length by limiting its length to [param " +"length]." +msgstr "返回应用了最大长度限制的向量,长度被限制到 [param length]。" + +msgid "" "Returns the axis of the vector's highest value. See [code]AXIS_*[/code] " "constants. If all components are equal, this method returns [constant " "AXIS_X]." @@ -61915,11 +78287,28 @@ msgstr "" "法返回 [constant AXIS_Y]。" msgid "" +"Returns a new vector moved toward [param to] by the fixed [param delta] " +"amount. Will not go past the final value." +msgstr "" +"返回一个新向量,该向量朝 [param to] 移动了固定的量 [param delta]。不会超过最" +"终值。" + +msgid "" +"Returns a new vector scaled to unit length. Equivalent to [code]v / v." +"length()[/code]." +msgstr "" +"返回一个新向量,该向量缩放到了单位长度。相当于 [code]v/v.length()[/code]。" + +msgid "" "Returns a perpendicular vector rotated 90 degrees counter-clockwise compared " "to the original, with the same length." msgstr "返回一个与原来相比逆时针旋转 90 度的垂直向量,长度不变。" msgid "" +"Returns the result of projecting the vector onto the given vector [param b]." +msgstr "返回将该向量投影到给定向量 [param b] 上的结果。" + +msgid "" "Returns a new vector with all components rounded to the nearest integer, " "with halfway cases rounded away from zero." msgstr "" @@ -62030,9 +78419,90 @@ msgstr "将该 [Vector2] 的每个分量除以给定的 [float]。" msgid "Divides each component of the [Vector2] by the given [int]." msgstr "将该 [Vector2] 的每个分量除以给定的 [int]。" +msgid "" +"Compares two [Vector2] vectors by first checking if the X value of the left " +"vector is less than the X value of the [param right] vector. If the X values " +"are exactly equal, then it repeats this check with the Y values of the two " +"vectors. This operator is useful for sorting vectors." +msgstr "" +"比较两个 [Vector2] 向量,首先检查左向量的 X 值是否小于 [param right] 向量的 " +"X 值。如果 X 值完全相等,则用相同的方法检查两个向量的 Y 值。该运算符可用于向" +"量排序。" + +msgid "" +"Compares two [Vector2] vectors by first checking if the X value of the left " +"vector is less than or equal to the X value of the [param right] vector. If " +"the X values are exactly equal, then it repeats this check with the Y values " +"of the two vectors. This operator is useful for sorting vectors." +msgstr "" +"比较两个 [Vector2] 向量,首先检查左向量的 X 值是否小于等于 [param right] 向量" +"的 X 值。如果 X 值完全相等,则用相同的方法检查两个向量的 Y 值。该运算符可用于" +"向量排序。" + +msgid "" +"Returns [code]true[/code] if the vectors 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 "" +"如果向量完全相等,则返回 [code]true[/code]。\n" +"[b]注意:[/b]由于浮点数精度误差,请考虑改用 [method is_equal_approx],会更可" +"靠。" + +msgid "" +"Compares two [Vector2] vectors by first checking if the X value of the left " +"vector is greater than the X value of the [param right] vector. If the X " +"values are exactly equal, then it repeats this check with the Y values of " +"the two vectors. This operator is useful for sorting vectors." +msgstr "" +"比较两个 [Vector2] 向量,首先检查左向量的 X 值是否大于 [param right] 向量的 " +"X 值。如果 X 值完全相等,则用相同的方法检查两个向量的 Y 值。该运算符可用于向" +"量排序。" + +msgid "" +"Compares two [Vector2] vectors by first checking if the X value of the left " +"vector is greater than or equal to the X value of the [param right] vector. " +"If the X values are exactly equal, then it repeats this check with the Y " +"values of the two vectors. This operator is useful for sorting vectors." +msgstr "" +"比较两个 [Vector2] 向量,首先检查左向量的 X 值是否大于等于 [param right] 向量" +"的 X 值。如果 X 值完全相等,则用相同的方法检查两个向量的 Y 值。该运算符可用于" +"向量排序。" + +msgid "" +"Access vector components using their [param index]. [code]v[0][/code] is " +"equivalent to [code]v.x[/code], and [code]v[1][/code] is equivalent to " +"[code]v.y[/code]." +msgstr "" +"使用向量分量的 [param index] 来访问向量分量。[code]v[0][/code] 等价于 " +"[code]v.x[/code]、[code]v[1][/code] 等价于 [code]v.y[/code]。" + msgid "Vector used for 2D math using integer coordinates." msgstr "整数坐标向量,用于 2D 数学。" +msgid "" +"2-element structure that can be used to represent positions in 2D space or " +"any other pair of numeric values.\n" +"It uses integer coordinates and is therefore preferable to [Vector2] when " +"exact precision is required. Note that the values are limited to 32 bits, " +"and unlike [Vector2] this cannot be configured with an engine build option. " +"Use [int] or [PackedInt64Array] if 64-bit values are needed.\n" +"[b]Note:[/b] In a boolean context, a Vector2i will evaluate to [code]false[/" +"code] if it's equal to [code]Vector2i(0, 0)[/code]. Otherwise, a Vector2i " +"will always evaluate to [code]true[/code]." +msgstr "" +"双元素结构,可用于表示 2D 空间中的坐标或其他任何一对数值。\n" +"使用的是整数坐标,因此相比于 [Vector2] 更适用于需要精确数值的场合。请注意其中" +"的值都是 32 位的,无法和 [Vector2] 一样通过引擎的构建选项进行配置。如果需要 " +"64 位的值,请使用 [int] 或者 [PackedInt64Array]。\n" +"[b]注意:[/b]在布尔语境中,如果 Vector2i 等于 [code]Vector2i(0, 0)[/code],求" +"值结果即为 [code]false[/code]。否则,Vector2i 的求值结果始终为 [code]true[/" +"code]。" + +msgid "" +"Constructs a default-initialized [Vector2i] with all components set to " +"[code]0[/code]." +msgstr "构造默认初始化的 [Vector2i],所有分量都为 [code]0[/code]。" + msgid "Constructs a [Vector2i] as a copy of the given [Vector2i]." msgstr "构造给定 [Vector2i] 的副本。" @@ -62122,10 +78592,74 @@ msgstr "" msgid "Divides each component of the [Vector2i] by the given [int]." msgstr "将该 [Vector2i] 的每个分量除以给定的 [int]。" +msgid "" +"Compares two [Vector2i] vectors by first checking if the X value of the left " +"vector is less than the X value of the [param right] vector. If the X values " +"are exactly equal, then it repeats this check with the Y values of the two " +"vectors. This operator is useful for sorting vectors." +msgstr "" +"比较两个 [Vector2i] 向量,首先检查左向量的 X 值是否小于 [param right] 向量的 " +"X 值。如果 X 值完全相等,则用相同的方法检查两个向量的 Y 值。该运算符可用于向" +"量排序。" + +msgid "" +"Compares two [Vector2i] vectors by first checking if the X value of the left " +"vector is less than or equal to the X value of the [param right] vector. If " +"the X values are exactly equal, then it repeats this check with the Y values " +"of the two vectors. This operator is useful for sorting vectors." +msgstr "" +"比较两个 [Vector2i] 向量,首先检查左向量的 X 值是否小于等于 [param right] 向" +"量的 X 值。如果 X 值完全相等,则用相同的方法检查两个向量的 Y 值。该运算符可用" +"于向量排序。" + +msgid "Returns [code]true[/code] if the vectors are equal." +msgstr "如果向量相等,则返回 [code]true[/code]。" + +msgid "" +"Compares two [Vector2i] vectors by first checking if the X value of the left " +"vector is greater than the X value of the [param right] vector. If the X " +"values are exactly equal, then it repeats this check with the Y values of " +"the two vectors. This operator is useful for sorting vectors." +msgstr "" +"比较两个 [Vector2i] 向量,首先检查左向量的 X 值是否大于 [param right] 向量的 " +"X 值。如果 X 值完全相等,则用相同的方法检查两个向量的 Y 值。该运算符可用于向" +"量排序。" + +msgid "" +"Compares two [Vector2i] vectors by first checking if the X value of the left " +"vector is greater than or equal to the X value of the [param right] vector. " +"If the X values are exactly equal, then it repeats this check with the Y " +"values of the two vectors. This operator is useful for sorting vectors." +msgstr "" +"比较两个 [Vector2i] 向量,首先检查左向量的 X 值是否大于等于 [param right] 向" +"量的 X 值。如果 X 值完全相等,则用相同的方法检查两个向量的 Y 值。该运算符可用" +"于向量排序。" + msgid "Vector used for 3D math using floating point coordinates." msgstr "浮点数坐标向量,用于 3D 数学。" msgid "" +"3-element structure that can be used to represent positions in 3D space or " +"any other triplet of numeric values.\n" +"It uses floating-point coordinates. By default, these floating-point values " +"use 32-bit precision, unlike [float] which is always 64-bit. If double " +"precision is needed, compile the engine with the option " +"[code]precision=double[/code].\n" +"See [Vector3i] for its integer counterpart.\n" +"[b]Note:[/b] In a boolean context, a Vector3 will evaluate to [code]false[/" +"code] if it's equal to [code]Vector3(0, 0, 0)[/code]. Otherwise, a Vector3 " +"will always evaluate to [code]true[/code]." +msgstr "" +"三元素结构,可用于表示 3D 空间中的坐标或其他任何数值三元组。\n" +"使用的是浮点数坐标。默认情况下,这些浮点值的精度为 32 位,和始终为 64 位的 " +"[float] 存在区别。如果需要双精度,请使用 [code]precision=double[/code] 选项编" +"译引擎。\n" +"对应的整数版本见 [Vector3i]。\n" +"[b]注意:[/b]在布尔语境中,如果 Vector3 等于 [code]Vector3(0, 0, 0)[/code]," +"求值结果即为 [code]false[/code]。否则,Vector3 的求值结果始终为 [code]true[/" +"code]。" + +msgid "" "Constructs a default-initialized [Vector3] with all components set to " "[code]0[/code]." msgstr "构造默认初始化的 [Vector3],所有分量都设置为 [code]0[/code]。" @@ -62150,6 +78684,29 @@ msgid "Returns the cross product of this vector and [param with]." msgstr "返回该向量与 [param with] 的叉积。" msgid "" +"Performs a cubic interpolation between this vector and [param b] using " +"[param pre_a] and [param post_b] as handles, and returns the result at " +"position [param weight]. [param weight] is on the range of 0.0 to 1.0, " +"representing the amount of interpolation." +msgstr "" +"返回该向量和 [param b] 之间进行三次插值 [param weight] 处的结果,使用 [param " +"pre_a] 和 [param post_b] 作为控制柄。[param weight] 在 0.0 到 1.0 的范围内," +"代表插值的量。" + +msgid "" +"Performs a cubic interpolation between this vector and [param b] using " +"[param pre_a] and [param post_b] as handles, and returns the result at " +"position [param weight]. [param weight] is on the range of 0.0 to 1.0, " +"representing the amount of interpolation.\n" +"It can perform smoother interpolation than [code]cubic_interpolate()[/code] " +"by the time values." +msgstr "" +"返回该向量和 [param b] 之间进行三次插值 [param weight] 处的结果,使用 [param " +"pre_a] 和 [param post_b] 作为控制柄。[param weight] 在 0.0 到 1.0 的范围内," +"代表插值的量。\n" +"通过使用时间值,可以比 [code]cubic_interpolate()[/code] 进行更平滑的插值。" + +msgid "" "Returns the axis of the vector's lowest value. See [code]AXIS_*[/code] " "constants. If all components are equal, this method returns [constant " "AXIS_Z]." @@ -62157,6 +78714,29 @@ msgstr "" "返回该向量中最小值的轴。见 [code]AXIS_*[/code] 常量。如果所有分量相等,则该方" "法返回 [constant AXIS_Z]。" +msgid "" +"Returns the octahedral-encoded (oct32) form of this [Vector3] as a " +"[Vector2]. Since a [Vector2] occupies 1/3 less memory compared to [Vector3], " +"this form of compression can be used to pass greater amounts of [method " +"normalized] [Vector3]s without increasing storage or memory requirements. " +"See also [method octahedron_decode].\n" +"[b]Note:[/b] [method octahedron_encode] can only be used for [method " +"normalized] vectors. [method octahedron_encode] does [i]not[/i] check " +"whether this [Vector3] is normalized, and will return a value that does not " +"decompress to the original value if the [Vector3] is not normalized.\n" +"[b]Note:[/b] Octahedral compression is [i]lossy[/i], although visual " +"differences are rarely perceptible in real world scenarios." +msgstr "" +"将该 [Vector3] 的八面体编码(oct32)形式作为一个 [Vector2] 返回。由于 " +"[Vector2] 占用的内存比 [Vector3] 少 1/3,因此这种压缩形式可用于传递更多的 " +"[method normalized] [Vector3],而不会增加存储或内存需求。另见 [method " +"octahedron_decode]。\n" +"[b]注意:[/b][method octahedron_encode] 只能用于 [method normalized] 向量。" +"[method octahedron_encode] [i]不[/i]检查这个 [Vector3] 是否已归一化,如果该 " +"[Vector3] 没有被归一化,将返回一个不解压缩到原始值的值。\n" +"[b]注意:[/b]八面体压缩是[i]有损的[/i],尽管视觉差异在现实世界场景中很难被察" +"觉。" + msgid "Returns the outer product with [param with]." msgstr "返回与 [param with] 的外积。" @@ -62202,6 +78782,15 @@ msgid "" msgstr "使用给定的 [Basis] 矩阵逆变换(乘)该 [Vector3]。" msgid "" +"Inversely transforms (multiplies) the [Vector3] by the given [Quaternion]." +msgstr "使用给定的 [Quaternion] 对该 [Vector3] 进行逆变换(做乘法)。" + +msgid "" +"Inversely transforms (multiplies) the [Vector3] by the given [Transform3D] " +"transformation matrix." +msgstr "使用给定的 [Transform3D] 变换矩阵对该 [Vector3] 进行逆变换(做乘法)。" + +msgid "" "Multiplies each component of the [Vector3] by the components of the given " "[Vector3].\n" "[codeblock]\n" @@ -62255,9 +78844,77 @@ msgstr "将该 [Vector3] 的每个分量除以给定的 [float]。" msgid "Divides each component of the [Vector3] by the given [int]." msgstr "将该 [Vector3] 的每个分量除以给定的 [int]。" +msgid "" +"Compares two [Vector3] vectors by first checking if the X value of the left " +"vector is less than the X value of the [param right] vector. If the X values " +"are exactly equal, then it repeats this check with the Y values of the two " +"vectors, and then with the Z values. This operator is useful for sorting " +"vectors." +msgstr "" +"比较两个 [Vector3] 向量,首先检查左向量的 X 值是否小于 [param right] 向量的 " +"X 值。如果 X 值完全相等,则用相同的方法检查两个向量的 Y 值、Z 值。该运算符可" +"用于向量排序。" + +msgid "" +"Compares two [Vector3] vectors by first checking if the X value of the left " +"vector is less than or equal to the X value of the [param right] vector. If " +"the X values are exactly equal, then it repeats this check with the Y values " +"of the two vectors, and then with the Z values. This operator is useful for " +"sorting vectors." +msgstr "" +"比较两个 [Vector3] 向量,首先检查左向量的 X 值是否小于等于 [param right] 向量" +"的 X 值。如果 X 值完全相等,则用相同的方法检查两个向量的 Y 值、Z 值。该运算符" +"可用于向量排序。" + +msgid "" +"Compares two [Vector3] vectors by first checking if the X value of the left " +"vector is greater than the X value of the [param right] vector. If the X " +"values are exactly equal, then it repeats this check with the Y values of " +"the two vectors, and then with the Z values. This operator is useful for " +"sorting vectors." +msgstr "" +"比较两个 [Vector3] 向量,首先检查左向量的 X 值是否大于 [param right] 向量的 " +"X 值。如果 X 值完全相等,则用相同的方法检查两个向量的 Y 值、Z 值。该运算符可" +"用于向量排序。" + +msgid "" +"Compares two [Vector3] vectors by first checking if the X value of the left " +"vector is greater than or equal to the X value of the [param right] vector. " +"If the X values are exactly equal, then it repeats this check with the Y " +"values of the two vectors, and then with the Z values. This operator is " +"useful for sorting vectors." +msgstr "" +"比较两个 [Vector3] 向量,首先检查左向量的 X 值是否大于等于 [param right] 向量" +"的 X 值。如果 X 值完全相等,则用相同的方法检查两个向量的 Y 值、Z 值。该运算符" +"可用于向量排序。" + msgid "Vector used for 3D math using integer coordinates." msgstr "整数坐标向量,用于 3D 数学。" +msgid "" +"3-element structure that can be used to represent positions in 3D space or " +"any other triplet of numeric values.\n" +"It uses integer coordinates and is therefore preferable to [Vector3] when " +"exact precision is required. Note that the values are limited to 32 bits, " +"and unlike [Vector3] this cannot be configured with an engine build option. " +"Use [int] or [PackedInt64Array] if 64-bit values are needed.\n" +"[b]Note:[/b] In a boolean context, a Vector3i will evaluate to [code]false[/" +"code] if it's equal to [code]Vector3i(0, 0, 0)[/code]. Otherwise, a Vector3i " +"will always evaluate to [code]true[/code]." +msgstr "" +"三元素结构,可用于表示 3D 空间中的坐标或其他任何数值三元组。\n" +"使用的是整数坐标,因此相比于 [Vector3] 更适用于需要精确数值的场合。请注意其中" +"的值都是 32 位的,无法和 [Vector3] 一样通过引擎的构建选项进行配置。如果需要 " +"64 位的值,请使用 [int] 或者 [PackedInt64Array]。\n" +"[b]注意:[/b]在布尔语境中,如果 Vector3i 等于 [code]Vector3i(0, 0, 0)[/" +"code],求值结果即为 [code]false[/code]。否则,Vector3i 的求值结果始终为 " +"[code]true[/code]。" + +msgid "" +"Constructs a default-initialized [Vector3i] with all components set to " +"[code]0[/code]." +msgstr "构造默认初始化的 [Vector3i],所有分量都为 [code]0[/code]。" + msgid "Constructs a [Vector3i] as a copy of the given [Vector3i]." msgstr "构造给定 [Vector3i] 的副本。" @@ -62344,9 +79001,79 @@ msgstr "" msgid "Divides each component of the [Vector3i] by the given [int]." msgstr "将该 [Vector3i] 的每个分量除以给定的 [int]。" +msgid "" +"Compares two [Vector3i] vectors by first checking if the X value of the left " +"vector is less than the X value of the [param right] vector. If the X values " +"are exactly equal, then it repeats this check with the Y values of the two " +"vectors, and then with the Z values. This operator is useful for sorting " +"vectors." +msgstr "" +"比较两个 [Vector3i] 向量,首先检查左向量的 X 值是否小于 [param right] 向量的 " +"X 值。如果 X 值完全相等,则用相同的方法检查两个向量的 Y 值、Z 值。该运算符可" +"用于向量排序。" + +msgid "" +"Compares two [Vector3i] vectors by first checking if the X value of the left " +"vector is less than or equal to the X value of the [param right] vector. If " +"the X values are exactly equal, then it repeats this check with the Y values " +"of the two vectors, and then with the Z values. This operator is useful for " +"sorting vectors." +msgstr "" +"比较两个 [Vector3i] 向量,首先检查左向量的 X 值是否小于等于 [param right] 向" +"量的 X 值。如果 X 值完全相等,则用相同的方法检查两个向量的 Y 值、Z 值。该运算" +"符可用于向量排序。" + +msgid "" +"Compares two [Vector3i] vectors by first checking if the X value of the left " +"vector is greater than the X value of the [param right] vector. If the X " +"values are exactly equal, then it repeats this check with the Y values of " +"the two vectors, and then with the Z values. This operator is useful for " +"sorting vectors." +msgstr "" +"比较两个 [Vector3i] 向量,首先检查左向量的 X 值是否大于 [param right] 向量的 " +"X 值。如果 X 值完全相等,则用相同的方法检查两个向量的 Y 值、Z 值。该运算符可" +"用于向量排序。" + +msgid "" +"Compares two [Vector3i] vectors by first checking if the X value of the left " +"vector is greater than or equal to the X value of the [param right] vector. " +"If the X values are exactly equal, then it repeats this check with the Y " +"values of the two vectors, and then with the Z values. This operator is " +"useful for sorting vectors." +msgstr "" +"比较两个 [Vector3i] 向量,首先检查左向量的 X 值是否大于等于 [param right] 向" +"量的 X 值。如果 X 值完全相等,则用相同的方法检查两个向量的 Y 值、Z 值。该运算" +"符可用于向量排序。" + msgid "Vector used for 4D math using floating point coordinates." msgstr "浮点数坐标向量,用于 4D 数学。" +msgid "" +"4-element structure that can be used to represent any quadruplet of numeric " +"values.\n" +"It uses floating-point coordinates. By default, these floating-point values " +"use 32-bit precision, unlike [float] which is always 64-bit. If double " +"precision is needed, compile the engine with the option " +"[code]precision=double[/code].\n" +"See [Vector4i] for its integer counterpart.\n" +"[b]Note:[/b] In a boolean context, a Vector4 will evaluate to [code]false[/" +"code] if it's equal to [code]Vector4(0, 0, 0, 0)[/code]. Otherwise, a " +"Vector4 will always evaluate to [code]true[/code]." +msgstr "" +"四元素结构,可用于表示任何数值四元组。\n" +"使用的是浮点数坐标。默认情况下,这些浮点值的精度为 32 位,和始终为 64 位的 " +"[float] 存在区别。如果需要双精度,请使用 [code]precision=double[/code] 选项编" +"译引擎。\n" +"对应的整数版本见 [Vector4i]。\n" +"[b]注意:[/b]在布尔语境中,如果 Vector4 等于 [code]Vector4(0, 0, 0, 0)[/" +"code],求值结果即为 [code]false[/code]。否则,Vector4 的求值结果始终为 " +"[code]true[/code]。" + +msgid "" +"Constructs a default-initialized [Vector4] with all components set to " +"[code]0[/code]." +msgstr "构造默认初始化的 [Vector4],所有分量都为 [code]0[/code]。" + msgid "Constructs a [Vector4] as a copy of the given [Vector4]." msgstr "构造给定 [Vector4] 的副本。" @@ -62365,6 +79092,12 @@ msgid "" msgstr "如果该向量时归一化的,即长度等于 1,则返回 [code]true[/code]。" msgid "" +"Returns the squared length (squared magnitude) of this vector. This method " +"runs faster than [method length]." +msgstr "" +"返回该向量的平方长度(平方大小)。此方法比 [method length] 运行得更快。" + +msgid "" "Returns the axis of the vector's lowest value. See [code]AXIS_*[/code] " "constants. If all components are equal, this method returns [constant " "AXIS_W]." @@ -62459,9 +79192,71 @@ msgstr "" msgid "Divides each component of the [Vector4] by the given [int]." msgstr "将该 [Vector4] 的每个分量除以给定的 [int]。" +msgid "" +"Compares two [Vector4] vectors by first checking if the X value of the left " +"vector is less than the X value of the [param right] vector. If the X values " +"are exactly equal, then it repeats this check with the Y values of the two " +"vectors, Z values of the two vectors, and then with the W values. This " +"operator is useful for sorting vectors." +msgstr "" +"比较两个 [Vector4] 向量,首先检查左向量的 X 值是否小于 [param right] 向量的 " +"X 值。如果 X 值完全相等,则用相同的方法检查两个向量的 Y 值、Z 值、W 值。该运" +"算符可用于向量排序。" + +msgid "" +"Compares two [Vector4] vectors by first checking if the X value of the left " +"vector is less than or equal to the X value of the [param right] vector. If " +"the X values are exactly equal, then it repeats this check with the Y values " +"of the two vectors, Z values of the two vectors, and then with the W values. " +"This operator is useful for sorting vectors." +msgstr "" +"比较两个 [Vector4] 向量,首先检查左向量的 X 值是否小于等于 [param right] 向量" +"的 X 值。如果 X 值完全相等,则用相同的方法检查两个向量的 Y 值、Z 值、W 值。该" +"运算符可用于向量排序。" + +msgid "" +"Compares two [Vector4] vectors by first checking if the X value of the left " +"vector is greater than the X value of the [param right] vector. If the X " +"values are exactly equal, then it repeats this check with the Y values of " +"the two vectors, Z values of the two vectors, and then with the W values. " +"This operator is useful for sorting vectors." +msgstr "" +"比较两个 [Vector4] 向量,首先检查左向量的 X 值是否大于 [param right] 向量的 " +"X 值。如果 X 值完全相等,则用相同的方法检查两个向量的 Y 值、Z 值、W 值。该运" +"算符可用于向量排序。" + +msgid "" +"Compares two [Vector4] vectors by first checking if the X value of the left " +"vector is greater than or equal to the X value of the [param right] vector. " +"If the X values are exactly equal, then it repeats this check with the Y " +"values of the two vectors, Z values of the two vectors, and then with the W " +"values. This operator is useful for sorting vectors." +msgstr "" +"比较两个 [Vector4] 向量,首先检查左向量的 X 值是否大于 [param right] 向量的 " +"X 值。如果 X 值完全相等,则用相同的方法检查两个向量的 Y 值、Z 值、W 值。该运" +"算符可用于向量排序。" + msgid "Vector used for 4D math using integer coordinates." msgstr "整数坐标向量,用于 4D 数学。" +msgid "" +"4-element structure that can be used to represent 4D grid coordinates or " +"sets of integers.\n" +"It uses integer coordinates and is therefore preferable to [Vector4] when " +"exact precision is required. Note that the values are limited to 32 bits, " +"and unlike [Vector4] this cannot be configured with an engine build option. " +"Use [int] or [PackedInt64Array] if 64-bit values are needed." +msgstr "" +"四元素结构,可用于表示 4D 网格中的坐标或其他任何数值四元组。\n" +"使用的是整数坐标,因此相比于 [Vector4] 更适用于需要精确数值的场合。请注意其中" +"的值都是 32 位的,无法和 [Vector4] 一样通过引擎的构建选项进行配置。如果需要 " +"64 位的值,请使用 [int] 或者 [PackedInt64Array]。" + +msgid "" +"Constructs a default-initialized [Vector4i] with all components set to " +"[code]0[/code]." +msgstr "构造默认初始化的 [Vector4i],所有分量都为 [code]0[/code]。" + msgid "Constructs a [Vector4i] as a copy of the given [Vector4i]." msgstr "构造给定 [Vector4i] 的副本。" @@ -62556,9 +79351,104 @@ msgstr "" msgid "Divides each component of the [Vector4i] by the given [int]." msgstr "将该 [Vector4] 的每个分量除以给定的 [int]。" +msgid "" +"Compares two [Vector4i] vectors by first checking if the X value of the left " +"vector is less than the X value of the [param right] vector. If the X values " +"are exactly equal, then it repeats this check with the Y values of the two " +"vectors, Z values of the two vectors, and then with the W values. This " +"operator is useful for sorting vectors." +msgstr "" +"比较两个 [Vector4i] 向量,首先检查左向量的 X 值是否小于 [param right] 向量的 " +"X 值。如果 X 值完全相等,则用相同的方法检查两个向量的 Y 值、Z 值、W 值。该运" +"算符可用于向量排序。" + +msgid "" +"Compares two [Vector4i] vectors by first checking if the X value of the left " +"vector is less than or equal to the X value of the [param right] vector. If " +"the X values are exactly equal, then it repeats this check with the Y values " +"of the two vectors, Z values of the two vectors, and then with the W values. " +"This operator is useful for sorting vectors." +msgstr "" +"比较两个 [Vector4i] 向量,首先检查左向量的 X 值是否小于等于 [param right] 向" +"量的 X 值。如果 X 值完全相等,则用相同的方法检查两个向量的 Y 值、Z 值、W 值。" +"该运算符可用于向量排序。" + +msgid "Returns [code]true[/code] if the vectors are exactly equal." +msgstr "如果向量完全相等,则返回 [code]true[/code]。" + +msgid "" +"Compares two [Vector4i] vectors by first checking if the X value of the left " +"vector is greater than the X value of the [param right] vector. If the X " +"values are exactly equal, then it repeats this check with the Y values of " +"the two vectors, Z values of the two vectors, and then with the W values. " +"This operator is useful for sorting vectors." +msgstr "" +"比较两个 [Vector4i] 向量,首先检查左向量的 X 值是否大于 [param right] 向量的 " +"X 值。如果 X 值完全相等,则用相同的方法检查两个向量的 Y 值、Z 值、W 值。该运" +"算符可用于向量排序。" + +msgid "" +"Compares two [Vector4i] vectors by first checking if the X value of the left " +"vector is greater than or equal to the X value of the [param right] vector. " +"If the X values are exactly equal, then it repeats this check with the Y " +"values of the two vectors, Z values of the two vectors, and then with the W " +"values. This operator is useful for sorting vectors." +msgstr "" +"比较两个 [Vector4i] 向量,首先检查左向量的 X 值是否大于等于 [param right] 向" +"量的 X 值。如果 X 值完全相等,则用相同的方法检查两个向量的 Y 值、Z 值、W 值。" +"该运算符可用于向量排序。" + msgid "Physics body that simulates the behavior of a car." msgstr "模拟汽车行为的物理体。" +msgid "" +"This node implements all the physics logic needed to simulate a car. It is " +"based on the raycast vehicle system commonly found in physics engines. You " +"will need to add a [CollisionShape3D] for the main body of your vehicle and " +"add [VehicleWheel3D] nodes for the wheels. You should also add a " +"[MeshInstance3D] to this node for the 3D model of your car but this model " +"should not include meshes for the wheels. You should control the vehicle by " +"using the [member brake], [member engine_force], and [member steering] " +"properties and not change the position or orientation of this node " +"directly.\n" +"[b]Note:[/b] The origin point of your VehicleBody3D will determine the " +"center of gravity of your vehicle so it is better to keep this low and move " +"the [CollisionShape3D] and [MeshInstance3D] upwards.\n" +"[b]Note:[/b] This class has known issues and isn't designed to provide " +"realistic 3D vehicle physics. If you want advanced vehicle physics, you will " +"probably have to write your own physics integration using another " +"[PhysicsBody3D] class.\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 "" +"该节点实现了模拟汽车所需的所有物理逻辑。它基于物理引擎中常见的射线投射的车辆" +"系统。需要为车辆的主体添加一个 [CollisionShape3D],并为车轮添加 " +"[VehicleWheel3D] 节点。还应该为汽车的 3D 模型的节点添加一个 " +"[MeshInstance3D],但该模型不应包含车轮的网格。应该使用 [member brake]、" +"[member engine_force] 和 [member steering] 属性来控制车辆,而不是直接更改该节" +"点的位置或方向。\n" +"[b]注意:[/b]VehicleBody3D 的原点将决定车辆的重心,因此最好将其保持在较低位" +"置,并将 [CollisionShape3D] 和 [MeshInstance3D] 向上移动。\n" +"[b]注意:[/b]该类存在已知问题,并非旨在提供逼真的 3D 车辆物理效果。如果想要高" +"级的车辆物理,可能必须使用另一个 [PhysicsBody3D] 类来编写你自己的物理积分函" +"数。\n" +"[b]警告:[/b]如果缩放不一致,该节点可能无法按预期运行。请确保保持其缩放统一" +"(即在所有轴上相同),并改为更改其碰撞形状的大小。" + +msgid "" +"The steering angle for the vehicle. Setting this to a non-zero value will " +"result in the vehicle turning when it's moving. Wheels that have [member " +"VehicleWheel3D.use_as_steering] set to [code]true[/code] will automatically " +"be rotated.\n" +"[b]Note:[/b] This property is edited in the inspector in degrees. In code " +"the property is set in radians." +msgstr "" +"车辆的转向角。将该属性设置为非零值将导致车辆在移动时转弯。[member " +"VehicleWheel3D.use_as_steering] 设置为 [code]true[/code] 的车轮将自动旋转。\n" +"[b]注意:[/b]该属性在检查器中以度为单位进行编辑。在代码中,该属性以弧度单位设" +"置。" + msgid "Physics object that simulates the behavior of a wheel." msgstr "模拟车轮行为的物理对象。" @@ -62657,6 +79547,39 @@ msgstr "[FlowContainer] 的垂直版本。" msgid "Base resource for video streams." msgstr "视频流的基础资源。" +msgid "" +"Base resource type for all video streams. Classes that derive from " +"[VideoStream] can all be used as resource types to play back videos in " +"[VideoStreamPlayer]." +msgstr "" +"所有视频流的基础资源类型。派生自 [VideoStream] 的类都可以用作在 " +"[VideoStreamPlayer] 中播放视频的资源类型。" + +msgid "" +"Called when the video starts playing, to initialize and return a subclass of " +"[VideoStreamPlayback]." +msgstr "视频开始播放时调用,用于初始化并返回 [VideoStreamPlayback] 的子类。" + +msgid "" +"The video file path or URI that this [VideoStream] resource handles.\n" +"For [VideoStreamTheora], this filename should be an Ogg Theora video file " +"with the [code].ogv[/code] extension." +msgstr "" +"该 [VideoStream] 资源处理的视频文件路径或 URI。\n" +"对于 [VideoStreamTheora],这个文件名应该是 Ogg Theora 视频文件,扩展名为 " +"[code].ogv[/code]。" + +msgid "" +"Internal class used by [VideoStream] to manage playback state when played " +"from a [VideoStreamPlayer]." +msgstr "" +"[VideoStream] 使用的内部类,用于管理其在 [VideoStreamPlayer] 中的播放状态。" + +msgid "" +"This class is intended to be overridden by video decoder extensions with " +"custom implementations of [VideoStream]." +msgstr "该类旨在被具有 [VideoStream] 自定义实现的视频解码器扩展所覆盖。" + msgid "Returns the number of audio channels." msgstr "返回音频通道的数量。" @@ -62708,15 +79631,60 @@ msgstr "" "设置视频播放的暂停状态。[method _is_paused] 必须返回 [code]paused[/code]。设" "置 [member VideoStreamPlayer.paused] 时会被调用。" +msgid "" +"Stops playback. May be called multiple times before [method _play], or in " +"response to [method VideoStreamPlayer.stop]. [method _is_playing] should " +"return false once stopped." +msgstr "" +"停止播放。可能在 [method _play] 多次调用,也可能与 [method VideoStreamPlayer." +"stop] 对应。停止后 [method _is_playing] 应返回 false。" + +msgid "" +"Ticks video playback for [code]delta[/code] seconds. Called every frame as " +"long as [method _is_paused] and [method _is_playing] return true." +msgstr "" +"用于 [code]delta[/code] 秒的滴答视频播放。只要 [method _is_paused] 和 " +"[method _is_playing] 返回 true,就会在每一帧上调用。" + +msgid "" +"Render [code]num_frames[/code] audio frames (of [method _get_channels] " +"floats each) from [code]buffer[/code], starting from index [code]offset[/" +"code] in the array. Returns the number of audio frames rendered, or -1 on " +"error." +msgstr "" +"从数组中的索引 [code]offset[/code] 开始,从 [code]buffer[/code] 渲染 " +"[code]num_frames[/code] 个音频帧(每帧 [method_get_channels] 个浮点数)。返回" +"渲染的音频帧数,如果出错则返回 -1。" + msgid "Control for playing video streams." msgstr "用于播放视频流的控件。" msgid "" +"Control node for playing video streams using [VideoStream] resources.\n" +"Supported video formats are [url=https://www.theora.org/]Ogg Theora[/url] " +"([code].ogv[/code], [VideoStreamTheora]) and any format exposed via a " +"GDExtension plugin.\n" +"[b]Note:[/b] Due to a bug, VideoStreamPlayer does not support localization " +"remapping yet.\n" +"[b]Warning:[/b] On Web, video playback [i]will[/i] perform poorly due to " +"missing architecture-specific assembly optimizations." +msgstr "" +"用于播放使用 [VideoStream] 资源视频流的控件节点。\n" +"支持的视频格式有 [url=https://www.theora.org/]Ogg Theora[/url]([code].ogv[/" +"code],[VideoStreamTheora])、以及任何通过 GDExtension 插件公开的格式。\n" +"[b]注意:[/b]由于一个错误,VideoStreamPlayer 还不支持本地化重映射。\n" +"[b]警告:[/b]在 Web 上,视频播放[i]将[/i]由于缺少特定于体系结构的汇编优化而表" +"现不佳。" + +msgid "" "Returns the video stream's name, or [code]\"<No Stream>\"[/code] if no video " "stream is assigned." msgstr "" "返回视频流的名称,如果没有指定视频流,则返回 [code]\"<No Stream>\"[/code]。" +msgid "Returns the current frame as a [Texture2D]." +msgstr "将当前帧作为 [Texture2D] 返回。" + msgid "" "Returns [code]true[/code] if the video is playing.\n" "[b]Note:[/b] The video is still considered playing if paused during playback." @@ -62807,6 +79775,14 @@ msgstr "" "返回该视口的首个有效 [World2D],在它自身及任何 Viewport 祖先节点的 [member " "world_2d] 属性中查找。" +msgid "" +"Returns the currently active 2D camera. Returns null if there are no active " +"cameras." +msgstr "返回当前活动的 2D 相机。如果没有活动的相机,则返回 null。" + +msgid "Returns the currently active 3D camera." +msgstr "返回当前活动的 3D 相机。" + msgid "Returns an individual bit on the rendering layer mask." msgstr "返回渲染层遮罩上的某个比特位。" @@ -62845,6 +79821,16 @@ msgstr "" "影,但是会降低阴影的质量。一个好的做法是让象限具有不同数量的细分,并尽可能地" "减少细分。" +msgid "" +"Moves the mouse pointer to the specified position in this [Viewport] using " +"the coordinate system of this [Viewport].\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 "" +"使用该 [Viewport] 的坐标系,将鼠标指针移动到该 [Viewport] 中的指定位置。\n" +"[b]注意:[/b][method warp_mouse] 仅支持 Windows、macOS 和 Linux。它对 " +"Android、iOS 和 Web 没有影响。" + msgid "If [code]true[/code], the viewport will process 2D audio streams." msgstr "如果为 [code]true[/code],该视口将处理 2D 音频流。" @@ -62901,6 +79887,18 @@ msgid "" "mouse picking process." msgstr "如果为 [code]true[/code],该视口渲染的对象将成为鼠标拾取过程的对象。" +msgid "" +"If [code]true[/code], objects receive mouse picking events sorted primarily " +"by their [member CanvasItem.z_index] and secondarily by their position in " +"the scene tree. If [code]false[/code], the order is undetermined.\n" +"[b]Note:[/b] This setting is disabled by default because of its potential " +"expensive computational cost." +msgstr "" +"如果为 [code]true[/code],对象接收鼠标拾取事件的顺序,主要按它们的 [member " +"CanvasItem.z_index] 排序,其次按它们在场景树中的位置排序。如果为 " +"[code]false[/code],则顺序不确定。\n" +"[b]注意:[/b]默认情况下禁用此设置,因为它可能会产生昂贵的计算成本。" + msgid "The subdivision amount of the first quadrant on the shadow atlas." msgstr "阴影图集上第一象限的细分量。" @@ -62914,10 +79912,37 @@ msgid "The subdivision amount of the fourth quadrant on the shadow atlas." msgstr "阴影图集上第四象限的细分量。" msgid "" +"The shadow atlas' resolution (used for omni and spot lights). The value will " +"be rounded up to the nearest power of 2.\n" +"[b]Note:[/b] If this is set to [code]0[/code], no shadows will be visible at " +"all (including directional shadows)." +msgstr "" +"阴影图集的分辨率(用于全向灯和聚光灯)。该值将向上舍入到最接近的 2 次幂。\n" +"[b]注意:[/b]如果被设置为 [code]0[/code],将根本看不到任何阴影(包括定向阴" +"影)。" + +msgid "" "If [code]true[/code], the viewport should render its background as " "transparent." msgstr "如果为 [code]true[/code],该视口应使其背景渲染为透明。" +msgid "" +"If [code]true[/code], uses a fast post-processing filter to make banding " +"significantly less visible in 3D. 2D rendering is [i]not[/i] affected by " +"debanding unless the [member Environment.background_mode] is [constant " +"Environment.BG_CANVAS]. See also [member ProjectSettings.rendering/" +"anti_aliasing/quality/use_debanding].\n" +"In some cases, debanding may introduce a slightly noticeable dithering " +"pattern. It's recommended to enable debanding only when actually needed " +"since the dithering pattern will make lossless-compressed screenshots larger." +msgstr "" +"如果为 [code]true[/code],则使用一个快速的后期处理滤镜,使 3D 的带状现象明显" +"减少。除非 [member Environment.background_mode] 为 [constant Environment." +"BG_CANVAS],否则 2D 渲染[i]不会 [/i]受到去条带的影响。另见 [member " +"ProjectSettings.rendering/anti_aliasing/quality/use_debanding]。\n" +"在某些情况下,去条带可能会引入稍微明显的抖动图案。建议仅在实际需要时才启用去" +"条带,因为抖动图案会使无损压缩的屏幕截图变大。" + msgid "The custom [World2D] which can be used as 2D environment source." msgstr "自定义的 [World2D],可以作为 2D 环境源。" @@ -62927,20 +79952,43 @@ msgstr "自定义的 [World3D],可以作为 3D 环境源。" msgid "Emitted when a Control node grabs keyboard focus." msgstr "当控件节点获取键盘焦点时触发。" +msgid "" +"Emitted when the size of the viewport is changed, whether by resizing of " +"window, or some other means." +msgstr "" +"当视口的大小被改变时发出,无论是通过调整窗口大小,还是通过其他方式改变的大" +"小。" + msgid "This quadrant will not be used." -msgstr "此象限将不使用。" +msgstr "不使用该象限。" msgid "This quadrant will only be used by one shadow map." -msgstr "此象限仅由一张阴影贴图使用。" +msgstr "该象限仅由一张阴影贴图使用。" msgid "This quadrant will be split in 4 and used by up to 4 shadow maps." -msgstr "此象限将分为 4 个,最多使用 4 个阴影贴图。" +msgstr "该象限将被分为 4 份,最多被 4 张阴影贴图使用。" msgid "This quadrant will be split 16 ways and used by up to 16 shadow maps." -msgstr "此象限将被分成 16 个方向,并被最多 16 张阴影贴图使用。" +msgstr "该象限将被分为 16 份,最多被 16 张阴影贴图使用。" msgid "This quadrant will be split 64 ways and used by up to 64 shadow maps." -msgstr "这个象限将被分成 64 个方向,并被最多 64 张阴影贴图使用。" +msgstr "该象限将被分为 64 份,最多被 64 张阴影贴图使用。" + +msgid "" +"This quadrant will be split 256 ways and used by up to 256 shadow maps. " +"Unless the [member positional_shadow_atlas_size] is very high, the shadows " +"in this quadrant will be very low resolution." +msgstr "" +"该象限将被分为 256 份,最多被 256 张阴影贴图使用。除非 [member " +"positional_shadow_atlas_size] 非常高,否则该象限中的阴影分辨率将非常低。" + +msgid "" +"This quadrant will be split 1024 ways and used by up to 1024 shadow maps. " +"Unless the [member positional_shadow_atlas_size] is very high, the shadows " +"in this quadrant will be very low resolution." +msgstr "" +"该象限将被分为 1024 份,最多被 1024 张阴影贴图使用。除非 [member " +"positional_shadow_atlas_size] 非常高,否则该象限中的阴影分辨率将非常低。" msgid "" "Represents the size of the [enum PositionalShadowAtlasQuadrantSubdiv] enum." @@ -62949,9 +79997,39 @@ msgstr "代表 [enum PositionalShadowAtlasQuadrantSubdiv] 枚举的大小。" msgid "Represents the size of the [enum Scaling3DMode] enum." msgstr "代表 [enum Scaling3DMode] 枚举的大小。" +msgid "" +"Multisample antialiasing mode disabled. This is the default value, and is " +"also the fastest setting." +msgstr "禁用多重采样抗锯齿模式。这是默认值,也是最快的设置。" + +msgid "" +"Use 2× Multisample Antialiasing. This has a moderate performance cost. It " +"helps reduce aliasing noticeably, but 4× MSAA still looks substantially " +"better." +msgstr "" +"使用 2 倍多重采样抗锯齿。性能成本中等。有助于显着减少锯齿,但 4× MSAA 看起来" +"仍然要好得多。" + +msgid "" +"Use 4× Multisample Antialiasing. This has a significant performance cost, " +"and is generally a good compromise between performance and quality." +msgstr "" +"使用 4 倍多重采样抗锯齿。性能成本显著,通常是性能和质量之间的良好折衷。" + +msgid "" +"Use 8× Multisample Antialiasing. This has a very high performance cost. The " +"difference between 4× and 8× MSAA may not always be visible in real gameplay " +"conditions. Likely unsupported on low-end and older hardware." +msgstr "" +"使用 8 倍多重采样抗锯齿。性能成本极高。在实际游戏条件下,4× 和 8× MSAA 之间的" +"差异可能并不总是可见的。可能在低端和较旧的硬件上不受支持。" + msgid "Represents the size of the [enum MSAA] enum." msgstr "代表 [enum MSAA] 枚举的大小。" +msgid "Do not perform any antialiasing in the full screen post-process." +msgstr "不要在全屏后处理中执行抗锯齿。" + msgid "Represents the size of the [enum ScreenSpaceAA] enum." msgstr "代表 [enum ScreenSpaceAA] 枚举的大小。" @@ -62986,6 +80064,22 @@ msgid "Texture which displays the content of a [Viewport]." msgstr "显示 [Viewport] 内容的纹理。" msgid "" +"Displays the content of a [Viewport] node as a dynamic [Texture2D]. This can " +"be used to mix controls, 2D, and 3D elements in the same scene.\n" +"To create a ViewportTexture in code, use the [method Viewport.get_texture] " +"method on the target viewport.\n" +"[b]Note:[/b] When local to scene, this texture uses [method Resource." +"setup_local_to_scene] to set the proxy texture and flags in the local " +"viewport." +msgstr "" +"将 [Viewport] 节点的内容显示为一个动态 [Texture2D]。这可用于在同一场景中混合" +"控件、2D 和 3D 元素。\n" +"要在代码中创建 ViewportTexture,请在目标视口上使用 [method Viewport." +"get_texture] 方法。\n" +"[b]注意:[/b]当局部于场景时,该纹理使用 [method Resource." +"setup_local_to_scene] 在局部视口中设置代理纹理和标志。" + +msgid "" "The path to the [Viewport] node to display. This is relative to the scene " "root, not to the node which uses the texture." msgstr "" @@ -63005,6 +80099,23 @@ msgid "Enables certain nodes only when approximately visible." msgstr "只在大约可见时启用某些节点。" msgid "" +"The VisibleOnScreenNotifier2D detects when it is visible on the screen. It " +"also notifies when its bounding rectangle enters or exits the screen or a " +"viewport.\n" +"If you want nodes to be disabled automatically when they exit the screen, " +"use [VisibleOnScreenEnabler2D] instead.\n" +"[b]Note:[/b] VisibleOnScreenNotifier2D uses the render culling code to " +"determine whether it's visible on screen, which also means that its [member " +"CanvasItem.visible] must be [code]true[/code] to work correctly." +msgstr "" +"VisibleOnScreenNotifier2D 检测它何时在屏幕上可见。它还会在其边界矩形进入或退" +"出屏幕或视口时发出通知。\n" +"如果希望节点在退出屏幕时自动禁用,请改用 [VisibleOnScreenEnabler2D]。\n" +"[b]注意:[/b]VisibleOnScreenNotifier2D 使用渲染剔除代码来确定它是否在屏幕上可" +"见,这也意味着它的 [member CanvasItem.visible] 必须是 [code]true[/code] 才能" +"正常工作。" + +msgid "" "If [code]true[/code], the bounding rectangle is on the screen.\n" "[b]Note:[/b] It takes one frame for the node's visibility to be assessed " "once added to the scene tree, so this method will return [code]false[/code] " @@ -63028,6 +80139,23 @@ msgid "Detects approximately when the node is visible on screen." msgstr "大约在节点在屏幕上可见时进行检测。" msgid "" +"The VisibleOnScreenNotifier3D detects when it is visible on the screen. It " +"also notifies when its bounding rectangle enters or exits the screen or a " +"[Camera3D]'s view.\n" +"If you want nodes to be disabled automatically when they exit the screen, " +"use [VisibleOnScreenEnabler3D] instead.\n" +"[b]Note:[/b] VisibleOnScreenNotifier3D uses the render culling code to " +"determine whether it's visible on screen, which also means that its [member " +"Node3D.visible] must be [code]true[/code] to work correctly." +msgstr "" +"VisibleOnScreenNotifier3D 检测它何时在该屏幕上可见。它还会在其边界矩形进入或" +"退出该屏幕或 [Camera3D] 的视图时发出通知。\n" +"如果希望节点在退出屏幕时自动禁用,请改用 [VisibleOnScreenEnabler3D]。\n" +"[b]注意:[/b]VisibleOnScreenNotifier3D 使用渲染剔除代码来确定它是否在屏幕上可" +"见,这也意味着它的 [member Node3D.visible] 必须为 [code]true[/code] 时才能正" +"常工作。" + +msgid "" "If [code]true[/code], the bounding box is on the screen.\n" "[b]Note:[/b] It takes one frame for the node's visibility to be assessed " "once added to the scene tree, so this method will return [code]false[/code] " @@ -63050,6 +80178,22 @@ msgstr "当该 VisibleOnScreenNotifier3D 退出屏幕时发出。" msgid "Parent of all visual 3D nodes." msgstr "所有可视 3D 节点的父节点。" +msgid "" +"The amount by which the depth of this [VisualInstance3D] will be adjusted " +"when sorting by depth. Uses the same units as the engine (which are " +"typically meters). Adjusting it to a higher value will make the " +"[VisualInstance3D] reliably draw on top of other [VisualInstance3D]s that " +"are otherwise positioned at the same spot. To ensure it always draws on top " +"of other objects around it (not positioned at the same spot), set the value " +"to be greater than the distance between this [VisualInstance3D] and the " +"other nearby [VisualInstance3D]s." +msgstr "" +"按深度排序时该 [VisualInstance3D] 的深度将调整的量。使用与引擎相同的单位(通" +"常是米)。将其调整为更高的值,将使 [VisualInstance3D] 可靠地绘制在位于同一位" +"置的其他 [VisualInstance3D] 之上。为确保它始终绘制在它周围的其他对象之上(不" +"位于同一位置),请将值设置为大于该 [VisualInstance3D] 与附近其他 " +"[VisualInstance3D] 之间的距离值。" + msgid "A custom shader program with a visual editor." msgstr "带有可视化编辑器的自定义着色器程序。" @@ -63130,9 +80274,24 @@ msgid "" "output." msgstr "粒子着色器的“处理”阶段所使用的函数,带自定义输出。" +msgid "A shader for 3D environment's sky." +msgstr "3D 环境中天空的着色器。" + msgid "Represents the size of the [enum Type] enum." msgstr "代表 [enum Type] 枚举的大小。" +msgid "" +"Varying is passed from [code]Vertex[/code] function to [code]Fragment[/code] " +"and [code]Light[/code] functions." +msgstr "" +"Varying 从 [code]Vertex[/code] 函数传到 [code]Fragment[/code] 和 " +"[code]Light[/code] 函数。" + +msgid "" +"Varying is passed from [code]Fragment[/code] function to [code]Light[/code] " +"function." +msgstr "Varying 从 [code]Fragment[/code] 函数传到 [code]Light[/code] 函数。" + msgid "Represents the size of the [enum VaryingMode] enum." msgstr "代表 [enum VaryingMode] 枚举的大小。" @@ -63176,6 +80335,12 @@ msgstr "" "带有标题和一系列属性的矩形框。每个节点都有连接端口,可以将其连接到另一个节点" "并控制着色器的流程。" +msgid "VisualShaders" +msgstr "VisualShader" + +msgid "Clears the default input ports value." +msgstr "清除默认输入端口值。" + msgid "" "Returns an [Array] containing default values for all of the input ports of " "the node in the form [code][index0, value0, index1, value1, ...][/code]." @@ -63183,6 +80348,12 @@ msgstr "" "返回一个包含节点所有输入端口默认值的 [Array],形式为 [code][index0, value0, " "index1, value1, ...][/code]。" +msgid "Returns the default value of the input [param port]." +msgstr "返回输入端口 [param port] 的默认值。" + +msgid "Removes the default value of the input [param port]." +msgstr "移除输入端口 [param port] 的默认值。" + msgid "" "Sets the default input ports values using an [Array] of the form [code]" "[index0, value0, index1, value1, ...][/code]. For example: [code][0, " @@ -63191,6 +80362,9 @@ msgstr "" "使用 [code][index0, value0, index1, value1, ...][/code] 形式的 [Array] 设置默" "认输入端口值。例如: [code][0, Vector3(0, 0, 0), 1, Vector3(0, 0, 0)][/code]。" +msgid "Sets the default [param value] for the selected input [param port]." +msgstr "设置输入端口 [param port] 的默认值 [param value]。" + msgid "" "Sets the output port index which will be showed for preview. If set to " "[code]-1[/code] no port will be open for preview." @@ -63240,6 +80414,21 @@ msgstr "" msgid "Represents the size of the [enum PortType] enum." msgstr "表示 [enum PortType] 枚举的大小。" +msgid "Controls how the object faces the camera. See [enum BillboardType]." +msgstr "控制对象如何面对相机。请参阅 [enum BillboardType]。" + +msgid "Billboarding is disabled and the node does nothing." +msgstr "公告板被禁用,该节点不做任何事情。" + +msgid "A standard billboarding algorithm is enabled." +msgstr "启用标准公告板算法。" + +msgid "A billboarding algorithm to rotate around Y-axis is enabled." +msgstr "启用围绕 Y 轴旋转的公告板算法。" + +msgid "A billboarding algorithm designed to use on particles is enabled." +msgstr "启用针对粒子设计的公告板算法。" + msgid "Represents the size of the [enum BillboardType] enum." msgstr "代表 [enum BillboardType] 枚举的大小。" @@ -63738,6 +80927,14 @@ msgid "" msgstr "" "此节点仅在[code]Fragment[/code]和[code]Light[/code]可视化着色器中可用。" +msgid "" +"Sets the level of precision to use for the derivative function. See [enum " +"Precision] for options. When using the GL Compatibility renderer, this " +"setting has no effect." +msgstr "" +"设置用于导数函数的精度级别。关选项,请参阅 [enum Precision]。使用 GL 兼容性渲" +"染器时,此设置不起作用。" + msgid "Sum of absolute derivative in [code]x[/code] and [code]y[/code]." msgstr "[code]x[/code] 和 [code]y[/code] 的绝对导数之和。" @@ -63748,6 +80945,25 @@ msgid "Derivative in [code]y[/code] using local differencing." msgstr "在 [code]y[/code] 中使用局部差分的导数。" msgid "" +"No precision is specified, the GPU driver is allowed to use whatever level " +"of precision it chooses. This is the default option and is equivalent to " +"using [code]dFdx()[/code] or [code]dFdy()[/code] in text shaders." +msgstr "" +"未指定精度,GPU 驱动可以自行选用精度等级。这是默认选项,等价于在文本着色器中" +"使用 [code]dFdx()[/code] 或 [code]dFdy()[/code]。" + +msgid "" +"The derivative will be calculated using the current fragment's neighbors " +"(which may not include the current fragment). This tends to be faster than " +"using [constant PRECISION_FINE], but may not be suitable when more precision " +"is needed. This is equivalent to using [code]dFdxCoarse()[/code] or " +"[code]dFdyCoarse()[/code] in text shaders." +msgstr "" +"将使用当前片段的邻居(可能不包括当前片段)计算导数。这往往比使用 [constant " +"PRECISION_FINE] 更快,但在需要更高精度时可能不适合。这相当于在文本着色器中使" +"用 [code]dFdxCoarse()[/code] 或 [code]dFdyCoarse()[/code]。" + +msgid "" "The derivative will be calculated using the current fragment and its " "immediate neighbors. This tends to be slower than using [constant " "PRECISION_COARSE], but may be necessary when more precision is needed. This " @@ -63761,6 +80977,10 @@ msgstr "" msgid "Represents the size of the [enum Precision] enum." msgstr "代表 [enum Precision] 枚举的大小。" +msgid "" +"Calculates the determinant of a [Transform3D] within the visual shader graph." +msgstr "在可视化着色器图中计算 [Transform3D] 的行列式。" + msgid "Translates to [code]determinant(x)[/code] in the shader language." msgstr "在着色器语言中翻译成[code]determinant(x)[/code]。" @@ -64109,6 +81329,12 @@ msgstr "" msgid "Shading reference index" msgstr "着色参考索引" +msgid "An integer constant which represents a state of this node." +msgstr "整数常量,代表该节点的状态。" + +msgid "Calculates the remainder of two numbers using [code]a % b[/code]." +msgstr "使用 [code]a % b[/code] 计算两个数字的余数。" + msgid "" "Returns the result of bitwise [code]AND[/code] operation on the integer. " "Translates to [code]a & b[/code] in the Godot Shader Language." @@ -64144,6 +81370,9 @@ msgstr "" "返回对该整数进行按位右移运算的结果。在 Godot 着色器语言中会被翻译为 [code]a " ">> b[/code]。" +msgid "Range hint of this node. Use it to customize valid parameter range." +msgstr "该节点的范围提示。请用它来自定义有效的参数范围。" + msgid "" "A boolean comparison operator to be used within the visual shader graph." msgstr "布尔比较运算符,在可视化着色器图中使用。" @@ -64276,6 +81505,9 @@ msgstr "如果启用,则粒子从该节点所定义的 [code]CUSTOM[/code] 自 msgid "A base class for particle emitters." msgstr "粒子发射器的基类。" +msgid "The [Mesh] that defines emission shape." +msgstr "定义发射形状的 [Mesh]。" + msgid "" "If [code]true[/code], the angle will be interpreted in degrees instead of " "radians." @@ -64364,6 +81596,14 @@ msgstr "默认为完全透明的黑色。" msgid "Represents the size of the [enum ColorDefault] enum." msgstr "代表 [enum ColorDefault] 枚举的大小。" +msgid "The texture source is not specified in the shader." +msgstr "着色器中未指定纹理源。" + +msgid "" +"The texture source is the screen texture which captures all opaque objects " +"drawn this frame." +msgstr "纹理源为屏幕纹理,捕获了本帧中绘制的所有不透明对象。" + msgid "Represents the size of the [enum TextureSource] enum." msgstr "代表 [enum TextureSource] 枚举的大小。" @@ -64388,6 +81628,9 @@ msgstr "" msgid "A constant [Transform3D], which can be used as an input node." msgstr "[Transform3D] 常量,可用作输入节点。" +msgid "A [Transform3D] constant which represents the state of this 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." @@ -64459,6 +81702,13 @@ msgid "" msgstr "" "将向量 [code]b[/code] 乘以变换 [code]a[/code],跳过变换的最后一行和一列。" +msgid "" +"Accept an unsigned integer scalar ([code]x[/code]) to the input port and " +"transform it according to [member function]." +msgstr "" +"接受一个无符号整数标量([code]x[/code])到输入端口,并根据 [member function] " +"对其进行转换。" + msgid "Name of the variable. Must be unique." msgstr "变量的名称。必须唯一。" @@ -64692,6 +81942,57 @@ msgstr "" msgid "Real-time global illumination (GI) probe." msgstr "实时全局光照(GI)探测。" +msgid "" +"[VoxelGI]s are used to provide high-quality real-time indirect light and " +"reflections to scenes. They precompute the effect of objects that emit light " +"and the effect of static geometry to simulate the behavior of complex light " +"in real-time. [VoxelGI]s need to be baked before having a visible effect. " +"However, once baked, dynamic objects will receive light from them. " +"Furthermore, lights can be fully dynamic or baked.\n" +"[b]Note:[/b] [VoxelGI] is only supported in the Forward+ rendering method, " +"not Mobile or Compatibility.\n" +"[b]Procedural generation:[/b] [VoxelGI] can be baked in an exported project, " +"which makes it suitable for procedurally generated or user-built levels as " +"long as all the geometry is generated in advance. For games where geometry " +"is generated at any time during gameplay, SDFGI is more suitable (see " +"[member Environment.sdfgi_enabled]).\n" +"[b]Performance:[/b] [VoxelGI] is relatively demanding on the GPU and is not " +"suited to low-end hardware such as integrated graphics (consider " +"[LightmapGI] instead). To improve performance, adjust [member " +"ProjectSettings.rendering/global_illumination/voxel_gi/quality] and enable " +"[member ProjectSettings.rendering/global_illumination/gi/" +"use_half_resolution] in the Project Settings. To provide a fallback for low-" +"end hardware, consider adding an option to disable [VoxelGI] in your " +"project's options menus. A [VoxelGI] node can be disabled by hiding it.\n" +"[b]Note:[/b] Meshes should have sufficiently thick walls to avoid light " +"leaks (avoid one-sided walls). For interior levels, enclose your level " +"geometry in a sufficiently large box and bridge the loops to close the mesh. " +"To further prevent light leaks, you can also strategically place temporary " +"[MeshInstance3D] nodes with their [member GeometryInstance3D.gi_mode] set to " +"[constant GeometryInstance3D.GI_MODE_STATIC]. These temporary nodes can then " +"be hidden after baking the [VoxelGI] node." +msgstr "" +"[VoxelGI] 用于为场景提供高质量的实时的间接光照和反射。它们预先计算发光物体的" +"效果和静态几何体的效果,以实时模拟复杂光线的行为。[VoxelGI] 需要经过烘焙才能" +"产生可见的效果。然而,一旦烘焙,动态对象将接收来自它们的光。此外,灯光可以是" +"完全动态的,也可以是烘焙的。\n" +"[b]注意:[/b][VoxelGI] 只支持 Forward+ 渲染方式,不支持 Mobile 或 " +"Compatibility。\n" +"[b]程序生成:[/b][VoxelGI] 可以在导出的项目中烘焙,这使得它适用于程序生成或用" +"户构建的关卡,只要所有几何体都预先生成即可。对于在游戏过程中随时生成几何图形" +"的游戏,SDFGI 更合适(参见 [member Environment.sdfgi_enabled])。\n" +"[b]性能:[/b][VoxelGI] 对 GPU 要求比较高,不适合集成显卡等低端硬件(可以考虑" +"改用 [LightmapGI])。要提高性能,请在项目设置中,调整 [member " +"ProjectSettings.rendering/global_illumination/voxel_gi/quality],并启用 " +"[member ProjectSettings.rendering/global_illumination/gi/" +"use_half_resolution]。要为低端硬件提供后备方案,请考虑在项目的选项菜单中,添" +"加一个选项,以禁用 [VoxelGI]。[VoxelGI] 节点可以通过隐藏而禁用。\n" +"[b]注意:[/b]网格应该有足够厚的壁(避免单面墙)以避免漏光。对于内部关卡,请将" +"关卡几何体封装在一个足够大的盒子中,并桥接循环边以闭合网格。为了进一步防止漏" +"光,还可以策略性地放置临时 [MeshInstance3D] 节点,并将其 [member " +"GeometryInstance3D.gi_mode] 设置为 [constant GeometryInstance3D." +"GI_MODE_STATIC]。然后可以在烘焙 [VoxelGI] 节点后,隐藏这些临时节点。" + msgid "VoxelGI" msgstr "VoxelGI" @@ -64775,6 +82076,9 @@ msgstr "" "[b]注意:[/b][signal Range.changed] 和 [signal Range.value_changed] 信号是 " "[Range] 类的一部分,该类继承自它。" +msgid "Horizontal offset of the grabber." +msgstr "抓取器的水平偏移量。" + msgid "The background of the area below the grabber." msgstr "抓取器下方区域的背景。" @@ -64796,6 +82100,23 @@ msgid "" msgstr "持有 [Object],但如果该对象是引用,则不会贡献引用计数。" msgid "" +"A weakref can hold a [RefCounted], without contributing to the reference " +"counter. A weakref can be created from an [Object] using [method " +"@GlobalScope.weakref]. If this object is not a reference, weakref still " +"works, however, it does not have any effect on the object. Weakrefs are " +"useful in cases where multiple classes have variables that refer to each " +"other. Without weakrefs, using these classes could lead to memory leaks, " +"since both references keep each other from being released. Making part of " +"the variables a weakref can prevent this cyclic dependency, and allows the " +"references to be released." +msgstr "" +"弱引用 weakref 可以存放 [RefCounted],但不会对其引用计数器产生影响。可以使用 " +"[method @GlobalScope.weakref] 创建 [Object] 的弱引用。如果该对象不是引用,弱" +"引用仍然有效,但是对这个对象没有任何影响。弱引用在多个类的变量相互引用的情况" +"下很有用。如果没有弱引用,使用这些类可能会导致内存泄漏,因为这两个引用会阻止" +"彼此被释放。将部分变量设置为弱引用可以防止这种循环依赖,让引用能够被释放。" + +msgid "" "Returns the [Object] this weakref is referring to. Returns [code]null[/code] " "if that object no longer exists." msgstr "" @@ -64896,6 +82217,37 @@ msgstr "" "[MultiplayerAPI] 兼容。" msgid "" +"This class constructs a full mesh of [WebRTCPeerConnection] (one connection " +"for each peer) that can be used as a [member MultiplayerAPI." +"multiplayer_peer].\n" +"You can add each [WebRTCPeerConnection] via [method add_peer] or remove them " +"via [method remove_peer]. Peers must be added in [constant " +"WebRTCPeerConnection.STATE_NEW] state to allow it to create the appropriate " +"channels. This class will not create offers nor set descriptions, it will " +"only poll them, and notify connections and disconnections.\n" +"When creating the peer via [method create_client] or [method create_server] " +"the [method MultiplayerPeer.is_server_relay_supported] method will return " +"[code]true[/code] enabling peer exchange and packet relaying when supported " +"by the [MultiplayerAPI] implementation.\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 "" +"这个类构建了一个完整的 [WebRTCPeerConnection] 网状结构(每个对等体有一个连" +"接),可用作 [member MultiplayerAPI.multiplayer_peer]。\n" +"可以通过 [method add_peer] 添加每个 [WebRTCPeerConnection],或通过 [method " +"remove_peer] 移除它们。必须在 [constant WebRTCPeerConnection.STATE_NEW] 状态" +"下添加对等体,以允许它创建适当的通道。这个类不会创建提交或设置描述,它只会轮" +"询它们,并通知连接和断开连接。\n" +"当通过 [method create_client] 或 [method create_server] 创建对等体时, " +"[method MultiplayerPeer.is_server_relay_supported] 方法将返回 [code]true[/" +"code],在 [MultiplayerAPI] 实现支持时启用对等体交换和数据包中继。\n" +"[b]注意:[/b]导出到 Android 时,在导出项目或使用一键部署前,请确保在 Android " +"导出预设中启用了 [code]INTERNET[/code] 权限。否则,任何类型的网络通信都将被 " +"Android 阻止。" + +msgid "" "Add a new peer to the mesh with the given [code]peer_id[/code]. The " "[WebRTCPeerConnection] must be in state [constant WebRTCPeerConnection." "STATE_NEW].\n" @@ -65180,10 +82532,57 @@ msgid "" "The peer connection is closed (after calling [method close] for example)." msgstr "对等连接已关闭,例如在调用 [method close] 后。" +msgid "" +"The peer connection was just created and hasn't done any networking yet." +msgstr "对等体连接刚刚建立,还没有做任何联网工作。" + +msgid "" +"The ICE agent is in the process of gathering candidates for the connection." +msgstr "ICE 代理正在收集候选连接。" + +msgid "" +"The ICE agent has finished gathering candidates. If something happens that " +"requires collecting new candidates, such as a new interface being added or " +"the addition of a new ICE server, the state will revert to gathering to " +"gather those candidates." +msgstr "" +"ICE 代理已完成候选连接的收集。如果发生了需要收集新候选的情况,例如新添加了接" +"口、新添加了 ICE 服务器,则会返回收集状态,进行候选项的收集。" + +msgid "The [WebRTCPeerConnection] has been closed." +msgstr "该 [WebRTCPeerConnection] 已关闭连接。" + msgid "Base class for WebSocket server and client." msgstr "WebSocket 服务器和客户端的基类。" msgid "" +"Starts a new multiplayer client connecting to the given [param url]. TLS " +"certificates will be verified against the hostname when connecting using the " +"[code]wss://[/code] protocol. You can pass the optional [param " +"tls_client_options] parameter to customize the trusted certification " +"authorities, or disable the common name verification. See [method TLSOptions." +"client] and [method TLSOptions.client_unsafe].\n" +"[b]Note:[/b] It is recommended to specify the scheme part of the URL, i.e. " +"the [param url] should start with either [code]ws://[/code] or [code]wss://[/" +"code]." +msgstr "" +"启动新的多人客户端,连接至给定的 [param url]。使用 [code]wss://[/code] 协议连" +"接时会校验主机名和 TLS 证书。传入 [param tls_client_options] 可以自定义信任的" +"证书颁发机构,也可以禁用通用名的验证。见 [method TLSOptions.client] 和 " +"[method TLSOptions.client_unsafe]。\n" +"[b]注意:[/b]推荐指定 URL 的方案部分,即 [param url] 应该以 [code]ws://[/" +"code] 或 [code]wss://[/code] 开头。" + +msgid "" +"Starts a new multiplayer server listening on the given [param port]. You can " +"optionally specify a [param bind_address], and provide valiid [param " +"tls_server_options] to use TLS. See [method TLSOptions.server]." +msgstr "" +"启动新的多人服务器,监听给定的 [param port]。可以指定 [param bind_address]," +"也可以提供有效的 [param tls_server_options] 来使用 TLS。见 [method " +"TLSOptions.server]。" + +msgid "" "Returns the [WebSocketPeer] associated to the given [code]peer_id[/code]." msgstr "返回与给定 [code]peer_id[/code] 关联的 [WebSocketPeer]。" @@ -65193,10 +82592,143 @@ msgstr "返回给定对等体的 IP 地址。" msgid "Returns the remote port of the given peer." msgstr "返回给定对等体的远程端口。" +msgid "" +"The inbound buffer size for connected peers. See [member WebSocketPeer." +"inbound_buffer_size] for more details." +msgstr "" +"已连接对等体的入站缓冲区大小。详见 [member WebSocketPeer." +"inbound_buffer_size]。" + +msgid "" +"The maximum number of queued packets for connected peers. See [member " +"WebSocketPeer.max_queued_packets] for more details." +msgstr "" +"已连接对等体的最大排队数据包数量。详见 [member WebSocketPeer." +"max_queued_packets]。" + +msgid "" +"The outbound buffer size for connected peers. See [member WebSocketPeer." +"outbound_buffer_size] for more details." +msgstr "" +"已连接对等体的出站缓冲区大小。详见 [member WebSocketPeer." +"outbound_buffer_size]。" + msgid "A WebSocket connection." msgstr "WebSocket 连接。" msgid "" +"This class represents WebSocket connection, and can be used as a WebSocket " +"client (RFC 6455-compliant) or as a remote peer of a WebSocket server.\n" +"You can send WebSocket binary frames using [method PacketPeer.put_packet], " +"and WebSocket text frames using [method send] (prefer text frames when " +"interacting with text-based API). You can check the frame type of the last " +"packet via [method was_string_packet].\n" +"To start a WebSocket client, first call [method connect_to_url], then " +"regularly call [method poll] (e.g. during [Node] process). You can query the " +"socket state via [method get_ready_state], get the number of pending packets " +"using [method PacketPeer.get_available_packet_count], and retrieve them via " +"[method PacketPeer.get_packet].\n" +"[codeblocks]\n" +"[gdscript]\n" +"extends Node\n" +"\n" +"var socket = WebSocketPeer.new()\n" +"\n" +"func _ready():\n" +" socket.connect_to_url(\"wss://example.com\")\n" +"\n" +"func _process(delta):\n" +" socket.poll()\n" +" var state = socket.get_ready_state()\n" +" if state == WebSocketPeer.STATE_OPEN:\n" +" while socket.get_available_packet_count():\n" +" print(\"Packet: \", socket.get_packet())\n" +" elif state == WebSocketPeer.STATE_CLOSING:\n" +" # Keep polling to achieve proper close.\n" +" pass\n" +" elif state == WebSocketPeer.STATE_CLOSED:\n" +" var code = socket.get_close_code()\n" +" var reason = socket.get_close_reason()\n" +" print(\"WebSocket closed with code: %d, reason %s. Clean: %s\" % " +"[code, reason, code != -1])\n" +" set_process(false) # Stop processing.\n" +"[/gdscript]\n" +"[/codeblocks]\n" +"To use the peer as part of a WebSocket server refer to [method " +"accept_stream] and the online tutorial." +msgstr "" +"这个类代表 WebSocket 连接,可以用作 WebSocket 客户端(兼容 RFC 6455),也可以" +"用作 WebSocket 服务器的远程对等体。\n" +"发送 WebSocket 二进制帧请使用 [method PacketPeer.put_packet],发送 WebSocket " +"文本帧请使用 [method send](与基于文本的 API 交互时请优先选择文本帧)。可以通" +"过 [method was_string_packet] 检查最近一个数据包的帧类型。\n" +"开启 WebSocket 客户端的方法是:首先调用 [method connect_to_url],然后定期调" +"用 [method poll](例如在 [Node] 的处理过程中)。查询套接字的状态请使用 " +"[method get_ready_state],获取挂起的数据包数量请使用 [method PacketPeer." +"get_available_packet_count],获取挂起的数据包请使用 [method PacketPeer." +"get_packet]。\n" +"[codeblocks]\n" +"[gdscript]\n" +"extends Node\n" +"\n" +"var socket = WebSocketPeer.new()\n" +"\n" +"func _ready():\n" +" socket.connect_to_url(\"wss://example.com\")\n" +"\n" +"func _process(delta):\n" +" socket.poll()\n" +" var state = socket.get_ready_state()\n" +" if state == WebSocketPeer.STATE_OPEN:\n" +" while socket.get_available_packet_count():\n" +" print(\"数据包:\", socket.get_packet())\n" +" elif state == WebSocketPeer.STATE_CLOSING:\n" +" # 继续轮询才能正确关闭。\n" +" pass\n" +" elif state == WebSocketPeer.STATE_CLOSED:\n" +" var code = socket.get_close_code()\n" +" var reason = socket.get_close_reason()\n" +" print(\"WebSocket 已关闭,代码:%d,原因 %s。干净得体:%s\" % [code, " +"reason, code != -1])\n" +" set_process(false) # 停止处理。\n" +"[/gdscript]\n" +"[/codeblocks]\n" +"如果要作为 WebSocket 服务器的对等体使用,请参考 [method accept_stream] 及在线" +"教程。" + +msgid "" +"Accepts a peer connection performing the HTTP handshake as a WebSocket " +"server. The [param stream] must be a valid TCP stream retrieved via [method " +"TCPServer.take_connection], or a TLS stream accepted via [method " +"StreamPeerTLS.accept_stream].\n" +"[b]Note:[/b] Not supported in Web exports due to browsers' restrictions." +msgstr "" +"以 WebSocket 服务器的名义,接受正在执行 HTTP 握手的对等体连接。[param " +"stream] 必须是从 [method TCPServer.take_connection] 获取的有效 TCP 流,或者是" +"从 [method StreamPeerTLS.accept_stream] 接受的 TLS 流。\n" +"[b]注意:[/b]由于浏览器的限制,Web 导出中不支持此方法。" + +msgid "" +"Closes this WebSocket connection. [param code] is the status code for the " +"closure (see RFC 6455 section 7.4 for a list of valid status codes). [param " +"reason] is the human readable reason for closing the connection (can be any " +"UTF-8 string that's smaller than 123 bytes). If [param code] is negative, " +"the connection will be closed immediately without notifying the remote " +"peer.\n" +"[b]Note:[/b] To achieve a clean close, you will need to keep polling until " +"[constant STATE_CLOSED] is reached.\n" +"[b]Note:[/b] The Web export might not support all status codes. Please refer " +"to browser-specific documentation for more details." +msgstr "" +"关闭该 WebSocket 连接。[param code] 是关闭的状态码(有效状态代码的列表见 RFC " +"6455 第 7.4 节)。[param reason] 是人类可读的关闭连接原因(可以是任何小于 " +"123 字节的 UTF-8 字符串)。如果 [param code] 为负数,则连接会立即关闭,不通知" +"远程对等体。\n" +"[b]注意:[/b]为了实现干净得体的关闭,你需要在达到 [constant STATE_CLOSED] 之" +"前保持轮询。\n" +"[b]注意:[/b]Web 导出可能不支持部分状态码。详情请参考具体浏览器的文档。" + +msgid "" "Returns the IP address of the connected peer.\n" "[b]Note:[/b] Not available in the Web export." msgstr "" @@ -65220,6 +82752,9 @@ msgstr "" "如果最后收到的数据包是作为文本有效载荷发送的,返回 [code]true[/code]。见 " "[enum WriteMode]。" +msgid "The WebSocket sub-protocols allowed during the WebSocket handshake." +msgstr "WebSocket 握手期间允许的 WebSocket 子协议。" + msgid "" "Specifies that WebSockets messages should be transferred as text payload " "(only valid UTF-8 is allowed)." @@ -65230,6 +82765,19 @@ msgid "" "(any byte combination is allowed)." msgstr "指定 WebSockets 消息应以二进制有效载荷的形式传输(允许任何字节组合)。" +msgid "Socket has been created. The connection is not yet open." +msgstr "已创建套接字。连接尚未打开。" + +msgid "The connection is open and ready to communicate." +msgstr "连接已打开,通讯就绪。" + +msgid "" +"The connection is in the process of closing. This means a close request has " +"been sent to the remote peer but confirmation has not been received." +msgstr "" +"连接正在关闭过程中。这意味着已经向远程对等体发送了关闭请求,但还没有收到确" +"认。" + msgid "The connection is closed or couldn't be opened." msgstr "连接已关闭或无法打开。" @@ -65447,6 +82995,9 @@ msgstr "" "您可以使用这两种方法来让您的游戏或应用程序支持更多或更窄的设备和输入法集,或" "者允许与更高级的设备进行更高级的交互。" +msgid "How to make a VR game for WebXR with Godot 4" +msgstr "如何使用 Godot 4 制作 WebXR 的 VR 游戏" + msgid "" "Checks if the given [code]session_mode[/code] is supported by the user's " "browser.\n" @@ -65514,6 +83065,13 @@ msgstr "" "在运行时,[Window] 不会在请求关闭时自动关闭。你需要使用 [signal " "close_requested] 手动处理(适用于点击关闭按钮和点击弹出窗口外部)。" +msgid "Returns whether the window is being drawn to the screen." +msgstr "返回该窗口是否正在被绘制到屏幕上。" + +msgid "" +"Requests an update of the [Window] size to fit underlying [Control] nodes." +msgstr "请求更新 [Window] 大小以适应底层 [Control] 节点。" + msgid "Returns [code]true[/code] if the [param flag] is set." msgstr "如果设置了标志 [param flag],则返回 [code]true[/code]。" @@ -65587,6 +83145,16 @@ msgstr "" "theme_type] 的样式盒项,则返回 [code]true[/code]。\n" "详情见 [method Control.get_theme_color]。" +msgid "" +"Returns [code]true[/code] if the window is currently embedded in another " +"window." +msgstr "如果该窗口当前嵌入在其他窗口中,则返回 [code]true[/code]。" + +msgid "" +"Returns [code]true[/code] if the window can be maximized (the maximize " +"button is enabled)." +msgstr "如果该窗口可以最大化(启用了最大化按钮),则返回 [code]true[/code]。" + msgid "Moves the [Window] on top of other windows and focuses it." msgstr "将该 [Window] 移动到其他窗口的顶部并聚焦。" @@ -65646,6 +83214,16 @@ msgstr "切换是否所有文本都应该根据当前区域设置自动变为翻 msgid "If [code]true[/code], the window will have no borders." msgstr "如果为 [code]true[/code],则该窗口将没有边框。" +msgid "" +"Specifies how the content's aspect behaves when the [Window] is resized. The " +"base aspect is determined by [member content_scale_size]." +msgstr "" +"指定当 [Window] 的大小改变时,内容纵横比的行为。基础纵横比由 [member " +"content_scale_size] 决定。" + +msgid "Specifies how the content is scaled when the [Window] is resized." +msgstr "指定当 [Window] 的大小改变时,如何对内容进行缩放。" + msgid "The screen the window is currently on." msgstr "该窗口当前所在的屏幕。" @@ -65741,6 +83319,18 @@ msgid "The window's size in pixels." msgstr "该窗口的大小,单位为像素。" msgid "" +"The window's title. If the [Window] is non-embedded, title styles set in " +"[Theme] will have no effect." +msgstr "" +"该窗口的标题。如果 [Window] 不是嵌入式的,则 [Theme] 中设置的标题样式无效。" + +msgid "" +"If [code]true[/code], the [Window] can't be focused nor interacted with. It " +"can still be visible." +msgstr "" +"如果为 [code]true[/code],则该 [Window] 既无法聚焦也无法交互,但仍然可见。" + +msgid "" "If [code]true[/code], the window can't be resized. Minimize and maximize " "buttons are disabled." msgstr "" @@ -65792,6 +83382,53 @@ msgstr "" msgid "Max value of the [enum Flags]." msgstr "[enum Flags] 的最大值。" +msgid "The content will not be scaled to match the [Window]'s size." +msgstr "不会为了匹配 [Window] 的大小而对内容进行缩放。" + +msgid "" +"The content will be rendered at the target size. This is more performance-" +"expensive than [constant CONTENT_SCALE_MODE_VIEWPORT], but provides better " +"results." +msgstr "" +"会将内容按照目标大小渲染。比 [constant CONTENT_SCALE_MODE_VIEWPORT] 更消耗性" +"能,但结果更佳。" + +msgid "" +"The content will be rendered at the base size and then scaled to the target " +"size. More performant than [constant CONTENT_SCALE_MODE_CANVAS_ITEMS], but " +"results in pixelated image." +msgstr "" +"会将内容按照原始大小渲染,然后再缩放到目标大小。比 [constant " +"CONTENT_SCALE_MODE_CANVAS_ITEMS] 性能更高,但会导致图像的像素化。" + +msgid "" +"The aspect will be ignored. Scaling will simply stretch the content to fit " +"the target size." +msgstr "会忽略纵横比。缩放就是简单地将内容拉伸至目标大小。" + +msgid "" +"The content's aspect will be preserved. If the target size has different " +"aspect from the base one, the image will be centered and black bars will " +"appear on left and right sides." +msgstr "" +"会保留内容的纵横比。如果目标大小与原始大小的纵横比不同,则会将图像居中,左右" +"两侧会出现黑条。" + +msgid "" +"The content can be expanded vertically. Scaling horizontally will result in " +"keeping the width ratio and then black bars on left and right sides." +msgstr "内容可以垂直扩展。横向缩放时,会保留宽度比,在左右两侧添加黑条。" + +msgid "" +"The content can be expanded horizontally. Scaling vertically will result in " +"keeping the height ratio and then black bars on top and bottom sides." +msgstr "内容可以水平扩展。纵向缩放时,会保留高度比,在上下两侧添加黑条。" + +msgid "" +"Automatic layout direction, determined from the parent window layout " +"direction." +msgstr "自动布局方向,由父窗口的布局方向决定。" + msgid "Initial window position is determined by [member position]." msgstr "初始窗口位置由 [member position] 决定。" @@ -65843,18 +83480,53 @@ msgstr "拥有与世界相关的一切的类。" msgid "The World3D's [Environment]." msgstr "该 World3D 的 [Environment]。" +msgid "The World3D's visual scenario." +msgstr "该 World3D 的可视场景。" + +msgid "The World3D's physics space." +msgstr "该 World3D 的物理空间。" + +msgid "World boundary (infinite plane) shape resource for 2D physics." +msgstr "世界边界(无限平面)形状资源,用于 2D 物理。" + msgid "The line's distance from the origin." msgstr "该直线与原点的距离。" msgid "The line's normal. Defaults to [code]Vector2.UP[/code]." msgstr "该直线的法线。默认为 [code]Vector2.UP[/code]。" +msgid "World boundary (infinite plane) shape resource for 3D physics." +msgstr "世界边界(无限平面)形状资源,用于 3D 物理。" + +msgid "The [Plane] used by the [WorldBoundaryShape3D] for collision." +msgstr "该 [WorldBoundaryShape3D] 用于碰撞的 [Plane]。" + msgid "" "Default environment properties for the entire scene (post-processing " "effects, lighting and background settings)." msgstr "整个场景的默认环境属性,后期处理效果、照明和背景设置。" msgid "" +"The [WorldEnvironment] node is used to configure the default [Environment] " +"for the scene.\n" +"The parameters defined in the [WorldEnvironment] can be overridden by an " +"[Environment] node set on the current [Camera3D]. Additionally, only one " +"[WorldEnvironment] may be instantiated in a given scene at a time.\n" +"The [WorldEnvironment] allows the user to specify default lighting " +"parameters (e.g. ambient lighting), various post-processing effects (e.g. " +"SSAO, DOF, Tonemapping), and how to draw the background (e.g. solid color, " +"skybox). Usually, these are added in order to improve the realism/color " +"balance of the scene." +msgstr "" +"[WorldEnvironment] 节点用于为场景配置默认的 [Environment]。\n" +"[WorldEnvironment] 中定义的参数可以被设置为当前的 [Camera3D] 上所设置的 " +"[Environment] 资源覆盖。此外,在一个给定场景中,同一时间只能实例化一个 " +"[WorldEnvironment]。\n" +"[WorldEnvironment] 允许用户指定默认的照明参数(例如环境照明)、各种后处理效果" +"(例如 SSAO、DOF、色调映射)、以及如何绘制背景(例如纯色、天空盒)。通常,添" +"加这些是为了提高场景的真实感/色彩平衡。" + +msgid "" "The [Environment] resource used by this [WorldEnvironment], defining the " "default properties." msgstr "" @@ -66053,6 +83725,9 @@ msgid "" "Returns the name of this interface (OpenXR, OpenVR, OpenHMD, ARKit, etc)." msgstr "返回该接口的名称(OpenXR、OpenVR、OpenHMD、ARKit 等)。" +msgid "Returns the projection matrix for a view/eye." +msgstr "返回视图/眼睛的投影矩阵。" + msgid "" "Returns the resolution at which we should render our intermediate results " "before things like lens distortion are applied by the VR platform." @@ -66072,52 +83747,6 @@ 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 "停止穿透。" @@ -66200,6 +83829,9 @@ msgstr "" msgid "Base class for XR interface extensions (plugins)." msgstr "XR 接口扩展(插件)的基类。" +msgid "External XR interface plugins should inherit from this class." +msgstr "外部 XR 接口插件应继承自这个类。" + msgid "Returns the capabilities of this interface." msgstr "返回该接口的功能。" @@ -66212,6 +83844,9 @@ msgstr "返回接受渲染结果的深度纹理(如果适用)。" msgid "Returns the name of this interface." msgstr "返回该接口的名称。" +msgid "Called after the XR [Viewport] draw logic has completed." +msgstr "在 XR [Viewport] 绘制逻辑完成后调用。" + msgid "Set the play area mode for this interface." msgstr "设置该接口的游玩区域模式。" @@ -66391,6 +84026,48 @@ msgid "" "space." msgstr "注册一个新的 [XRPositionalTracker],用于跟踪现实空间中的一个空间位置。" +msgid "" +"This is an important function to understand correctly. AR and VR platforms " +"all handle positioning slightly differently.\n" +"For platforms that do not offer spatial tracking, our origin point (0, 0, 0) " +"is the location of our HMD, but you have little control over the direction " +"the player is facing in the real world.\n" +"For platforms that do offer spatial tracking, our origin point depends very " +"much on the system. For OpenVR, our origin point is usually the center of " +"the tracking space, on the ground. For other platforms, it's often the " +"location of the tracking camera.\n" +"This method allows you to center your tracker on the location of the HMD. It " +"will take the current location of the HMD and use that to adjust all your " +"tracking data; in essence, realigning the real world to your player's " +"current position in the game world.\n" +"For this method to produce usable results, tracking information must be " +"available. This often takes a few frames after starting your game.\n" +"You should call this method after a few seconds have passed. For example, " +"when the user requests a realignment of the display holding a designated " +"button on a controller for a short period of time, or when implementing a " +"teleport mechanism." +msgstr "" +"正确地理解这个函数非常重要。AR 和 VR 平台处理定位的方式略有不同。\n" +"对于不提供空间跟踪的平台,我们的原点 (0,0,0) 是 HMD 的位置,但您几乎无法控制" +"玩家在现实世界中面对的方向。\n" +"对于提供空间跟踪的平台,我们的原点在很大程度上取决于系统。对于 OpenVR,原点通" +"常是地面上跟踪空间的中心。对于其他平台,它通常是跟踪相机的位置。\n" +"此方法允许您将跟踪器置于 HMD 的位置。它将获取 HMD 的当前位置并使用它来调整您" +"的所有跟踪数据;从本质上讲,将现实世界重新调整到玩家在游戏世界中的当前位" +"置。\n" +"为了使这种方法产生可用的结果,跟踪信息必须可用。这通常在开始游戏后需要几" +"帧。\n" +"您应该在几秒钟后调用此方法。例如,当用户请求重新调整显示时,按住控制器上的指" +"定按钮一小段时间,或者当实现传送机制时。" + +msgid "" +"Finds an interface by its [param name]. For example, if your project uses " +"capabilities of an AR/VR platform, you can find the interface for that " +"platform by name and initialize it." +msgstr "" +"通过名称 [param name] 查找接口。例如,如果你的项目使用 AR/VR 平台的功能,你可" +"以通过名称找到该平台的接口并初始化。" + msgid "Returns the primary interface's transformation." msgstr "返回主界面的变换。" @@ -66552,6 +84229,29 @@ msgid "Closes the underlying resources used by this instance." msgstr "关闭该实例底层所使用的资源。" msgid "" +"Stops writing to a file within the archive.\n" +"It will fail if there is no open file." +msgstr "" +"停止向归档中的文件进行写入。\n" +"如果没有打开文件,则会失败。" + +msgid "" +"Opens a zip file for writing at the given path using the specified write " +"mode.\n" +"This must be called before everything else." +msgstr "" +"打开给定路径处的 Zip 文件,使用指定的写入模式进行写入。\n" +"必须在其他调用前调用。" + +msgid "" +"Starts writing to a file within the archive. Only one file can be written at " +"the same time.\n" +"Must be called after [method open]." +msgstr "" +"开始向存档中的一个文件写入。同一时间只能写一个文件。\n" +"必须在[method open]之后调用。" + +msgid "" "Write the given [param data] to the file.\n" "Needs to be called after [method start_file]." msgstr "" |