From 80e16728362758e8d401f2c9cba75b368ce6ce4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Verschelde?= Date: Thu, 16 Nov 2023 17:38:43 +0100 Subject: [PATCH] i18n: Sync translations with Weblate --- doc/translations/de.po | 1141 +- doc/translations/es.po | 29 - doc/translations/fr.po | 123 +- doc/translations/zh_CN.po | 15381 +++++++++++++++++++++- doc/translations/zh_TW.po | 175 - editor/translations/editor/ar.po | 422 +- editor/translations/editor/bg.po | 18 - editor/translations/editor/ca.po | 15 - editor/translations/editor/cs.po | 32 - editor/translations/editor/de.po | 299 +- editor/translations/editor/el.po | 15 - editor/translations/editor/eo.po | 15 - editor/translations/editor/es.po | 100 +- editor/translations/editor/es_AR.po | 30 - editor/translations/editor/et.po | 27 - editor/translations/editor/fa.po | 448 +- editor/translations/editor/fi.po | 99 +- editor/translations/editor/fr.po | 579 +- editor/translations/editor/gl.po | 23 - editor/translations/editor/he.po | 15 - editor/translations/editor/hu.po | 15 - editor/translations/editor/id.po | 45 +- editor/translations/editor/it.po | 73 +- editor/translations/editor/ja.po | 162 +- editor/translations/editor/ka.po | 15 - editor/translations/editor/ko.po | 72 - editor/translations/editor/lv.po | 25 +- editor/translations/editor/ms.po | 15 - editor/translations/editor/nb.po | 12 - editor/translations/editor/nl.po | 22 - editor/translations/editor/pl.po | 293 +- editor/translations/editor/pt.po | 66 - editor/translations/editor/pt_BR.po | 73 - editor/translations/editor/ro.po | 15 - editor/translations/editor/ru.po | 282 +- editor/translations/editor/sk.po | 27 - editor/translations/editor/sv.po | 27 - editor/translations/editor/th.po | 21 - editor/translations/editor/tr.po | 288 +- editor/translations/editor/uk.po | 66 - editor/translations/editor/vi.po | 57 +- editor/translations/editor/zh_CN.po | 263 +- editor/translations/editor/zh_TW.po | 80 - editor/translations/properties/de.po | 215 +- editor/translations/properties/fr.po | 13 +- editor/translations/properties/ja.po | 294 +- editor/translations/properties/pl.po | 96 +- editor/translations/properties/pt.po | 16 +- editor/translations/properties/ru.po | 32 +- editor/translations/properties/tr.po | 205 +- editor/translations/properties/zh_CN.po | 213 +- 51 files changed, 19868 insertions(+), 2216 deletions(-) diff --git a/doc/translations/de.po b/doc/translations/de.po index 7536065eb42..7c859e57b55 100644 --- a/doc/translations/de.po +++ b/doc/translations/de.po @@ -6,7 +6,7 @@ # Jaigskim , 2020. # So Wieso , 2020, 2022, 2023. # artism90 , 2020. -# HugeGameArt , 2020. +# HugeGameArt , 2020, 2023. # Günther Bohn , 2020, 2021. # Rémi Verschelde , 2020. # Julian Pritzi , 2020. @@ -80,8 +80,8 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine class reference\n" "Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n" -"PO-Revision-Date: 2023-11-09 22:40+0000\n" -"Last-Translator: Tobias Mohr \n" +"PO-Revision-Date: 2023-11-15 10:06+0000\n" +"Last-Translator: HugeGameArt \n" "Language-Team: German \n" "Language: de\n" @@ -895,6 +895,81 @@ msgstr "" "code] durch [code]0[/code] ergibt nicht [Konstante NAN] und führt stattdessen " "zu einem Laufzeitfehler." +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" +"extends Node\n" +"\n" +"enum Direction {LEFT, RIGHT, UP, DOWN}\n" +"\n" +"# Built-in types.\n" +"@export var string = \"\"\n" +"@export var int_number = 5\n" +"@export var float_number: float = 5\n" +"\n" +"# Enums.\n" +"@export var type: Variant.Type\n" +"@export var format: Image.Format\n" +"@export var direction: Direction\n" +"\n" +"# Resources.\n" +"@export var image: Image\n" +"@export var custom_resource: CustomResource\n" +"\n" +"# Nodes.\n" +"@export var node: Node\n" +"@export var custom_node: CustomNode\n" +"\n" +"# Typed arrays.\n" +"@export var int_array: Array[int]\n" +"@export var direction_array: Array[Direction]\n" +"@export var image_array: Array[Image]\n" +"@export var node_array: Array[Node]\n" +"[/codeblock]\n" +"[b]Note:[/b] Custom resources and nodes must be registered as global classes " +"using [code]class_name[/code].\n" +"[b]Note:[/b] Node export is only supported in [Node]-derived classes and has " +"a number of other limitations." +msgstr "" +"Markiere die folgende Eigenschaft als exportiert (editierbar im Inspector " +"Dock und auf der Festplatte gespeichert). Man kann die Art der exportierten " +"Eigenschaft mit der Typ-Hinweis Notation überprüfen.\n" +"[codeblock]\n" +"extends Node\n" +"\n" +"enum Direction {LEFT, RIGHT, UP, DOWN}\n" +"\n" +"# Built-in types.\n" +"@export var string = \"\"\n" +"@export var int_number = 5\n" +"@export var float_number: float = 5\n" +"\n" +"# Enums.\n" +"@export var type: Variant.Type\n" +"@export var format: Image.Format\n" +"@export var direction: Direction\n" +"\n" +"# Resources.\n" +"@export var image: Image\n" +"@export var custom_resource: CustomResource\n" +"\n" +"# Nodes.\n" +"@export var node: Node\n" +"@export var custom_node: CustomNode\n" +"\n" +"# Typed arrays.\n" +"@export var int_array: Array[int]\n" +"@export var direction_array: Array[Direction]\n" +"@export var image_array: Array[Image]\n" +"@export var node_array: Array[Node]\n" +"[/codeblock]\n" +"[b]Note:[/b] Custom resources and nodes must be registered as global classes " +"using [code]class_name[/code].\n" +"[b]Note:[/b] Node export is only supported in [Node]-derived classes and has " +"a number of other limitations." + msgid "" "Define a new category for the following exported properties. This helps to " "organize properties in the Inspector dock.\n" @@ -3744,6 +3819,25 @@ msgstr "" "tanh(a) # Gibt 0.6 zurück\n" "[/codeblock]" +msgid "" +"Returns a human-readable name of the given [param type], using the [enum " +"Variant.Type] values.\n" +"[codeblock]\n" +"print(TYPE_INT) # Prints 2.\n" +"print(type_string(TYPE_INT)) # Prints \"int\".\n" +"print(type_string(TYPE_STRING)) # Prints \"String\".\n" +"[/codeblock]\n" +"See also [method typeof]." +msgstr "" +"Gibt einen lesbaren Namen des gegebenen [param-type] und verwendet dafür die " +"Werte aus [Variant.Type].\n" +"[codeblock]\n" +"print(TYPE_INT) # Gibt 2 aus.\n" +"print(type_string(TYPE_INT)) # Gibt einen \"int\" aus.\n" +"print(type_string(TYPE_STRING)) # Gibt einen \"String\" aus.\n" +"[/codeblock]\n" +"Siehe auch: [method typeof]." + msgid "" "Encodes a [Variant] value to a byte array, without encoding objects. " "Deserialization can be done with [method bytes_to_var].\n" @@ -3811,25 +3905,6 @@ msgstr "" "unterstützt und führt zu einem leeren Wert für diese Typen, unabhängig von " "ihren Daten." -msgid "" -"Returns a weak reference to an object, or [code]null[/code] if [param obj] is " -"invalid.\n" -"A weak reference to an object is not enough to keep the object alive: when " -"the only remaining references to a referent are weak references, garbage " -"collection is free to destroy the referent and reuse its memory for something " -"else. However, until the object is actually destroyed the weak reference may " -"return the object even if there are no strong references to it." -msgstr "" -"Gibt einen schwachen Verweis auf ein Objekt zurück, oder [code]null[/code], " -"wenn [param obj] ungültig ist.\n" -"Eine schwache Referenz auf ein Objekt reicht nicht aus, um das Objekt am " -"Leben zu erhalten: Wenn die einzigen verbleibenden Referenzen auf einen " -"Referenten schwache Referenzen sind, steht es der Garbage Collection frei, " -"den Referenten zu zerstören und seinen Speicher für etwas anderes zu " -"verwenden. Bis zur tatsächlichen Zerstörung des Objekts kann die schwache " -"Referenz das Objekt jedoch zurückgeben, auch wenn es keine starken Referenzen " -"auf das Objekt gibt." - msgid "" "Wraps the [Variant] [param value] between [param min] and [param max]. Can be " "used for creating loop-alike behavior or infinite surfaces.\n" @@ -6428,6 +6503,27 @@ msgstr "" "[b]Hinweis:[/b] Aufgrund von Fließkomma-Präzisionsfehlern sollten Sie " "stattdessen [method is_equal_approx] verwenden, das zuverlässiger ist." +msgid "" +"Inversely transforms (multiplies) the [AABB] by the given [Transform3D] " +"transformation matrix, under the assumption that the transformation basis is " +"orthonormal (i.e. rotation/reflection is fine, scaling/skew is not).\n" +"[code]aabb * transform[/code] is equivalent to [code]transform.inverse() * " +"aabb[/code]. See [method Transform3D.inverse].\n" +"For transforming by inverse of an affine transformation (e.g. with scaling) " +"[code]transform.affine_inverse() * aabb[/code] can be used instead. See " +"[method Transform3D.affine_inverse]." +msgstr "" +"Invertiert die (multipliziert im mathematischen Sinn) die gegebene Matrix " +"[AABB] mit der gegebenen [Transform3D] Transformationsmatrix, unter der " +"Annahme dass die Transformationsbasis orthogonal zur gegebenen Matrix " +"steht(also ist Rotation/Reflektion normal, aber Skalierung nicht).\n" +"[code]aabb * transform[/code] is equivalent to [code]transform.inverse() * " +"aabb[/code]. \n" +"Siehe auch [method Transform3D.inverse] um mit der Inversen einer affinen " +"Transformation zu invertieren.\n" +"[code]transform.affine_inverse() * aabb[/code] kann auch verwendet werden. \n" +"Siehe [methodTransform3D.affine_inverse]." + msgid "" "Returns [code]true[/code] if the AABBs are exactly equal.\n" "[b]Note:[/b] Due to floating-point precision errors, consider using [method " @@ -8045,6 +8141,13 @@ msgstr "" "Nur Editor. Benachrichtigt, wenn die Eigenschaft aktualisiert wurde, um den " "Dummy [AnimationPlayer] im Animationsplayer-Editor zu aktualisieren." +msgid "" +"Process animation during process frames (see [constant Node." +"NOTIFICATION_INTERNAL_PROCESS])." +msgstr "" +"Verarbeite Animation während Prozess-Frames (siehe [constant Node. " +"NOTIFICATION_INTERNAL_PROCESS])." + msgid "" "Do not process animation. Use [method advance] to process the animation " "manually." @@ -8480,6 +8583,129 @@ msgstr "Eingangs- und Ausgangsnodes sind identisch." msgid "The specified connection already exists." msgstr "Die angegebene Verbindung existiert bereits." +msgid "" +"A resource to add to an [AnimationNodeBlendTree]. This animation node will " +"execute a sub-animation and return once it finishes. Blend times for fading " +"in and out can be customized, as well as filters.\n" +"After setting the request and changing the animation playback, the one-shot " +"node automatically clears the request on the next process frame by setting " +"its [code]request[/code] value to [constant ONE_SHOT_REQUEST_NONE].\n" +"[codeblocks]\n" +"[gdscript]\n" +"# Play child animation connected to \"shot\" port.\n" +"animation_tree.set(\"parameters/OneShot/request\", AnimationNodeOneShot." +"ONE_SHOT_REQUEST_FIRE)\n" +"# Alternative syntax (same result as above).\n" +"animation_tree[\"parameters/OneShot/request\"] = AnimationNodeOneShot." +"ONE_SHOT_REQUEST_FIRE\n" +"\n" +"# Abort child animation connected to \"shot\" port.\n" +"animation_tree.set(\"parameters/OneShot/request\", AnimationNodeOneShot." +"ONE_SHOT_REQUEST_ABORT)\n" +"# Alternative syntax (same result as above).\n" +"animation_tree[\"parameters/OneShot/request\"] = AnimationNodeOneShot." +"ONE_SHOT_REQUEST_ABORT\n" +"\n" +"# Abort child animation with fading out connected to \"shot\" port.\n" +"animation_tree.set(\"parameters/OneShot/request\", AnimationNodeOneShot." +"ONE_SHOT_REQUEST_FADE_OUT)\n" +"# Alternative syntax (same result as above).\n" +"animation_tree[\"parameters/OneShot/request\"] = AnimationNodeOneShot." +"ONE_SHOT_REQUEST_FADE_OUT\n" +"\n" +"# Get current state (read-only).\n" +"animation_tree.get(\"parameters/OneShot/active\")\n" +"# Alternative syntax (same result as above).\n" +"animation_tree[\"parameters/OneShot/active\"]\n" +"\n" +"# Get current internal state (read-only).\n" +"animation_tree.get(\"parameters/OneShot/internal_active\")\n" +"# Alternative syntax (same result as above).\n" +"animation_tree[\"parameters/OneShot/internal_active\"]\n" +"[/gdscript]\n" +"[csharp]\n" +"// Play child animation connected to \"shot\" port.\n" +"animationTree.Set(\"parameters/OneShot/request\", (int)AnimationNodeOneShot." +"OneShotRequest.Fire);\n" +"\n" +"// Abort child animation connected to \"shot\" port.\n" +"animationTree.Set(\"parameters/OneShot/request\", (int)AnimationNodeOneShot." +"OneShotRequest.Abort);\n" +"\n" +"// Abort child animation with fading out connected to \"shot\" port.\n" +"animationTree.Set(\"parameters/OneShot/request\", (int)AnimationNodeOneShot." +"OneShotRequest.FadeOut);\n" +"\n" +"// Get current state (read-only).\n" +"animationTree.Get(\"parameters/OneShot/active\");\n" +"\n" +"// Get current internal state (read-only).\n" +"animationTree.Get(\"parameters/OneShot/internal_active\");\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"Eine Ressource zu einem [AnimationNodeBlendTree] hinzufügen. Dieser " +"Animationsknoten führt eine Unteranimation aus und kehrt zurück, sobald er " +"fertig ist. Mischzeiten für Ein- und Ausblenden können angepasst werden, " +"sowie Filter.\n" +"Nach der Einstellung der Anfrage und der Änderung der Animationswiedergabe " +"löscht der Ein-Schuss-Knoten automatisch die Anfrage auf dem nächsten " +"Prozessrahmen, indem er seinen [code]Request[/code]-Wert auf [constant " +"ONE_SHOT_REQUEST_NONE] einstellt.\n" +"[codeblocks]\n" +"[gdscript]\n" +"# Spielen der Kinderanimation verbunden mit \"shot\" Port.\n" +"Animation_tree.set(\"parameter/OneShot/request\", AnimationNodeOneShot." +"ONE_SHOT_REQUEST_FIRE)\n" +"# Alternative Syntax (gleiches Ergebnis wie oben).\n" +"Animation_tree[\"parameter/OneShot/request\"] = AnimationNodeOneShot." +"ONE_SHOT_REQUEST_FIRE\n" +"\n" +"# Abbrechen der Kinderanimation verbunden mit \"shot\" Port.\n" +"Animation_tree.set(\"parameter/OneShot/request\", AnimationNodeOneShot." +"ONE_SHOT_REQUEST_ABORT)\n" +"# Alternative Syntax (gleiches Ergebnis wie oben).\n" +"Animation_tree[\"parameter/OneShot/request\"] = AnimationNodeOneShot." +"ONE_SHOT_REQUEST_ABORT\n" +"\n" +"# Abbrechen der Kinderanimation mit Fading out verbunden mit \"shot\" Port.\n" +"Animation_tree.set(\"parameter/OneShot/request\", AnimationNodeOneShot." +"ONE_SHOT_REQUEST_FADE_OUT)\n" +"# Alternative Syntax (gleiches Ergebnis wie oben).\n" +"Animation_tree[\"parameter/OneShot/request\"] = AnimationNodeOneShot." +"ONE_SHOT_REQUEST_FADE_OUT\n" +"\n" +"# Erhalten Sie den aktuellen Zustand (nur lesen).\n" +"animation_tree.get(\"parameter/OneShot/active\")\n" +"# Alternative Syntax (gleiches Ergebnis wie oben).\n" +"Animation_tree[\"parameter/OneShot/active\"]\n" +"\n" +"# Erhalten Sie den aktuellen internen Zustand (nur lesen).\n" +"animation_tree.get(\"parameter/OneShot/internal_active\")\n" +"# Alternative Syntax (gleiches Ergebnis wie oben).\n" +"Animation_tree[\"parameter/OneShot/internal_active\"]\n" +"[/gdscript]\n" +"[csharp]\n" +"// Kinderanimation mit \"Schuss\"-Port verbinden.\n" +"animationTree.Set(\"parameter/OneShot/request\", (int)AnimationNodeOneShot." +"OneShotRequest.Fire);\n" +"\n" +"// Abbrechen kinderanimation verbunden mit \"shot\" port.\n" +"animationTree.Set(\"parameter/OneShot/request\", (int)AnimationNodeOneShot." +"OneShotRequest.Abort);\n" +"\n" +"// Abbrechen kinderanimation mit ausblenden verbunden mit \"shot\" port.\n" +"animationTree.Set(\"parameter/OneShot/request\", (int)AnimationNodeOneShot." +"OneShotRequest.Fout);\n" +"\n" +"// Erhalten Sie aktuellen Zustand (nur lesen).\n" +"AnimationTree.Get(\"parameter/OneShot/active\");\n" +"\n" +"// Erhalten Sie aktuellen internen Zustand (nur lesen).\n" +"AnimationTree.Get(\"parameter/OneShot/internal_active\");\n" +"[/csharp]\n" +"[/codeblocks]" + msgid "" "If [code]true[/code], the sub-animation will restart automatically after " "finishing.\n" @@ -8754,6 +8980,13 @@ msgstr "" msgid "Returns [code]true[/code] if an animation is playing." msgstr "Gibt [code]true[/code] zurück, wenn eine Animation abgespielt wird." +msgid "" +"If there is a next path by travel or auto advance, immediately transitions " +"from the current state to the next state." +msgstr "" +"Wenn es einen nächsten Weg durch Springen oder Autovorschub gibt, gehe sofort " +"vom aktuellen Zustand in den nächsten Zustand über." + msgid "" "Starts playing the given animation.\n" "If [param reset] is [code]true[/code], the animation is played from the " @@ -11479,7 +11712,7 @@ msgstr "" "Einrichten der Verdeckungsausblendung." msgid "Occlusion culling" -msgstr "Occlusion culling" +msgstr "Occlusion Culling" msgid "" "Sets [member indices] and [member vertices], while updating the final " @@ -12757,6 +12990,25 @@ msgstr "" "Tiefpassfilter für Rückkopplung, in Hz. Frequenzen unterhalb dieses Wertes " "werden aus dem Quellsignal herausgefiltert." +msgid "First tap delay time in milliseconds." +msgstr "Erste Tap-Verzögerungszeit in Millisekunden." + +msgid "Sound level for the first tap." +msgstr "Geräuschstufe für den ersten Click." + +msgid "" +"Pan position for the first tap. Value can range from -1 (fully left) to 1 " +"(fully right)." +msgstr "" +"Schwenkposition für den ersten Click. Der Wert kann von -1 (ganz links) bis 1 " +"(ganz rechts) reichen." + +msgid "Second tap delay time in milliseconds." +msgstr "Zweite Tap-Verzögerungszeit in Millisekunden." + +msgid "Sound level for the second tap." +msgstr "Geräuschstufe für den zweiten Click." + msgid "" "Different types are available: clip, tan, lo-fi (bit crushing), overdrive, or " "waveshape.\n" @@ -13772,6 +14024,14 @@ msgstr "" "geschoben werden können, ohne dass dieser überläuft. Wenn das Ergebnis " "[code]0[/code] ist, ist der Puffer voll." +msgid "" +"Returns the number of times the playback skipped due to a buffer underrun in " +"the audio sample data. This value is reset at the start of the playback." +msgstr "" +"Gibt die Anzahl der Zeiten einer Wiedergabe zurück, die aufgrund eines " +"Pufferunterlaufs in den Audioprobendaten übersprungen wurden. Dieser Wert " +"wird zu Beginn der Wiedergabe zurückgesetzt." + msgid "" "Pushes several audio data frames to the buffer. This is usually more " "efficient than [method push_frame] in C# and compiled languages via " @@ -14690,6 +14950,13 @@ msgstr "" "Der Bereich, der von der [BackBufferCopy] abgedeckt wird. Wird nur verwendet, " "wenn [member copy_mode] die [Konstante COPY_MODE_RECT] ist." +msgid "" +"Disables the buffering mode. This means the [BackBufferCopy] node will " +"directly use the portion of screen it covers." +msgstr "" +"Deaktiviert den Buffer-Modus. Das bedeutet, dass der [BackBufferCopy]-Knoten " +"den Ausschnitt des Bildschirms benutzen wird, den er abdeckt." + msgid "[BackBufferCopy] buffers a rectangular region." msgstr "[BackBufferCopy] speichert eine rechteckige Region zwischen." @@ -14736,6 +15003,22 @@ msgstr "" "Gibt [code]true[/code] zurück, wenn die Maus die Schaltfläche betreten und " "noch nicht verlassen hat." +msgid "" +"Changes the [member button_pressed] state of the button, without emitting " +"[signal toggled]. Use when you just want to change the state of the button " +"without sending the pressed event (e.g. when initializing scene). Only works " +"if [member toggle_mode] is [code]true[/code].\n" +"[b]Note:[/b] This method doesn't unpress other buttons in [member " +"button_group]." +msgstr "" +"Ändert den Zustand des Buttons [member button_pressed], ohne dass [signal " +"toggled] aufgerufen wird. Verwenden Sie es nur, wenn Sie den Zustand des " +"Buttons ändern möchten, ohne das Gedrückt-Ereignis zu senden (z.B. wenn Sie " +"Szene initialisieren). Nur funktioniert, wenn [member toggle_mode] " +"[code]true[/code] ist.\n" +"[b]Anmerkung:[/b] Diese Methode druckt keine anderen Tasten in [member " +"button_group]." + msgid "" "Determines when the button is considered clicked, one of the [enum " "ActionMode] constants." @@ -14764,6 +15047,100 @@ msgstr "" "Um sowohl Linksklick als auch Rechtsklick zuzulassen, verwendet man " "[code]MOUSE_BUTTON_MASK_LEFT | MOUSE_BUTTON_MASK_RIGHT[/code]." +msgid "" +"If [code]true[/code], the button's state is pressed. Means the button is " +"pressed down or toggled (if [member toggle_mode] is active). Only works if " +"[member toggle_mode] is [code]true[/code].\n" +"[b]Note:[/b] Setting [member button_pressed] will result in [signal toggled] " +"to be emitted. If you want to change the pressed state without emitting that " +"signal, use [method set_pressed_no_signal]." +msgstr "" +"Wenn [code]true[/code], wird der Zustand des Buttons gedrückt. Bedeutet, dass " +"die Taste nach unten gedrückt oder angeschaltet wird (wenn [member " +"toggle_mode] aktiv ist). Funktioniert nur, wenn [member toggle_mode] " +"[code]true[/code] ist.\n" +"[b]Hinweis:[/b] Die Einstellung [member button_pressed] führt dazu, dass " +"[signal toggled] aufgerufen wird. Wenn Sie den gedrückten Zustand ändern " +"möchten, ohne dieses Signal zu emittieren, verwenden Sie [Method " +"set_pressed_no_signal]." + +msgid "" +"If [code]true[/code], the button is in disabled state and can't be clicked or " +"toggled." +msgstr "" +"Wenn [code]true[/code], ist der Button im deaktivierten Zustand und kann " +"nicht angeklickt oder umgeschaltet werden." + +msgid "" +"If [code]true[/code], the button stays pressed when moving the cursor outside " +"the button while pressing it.\n" +"[b]Note:[/b] This property only affects the button's visual appearance. " +"Signals will be emitted at the same moment regardless of this property's " +"value." +msgstr "" +"Wenn [code]true[/code], bleibt der Button gedrückt, wenn Sie den Cursor vom " +"Button weg bewegen, während Sie diesen drücken.\n" +"[b]Anmerkung:[/b] Diese Eigenschaft beeinflusst nur das visuelle " +"Erscheinungsbild des Buttons. Signale werden im gleichen Moment unabhängig " +"von dem Wert dieser Eigenschaft aufgerufen." + +msgid "[Shortcut] associated to the button." +msgstr "[Shortcut] der Schaltfläche zugeordnet." + +msgid "" +"If [code]true[/code], the button will highlight for a short amount of time " +"when its shortcut is activated. If [code]false[/code] and [member " +"toggle_mode] is [code]false[/code], the shortcut will activate without any " +"visual feedback." +msgstr "" +"Wenn [code]true[/code], wird der Button für eine kurze Zeit, wenn ihre " +"Verknüpfung aktiviert wird, markiert. Wenn [code]false[/code] und [member " +"toggle_mode] [code]false[/code] ist, wird die Verknüpfung ohne visuelles " +"Feedback aktiviert." + +msgid "" +"If [code]true[/code], the button will add information about its shortcut in " +"the tooltip." +msgstr "" +"Wenn [code]true[/code], wird der Button Informationen über ihre Verknüpfung " +"im Tooltip hinzufügen." + +msgid "" +"If [code]true[/code], the button is in toggle mode. Makes the button flip " +"state between pressed and unpressed each time its area is clicked." +msgstr "" +"Wenn [code]true[/code], ist der Button im Umschaltmodus. Macht den Knopf-Flip-" +"Zustand zwischen gedrückt und gedrückt jedes Mal, wenn sein Bereich " +"angeklickt wird." + +msgid "Emitted when the button starts being held down." +msgstr "Aufgerufen, sobald der Button nach unten gehalten wird." + +msgid "Emitted when the button stops being held down." +msgstr "Aufgerufen, sobald der Button nicht mehr nach unten gehalten wird." + +msgid "" +"Emitted when the button is toggled or pressed. This is on [signal " +"button_down] if [member action_mode] is [constant ACTION_MODE_BUTTON_PRESS] " +"and on [signal button_up] otherwise.\n" +"If you need to know the button's pressed state (and [member toggle_mode] is " +"active), use [signal toggled] instead." +msgstr "" +"Aufgerufen, wenn der Button umgeschaltet oder gedrückt wird. Dies ist der " +"Fall bei [signal button_down], wenn [member action_mode] [constant " +"ACTION_MODE_BUTTON_PRESS] gilt oder [signal button_up] andernfalls.\n" +"Wenn Sie den gedrückten Zustand des Buttons kennen müssen (und [member " +"toggle_mode] aktiv ist), verwenden Sie stattdessen [signal toggled]." + +msgid "" +"Emitted when the button was just toggled between pressed and normal states " +"(only if [member toggle_mode] is active). The new state is contained in the " +"[param toggled_on] argument." +msgstr "" +"Aufgerufen, wenn der Button nur zwischen gedrückten und normalen Zuständen " +"umgeschaltet wurde (nur, wenn [member toggle_mode] aktiv ist). Der neue " +"Zustand ist im [param toggled_on] Argument enthalten." + msgid "" "The normal state (i.e. not pressed, not hovered, not toggled and enabled) of " "buttons." @@ -14774,9 +15151,15 @@ msgstr "" msgid "The state of buttons are pressed." msgstr "Der Zustand der gedrückten Buttons." +msgid "The state of buttons are hovered." +msgstr "Der Zustand der Knöpfe sind schwebend." + msgid "The state of buttons are disabled." msgstr "Der Status der Buttons ist deaktiviert." +msgid "The state of buttons are both hovered and pressed." +msgstr "Der Zustand der Knöpfe sind sowohl schwebend als auch gedrückt." + msgid "Require just a press to consider the button clicked." msgstr "Es genügt ein Druck, um den Button als angeklickt zu betrachten." @@ -14824,6 +15207,22 @@ msgstr "" "aktiviert werden, indem das entsprechende Mitglied auf [code]true[/code] " "gesetzt wird." +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 to enable " +"or disable multiple flags at once. Flags can also be enabled by setting the " +"corresponding member to [code]true[/code]. See [enum Flags] enumerator for " +"options." +msgstr "" +"Wenn [code]true[/code], wird das angegebene Flag aktiviert. Flags sind " +"optionales Verhalten, die ein- und ausgeschaltet werden können. Mit dieser " +"Funktion kann nur eine Flagge gleichzeitig aktiviert werden, die " +"Flaggenenumeratoren können nicht zusammen Bit maskiert werden, um mehrere " +"Flags gleichzeitig zu aktivieren oder zu deaktivieren. Flags können auch " +"aktiviert werden, indem das entsprechende Mitglied auf [code]true[/code] " +"gesetzt wird. Siehe [enum Flags] Enumerator für Optionen." + msgid "" "The material's base color.\n" "[b]Note:[/b] If [member detail_enabled] is [code]true[/code] and a [member " @@ -14872,6 +15271,14 @@ msgstr "" "albedo_texture_force_srgb] [code]false[/code] ist, wenn es nicht sein sollte, " "wird die Textur zu hell erscheinen." +msgid "" +"Enables multichannel signed distance field rendering shader. Use [member " +"msdf_pixel_range] and [member msdf_outline_size] to configure MSDF parameters." +msgstr "" +"Ermöglicht einen mehrkanaligen signierten Distanzfeld Rendering Shader. " +"Verwenden Sie [member msdf_pixel_range] und [member msdf_outline_size], um " +"MSDF-Parameter zu konfigurieren." + msgid "Threshold at which antialiasing will be applied on the alpha channel." msgstr "" "Schwellenwert, bei dem das Antialiasing auf den Alphakanal angewendet wird." @@ -14880,6 +15287,18 @@ msgid "The type of alpha antialiasing to apply. See [enum AlphaAntiAliasing]." msgstr "" "Der Typ des anzuwendenden Alpha-Antialiasing. Siehe [enum AlphaAntiAliasing]." +msgid "" +"Threshold at which the alpha scissor will discard values. Higher values will " +"result in more pixels being discarded. If the material becomes too opaque at " +"a distance, try increasing [member alpha_scissor_threshold]. If the material " +"disappears at a distance, try decreasing [member alpha_scissor_threshold]." +msgstr "" +"Schwelle, bei der die Werte der alpha-Schere verworfen werden. Höhere Werte " +"führen dazu, dass mehr Pixel verworfen werden. Wenn das Material in einer " +"Entfernung zu durchsichtig wird, versuchen Sie, [member " +"alpha_scissor_threshold] zu erhöhen. Wenn das Material in einer Entfernung " +"verschwindet, versuchen Sie, [Mitglied alpha_scissor_threshold] zu verringern." + msgid "" "The strength of the anisotropy effect. This is multiplied by [member " "anisotropy_flowmap]'s alpha channel if a texture is defined there and the " @@ -14889,6 +15308,618 @@ msgstr "" "[member anisotropy_flowmap] multipliziert, wenn dort eine Textur definiert " "ist und die Textur einen Alphakanal enthält." +msgid "" +"If [code]true[/code], anisotropy is enabled. Anisotropy changes the shape of " +"the specular blob and aligns it to tangent space. This is useful for brushed " +"aluminium and hair reflections.\n" +"[b]Note:[/b] Mesh tangents are needed for anisotropy to work. If the mesh " +"does not contain tangents, the anisotropy effect will appear broken.\n" +"[b]Note:[/b] Material anisotropy should not to be confused with anisotropic " +"texture filtering, which can be enabled by setting [member texture_filter] to " +"[constant TEXTURE_FILTER_LINEAR_WITH_MIPMAPS_ANISOTROPIC]." +msgstr "" +"Wenn [code]true[/code] aktiviert ist, wird Anisotropie aktiviert. Anisotropie " +"verändert die Form des spekulären Blobs und richtet es zum tangenten Raum " +"aus. Dies ist nützlich für gebürstetes Aluminium und Haarreflexionen.\n" +"[b]Anmerkung:[/b] Mesh-Tantigen werden benötigt, um anisotropie zu arbeiten. " +"Wenn das Netz keine Tangenten enthält, erscheint der Anisotropieeffekt " +"gebrochen.\n" +"[b]Anmerkung:[/b] Materialanisotropie sollte nicht mit anisotroper " +"Texturfilterung verwechselt werden, die durch Einstellung [member " +"textur_filter] auf [constant TEXTURE_FILTER_LINEAR_WITH_MIPMAPS_ANISOTROPIC] " +"aktiviert werden kann." + +msgid "" +"Texture that offsets the tangent map for anisotropy calculations and " +"optionally controls the anisotropy effect (if an alpha channel is present). " +"The flowmap texture is expected to be a derivative map, with the red channel " +"representing distortion on the X axis and green channel representing " +"distortion on the Y axis. Values below 0.5 will result in negative " +"distortion, whereas values above 0.5 will result in positive distortion.\n" +"If present, the texture's alpha channel will be used to multiply the strength " +"of the [member anisotropy] effect. Fully opaque pixels will keep the " +"anisotropy effect's original strength while fully transparent pixels will " +"disable the anisotropy effect entirely. The flowmap texture's blue channel is " +"ignored." +msgstr "" +"Textur, welche die tangente Karte für Anisotropieberechnungen versetzt und " +"optional den Anisotropieeffekt steuert (wenn ein alpha-Kanal vorhanden ist). " +"Die Flowmap-Textur soll eine Derivatkarte sein, wobei der rote Kanal " +"Verzerrung auf der X-Achse und grüne Kanalverzerrung auf der Y-Achse " +"darstellt. Werte unter 0,5 werden zu negativen Verzerrungen führen, während " +"Werte über 0,5 zu positiven Verzerrungen führen.\n" +"Wenn vorhanden, wird der alpha-Kanal der Textur verwendet, um die Stärke des " +"[member anisotropy]-Effekts zu multiplizieren. Vollständig opake Pixel halten " +"die ursprüngliche Stärke der Anisotropie-Effekt, während volltransparente " +"Pixel den Anisotropie-Effekt vollständig deaktivieren. Der blaue Kanal der " +"Flowmap Textur wird ignoriert." + +msgid "" +"If [code]true[/code], ambient occlusion is enabled. Ambient occlusion darkens " +"areas based on the [member ao_texture]." +msgstr "" +"Wenn [code]true[/code], ist die Umgebungsocclusion aktiviert. Ambient " +"occlusion verdunkelt Bereiche abhängig von der [member ao_texture]." + +msgid "" +"Amount that ambient occlusion affects lighting from lights. If [code]0[/" +"code], ambient occlusion only affects ambient light. If [code]1[/code], " +"ambient occlusion affects lights just as much as it affects ambient light. " +"This can be used to impact the strength of the ambient occlusion effect, but " +"typically looks unrealistic." +msgstr "" +"Stärke, inwieweit die Beleuchtung von Licht durch Ambient Occlusion " +"beeinflusst wird. Wenn [code]0[/code], wirkt die Umgebungsocclusion nur auf " +"Umgebungslicht. Wenn [code]1[/code], wirkt Umgebungs-Occlusion auf Lichter " +"genauso stark wie Umgebungslicht. Dies kann verwendet werden, um die Stärke " +"des Ambient Occlusion Effektes zu beeinflussen, sieht aber typischerweise " +"unrealistisch aus." + +msgid "" +"If [code]true[/code], use [code]UV2[/code] coordinates to look up from the " +"[member ao_texture]." +msgstr "" +"Wenn [code]true[/code] verwendet [code]UV2[/code] Koordinaten, um aus der " +"[member ao_texture] zu suchen." + +msgid "" +"Texture that defines the amount of ambient occlusion for a given point on the " +"object." +msgstr "" +"Textur, die für einen bestimmten Punkt auf dem Objekt die Menge der ambient " +"occlusion definiert." + +msgid "" +"Specifies the channel of the [member ao_texture] in which the ambient " +"occlusion information is stored. This is useful when you store the " +"information for multiple effects in a single texture. For example if you " +"stored metallic in the red channel, roughness in the blue, and ambient " +"occlusion in the green you could reduce the number of textures you use." +msgstr "" +"Gibt den Kanal der [member ao_texture] an, in dem die Umgebungs-" +"Occlusionsinformationen gespeichert sind. Dies ist nützlich, wenn Sie die " +"Informationen für mehrere Effekte in einer einzigen Textur speichern. Zum " +"Beispiel, wenn Sie Metallic im roten Kanal gespeichert, Rauheit in der blauen " +"und Umgebung Okklusion in der grünen Sie könnte die Anzahl der Texturen, die " +"Sie verwenden." + +msgid "" +"The color used by the backlight effect. Represents the light passing through " +"an object." +msgstr "" +"Die Farbe der Hintergrundbeleuchtung. Stellt das durch ein Objekt " +"hindurchtretende Licht dar." + +msgid "" +"Texture used to control the backlight effect per-pixel. Added to [member " +"backlight]." +msgstr "" +"Textur, die verwendet wird, um den Hintergrund-Effekt pro Pixel zu steuern. " +"Hinzugefügt zu [member backlight]." + +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 " +"head instead of on the table. See [url=https://github.com/godotengine/godot/" +"issues/41567]GitHub issue #41567[/url] for details." +msgstr "" +"Kontrolliert, wie das Objekt der Kamera zugewandt ist. Siehe [enum " +"BillboardMode].\n" +"[b]Anmerkung:[/b] Billboard-Modus ist nicht für VR geeignet, da der linke " +"rechte Vektor der Kamera nicht horizontal ist, wenn der Bildschirm statt auf " +"dem Tisch an Ihrem Kopf angebracht ist. Siehe [url=https://github.com/" +"godotengine/godot/issues/41567]GitHub Ausgabe #41567[/url] für Details." + +msgid "" +"The material's blend mode.\n" +"[b]Note:[/b] Values other than [code]Mix[/code] force the object into the " +"transparent pipeline. See [enum BlendMode]." +msgstr "" +"Der Mix-Modus des Materials.\n" +"[b]Anmerkung:[/b] Andere Werte als [code]Mix[/code] zwingen das Objekt in die " +"transparente Pipeline. Siehe [enum BlendMode]." + +msgid "" +"Sets the strength of the clearcoat effect. Setting to [code]0[/code] looks " +"the same as disabling the clearcoat effect." +msgstr "" +"Setzt die Stärke des Klarlackeffekts. Das Einstellen auf [code]0[/code] sieht " +"genauso aus wie das Deaktivieren des Klarlackeffekts." + +msgid "" +"If [code]true[/code], clearcoat rendering is enabled. Adds a secondary " +"transparent pass to the lighting calculation resulting in an added specular " +"blob. This makes materials appear as if they have a clear layer on them that " +"can be either glossy or rough.\n" +"[b]Note:[/b] Clearcoat rendering is not visible if the material's [member " +"shading_mode] is [constant SHADING_MODE_UNSHADED]." +msgstr "" +"Wenn [code]true[/code] aktiviert ist, wird die Klarlackierung aktiviert. Fügt " +"einen sekundären transparenten Pass zur Lichtberechnung hinzu, der zu einem " +"zusätzlichen spekulären Blob führt. Dadurch erscheinen Materialien, als ob " +"sie eine klare Schicht auf ihne[/code]n haben, die glänzend oder rau sein " +"kann.\n" +"[b]Anmerkung:[/b] Klarlack-Rendering ist nicht sichtbar, wenn das Material " +"[member shading_mode] [constant] ist SHADING_MODE_UNSHADED]." + +msgid "" +"Sets the roughness of the clearcoat pass. A higher value results in a rougher " +"clearcoat while a lower value results in a smoother clearcoat." +msgstr "" +"Setzt die Rauhigkeit des Klarlackpasses. Ein höherer Wert führt zu einem " +"raueren Klarlack, während ein niedrigerer Wert zu einem glatteren Klarlack " +"führt." + +msgid "" +"Texture that defines the strength of the clearcoat effect and the glossiness " +"of the clearcoat. Strength is specified in the red channel while glossiness " +"is specified in the green channel." +msgstr "" +"Textur, welche die Stärke des Klarlackeffekts und die Glanzigkeit des " +"Klarlacks definiert. Stärke wird im roten Kanal angegeben, während Glanz im " +"grünen Kanal angegeben wird." + +msgid "" +"Determines which side of the triangle to cull depending on whether the " +"triangle faces towards or away from the camera. See [enum CullMode]." +msgstr "" +"Bestimmt, welche Seite des Dreiecks gecullt wird in Abhängigkeit davon, ob " +"das Dreieck zu oder von der Kamera zugewandt ist. Siehe [enum CullMode]." + +msgid "" +"Determines when depth rendering takes place. See [enum DepthDrawMode]. See " +"also [member transparency]." +msgstr "" +"Bestimmt, wenn die Tiefenwiedergabe erfolgt. Siehe [enum DepthDrawMode]. " +"Siehe auch [Teil Transparenz]." + +msgid "" +"Texture that specifies the color of the detail overlay. [member " +"detail_albedo]'s alpha channel is used as a mask, even when the material is " +"opaque. To use a dedicated texture as a mask, see [member detail_mask].\n" +"[b]Note:[/b] [member detail_albedo] is [i]not[/i] modulated by [member " +"albedo_color]." +msgstr "" +"Textur, welche die Farbe der Detailauflage angibt. [member detail_albedo] " +"Alpha-Kanal wird als Maske verwendet, auch wenn das Material undurchsichtig " +"ist. Um eine dedizierte Textur als Maske zu verwenden, siehe [member " +"detail_mask].\n" +"[b]Anmerkung:[/b] [member detail_albedo] ist [i]nicht[/i] moduliert durch " +"[member albedo_color]." + +msgid "" +"Specifies how the [member detail_albedo] should blend with the current " +"[code]ALBEDO[/code]. See [enum BlendMode] for options." +msgstr "" +"Gibt an, wie der [member detail_albedo] mit dem aktuellen [code]ALBEDO[/code] " +"mischen sollte. Siehe [enum BlendMode] für Optionen." + +msgid "" +"If [code]true[/code], enables the detail overlay. Detail is a second texture " +"that gets mixed over the surface of the object based on [member detail_mask] " +"and [member detail_albedo]'s alpha channel. This can be used to add variation " +"to objects, or to blend between two different albedo/normal textures." +msgstr "" +"Wenn [code]true[/code] die Detailauflage ermöglicht. Detail ist eine zweite " +"Textur, die über die Oberfläche des Objekts gemischt wird, basierend auf " +"[member detail_mask] und [member detail_albedo] Alpha-Kanal. Dies kann " +"verwendet werden, um Variationen zu Objekten hinzuzufügen oder zwischen zwei " +"verschiedenen albedo/normalen Texturen zu vermischen." + +msgid "" +"Texture used to specify how the detail textures get blended with the base " +"textures. [member detail_mask] can be used together with [member " +"detail_albedo]'s alpha channel (if any)." +msgstr "" +"Textur verwendet, um festzulegen, wie die Detailtexturen mit den " +"Basistexturen vermischt werden. [member detail_mask] kann zusammen mit " +"[member detail_albedo]'s alpha-Kanal (falls vorhanden) verwendet werden." + +msgid "" +"Texture that specifies the per-pixel normal of the detail overlay. The " +"[member detail_normal] texture only uses the red and green channels; the blue " +"and alpha channels are ignored. The normal read from [member detail_normal] " +"is oriented around the surface normal provided by the [Mesh].\n" +"[b]Note:[/b] Godot expects the normal map to use X+, Y+, and Z+ coordinates. " +"See [url=http://wiki.polycount.com/wiki/" +"Normal_Map_Technical_Details#Common_Swizzle_Coordinates]this page[/url] for a " +"comparison of normal map coordinates expected by popular engines." +msgstr "" +"Textur, welche die Per-Pixel-Norm der Detailauflage angibt. Die [member " +"detail_normal] Textur verwendet nur die roten und grünen Kanäle; die blauen " +"und alpha-Kanäle werden ignoriert. Die normale Auslesung von [member " +"detail_normal] wird um die von der [Mesh] bereitgestellte Oberflächennormale " +"ausgerichtet.\n" +"[b]Anmerkung:[/b] Godot erwartet, dass die normale Karte X+, Y+ und Z+ " +"Koordinaten verwendet. Siehe [url=http://wiki.polycount.com/wiki/" +"Normal_Map_Technical_Details#Common_Swizzle_Coordinates] diese Seite[/url] " +"für einen Vergleich von normalen Kartenkoordinaten, die von beliebten Motoren " +"erwartet werden." + +msgid "" +"Specifies whether to use [code]UV[/code] or [code]UV2[/code] for the detail " +"layer. See [enum DetailUV] for options." +msgstr "" +"Gibt an, ob für die Detailschicht [code]UV[/code] oder [code]UV2[/code] " +"verwendet werden soll. Siehe [enum DetailUV] für Optionen." + +msgid "The algorithm used for diffuse light scattering. See [enum DiffuseMode]." +msgstr "" +"Der Algorithmus, welcher zur diffusen Lichtstreuung verwendet wird. Siehe " +"[enum DiffuseMode]." + +msgid "If [code]true[/code], the object receives no ambient light." +msgstr "Wenn [code]true[/code], erhält das Objekt kein Umgebungslicht." + +msgid "" +"If [code]true[/code], the object will not be affected by fog (neither " +"volumetric nor depth fog). This is useful for unshaded or transparent " +"materials (e.g. particles), which without this setting will be affected even " +"if fully transparent." +msgstr "" +"Wenn [code]true[/code], wird das Objekt nicht durch Nebel (weder " +"volumetrischer noch Tiefennebel) beeinflusst. Dies ist für ungeschirmte oder " +"transparente Materialien (z.B. Partikel) sinnvoll, die ohne diese Einstellung " +"auch bei volltransparenter Transparenz beeinträchtigt werden." + +msgid "" +"If [code]true[/code], the object receives no shadow that would otherwise be " +"cast onto it." +msgstr "" +"Wenn [code]true[/code], erhält das Objekt keinen Schatten, welcher sonst auf " +"ihn geworfen würde." + +msgid "" +"Distance at which the object appears fully opaque.\n" +"[b]Note:[/b] If [member distance_fade_max_distance] is less than [member " +"distance_fade_min_distance], the behavior will be reversed. The object will " +"start to fade away at [member distance_fade_max_distance] and will fully " +"disappear once it reaches [member distance_fade_min_distance]." +msgstr "" +"Entfernung, bei der das Objekt vollständig opak erscheint.\n" +"[b]Hinweis:[/b] Wenn [mit Abstand_fade_max_distanz] kleiner als [mit " +"Abstand_fade_min_distanz] ist, wird das Verhalten umgekehrt. Das Objekt wird " +"beginnen, in [member Distance_fade_max_distanz] wegzufallen und wird nach dem " +"Erreichen [member Distance_fade_min_distanz] vollständig verschwinden." + +msgid "" +"Distance at which the object starts to become visible. If the object is less " +"than this distance away, it will be invisible.\n" +"[b]Note:[/b] If [member distance_fade_min_distance] is greater than [member " +"distance_fade_max_distance], the behavior will be reversed. The object will " +"start to fade away at [member distance_fade_max_distance] and will fully " +"disappear once it reaches [member distance_fade_min_distance]." +msgstr "" +"Entfernung, bei der das Objekt sichtbar wird. Ist das Objekt weniger als " +"dieser Abstand entfernt, wird es unsichtbar sein.\n" +"[b]Hinweis:[/b] Wenn [Mitglied Distance_fade_min_entfernung] größer ist als " +"[Mitglied Distance_fade_max_entfernung], wird das Verhalten umgekehrt. Das " +"Objekt wird beginnen, in [member Distance_fade_max_distanz] wegzufallen und " +"wird nach dem Erreichen [member Distance_fade_min_distanz] vollständig " +"verschwinden." + +msgid "" +"Specifies which type of fade to use. Can be any of the [enum " +"DistanceFadeMode]s." +msgstr "" +"Gibt an, welche Art von Fade verwendet werden soll. Kann eines der [enum " +"DistanceFadeMode]s sein." + +msgid "The emitted light's color. See [member emission_enabled]." +msgstr "Die Farbe des emittierten Lichts. Siehe [member emissions_enabled]." + +msgid "" +"If [code]true[/code], the body emits light. Emitting light makes the object " +"appear brighter. The object can also cast light on other objects if a " +"[VoxelGI], SDFGI, or [LightmapGI] is used and this object is used in baked " +"lighting." +msgstr "" +"Wenn [code]true[/code], emittiert der Körper Licht. Leuchtendes Licht macht " +"das Objekt heller. Das Objekt kann auch Licht auf andere Objekte werfen, wenn " +"ein [VoxelGI], SDFGI oder [LightmapGI] verwendet wird und dieses Objekt in " +"gebackener Beleuchtung verwendet wird." + +msgid "Multiplier for emitted light. See [member emission_enabled]." +msgstr "Multiplikator für emittiertes Licht. Siehe [member emissions_enabled]." + +msgid "" +"Luminance of emitted light, measured in nits (candela per square meter). Only " +"available when [member ProjectSettings.rendering/lights_and_shadows/" +"use_physical_light_units] is enabled. The default is roughly equivalent to an " +"indoor lightbulb." +msgstr "" +"Leuchtstärke des emittierten Lichts, gemessen in nits (candela pro " +"Quadratmeter). Nur verfügbar, wenn [member ProjectSettings.rendering/" +"lights_and_shadows/use_physical_light_units] aktiviert ist. Die " +"Standardeinstellung entspricht etwa einem Innenlichtbogen." + +msgid "Use [code]UV2[/code] to read from the [member emission_texture]." +msgstr "" +"Verwenden Sie [code]UV2[/code], um aus der [member emissions_texture] zu " +"lesen." + +msgid "" +"Sets how [member emission] interacts with [member emission_texture]. Can " +"either add or multiply. See [enum EmissionOperator] for options." +msgstr "" +"Legt fest, wie [member emission] mit [member emission_texture] interagiert. " +"Kann entweder hinzufügen oder multiplizieren. Siehe [enum EmissionOperator] " +"für Optionen." + +msgid "Texture that specifies how much surface emits light at a given point." +msgstr "" +"Textur, die spezifiziert, wie viel Oberfläche Licht an einem bestimmten Punkt " +"emittiert." + +msgid "" +"If [code]true[/code], the object is rendered at the same size regardless of " +"distance." +msgstr "" +"Wenn [code]true[/code], wird das Objekt unabhängig von der Entfernung gleich " +"groß gemacht." + +msgid "" +"If [code]true[/code], enables the vertex grow setting. This can be used to " +"create mesh-based outlines using a second material pass and its [member " +"cull_mode] set to [constant CULL_FRONT]. See also [member grow_amount].\n" +"[b]Note:[/b] Vertex growth cannot create new vertices, which means that " +"visible gaps may occur in sharp corners. This can be alleviated by designing " +"the mesh to use smooth normals exclusively using [url=https://wiki.polycount." +"com/wiki/Face_weighted_normals]face weighted normals[/url] in the 3D " +"authoring software. In this case, grow will be able to join every outline " +"together, just like in the original mesh." +msgstr "" +"Wenn [code]true[/code], wird die Einstellung des Vertex-Wachstums aktiviert. " +"Dies kann verwendet werden, um netzbasierte Umrisse mit einem zweiten " +"Materialpass zu erstellen und dessen [member cull_mode] auf [member " +"CULL_FRONT] eingestellt. Siehe auch [member grow_amount].\n" +"[b]Anmerkung:[/b] Vertex-Wachstum kann keine neuen Vertices erzeugen, was " +"bedeutet, dass sichtbare Lücken in scharfen Ecken auftreten können. Dies kann " +"dadurch gemildert werden, dass das Mesh ausschließlich mit [url=https://wiki." +"polycount.com/wiki/Face_weighted_normals]face gewichteten Normalen[/url] in " +"der 3D-Autorisierungssoftware verwendet wird. In diesem Fall wird das " +"Wachstum in der Lage sein, jeden Umriss zusammenzufügen, genau wie im " +"ursprünglichen Mesh." + +msgid "" +"Grows object vertices in the direction of their normals. Only effective if " +"[member grow] is [code]true[/code]." +msgstr "" +"Wächst Objektvertikale in Richtung ihrer Normalen. Nur wirksam, wenn [member " +"grow] [code]true[/code] ist." + +msgid "" +"If [code]true[/code], uses parallax occlusion mapping to represent depth in " +"the material instead of simple offset mapping (see [member " +"heightmap_enabled]). This results in a more convincing depth effect, but is " +"much more expensive on the GPU. Only enable this on materials where it makes " +"a significant visual difference." +msgstr "" +"Wenn [code]true[/code], wird Parallax-Occlusion Mapping verwendet, um Tiefe " +"in dem Material anstelle von einfachem Offset Mapping (siehe [member " +"heightmap_enabled]) zu repräsentieren. Dies führt zu einem überzeugenderen " +"Tiefeneffekt, ist aber auf der GPU viel teurer. Ermöglichen Sie dies nur auf " +"Materialien, bei denen es einen erheblichen visuellen Unterschied macht." + +msgid "" +"If [code]true[/code], height mapping is enabled (also called \"parallax " +"mapping\" or \"depth mapping\"). See also [member normal_enabled]. Height " +"mapping is a demanding feature on the GPU, so it should only be used on " +"materials where it makes a significant visual difference.\n" +"[b]Note:[/b] Height mapping is not supported if triplanar mapping is used on " +"the same material. The value of [member heightmap_enabled] will be ignored if " +"[member uv1_triplanar] is enabled." +msgstr "" +"Wenn [code]true[/code] aktiviert ist, wird die Höhenmapping aktiviert (auch " +"\"parallax mapping\" oder \"tiefe mapping\" genannt). Siehe auch [teil " +"normal_enabled]. Die Höhenkartierung ist eine anspruchsvolle Funktion auf der " +"GPU, so sollte es nur auf Materialien verwendet werden, wo es einen " +"erheblichen visuellen Unterschied macht.\n" +"[b]Anmerkung:[/b] Die Höhenkartierung wird nicht unterstützt, wenn die " +"Triplanarkartierung auf demselben Material verwendet wird. Der Wert von " +"[member heightmap_enabled] wird ignoriert, wenn [member uv1_triplanar] " +"aktiviert ist." + +msgid "" +"If [code]true[/code], flips the mesh's binormal vectors when interpreting the " +"height map. If the heightmap effect looks strange when the camera moves (even " +"with a reasonable [member heightmap_scale]), try setting this to [code]true[/" +"code]." +msgstr "" +"Wenn [code]true[/code], kippt die binormalen Vektoren des Netzes bei der " +"Interpretation der Höhenkarte. Wenn der Höhenkarte-Effekt seltsam aussieht, " +"wenn sich die Kamera bewegt (auch mit einem vernünftigen [member " +"highmap_scale]), versuchen Sie, dies auf [code]true[/code] einzustellen." + +msgid "" +"If [code]true[/code], flips the mesh's tangent vectors when interpreting the " +"height map. If the heightmap effect looks strange when the camera moves (even " +"with a reasonable [member heightmap_scale]), try setting this to [code]true[/" +"code]." +msgstr "" +"Wenn [code]true[/code] die Tangentenvektoren des Netzes bei der " +"Interpretation der Höhenkarte umkippt. Wenn der Höhenkarte-Effekt seltsam " +"aussieht, wenn sich die Kamera bewegt (auch mit einem vernünftigen [member " +"highmap_scale]), versuchen Sie, dies auf [code]true[/code] einzustellen." + +msgid "" +"If [code]true[/code], interprets the height map texture as a depth map, with " +"brighter values appearing to be \"lower\" in altitude compared to darker " +"values.\n" +"This can be enabled for compatibility with some materials authored for Godot " +"3.x. This is not necessary if the Invert import option was used to invert the " +"depth map in Godot 3.x, in which case [member heightmap_flip_texture] should " +"remain [code]false[/code]." +msgstr "" +"Wenn [code]true[/code] die Textur der Höhenkarte als Tiefenkarte " +"interpretiert, wobei die helleren Werte im Vergleich zu dunkleren Werten " +"\"unter\" erscheinen.\n" +"Dies kann für die Kompatibilität mit einigen Materialien, die für Godot 3.x. " +"Dies ist nicht erforderlich, wenn die Option Invert Import verwendet wurde, " +"um die Tiefenkarte in Godot 3.x invertieren, in welchem Fall [member " +"highmap_flip_texture] bleiben sollte [code]false[/code]." + +msgid "" +"The number of layers to use for parallax occlusion mapping when the camera is " +"up close to the material. Higher values result in a more convincing depth " +"effect, especially in materials that have steep height changes. Higher values " +"have a significant cost on the GPU, so it should only be increased on " +"materials where it makes a significant visual difference.\n" +"[b]Note:[/b] Only effective if [member heightmap_deep_parallax] is " +"[code]true[/code]." +msgstr "" +"Die Anzahl der Schichten für die Parallax-Occlusion-Mapping, wenn die Kamera " +"in der Nähe des Materials. Höhere Werte führen zu einem überzeugenderen " +"Tiefeneffekt, insbesondere bei Materialien, die steile Höhenänderungen " +"aufweisen. Höhere Werte haben erhebliche Kosten für die GPU, so sollte es nur " +"auf Materialien erhöht werden, wo es einen erheblichen visuellen Unterschied " +"macht.\n" +"[b]Anmerkung:[/b] Nur wirksam, wenn [member highmap_deep_parallax] " +"[code]true[/code] ist." + +msgid "" +"The number of layers to use for parallax occlusion mapping when the camera is " +"far away from the material. Higher values result in a more convincing depth " +"effect, especially in materials that have steep height changes. Higher values " +"have a significant cost on the GPU, so it should only be increased on " +"materials where it makes a significant visual difference.\n" +"[b]Note:[/b] Only effective if [member heightmap_deep_parallax] is " +"[code]true[/code]." +msgstr "" +"Die Anzahl der Schichten für die Parallax-Occlusion-Mapping, wenn die Kamera " +"weit vom Material entfernt ist. Höhere Werte führen zu einem überzeugenderen " +"Tiefeneffekt, insbesondere bei Materialien, die steile Höhenänderungen " +"aufweisen. Höhere Werte haben erhebliche Kosten für die GPU, so sollte es nur " +"auf Materialien erhöht werden, wo es einen erheblichen visuellen Unterschied " +"macht.\n" +"[b]Hinweis:[/b] Nur wirksam, wenn [member highmap_deep_parallax] [code]true[/" +"code] ist." + +msgid "" +"The heightmap scale to use for the parallax effect (see [member " +"heightmap_enabled]). The default value is tuned so that the highest point " +"(value = 255) appears to be 5 cm higher than the lowest point (value = 0). " +"Higher values result in a deeper appearance, but may result in artifacts " +"appearing when looking at the material from oblique angles, especially when " +"the camera moves. Negative values can be used to invert the parallax effect, " +"but this is different from inverting the texture using [member " +"heightmap_flip_texture] as the material will also appear to be \"closer\" to " +"the camera. In most cases, [member heightmap_scale] should be kept to a " +"positive value.\n" +"[b]Note:[/b] If the height map effect looks strange regardless of this value, " +"try adjusting [member heightmap_flip_binormal] and [member " +"heightmap_flip_tangent]. See also [member heightmap_texture] for " +"recommendations on authoring heightmap textures, as the way the heightmap " +"texture is authored affects how [member heightmap_scale] behaves." +msgstr "" +"Die heightmap Skalierung für den Parallax-Effekt (siehe [member " +"heightmap_enabled]). Der Standardwert wird so eingestellt, dass der höchste " +"Punkt (Wert = 255) 5 cm höher erscheint als der niedrigste Punkt (Wert = 0). " +"Höhere Werte führen zu einem tieferen Erscheinungsbild, können aber zu " +"Artefakten führen, die beim Betrachten des Materials aus schrägen Winkeln " +"auftreten, insbesondere wenn sich die Kamera bewegt. Negative Werte können " +"verwendet werden, um den Parallax-Effekt invertieren, aber dies unterscheidet " +"sich von der Invertierung der Textur mit [member highmap_flip_texture], da " +"das Material auch als \"Closer\" zur Kamera erscheint. In den meisten Fällen " +"sollte [Personenhöhemap_scale] auf einen positiven Wert gehalten werden.\n" +"[b]Anmerkung:[/b] Wenn der Höhenkarte-Effekt unabhängig von diesem Wert " +"seltsam aussieht, versuchen Sie, die Anpassung [member highmap_flip_binormal] " +"und [member highmap_flip_tangent]. Siehe auch [member highmap_texture] für " +"Empfehlungen zur Autorisierung von highmap-texturen, da die Art und Weise, " +"wie die Heightmap-Textur verfasst wird, Auswirkungen darauf hat, wie sich " +"[member highmap_scale] verhält." + +msgid "" +"The texture to use as a height map. See also [member heightmap_enabled].\n" +"For best results, the texture should be normalized (with [member " +"heightmap_scale] reduced to compensate). In [url=https://gimp.org]GIMP[/url], " +"this can be done using [b]Colors > Auto > Equalize[/b]. If the texture only " +"uses a small part of its available range, the parallax effect may look " +"strange, especially when the camera moves.\n" +"[b]Note:[/b] To reduce memory usage and improve loading times, you may be " +"able to use a lower-resolution heightmap texture as most heightmaps are only " +"comprised of low-frequency data." +msgstr "" +"Die Textur zur Verwendung als HeightMap. Siehe auch [Mitglied " +"highmap_enabled].\n" +"Für beste Ergebnisse sollte die Textur normalisiert werden (mit [member " +"highmap_scale] reduziert, um zu kompensieren). In [url=https://gimp.org]GIMP[/" +"url] kann dies mit [b]Colors > Auto > Equalize[/b] geschehen. Wenn die Textur " +"nur einen kleinen Teil ihrer verfügbaren Reichweite verwendet, kann der " +"Parallax-Effekt seltsam aussehen, insbesondere wenn sich die Kamera bewegt.\n" +"[b]Anmerkung:[/b] Um die Speichernutzung zu reduzieren und Ladezeiten zu " +"verbessern, wäre es für Sie möglich, eine HeightMap Textur mit niedrigerer " +"Auflösung zu verwenden, da die meisten Höhenkarten nur aus niederfrequenten " +"Daten bestehen." + +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 color. Metals " +"use their albedo as a multiplier to the specular reflection and set the " +"diffuse color to black resulting in a tinted reflection. Materials work " +"better when fully metal or fully non-metal, values between [code]0[/code] and " +"[code]1[/code] should only be used for blending between metal and non-metal " +"sections. To alter the amount of reflection use [member roughness]." +msgstr "" +"Ein hoher Wert macht das Material mehr wie ein Metall erscheinen. " +"Nichtmetalle verwenden ihren Albedo als diffuse Farbe und addieren diffus zur " +"spekulären Reflexion. Bei Nichtmetallen erscheint die Reflexion über der " +"Albedofarbe. Metalle verwenden ihren Albedo als Multiplikator zur spekulären " +"Reflexion und setzen die diffuse Farbe auf Schwarz, was zu einer getönten " +"Reflexion führt. Materialien arbeiten besser, wenn vollmetallisch oder " +"vollständig nichtmetallisch, Werte zwischen [code]0[/code] und [code]1[/code] " +"nur für die Mischung zwischen Metall- und Nichtmetallabschnitten verwendet " +"werden. Um die Menge der Reflexion zu ändern, verwenden Sie [Teile Rauheit]." + +msgid "" +"Adjusts the strength of specular reflections. Specular reflections are " +"composed of scene reflections and the specular lobe which is the bright spot " +"that is reflected from light sources. When set to [code]0.0[/code], no " +"specular reflections will be visible. This differs from the [constant " +"SPECULAR_DISABLED] [enum SpecularMode] as [constant SPECULAR_DISABLED] only " +"applies to the specular lobe from the light source.\n" +"[b]Note:[/b] Unlike [member metallic], this is not energy-conserving, so it " +"should be left at [code]0.5[/code] in most cases. See also [member roughness]." +msgstr "" +"Passt die Stärke der specular Reflexionen an. Specular Reflexionen bestehen " +"aus Szenenreflexionen und der Spekularkeule, die der helle Fleck ist, der aus " +"Lichtquellen reflektiert wird. Wenn auf [code]0.0[/code] eingestellt, werden " +"keine Specular Reflexionen sichtbar. Dies unterscheidet sich vom [constant " +"SPECULAR_DISABLED] [enum SpecularMode], da [constant SPECULAR_DISABLED] nur " +"für die specular Leisten aus der Lichtquelle gilt.\n" +"[b]Anmerkung:[/b] Im Gegensatz zu [member metallic] ist dies nicht " +"energiesparend, also sollte es in den meisten Fällen bei [code]0,5[/code] " +"liegen. Siehe auch [member roughness]." + +msgid "" +"Texture used to specify metallic for an object. This is multiplied by [member " +"metallic]." +msgstr "" +"Textur, die verwendet wird, um metallische Eigenschaften für ein Objekt " +"anzugeben. Dies wird mit [member Metallic] multipliziert." + msgid "" "If [code]true[/code], triplanar mapping for [code]UV[/code] is calculated in " "world space rather than object local space. See also [member uv1_triplanar]." @@ -14959,6 +15990,9 @@ msgstr "" "gültigen Methodennamen zugewiesen hat oder wenn es sich um ein " "benutzerdefiniertes Callable handelt." +msgid "Physical light and camera units" +msgstr "Physikalische Licht- und Kameraeinheiten" + msgid "Unspecified position." msgstr "Nicht spezifizierte Position." @@ -15682,7 +16716,7 @@ msgid "Emitted when the [ColorPicker] is closed." msgstr "Wird ausgegeben, wenn der [ColorPicker] geschlossen wird." msgid "Control node gallery" -msgstr "Galerie der Kontrollknoten (Kontroll-Nodes)" +msgstr "Galerie der Control-Nodes" msgid "Multiple resolutions" msgstr "Mehrere Auflösungen" @@ -15986,6 +17020,9 @@ msgstr "Konstruiert ein leeres [Dictionary]." msgid "File system" msgstr "Dateisystem" +msgid "Faking global illumination" +msgstr "Vortäuschen von Global Illumination" + msgid "" "Returns OS theme accent color. Returns [code]Color(0, 0, 0, 0)[/code], if " "accent color is unknown.\n" @@ -16681,6 +17718,9 @@ msgstr "" msgid "Emitted after any editor setting has changed." msgstr "Gesendet wenn das Rechteck Element geändert wurde." +msgid "Version control systems" +msgstr "Versionsverwaltungssysteme" + msgid "" "Returns [code]true[/code] if the peer is currently active (i.e. the " "associated [ENetConnection] is still valid)." @@ -16783,6 +17823,9 @@ msgstr "" "andere Zahlen. Daher sind die Ergebnisse dieses Operators möglicherweise " "nicht genau, wenn NaNs enthalten sind." +msgid "Volumetric fog and fog volumes" +msgstr "Volumetrischer Nebel und Nebelvolumen" + msgid "Removes all font sizes from the cache entry" msgstr "Entfernt alle Schriftgrößen aus dem Cache-Eintrag" @@ -16804,6 +17847,9 @@ msgstr "" "Polygon] liegt oder wenn er genau [i]auf[/i] der Polygongrenze liegt, " "andernfalls [code]false[/code]." +msgid "Visibility ranges (HLOD)" +msgstr "Reichweitenbasierte Sichtbarkeit (HLOD)" + msgid "Cubic interpolation." msgstr "Kubische Interpolation." @@ -16857,6 +17903,9 @@ msgstr "Spiegelt das Bild horizontal." msgid "Flips the image vertically." msgstr "Spiegelt das Bild vertikal." +msgid "Using ImmediateMesh" +msgstr "Verwenden von ImmediateMesh" + msgid "" "The [Input] singleton handles key presses, mouse buttons and movement, " "gamepads, and input actions. Actions and their events can be set in the " @@ -16876,44 +17925,6 @@ msgstr "" "Viewport.set_input_as_handled] beeinflusst, da diese Methoden nur die Art und " "Weise betreffen, wie Eingaben im [SceneTree] weitergegeben werden." -msgid "" -"Returns [code]true[/code] when the user has [i]started[/i] pressing the " -"action event in the current frame or physics tick. It will only return " -"[code]true[/code] on the frame or tick 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] Returning [code]true[/code] does not imply that the action is " -"[i]still[/i] pressed. An action can be pressed and released again rapidly, " -"and [code]true[/code] will still be returned so as not to miss input.\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 "" -"Gibt [code]true[/code] zurück, wenn der Benutzer [i]begonnen hat[/i], das " -"Aktionsereignis im aktuellen Frame oder Physik-Tick zu drücken. Es wird nur " -"[code]true[/code] in dem Frame oder Tick zurückgegeben, in dem der Benutzer " -"die Taste gedrückt hat.\n" -"Dies ist nützlich für Code, der nur einmal ausgeführt werden muss, wenn eine " -"Aktion gedrückt wird, anstatt bei jedem Frame, während sie gedrückt wird.\n" -"Wenn [param exact_match] [code]false[/code] ist, werden zusätzliche " -"Eingabemodifikatoren für [InputEventKey]- und [InputEventMouseButton]-" -"Ereignisse sowie die Richtung für [InputEventJoypadMotion]-Ereignisse " -"ignoriert.\n" -"[b]Hinweis:[/b] Die Rückgabe von [code]true[/code] bedeutet nicht, dass die " -"Aktion [i]noch[/i] gedrückt ist. Eine Aktion kann schnell gedrückt und wieder " -"losgelassen werden, und [code]true[/code] wird trotzdem zurückgegeben, um " -"keine Eingabe zu verpassen.\n" -"[b]Hinweis:[/b] Aufgrund von Tastatur-Ghosting kann [method " -"is_action_just_pressed] auch dann [code]false[/code] zurückgeben, wenn eine " -"der Tasten der Aktion gedrückt ist. Siehe [url=$DOCS_URL/tutorials/inputs/" -"input_examples.html#keyboard-events]Eingabebeispiele[/url] in der " -"Dokumentation für weitere Informationen." - msgid "" "Returns [code]true[/code] if you are pressing the action event.\n" "If [param exact_match] is [code]false[/code], it ignores additional input " @@ -17202,6 +18213,9 @@ msgstr "" msgid "Represents the size of the [enum ArrayType] enum." msgstr "Stellt die Größe der Aufzählung [enum ArrayType] dar." +msgid "Using the MeshDataTool" +msgstr "Verwendung des MeshDataTools" + msgid "" "Returns the number of blend shapes available. Produces an error if [member " "mesh] is [code]null[/code]." @@ -18430,6 +19444,9 @@ msgstr "" msgid "Playing videos" msgstr "Abspielen von Videos" +msgid "Using VisualShaders" +msgstr "Verwendung von VisualShaders" + msgid "" "Constrains a value to lie between [code]min[/code] and [code]max[/code] " "values." diff --git a/doc/translations/es.po b/doc/translations/es.po index a6dd326941f..9c7b1597250 100644 --- a/doc/translations/es.po +++ b/doc/translations/es.po @@ -6833,9 +6833,6 @@ msgstr "" msgid "Particles are drawn in the order emitted." msgstr "Las partículas se dibujan en el orden en que se emiten." -msgid "Particles are drawn in order of remaining lifetime." -msgstr "Las partículas se dibujan en orden según el tiempo de vida restante." - msgid "Represents the size of the [enum Parameter] enum." msgstr "Representa el tamaño del enumerado [enum Parameter]." @@ -10386,28 +10383,15 @@ msgstr "Carga una imagen del contenido binario de un archivo JPEG." msgid "Loads an image from the binary contents of a PNG file." msgstr "Carga una imagen del contenido binario de un archivo PNG." -msgid "Loads an image from the binary contents of a TGA file." -msgstr "Carga una imagen del contenido binario de un archivo TGA." - msgid "Loads an image from the binary contents of a WebP file." msgstr "Carga una imagen del contenido binario de un archivo WebP." -msgid "" -"Multiplies color values with alpha values. Resulting color values for a pixel " -"are [code](color * alpha)/256[/code]." -msgstr "" -"Multiplica los valores de color por los valores alfa. Los valores de color " -"resultantes para un píxel son [code](color * alfa)/256[/code]." - msgid "" "Converts a standard RGBE (Red Green Blue Exponent) image to an sRGB image." msgstr "" "Convierte una imagen estándar RGBE (Red Green Blue Exponent) en una imagen " "sRGB." -msgid "Shrinks the image by a factor of 2." -msgstr "Reduce la imagen en un factor de 2." - msgid "Converts the raw data from the sRGB colorspace to a linear scale." msgstr "" "Convierte los datos en bruto del espacio de color sRGB a una escala lineal." @@ -12630,9 +12614,6 @@ msgstr "" "Devuelve [code]true[/code] si se trata de un marcador de posición de carga de " "instancia. Ver [InstancePlaceholder]." -msgid "Returns the [SceneTree] that contains this node." -msgstr "Devuelve el [SceneTree] que contiene este nodo." - msgid "Returns the node's [Viewport]." msgstr "Devuelve el [Viewport] del nodo." @@ -15057,13 +15038,6 @@ msgstr "" "La descripción del proyecto, que se muestra como una sugerencia en el " "Administrador de Proyectos cuando se pasa el cursor por encima del proyecto." -msgid "" -"Forces a delay between frames in the main loop (in milliseconds). This may be " -"useful if you plan to disable vertical synchronization." -msgstr "" -"Fuerza un retardo entre fotogramas en el bucle principal (en milisegundos). " -"Esto puede ser útil si planea deshabilitar la sincronización vertical." - msgid "" "If [code]true[/code], enables low-processor usage mode. This setting only " "works on desktop platforms. The screen is not redrawn if nothing changes " @@ -16515,9 +16489,6 @@ msgid "Draw particles in the order that they appear in the particles array." msgstr "" "Dibuja las partículas en el orden en que aparecen en el array de partículas." -msgid "Sort particles based on their lifetime." -msgstr "Clasificar las partículas en función de su vida útil." - msgid "Sort particles based on their distance to the camera." msgstr "Clasifica las partículas según su distancia a la cámara." diff --git a/doc/translations/fr.po b/doc/translations/fr.po index 758dde49071..e8bdf8568c5 100644 --- a/doc/translations/fr.po +++ b/doc/translations/fr.po @@ -87,13 +87,14 @@ # Benjamin Brasseur , 2023. # Rertsyd , 2023. # Calimelo , 2023. +# Roskai , 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-11-03 04:56+0000\n" -"Last-Translator: Calimelo \n" +"PO-Revision-Date: 2023-11-14 03:37+0000\n" +"Last-Translator: Rertsyd \n" "Language-Team: French \n" "Language: fr\n" @@ -1405,6 +1406,16 @@ msgstr "" "var a = absi(-1)\n" "[/codeblock]" +msgid "" +"Returns the difference between the two angles, in the range of [code][-PI, " +"+PI][/code]. When [param from] and [param to] are opposite, returns [code]-" +"PI[/code] if [param from] is smaller than [param to], or [code]PI[/code] " +"otherwise." +msgstr "" +"Retourne la différence entre deux angles, dans l'intervalle [code][-PI, +PI][/" +"code]. Quand [param from] et [param to ] sont opposé, est retourné [code]-PI[/" +"code] si [param from] est plus petit que [param to], ou sinon [code]PI[/code]." + msgid "" "Rounds [param x] upward (towards positive infinity), returning the smallest " "whole number that is not less than [param x].\n" @@ -5157,6 +5168,15 @@ msgstr "" "Construit la matrice d'une base de rotation seulement depuis le quaternion " "donné." +msgid "" +"Returns the basis's rotation in the form of a quaternion. See [method " +"get_euler] if you need Euler angles, but keep in mind quaternions should " +"generally be preferred to Euler angles." +msgstr "" +"Retourne la rotation de la base sous la forme d'un quaternion. Voir [method " +"get_euler] si vous avez besoin d'angles d'Euler, mais gardez à l'esprit que " +"les quaternions devraient être préférés aux angles d'Euler." + msgid "Returns the inverse of the matrix." msgstr "Retourne l'inverse de la matrice." @@ -7002,6 +7022,21 @@ msgstr "Émis quand le nœud reçoit un [InputEvent]." msgid "Emitted when the node's minimum size changes." msgstr "Émis quand la taille minimale du nœud change." +msgid "" +"Emitted when the mouse cursor enters the control's (or any child control's) " +"visible area, that is not occluded behind other Controls or Windows, provided " +"its [member mouse_filter] lets the event reach it and regardless if it's " +"currently focused or not.\n" +"[b]Note:[/b] [member CanvasItem.z_index] doesn't affect, which Control " +"receives the signal." +msgstr "" +"Émis quand le curseur de la souris entre dans la zone visible du contrôle (ou " +"un de ses enfants), qui n'est pas masqué derrière d'autres Contrôles ou " +"Fenêtres, fourni son [member mouse_filter], laisse l’événement l'atteindre, " +"et peu importe s’il est actuellement ciblé ou non.\n" +"[b]Note:[/b] [member CanvasItem.z_index] n'affecte pas quel Contrôle reçoit " +"le signal." + msgid "Emitted when the control changes size." msgstr "Émis lorsque le contrôle change de taille." @@ -7022,6 +7057,72 @@ msgstr "" "Le nœud ne reçoit le focus que pour les clics de la souris. À utiliser avec " "[membre focus_mode]." +msgid "" +"Sent when the mouse cursor enters the control's (or any child control's) " +"visible area, that is not occluded behind other Controls or Windows, provided " +"its [member mouse_filter] lets the event reach it and regardless if it's " +"currently focused or not.\n" +"[b]Note:[/b] [member CanvasItem.z_index] doesn't affect which Control " +"receives the notification.\n" +"See also [constant NOTIFICATION_MOUSE_ENTER_SELF]." +msgstr "" +"Envoyé quand le curseur de la souris entre dans la zone visible du contrôle " +"(ou un de ses enfants), qui n'est pas masqué derrière d'autres Contrôles ou " +"Fenêtres, fourni son [member mouse_filter], laisse l’événement l'atteindre, " +"et peu importe s’il est actuellement ciblé ou non.\n" +"[b]Note:[/b] [member CanvasItem.z_index] n'affecte pas quel Contrôle reçoit " +"la notification.\n" +"Voir aussi [constant NOTIFICATION_MOUSE_ENTER_SELF]." + +msgid "" +"Sent when the mouse cursor leaves the control's (and all child control's) " +"visible area, that is not occluded behind other Controls or Windows, provided " +"its [member mouse_filter] lets the event reach it and regardless if it's " +"currently focused or not.\n" +"[b]Note:[/b] [member CanvasItem.z_index] doesn't affect which Control " +"receives the notification.\n" +"See also [constant NOTIFICATION_MOUSE_EXIT_SELF]." +msgstr "" +"Envoyé quand le curseur de la souris sort de la zone visible du contrôle (ou " +"un de ses enfants), qui n'est pas masqué derrière d'autres Contrôles ou " +"Fenêtres, fourni son [member mouse_filter], laisse l’événement l'atteindre, " +"et peu importe s’il est actuellement ciblé ou non.\n" +"[b]Note:[/b] [member CanvasItem.z_index] n'affecte pas quel Contrôle reçoit " +"la notification.\n" +"Voir aussi [constant NOTIFICATION_MOUSE_EXIT_SELF]." + +msgid "" +"Sent when the mouse cursor enters the control's visible area, that is not " +"occluded behind other Controls or Windows, provided its [member mouse_filter] " +"lets the event reach it and regardless if it's currently focused or not.\n" +"[b]Note:[/b] [member CanvasItem.z_index] doesn't affect which Control " +"receives the notification.\n" +"See also [constant NOTIFICATION_MOUSE_ENTER]." +msgstr "" +"Envoyé quand le curseur de la souris entre dans la zone visible du contrôle, " +"qui n'est pas masqué derrière d'autres Contrôles ou Fenêtres, fourni son " +"[member mouse_filter], laisse l’événement l'atteindre, et peu importe s’il " +"est actuellement ciblé ou non.\n" +"[b]Note:[/b] [member CanvasItem.z_index] n'affecte pas quel Contrôle reçoit " +"la notification.\n" +"Voir aussi [constant NOTIFICATION_MOUSE_ENTER]." + +msgid "" +"Sent when the mouse cursor leaves the control's visible area, that is not " +"occluded behind other Controls or Windows, provided its [member mouse_filter] " +"lets the event reach it and regardless if it's currently focused or not.\n" +"[b]Note:[/b] [member CanvasItem.z_index] doesn't affect which Control " +"receives the notification.\n" +"See also [constant NOTIFICATION_MOUSE_EXIT]." +msgstr "" +"Envoyé quand le curseur de la souris sort de la zone visible du contrôle, qui " +"n'est pas masqué derrière d'autres Contrôles ou Fenêtres, fourni son [member " +"mouse_filter], laisse l’événement l'atteindre, et peu importe s’il est " +"actuellement ciblé ou non.\n" +"[b]Note:[/b] [member CanvasItem.z_index] n'affecte pas quel Contrôle reçoit " +"la notification.\n" +"Voir aussi [constant NOTIFICATION_MOUSE_EXIT]." + msgid "Sent when the node grabs focus." msgstr "Envoyé lorsque le nœud reçoit le focus." @@ -7524,9 +7625,6 @@ msgid "Particles are drawn in the order emitted." msgstr "" "Les particules sont affichées dans l'ordre dans lequel elles ont été émises." -msgid "Particles are drawn in order of remaining lifetime." -msgstr "Les particules sont affichées dans l'ordre de la durée de vie restante." - msgid "Represents the size of the [enum Parameter] enum." msgstr "Représente la taille de l'énumération [enum Parameter]." @@ -10977,9 +11075,6 @@ msgstr "Retourne [code]true[/code] si l'image est compressée." msgid "Returns [code]true[/code] if the image has no data." msgstr "Retourne [code]true[/code] si l'image n'a aucun donnée." -msgid "Loads an image from the binary contents of a TGA file." -msgstr "Charge une image à partir du contenu binaire d’un fichier TGA." - msgid "Loads an image from the binary contents of a WebP file." msgstr "Charge une image depuis le contenu binaire d'un fichier WebP." @@ -10988,9 +11083,6 @@ msgid "" msgstr "" "Convertit une image RGBE (« Red Green Blue Exponent ») standard en image sRGB." -msgid "Shrinks the image by a factor of 2." -msgstr "Réduit la taille de l'image par 2." - msgid "Converts the raw data from the sRGB colorspace to a linear scale." msgstr "" "Convertit des données brutes depuis l'espace de couleur sRGB en linéaire." @@ -13312,9 +13404,6 @@ msgstr "" "Retourne [code]true[/code] si c'est une instance fictive pour charger un " "scène. Voir [InstancePlaceholder]." -msgid "Returns the [SceneTree] that contains this node." -msgstr "Retourne le [SceneTree] qui contient ce nœud." - msgid "Returns the node's [Viewport]." msgstr "Retourne le [Viewport] du nœud." @@ -13876,6 +13965,9 @@ msgstr "" msgid "Add an action set." msgstr "Ajouter un ensemble d'actions." +msgid "Add an interaction profile." +msgstr "Ajouter un profil d'interaction." + msgid "" "Generates and sets an optimized translation from the given [Translation] " "resource." @@ -16387,9 +16479,6 @@ msgstr "" msgid "Draw particles in the order that they appear in the particles array." msgstr "Affiche les particules dans leur ordre dans la liste des particules." -msgid "Sort particles based on their lifetime." -msgstr "Trier les particules par durée de vie." - msgid "Sort particles based on their distance to the camera." msgstr "Trier les particules suivant leur distance à la caméra." diff --git a/doc/translations/zh_CN.po b/doc/translations/zh_CN.po index c61bdbf3d96..b9066b8cc62 100644 --- a/doc/translations/zh_CN.po +++ b/doc/translations/zh_CN.po @@ -86,8 +86,8 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine class reference\n" "Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n" -"PO-Revision-Date: 2023-11-10 08:03+0000\n" -"Last-Translator: Haoyu Qiu \n" +"PO-Revision-Date: 2023-11-16 07:52+0000\n" +"Last-Translator: 风青山 \n" "Language-Team: Chinese (Simplified) \n" "Language: zh_CN\n" @@ -95,7 +95,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 5.2-dev\n" +"X-Generator: Weblate 5.2\n" msgid "Description" msgstr "描述" @@ -822,6 +822,79 @@ msgstr "" "[b]警告:[/b]“非数”只是浮点数的概念,整数中没有对应的概念。将整数 [code]0[/" "code] 除以 [code]0[/code] 不会得到 [constant NAN],而是会产生运行时错误。" +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" +"extends Node\n" +"\n" +"enum Direction {LEFT, RIGHT, UP, DOWN}\n" +"\n" +"# Built-in types.\n" +"@export var string = \"\"\n" +"@export var int_number = 5\n" +"@export var float_number: float = 5\n" +"\n" +"# Enums.\n" +"@export var type: Variant.Type\n" +"@export var format: Image.Format\n" +"@export var direction: Direction\n" +"\n" +"# Resources.\n" +"@export var image: Image\n" +"@export var custom_resource: CustomResource\n" +"\n" +"# Nodes.\n" +"@export var node: Node\n" +"@export var custom_node: CustomNode\n" +"\n" +"# Typed arrays.\n" +"@export var int_array: Array[int]\n" +"@export var direction_array: Array[Direction]\n" +"@export var image_array: Array[Image]\n" +"@export var node_array: Array[Node]\n" +"[/codeblock]\n" +"[b]Note:[/b] Custom resources and nodes must be registered as global classes " +"using [code]class_name[/code].\n" +"[b]Note:[/b] Node export is only supported in [Node]-derived classes and has " +"a number of other limitations." +msgstr "" +"将后续的属性标记为导出属性(可以在检查器面板中编辑并保存至磁盘)。要控制导出属" +"性的类型,请使用类型提示标记。\n" +"[codeblock]\n" +"extends Node\n" +"\n" +"enum Direction {LEFT, RIGHT, UP, DOWN}\n" +"\n" +"# 内置类型。\n" +"@export var string = \"\"\n" +"@export var int_number = 5\n" +"@export var float_number: float = 5\n" +"\n" +"# 枚举。\n" +"@export var type: Variant.Type\n" +"@export var format: Image.Format\n" +"@export var direction: Direction\n" +"\n" +"# 资源。\n" +"@export var image: Image\n" +"@export var custom_resource: CustomResource\n" +"\n" +"# 节点。\n" +"@export var node: Node\n" +"@export var custom_node: CustomNode\n" +"\n" +"# 类型数组。\n" +"@export var int_array: Array[int]\n" +"@export var direction_array: Array[Direction]\n" +"@export var image_array: Array[Image]\n" +"@export var node_array: Array[Node]\n" +"[/codeblock]\n" +"[b]注意:[/b]自定义资源和自定义节点必须使用 [code]class_name[/code] 注册为全局" +"类。\n" +"[b]注意:[/b]节点的导出只有派生自 [Node] 的类才支持,并且还有一些其他限制。" + msgid "" "Define a new category for the following exported properties. This helps to " "organize properties in the Inspector dock.\n" @@ -1354,6 +1427,31 @@ msgstr "" "[b]注意:[/b]子分组不能嵌套,它们只提供一层额外的深度。新的分组会结束前一个分" "组,类似地,后续的子分组也会打断之前的子分组。" +msgid "" +"Add a custom icon to the current script. The icon specified at [param " +"icon_path] is displayed in the Scene dock for every node of that class, as " +"well as in various editor dialogs.\n" +"[codeblock]\n" +"@icon(\"res://path/to/class/icon.svg\")\n" +"[/codeblock]\n" +"[b]Note:[/b] Only the script can have a custom icon. Inner classes are not " +"supported.\n" +"[b]Note:[/b] As annotations describe their subject, the [annotation @icon] " +"annotation must be placed before the class definition and inheritance.\n" +"[b]Note:[/b] Unlike other annotations, the argument of the [annotation @icon] " +"annotation must be a string literal (constant expressions are not supported)." +msgstr "" +"为当前脚本添加自定义图标。[param icon_path] 所指定的图标会在“场景”面板中该类的" +"所有节点上显示,也会显示在各种编辑器对话框中。\n" +"[codeblock]\n" +"@icon(\"res://path/to/class/icon.svg\")\n" +"[/codeblock]\n" +"[b]注意:[/b]只有脚本可以有自定义的图标。不支持内部类。\n" +"[b]注意:[/b]由于注解描述的是它们的对象,[annotation @icon] 注解必须放在类定义" +"和继承之前。\n" +"[b]注意:[/b]不同于其他注解,[annotation @icon] 注解的参数必须是字符串字面量" +"(不支持常量表达式)。" + msgid "" "Mark the following property as assigned when the [Node] is ready. Values for " "these properties are not assigned immediately when the node is initialized " @@ -1453,6 +1551,27 @@ msgstr "" "使具有静态变量的脚本在所有引用丢失之后不会持久化。当该脚本再次加载时,这些静态" "变量将恢复为默认值。" +msgid "" +"Mark the current script as a tool script, allowing it to be loaded and " +"executed by the editor. See [url=$DOCS_URL/tutorials/plugins/" +"running_code_in_the_editor.html]Running code in the editor[/url].\n" +"[codeblock]\n" +"@tool\n" +"extends Node\n" +"[/codeblock]\n" +"[b]Note:[/b] As annotations describe their subject, the [annotation @tool] " +"annotation must be placed before the class definition and inheritance." +msgstr "" +"将当前脚本标记为工具脚本,允许它被编辑器加载和执行。见[url=$DOCS_URL/" +"tutorials/plugins/running_code_in_the_editor.html]《在编辑器中运行代码》[/" +"url]。\n" +"[codeblock]\n" +"@tool\n" +"extends Node\n" +"[/codeblock]\n" +"[b]注意:[/b]因为注解描述对象的关系,必须把 [annotation @tool] 注解放在类定义" +"和继承之前。" + msgid "" "Mark the following statement to ignore the specified [param warning]. See " "[url=$DOCS_URL/tutorials/scripting/gdscript/warning_system.html]GDScript " @@ -1660,6 +1779,27 @@ msgstr "" "sinh(a) # 返回 0.9\n" "[/codeblock]" +msgid "" +"Returns the arc tangent of [param x] in radians. Use it to get the angle from " +"an angle's tangent in trigonometry.\n" +"The method cannot know in which quadrant the angle should fall. See [method " +"atan2] if you have both [code]y[/code] and [code skip-lint]x[/code].\n" +"[codeblock]\n" +"var a = atan(0.5) # a is 0.463648\n" +"[/codeblock]\n" +"If [param x] is between [code]-PI / 2[/code] and [code]PI / 2[/code] " +"(inclusive), [code]atan(tan(x))[/code] is equal to [param x]." +msgstr "" +"返回 [param x] 的反正切值,单位是弧度。在三角函数中用它来得到一个角上切线的角" +"度。\n" +"该方法无法确定角度应该落在哪个象限。如果你同时拥有 [code]y[/code] 和 [code " +"skip-lint]x[/code],请参见 [method atan2]。\n" +"[codeblock]\n" +"var a = atan(0.5) # a=0.463648\n" +"[/codeblock]\n" +"如果 [param x] 在 [code]-PI/2[/code] 和 [code]PI/2[/code](包括)之间," +"[code]atan(tan(x))[/code] 等于 [param x]。" + msgid "" "Returns the arc tangent of [code]y/x[/code] in radians. Use to get the angle " "of tangent [code]y/x[/code]. To compute the value, the method takes into " @@ -1744,6 +1884,30 @@ msgstr "" "[b]警告:[/b]反序列化的对象可能包含执行的代码。如果序列化对象的来源不受信任," "则不要使用此选项,以避免潜在的安全威胁(远程执行代码)。" +msgid "" +"Rounds [param x] upward (towards positive infinity), returning the smallest " +"whole number that is not less than [param x]. Supported types: [int], " +"[float], [Vector2], [Vector2i], [Vector3], [Vector3i], [Vector4], " +"[Vector4i].\n" +"[codeblock]\n" +"var i = ceil(1.45) # i is 2.0\n" +"i = ceil(1.001) # i is 2.0\n" +"[/codeblock]\n" +"See also [method floor], [method round], and [method snapped].\n" +"[b]Note:[/b] For better type safety, use [method ceilf], [method ceili], " +"[method Vector2.ceil], [method Vector3.ceil], or [method Vector4.ceil]." +msgstr "" +"向上舍入 [param x](朝正无穷大方向),返回不小于 [param x] 的最小整数。支持的" +"类型:[int]、[float]、[Vector2]、[Vector2i]、[Vector3]、[Vector3i]、" +"[Vector4]、[Vector4i]。\n" +"[codeblock]\n" +"var i = ceil(1.45) # i 为 2.0\n" +"i = ceil(1.001) # i 为 2.0\n" +"[/codeblock]\n" +"另见 [method floor]、[method round]、[method snapped]。\n" +"[b]注意:[/b]为了更好的类型安全,使用 [method ceilf]、[method ceili]、[method " +"Vector2.ceil]、[method Vector3.ceil] 或 [method Vector4.ceil]。" + msgid "" "Rounds [param x] upward (towards positive infinity), returning the smallest " "whole number that is not less than [param x].\n" @@ -1887,7 +2051,7 @@ msgid "" "Cubic interpolates between two values by the factor defined in [param weight] " "with [param pre] and [param post] values." msgstr "" -"根据 [param weight] 中定义的因子以及 [param pre] 和 [param post] 值,在两个值" +"根据 [param weight] 定义的系数,以及 [param pre] 和 [param post] 值,在两个值" "之间进行三次插值。" msgid "" @@ -1895,8 +2059,19 @@ msgid "" "factor defined in [param weight] with [param pre] and [param post] values. " "See also [method lerp_angle]." msgstr "" -"根据 [param weight] 中定义的因子以及 [param pre] 和 [param post] 值,在具有最" -"短路径的两个旋转值之间三次插值 。另见 [method lerp_angle]。" +"根据 [param weight] 定义的系数,以及 [param pre] 和 [param post] 值,在两个旋" +"转值之间的最短路径进行三次插值 。另见 [method lerp_angle]。" + +msgid "" +"Cubic interpolates between two rotation values with shortest path by the " +"factor defined in [param weight] with [param pre] and [param post] values. " +"See also [method lerp_angle].\n" +"It can perform smoother interpolation than [method cubic_interpolate] by the " +"time values." +msgstr "" +"根据 [param weight] 定义的系数,以及 [param pre] 和 [param post] 值,在两个旋" +"转值之间的最短路径进行三次插值。另见 [method lerp_angle]。\n" +"它可以根据时间值执行比 [code]cubic_interpolate()[/code] 更平滑的插值。" msgid "" "Cubic interpolates between two values by the factor defined in [param weight] " @@ -1904,7 +2079,7 @@ msgid "" "It can perform smoother interpolation than [method cubic_interpolate] by the " "time values." msgstr "" -"根据 [param weight] 中定义的因子以及 [param pre] 和 [param post] 值,在两个值" +"根据 [param weight] 定义的系数,以及 [param pre] 和 [param post] 值,在两个值" "之间进行三次插值。\n" "它可以根据时间值执行比 [method cubic_interpolate] 更平滑的插值。" @@ -1991,6 +2166,30 @@ msgstr "" "var a = exp(2) # 大约是 7.39\n" "[/codeblock]" +msgid "" +"Rounds [param x] downward (towards negative infinity), returning the largest " +"whole number that is not more than [param x]. Supported types: [int], " +"[float], [Vector2], [Vector2i], [Vector3], [Vector3i], [Vector4], " +"[Vector4i].\n" +"[codeblock]\n" +"var a = floor(2.99) # a is 2.0\n" +"a = floor(-2.99) # a is -3.0\n" +"[/codeblock]\n" +"See also [method ceil], [method round], and [method snapped].\n" +"[b]Note:[/b] For better type safety, use [method floorf], [method floori], " +"[method Vector2.floor], [method Vector3.floor], or [method Vector4.floor]." +msgstr "" +"向下舍入 [param x](朝负无穷大),返回不大于 [param x] 的最大整数。支持的类" +"型:[int]、[float]、[Vector2]、[Vector2i]、[Vector3]、[Vector3i]、[Vector4]、" +"[Vector4i]。\n" +"[codeblock]\n" +"var a = floor(2.99) # a 为 2.0\n" +"a = floor(-2.99) # a 为 -3.0\n" +"[/codeblock]\n" +"另见 [method ceil]、[method round]、[method snapped]。\n" +"[b]注意:[/b]为了更好的类型安全,请使用 [method floorf]、[method floori]、" +"[method Vector2.floor]、[method Vector3.floor] 或 [method Vector4.floor]。" + msgid "" "Rounds [param x] downward (towards negative infinity), returning the largest " "whole number that is not more than [param x].\n" @@ -2695,6 +2894,76 @@ msgstr "" "误和警告消息,而不是 [method print] 或 [method print_rich]。这将它们与用于调试" "目的的打印消息区分开来,同时还会在打印错误或警告时显示堆栈跟踪。" +msgid "" +"Converts one or more arguments of any type to string in the best way possible " +"and prints them to the console.\n" +"The following BBCode tags are supported: [code]b[/code], [code]i[/code], " +"[code]u[/code], [code]s[/code], [code]indent[/code], [code]code[/code], " +"[code]url[/code], [code]center[/code], [code]right[/code], [code]color[/" +"code], [code]bgcolor[/code], [code]fgcolor[/code].\n" +"Color tags only support the following named colors: [code]black[/code], " +"[code]red[/code], [code]green[/code], [code]yellow[/code], [code]blue[/code], " +"[code]magenta[/code], [code]pink[/code], [code]purple[/code], [code]cyan[/" +"code], [code]white[/code], [code]orange[/code], [code]gray[/code]. " +"Hexadecimal color codes are not supported.\n" +"URL tags only support URLs wrapped by a URL tag, not URLs with a different " +"title.\n" +"When printing to standard output, the supported subset of BBCode is converted " +"to ANSI escape codes for the terminal emulator to display. Support for ANSI " +"escape codes varies across terminal emulators, especially for italic and " +"strikethrough. In standard output, [code]code[/code] is represented with " +"faint text but without any font change. Unsupported tags are left as-is in " +"standard output.\n" +"[codeblocks]\n" +"[gdscript skip-lint]\n" +"print_rich(\"[color=green][b]Hello world![/b][/color]\") # Prints out \"Hello " +"world!\" in green with a bold font\n" +"[/gdscript]\n" +"[csharp skip-lint]\n" +"GD.PrintRich(\"[color=green][b]Hello world![/b][/color]\"); // Prints out " +"\"Hello world!\" in green with a bold font\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Note:[/b] Consider using [method push_error] and [method push_warning] to " +"print error and warning messages instead of [method print] or [method " +"print_rich]. This distinguishes them from print messages used for debugging " +"purposes, while also displaying a stack trace when an error or warning is " +"printed.\n" +"[b]Note:[/b] On Windows, only Windows 10 and later correctly displays ANSI " +"escape codes in standard output." +msgstr "" +"以尽可能最佳的方式将一个或多个任意类型的参数转换为字符串,并将其打印到控制" +"台。\n" +"支持以下 BBCode 标签: [code]b[/code]、[code]i[/code]、[code]u[/code]、" +"[code]s[/code]、[code]indent[/code]、[code]code[/code]、[code]url[/code]、" +"[code]center[/code]、[code]right[/code]、[code]color[/code]、[code]bgcolor[/" +"code]、[code]fgcolor[/code]。\n" +"颜色标签仅支持以下颜色名称:[code]black[/code]、[code]red[/code]、" +"[code]green[/code]、[code]yellow[/code]、[code]blue[/code]、[code]magenta[/" +"code]、[code]pink[/code]、[code]purple[/code]、[code]cyan[/code]、" +"[code]white[/code]、[code]orange[/code]、[code]gray[/code]。不支持十六进制颜色" +"代码。\n" +"URL 标签仅支持在 URL 标签中包含 URL,不支持使用不同标题的 URL。\n" +"当打印到标准输出时,支持的 BBCode 子集被转换为 ANSI 转义码以供终端仿真器显示。" +"对 ANSI 转义码的支持可能因终端仿真器而异,尤其是斜体和删除线。在标准输出中," +"[code]code[/code] 会使用较弱的文本表示,但字体不变。不支持的标签在标准输出中会" +"原样保留。\n" +"[codeblocks]\n" +"[gdscript skip-lint]\n" +"print_rich(\"[color=green][b]Hello world![/b][/color]\") # 输出绿色的粗" +"体“Hello world!”\n" +"[/gdscript]\n" +"[csharp skip-lint]\n" +"GD.PrintRich(\"[color=green][b]Hello world![/b][/color]\"); // 输出绿色的粗" +"体“Hello world!”\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]注意:[/b]请考虑使用 [method push_error] 和 [method push_warning] 来打印错" +"误和警告消息,而不是 [method print] 或 [method print_rich]。这将它们与用于调试" +"目的的打印消息区分开来,同时还会在打印错误或警告时显示堆栈跟踪。\n" +"[b]注意:[/b]在 Windows 中,只有 Windows 10 及后续版本能够在标准输出中正确显" +"示 ANSI 转义码。" + msgid "" "If verbose mode is enabled ([method OS.is_stdout_verbose] returning " "[code]true[/code]), converts one or more arguments of any type to string in " @@ -3080,6 +3349,31 @@ msgstr "" "如果 [param delta] 为负,则该函数会进行远离 [param to] 的旋转,朝向相反的角" "度,但不会越过该角度。" +msgid "" +"Rounds [param x] to the nearest whole number, with halfway cases rounded away " +"from 0. Supported types: [int], [float], [Vector2], [Vector2i], [Vector3], " +"[Vector3i], [Vector4], [Vector4i].\n" +"[codeblock]\n" +"round(2.4) # Returns 2\n" +"round(2.5) # Returns 3\n" +"round(2.6) # Returns 3\n" +"[/codeblock]\n" +"See also [method floor], [method ceil], and [method snapped].\n" +"[b]Note:[/b] For better type safety, use [method roundf], [method roundi], " +"[method Vector2.round], [method Vector3.round], or [method Vector4.round]." +msgstr "" +"将 [param x] 舍入到最接近的整数,中间情况远离 0 舍入。支持的类型:[int]、" +"[float]、[Vector2]、[Vector2i]、[Vector3]、[Vector3i]、[Vector4]、" +"[Vector4i]。\n" +"[codeblock]\n" +"round(2.4) # 返回 2\n" +"round(2.5) # 返回 3\n" +"round(2.6) # 返回 3\n" +"[/codeblock]\n" +"另见 [method floor]、[method ceil]、[method snapped]。\n" +"[b]注意:[/b]为了更好的类型安全,使用 [method roundf]、[method roundi]、" +"[method Vector2.round]、[method Vector3.round] 或 [method Vector4.round]。" + msgid "" "Rounds [param x] to the nearest whole number, with halfway cases rounded away " "from 0.\n" @@ -3464,6 +3758,85 @@ msgstr "" "tanh(a) # 返回 0.6\n" "[/codeblock]" +msgid "" +"Converts the given [param variant] to the given [param type], using the [enum " +"Variant.Type] values. This method is generous with how it handles types, it " +"can automatically convert between array types, convert numeric [String]s to " +"[int], and converting most things to [String].\n" +"If the type conversion cannot be done, this method will return the default " +"value for that type, for example converting [Rect2] to [Vector2] will always " +"return [constant Vector2.ZERO]. This method will never show error messages as " +"long as [param type] is a valid Variant type.\n" +"The returned value is a [Variant], but the data inside and the [enum Variant." +"Type] will be the same as the requested type.\n" +"[codeblock]\n" +"type_convert(\"Hi!\", TYPE_INT) # Returns 0\n" +"type_convert(\"123\", TYPE_INT) # Returns 123\n" +"type_convert(123.4, TYPE_INT) # Returns 123\n" +"type_convert(5, TYPE_VECTOR2) # Returns (0, 0)\n" +"type_convert(\"Hi!\", TYPE_NIL) # Returns null\n" +"[/codeblock]" +msgstr "" +"使用 [enum Variant.Type] 值将给定的 [param variant] 转换为给定的 [param " +"type]。此方法对类型的处理十分宽松,可以在数组类型之间自动转换,将数值的 " +"[String] 转换为 [int],也可以将大多数内容转换为 [String]。\n" +"如果无法完成类型转换,此方法将返回该类型的默认值,例如 [Rect2] 转换为 " +"[Vector2] 时将总是返回 [constant Vector2.ZERO]。只要 [param type] 是一个有效" +"的 Variant 类型,此方法就永远不会显示错误消息。\n" +"返回的值是一个 [Variant],但是其中的数据以及 [enum Variant Type] 将会与请求的" +"类型相同。\n" +"[codeblock]\n" +"type_convert(\"Hi!\", TYPE_INT) # 返回 0\n" +"type_convert(\"123\", TYPE_INT) # 返回 123\n" +"type_convert(123.4, TYPE_INT) # 返回 123\n" +"type_convert(5, TYPE_VECTOR2) # 返回 (0, 0)\n" +"type_convert(\"Hi!\", TYPE_NIL) # 返回 null\n" +"[/codeblock]" + +msgid "" +"Returns a human-readable name of the given [param type], using the [enum " +"Variant.Type] values.\n" +"[codeblock]\n" +"print(TYPE_INT) # Prints 2.\n" +"print(type_string(TYPE_INT)) # Prints \"int\".\n" +"print(type_string(TYPE_STRING)) # Prints \"String\".\n" +"[/codeblock]\n" +"See also [method typeof]." +msgstr "" +"返回类型 [param type] 的人类可读名称,参数使用 [enum Variant.Type] 的值。\n" +"[codeblock]\n" +"print(TYPE_INT) # 输出 2。\n" +"print(type_string(TYPE_INT)) # 输出“int”。\n" +"print(type_string(TYPE_STRING)) # 输出“String”。\n" +"[/codeblock]\n" +"另见 [method typeof]。" + +msgid "" +"Returns the internal type of the given [param variable], using the [enum " +"Variant.Type] values.\n" +"[codeblock]\n" +"var json = JSON.new()\n" +"json.parse('[\"a\", \"b\", \"c\"]')\n" +"var result = json.get_data()\n" +"if typeof(result) == TYPE_ARRAY:\n" +" print(result[0]) # Prints a\n" +"else:\n" +" print(\"Unexpected result\")\n" +"[/codeblock]\n" +"See also [method type_string]." +msgstr "" +"返回变量 [param variable] 的内部类型,使用的是 [enum Variant.Type] 中的值。\n" +"[codeblock]\n" +"var json = JSON.new()\n" +"json.parse('[\"a\", \"b\", \"c\"]')\n" +"var result = json.get_data()\n" +"if typeof(result) == TYPE_ARRAY:\n" +" print(result[0]) # 输出 a\n" +"else:\n" +" print(\"出乎意料的结果\")\n" +"[/codeblock]\n" +"另见 [method type_string]。" + msgid "" "Encodes a [Variant] value to a byte array, without encoding objects. " "Deserialization can be done with [method bytes_to_var].\n" @@ -3527,20 +3900,6 @@ msgstr "" "[b]注意:[/b]不支持转换 [Signal] 和 [Callable],这些类型无论有什么数据,转换后" "都是空值。" -msgid "" -"Returns a weak reference to an object, or [code]null[/code] if [param obj] is " -"invalid.\n" -"A weak reference to an object is not enough to keep the object alive: when " -"the only remaining references to a referent are weak references, garbage " -"collection is free to destroy the referent and reuse its memory for something " -"else. However, until the object is actually destroyed the weak reference may " -"return the object even if there are no strong references to it." -msgstr "" -"返回对某个对象的弱引用,如果 [param obj] 无效,则返回 [code]null[/code]。\n" -"对对象的弱引用不足以使对象保持存活:当对引用对象的剩余引用都是弱引用时,垃圾回" -"收可以自由销毁该引用对象并将其内存重新用于其他用途。但是,在对象实际被销毁之" -"前,弱引用可能会返回该对象,即使不存在对它的强引用也是如此。" - msgid "" "Wraps the [Variant] [param value] between [param min] and [param max]. Can be " "used for creating loop-alike behavior or infinite surfaces.\n" @@ -3572,6 +3931,44 @@ msgstr "" "# a 为 5.5 (浮点类型)\n" "[/codeblock]" +msgid "" +"Wraps the float [param value] between [param min] and [param max]. Can be " +"used for creating loop-alike behavior or infinite surfaces.\n" +"[codeblock]\n" +"# Infinite loop between 5.0 and 9.9\n" +"value = wrapf(value + 0.1, 5.0, 10.0)\n" +"[/codeblock]\n" +"[codeblock]\n" +"# Infinite rotation (in radians)\n" +"angle = wrapf(angle + 0.1, 0.0, TAU)\n" +"[/codeblock]\n" +"[codeblock]\n" +"# Infinite rotation (in radians)\n" +"angle = wrapf(angle + 0.1, -PI, PI)\n" +"[/codeblock]\n" +"[b]Note:[/b] If [param min] is [code]0[/code], this is equivalent to [method " +"fposmod], so prefer using that instead.\n" +"[method wrapf] is more flexible than using the [method fposmod] approach by " +"giving the user control over the minimum value." +msgstr "" +"在 [param min] 和 [param max] 之间将浮点数 [param value] 循环。可用于创建类似" +"循环的行为或无限曲面。\n" +"[codeblock]\n" +"# 在 5.0 和 9.9 之间无限循环\n" +"value = wrapf(value + 0.1, 5.0, 10.0)\n" +"[/codeblock]\n" +"[codeblock]\n" +"# 无限旋转(弧度)\n" +"angle = wrapf(angle + 0.1, 0.0, TAU)\n" +"[/codeblock]\n" +"[codeblock]\n" +"# 无限旋转(弧度)\n" +"angle = wrapf(angle + 0.1, -PI, PI)\n" +"[/codeblock]\n" +"[b]注意:[/b]如果 [param min] 为 [code]0[/code],则相当于 [method fposmod],因" +"此请改用它。\n" +"通过让用户控制最小值,[method wrapf] 比使用 [method fposmod] 方法更灵活。" + msgid "" "Wraps the integer [param value] between [param min] and [param max]. Can be " "used for creating loop-alike behavior or infinite surfaces.\n" @@ -4610,13 +5007,19 @@ msgid "" "Game controller SDL back button. Corresponds to the Sony Select, Xbox Back, " "Nintendo - button." msgstr "" -"游戏控制器 SDL back按钮。对应于 Sony Select、Xbox Back、Nintendo - 按钮。" +"游戏控制器 SDL back 按钮。对应于 Sony Select、Xbox Back、Nintendo - 按钮。" msgid "" "Game controller SDL guide button. Corresponds to the Sony PS, Xbox Home " "button." msgstr "游戏控制器 SDL guide 按钮。对应于索尼 PS、Xbox 的 Home 键。" +msgid "" +"Game controller SDL start button. Corresponds to the Sony Options, Xbox Menu, " +"Nintendo + button." +msgstr "" +"游戏控制器 SDL start 按钮。对应于 Sony Options、Xbox Menu、Nintendo + 按钮。" + msgid "" "Game controller SDL left stick button. Corresponds to the Sony L3, Xbox L/LS " "button." @@ -5937,6 +6340,23 @@ msgstr "" "[b]注意:[/b]由于浮点数精度误差,请考虑改用 [method is_equal_approx],会更可" "靠。" +msgid "" +"Inversely transforms (multiplies) the [AABB] by the given [Transform3D] " +"transformation matrix, under the assumption that the transformation basis is " +"orthonormal (i.e. rotation/reflection is fine, scaling/skew is not).\n" +"[code]aabb * transform[/code] is equivalent to [code]transform.inverse() * " +"aabb[/code]. See [method Transform3D.inverse].\n" +"For transforming by inverse of an affine transformation (e.g. with scaling) " +"[code]transform.affine_inverse() * aabb[/code] can be used instead. See " +"[method Transform3D.affine_inverse]." +msgstr "" +"假设该变换的基是正交的(即旋转/反射可以,缩放/倾斜则不行),将 [AABB] 逆向变换" +"(乘以)给定的 [Transform3D] 变换矩阵。\n" +"[code]aabb * transform[/code] 相当于 [code]transform.inverse() * aabb[/code]。" +"见 [method Transform3D.inverse]。\n" +"对于通过仿射变换的逆进行的变换(例如,缩放),可以使用 [code]transform." +"affine_inverse() * aabb[/code] 代替。见 [method Transform3D.affine_inverse]。" + msgid "" "Returns [code]true[/code] if the AABBs are exactly equal.\n" "[b]Note:[/b] Due to floating-point precision errors, consider using [method " @@ -6944,6 +7364,12 @@ msgstr "" "[b]注意:[/b]压缩轨道有各种限制(比如不能从编辑器中编辑),所以只有在你真正需" "要时才使用压缩动画。" +msgid "" +"Adds a new track to [param to_animation] that is a copy of the given track " +"from this animation." +msgstr "" +"向 [param to_animation] 添加一个新轨道,该轨道是该动画中给定轨道的副本。" + msgid "" "Returns the index of the specified track. If the track is not found, return " "-1." @@ -12168,6 +12594,123 @@ msgid "" "a connected graph in 3D space." msgstr "A* 的一种实现,用于寻找 3D 空间中连接图中的两个顶点之间的最短路径。" +msgid "" +"A* (A star) is a computer algorithm used in pathfinding and graph traversal, " +"the process of plotting short paths among vertices (points), passing through " +"a given set of edges (segments). It enjoys widespread use due to its " +"performance and accuracy. Godot's A* implementation uses points in 3D space " +"and Euclidean distances by default.\n" +"You must add points manually with [method add_point] and create segments " +"manually with [method connect_points]. Once done, you can test if there is a " +"path between two points with the [method are_points_connected] function, get " +"a path containing indices by [method get_id_path], or one containing actual " +"coordinates with [method get_point_path].\n" +"It is also possible to use non-Euclidean distances. To do so, create a class " +"that extends [AStar3D] and override methods [method _compute_cost] and " +"[method _estimate_cost]. Both take two indices and return a length, as is " +"shown in the following example.\n" +"[codeblocks]\n" +"[gdscript]\n" +"class MyAStar:\n" +" extends AStar3D\n" +"\n" +" func _compute_cost(u, v):\n" +" return abs(u - v)\n" +"\n" +" func _estimate_cost(u, v):\n" +" return min(0, abs(u - v) - 1)\n" +"[/gdscript]\n" +"[csharp]\n" +"public partial class MyAStar : AStar3D\n" +"{\n" +" public override float _ComputeCost(long fromId, long toId)\n" +" {\n" +" return Mathf.Abs((int)(fromId - toId));\n" +" }\n" +"\n" +" public override float _EstimateCost(long fromId, long toId)\n" +" {\n" +" return Mathf.Min(0, Mathf.Abs((int)(fromId - toId)) - 1);\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[method _estimate_cost] should return a lower bound of the distance, i.e. " +"[code]_estimate_cost(u, v) <= _compute_cost(u, v)[/code]. This serves as a " +"hint to the algorithm because the custom [method _compute_cost] might be " +"computation-heavy. If this is not the case, make [method _estimate_cost] " +"return the same value as [method _compute_cost] to provide the algorithm with " +"the most accurate information.\n" +"If the default [method _estimate_cost] and [method _compute_cost] methods are " +"used, or if the supplied [method _estimate_cost] method returns a lower bound " +"of the cost, then the paths returned by A* will be the lowest-cost paths. " +"Here, the cost of a path equals the sum of the [method _compute_cost] results " +"of all segments in the path multiplied by the [code]weight_scale[/code]s of " +"the endpoints of the respective segments. If the default methods are used and " +"the [code]weight_scale[/code]s of all points are set to [code]1.0[/code], " +"then this equals the sum of Euclidean distances of all segments in the path." +msgstr "" +"A*(A 星)是一种计算机算法,用于寻路和图遍历,即穿过一组给定的边(线段),在顶" +"点(点)之间绘制短路径的过程。由于其性能和准确性,它被广泛使用。Godot 的 A* 实" +"现默认使用 3D 空间中的点和欧几里德距离。\n" +"你需要使用 [method add_point] 手动添加点,并使用 [method connect_points] 手动" +"创建线段。完成后,可以使用 [method are_points_connected] 函数,测试两点之间是" +"否存在路径,通过 [method get_id_path] 获取包含索引的路径,或使用 [method " +"get_point_path] 获取包含实际坐标的路径。\n" +"也可以使用非欧几里德距离。为此,创建一个扩展 [AStar3D] 的类,并覆盖方法 " +"[method _compute_cost] 和 [method _estimate_cost]。两者都接受两个索引并返回一" +"个长度,如以下示例所示。\n" +"[codeblocks]\n" +"[gdscript]\n" +"class MyAStar:\n" +" extends AStar3D\n" +"\n" +" func _compute_cost(u, v):\n" +" return abs(u - v)\n" +"\n" +" func _estimate_cost(u, v):\n" +" return min(0, abs(u - v) - 1)\n" +"[/gdscript]\n" +"[csharp]\n" +"public partial class MyAStar : AStar3D\n" +"{\n" +" public override float _ComputeCost(long fromId, long toId)\n" +" {\n" +" return Mathf.Abs((int)(fromId - toId));\n" +" }\n" +"\n" +" public override float _EstimateCost(long fromId, long toId)\n" +" {\n" +" return Mathf.Min(0, Mathf.Abs((int)(fromId - toId)) - 1);\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[method _estimate_cost] 应该返回距离的下限,即 [code]_estimate_cost(u, v) <= " +"_compute_cost(u, v)[/code]。这可以作为算法的提示,因为自定义 [method " +"_compute_cost] 可能计算量很大。如果不是这种情况,请使 [method _estimate_cost] " +"返回与 [method _compute_cost] 相同的值,以便为算法提供最准确的信息。\n" +"如果使用默认的 [method _estimate_cost] 和 [method _compute_cost] 方法,或者如" +"果提供的 [method _estimate_cost] 方法返回成本的下限,则 A* 返回的路径将是成本" +"最低的路径。这里,路径的代价等于路径中所有段的 [method _compute_cost] 结果乘以" +"各个段端点的权重 [code]weight_scale[/code] 之和。如果使用默认方法,并且所有点" +"的 [code]weight_scale[/code] 设置为 [code]1.0[/code],则这等于路径中所有段的欧" +"几里德距离之和。" + +msgid "" +"Called when computing the cost between two connected points.\n" +"Note that this function is hidden in the default [AStar3D] class." +msgstr "" +"计算两个连接点之间的成本时调用。\n" +"注意这个函数隐藏在默认的 [AStar3D] 类中。" + +msgid "" +"Called when estimating the cost between a point and the path's ending point.\n" +"Note that this function is hidden in the default [AStar3D] class." +msgstr "" +"估计一个点和路径终点之间的成本时调用。\n" +"注意这个函数隐藏在默认的 [AStar3D] 类中。" + msgid "" "Adds a new point at the given position with the given identifier. The [param " "id] must be 0 or larger, and the [param weight_scale] must be 0.0 or " @@ -12515,6 +13058,20 @@ msgstr "" "[/codeblocks]\n" "要从寻路网格中移除某个点,必须使用 [method set_point_solid] 将其设置为“实心”。" +msgid "" +"Called when computing the cost between two connected points.\n" +"Note that this function is hidden in the default [AStarGrid2D] class." +msgstr "" +"计算两个连接点之间的成本时调用。\n" +"注意这个函数隐藏在默认的 [AStarGrid2D] 类中。" + +msgid "" +"Called when estimating the cost between a point and the path's ending point.\n" +"Note that this function is hidden in the default [AStarGrid2D] class." +msgstr "" +"估计一个点和路径终点之间的成本时调用。\n" +"注意这个函数隐藏在默认的 [AStarGrid2D] 类中。" + msgid "" "Clears the grid and sets the [member region] to [code]Rect2i(0, 0, 0, 0)[/" "code]." @@ -12546,11 +13103,40 @@ msgstr "" "返回一个数组,其中包含形成 AStar2D 在给定点之间找到的路径的点的 ID。该数组从路" "径的起点到终点排序。" +msgid "" +"Returns an array with the points that are in the path found by [AStarGrid2D] " +"between the given points. The array is ordered from the starting point to the " +"ending point of the path.\n" +"[b]Note:[/b] This method is not thread-safe. If called from a [Thread], it " +"will return an empty [PackedVector3Array] and will print an error message." +msgstr "" +"返回一个数组,其中包含 [AStarGrid2D] 在给定点之间找到的路径上的点。数组从路径" +"的起点到终点排序。\n" +"[b]注意:[/b]该方法不是线程安全的。如果从 [Thread] 中调用它,它将返回一个空的 " +"[PackedVector3Array] 并打印一条错误消息。" + 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), i.e. if it is inside [member region]. Equivalent to " +"[code]region.has_point(Vector2i(x, y))[/code]." +msgstr "" +"如果 [param x] 和 [param y] 是有效的网格坐标(ID),即如果它位于 [member " +"region] 内部,则返回 [code]true[/code]。相当于 [code]region." +"has_point(Vector2i(x, y))[/code]。" + +msgid "" +"Returns [code]true[/code] if the [param id] vector is a valid grid " +"coordinate, i.e. if it is inside [member region]. Equivalent to [code]region." +"has_point(id)[/code]." +msgstr "" +"如果 [param id] 向量是有效的网格坐标,即如果它位于 [member region] 内部,则返" +"回 [code]true[/code]。相当于 [code]region.has_point(id)[/code]。" + msgid "" "Returns [code]true[/code] if a point is disabled for pathfinding. By default, " "all points are enabled." @@ -14015,6 +14601,143 @@ msgstr "" msgid "An audio stream with utilities for procedural sound generation." msgstr "提供程序式声音生成工具的音频流。" +msgid "" +"[AudioStreamGenerator] is a type of audio stream that does not play back " +"sounds on its own; instead, it expects a script to generate audio data for " +"it. See also [AudioStreamGeneratorPlayback].\n" +"Here's a sample on how to use it to generate a sine wave:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var playback # Will hold the AudioStreamGeneratorPlayback.\n" +"@onready var sample_hz = $AudioStreamPlayer.stream.mix_rate\n" +"var pulse_hz = 440.0 # The frequency of the sound wave.\n" +"\n" +"func _ready():\n" +" $AudioStreamPlayer.play()\n" +" playback = $AudioStreamPlayer.get_stream_playback()\n" +" fill_buffer()\n" +"\n" +"func fill_buffer():\n" +" var phase = 0.0\n" +" var increment = pulse_hz / sample_hz\n" +" var frames_available = playback.get_frames_available()\n" +"\n" +" for i in range(frames_available):\n" +" playback.push_frame(Vector2.ONE * sin(phase * TAU))\n" +" phase = fmod(phase + increment, 1.0)\n" +"[/gdscript]\n" +"[csharp]\n" +"[Export] public AudioStreamPlayer Player { get; set; }\n" +"\n" +"private AudioStreamGeneratorPlayback _playback; // Will hold the " +"AudioStreamGeneratorPlayback.\n" +"private float _sampleHz;\n" +"private float _pulseHz = 440.0f; // The frequency of the sound wave.\n" +"\n" +"public override void _Ready()\n" +"{\n" +" if (Player.Stream is AudioStreamGenerator generator) // Type as a " +"generator to access MixRate.\n" +" {\n" +" _sampleHz = generator.MixRate;\n" +" Player.Play();\n" +" _playback = (AudioStreamGeneratorPlayback)Player." +"GetStreamPlayback();\n" +" FillBuffer();\n" +" }\n" +"}\n" +"\n" +"public void FillBuffer()\n" +"{\n" +" double phase = 0.0;\n" +" float increment = _pulseHz / _sampleHz;\n" +" int framesAvailable = _playback.GetFramesAvailable();\n" +"\n" +" for (int i = 0; i < framesAvailable; i++)\n" +" {\n" +" _playback.PushFrame(Vector2.One * (float)Mathf.Sin(phase * Mathf." +"Tau));\n" +" phase = Mathf.PosMod(phase + increment, 1.0);\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"In the example above, the \"AudioStreamPlayer\" node must use an " +"[AudioStreamGenerator] as its stream. The [code]fill_buffer[/code] function " +"provides audio data for approximating a sine wave.\n" +"See also [AudioEffectSpectrumAnalyzer] for performing real-time audio " +"spectrum analysis.\n" +"[b]Note:[/b] Due to performance constraints, this class is best used from C# " +"or from a compiled language via GDExtension. If you still want to use this " +"class from GDScript, consider using a lower [member mix_rate] such as 11,025 " +"Hz or 22,050 Hz." +msgstr "" +"[AudioStreamGenerator] 是一种音频流,它自己并不播放声音,而是要用脚本来为它生" +"成音频数据。另见 [AudioStreamGeneratorPlayback]。\n" +"以下是用它来生成正弦波的例子:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var playback # 存放 AudioStreamGeneratorPlayback。\n" +"@onready var sample_hz = $AudioStreamPlayer.stream.mix_rate\n" +"var pulse_hz = 440.0 # 声音波形的频率。\n" +"\n" +"func _ready():\n" +" $AudioStreamPlayer.play()\n" +" playback = $AudioStreamPlayer.get_stream_playback()\n" +" fill_buffer()\n" +"\n" +"func fill_buffer():\n" +" var phase = 0.0\n" +" var increment = pulse_hz / sample_hz\n" +" var frames_available = playback.get_frames_available()\n" +"\n" +" for i in range(frames_available):\n" +" playback.push_frame(Vector2.ONE * sin(phase * TAU))\n" +" phase = fmod(phase + increment, 1.0)\n" +"[/gdscript]\n" +"[csharp]\n" +"[Export] public AudioStreamPlayer Player { get; set; }\n" +"\n" +"private AudioStreamGeneratorPlayback _playback; // 存放 " +"AudioStreamGeneratorPlayback。\n" +"private float _sampleHz;\n" +"private float _pulseHz = 440.0f; // 音频波形的频率。\n" +"\n" +"public override void _Ready()\n" +"{\n" +" if (Player.Stream is AudioStreamGenerator generator) // Type as a " +"generator to access MixRate.\n" +" {\n" +" _sampleHz = generator.MixRate;\n" +" Player.Play();\n" +" _playback = (AudioStreamGeneratorPlayback)Player." +"GetStreamPlayback();\n" +" FillBuffer();\n" +" }\n" +"}\n" +"\n" +"public void FillBuffer()\n" +"{\n" +" double phase = 0.0;\n" +" float increment = _pulseHz / _sampleHz;\n" +" int framesAvailable = _playback.GetFramesAvailable();\n" +"\n" +" for (int i = 0; i < framesAvailable; i++)\n" +" {\n" +" _playback.PushFrame(Vector2.One * (float)Mathf.Sin(phase * Mathf." +"Tau));\n" +" phase = Mathf.PosMod(phase + increment, 1.0);\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"上面的例子中,“AudioStreamPlayer”节点必须使用 [AudioStreamGenerator] 作为其" +"流。[code]fill_buffer[/code] 函数负责提供模拟正弦波的音频数据。\n" +"要执行实时音频频谱分析,见 [AudioEffectSpectrumAnalyzer]。\n" +"[b]注意:[/b]由于性能的限制,这个类最好在 C# 或者在利用 GDExtension 的编译语言" +"中使用。如果你仍然想要在 GDScript 中使用这个类,请考虑使用 11,025 Hz 或 " +"22,050 Hz 等较低的 [member mix_rate]。" + msgid "" "The length of the buffer to generate (in seconds). Lower values result in " "less latency, but require the script to generate audio data faster, resulting " @@ -14074,6 +14797,12 @@ msgstr "" "返回能够推送到音频采样数据缓冲区而不使其溢出的帧数。如果结果为 [code]0[/" "code],则缓冲区已满。" +msgid "" +"Returns the number of times the playback skipped due to a buffer underrun in " +"the audio sample data. This value is reset at the start of the playback." +msgstr "" +"返回由于音频样本数据中缓冲区不足而导致播放跳过的次数。该值在播放开始时重置。" + msgid "" "Pushes several audio data frames to the buffer. This is usually more " "efficient than [method push_frame] in C# and compiled languages via " @@ -15479,6 +16208,33 @@ msgid "" "cast onto it." msgstr "如果为 [code]true[/code],则对象不会收到投射到其上的阴影。" +msgid "" +"Distance at which the object appears fully opaque.\n" +"[b]Note:[/b] If [member distance_fade_max_distance] is less than [member " +"distance_fade_min_distance], the behavior will be reversed. The object will " +"start to fade away at [member distance_fade_max_distance] and will fully " +"disappear once it reaches [member distance_fade_min_distance]." +msgstr "" +"物体看起来完全不透明的距离。\n" +"[b]注意:[/b]如果 [member distance_fade_max_distance] 小于 [member " +"distance_fade_min_distance],则行为相反。物体将在 [member " +"distance_fade_max_distance] 处开始逐渐消失,并在到达 [member " +"distance_fade_min_distance] 时完全消失。" + +msgid "" +"Distance at which the object starts to become visible. If the object is less " +"than this distance away, it will be invisible.\n" +"[b]Note:[/b] If [member distance_fade_min_distance] is greater than [member " +"distance_fade_max_distance], the behavior will be reversed. The object will " +"start to fade away at [member distance_fade_max_distance] and will fully " +"disappear once it reaches [member distance_fade_min_distance]." +msgstr "" +"物体开始变得可见的距离。如果物体的距离小于这个距离,它将是不可见的。\n" +"[b]注意:[/b]如果 [member distance_fade_min_distance] 大于 [member " +"distance_fade_max_distance],则行为将相反。物体将在 [member " +"distance_fade_max_distance] 处开始逐渐消失,并在到达 [member " +"distance_fade_min_distance] 时完全消失。" + msgid "" "Specifies which type of fade to use. Can be any of the [enum " "DistanceFadeMode]s." @@ -16642,6 +17398,19 @@ msgstr "对象的 Z 轴将始终面向相机。" msgid "The object's X axis will always face the camera." msgstr "对象的 X 轴将始终面向相机。" +msgid "" +"Used for particle systems when assigned to [GPUParticles3D] and " +"[CPUParticles3D] nodes (flipbook animation). Enables [code]particles_anim_*[/" +"code] properties.\n" +"The [member ParticleProcessMaterial.anim_speed_min] or [member CPUParticles3D." +"anim_speed_min] should also be set to a value bigger than zero for the " +"animation to play." +msgstr "" +"分配给 [GPUParticles3D] 和 [CPUParticles3D] 节点时被用于粒子系统(翻页动画)。" +"启用 [code]particles_anim_*[/code] 属性。\n" +"[member ParticleProcessMaterial.anim_speed_min] 或 [member CPUParticles3D." +"anim_speed_min] 也应设置为大于零的值,以便播放动画。" + msgid "Used to read from the red channel of a texture." msgstr "用来读取纹理的红色通道。" @@ -16804,6 +17573,17 @@ msgstr "假设矩阵是旋转和缩放的组合,返回沿各轴缩放系数的 msgid "Returns the inverse of the matrix." msgstr "返回矩阵的逆值。" +msgid "" +"Returns [code]true[/code] if the basis is conformal, meaning it preserves " +"angles and distance ratios, and may only be composed of rotation and uniform " +"scale. Returns [code]false[/code] if the basis has non-uniform scale or shear/" +"skew. This can be used to validate if the basis is non-distorted, which is " +"important for physics and other use cases." +msgstr "" +"如果该基是共形的,则返回[code]true[/code],这意味着它保留角度和距离比率,并且" +"只能由旋转和均匀缩放组成。如果该基具有不均匀的缩放或剪切/倾斜,则返回 " +"[code]false[/code]。这可以用来验证该基是否不失真,这对于物理和其他用例很重要。" + msgid "" "Returns [code]true[/code] if this basis and [param b] are approximately " "equal, by calling [method @GlobalScope.is_equal_approx] on all vector " @@ -16891,6 +17671,16 @@ msgid "" "code]." msgstr "基矩阵的 Z 向量(第 2 列)。相当于数组索引 [code]2[/code]。" +msgid "" +"The identity basis, with no rotation or scaling applied.\n" +"This is identical to creating [constructor Basis] without any parameters. " +"This constant can be used to make your code clearer, and for consistency with " +"C#." +msgstr "" +"恒等基,未应用旋转或缩放。\n" +"这与不带任何参数调用 [constructor Basis] 来创建是一样的。这个常量可以用来让你" +"的代码更清晰,并与 C# 保持一致。" + msgid "" "The basis that will flip something along the X axis when used in a " "transformation." @@ -17088,6 +17878,13 @@ msgstr "返回节点在整个骨架中的索引号。见 [Skeleton2D]。" msgid "Returns the length of the bone in the [Bone2D] node." msgstr "返回 [Bone2D] 节点中骨骼的长度。" +msgid "" +"Returns the node's [member rest] [Transform2D] if it doesn't have a parent, " +"or its rest pose relative to its parent." +msgstr "" +"如果节点没有父节点,返回节点的 [member rest] [Transform2D],或者返回它相对于父" +"节点的放松姿势。" + msgid "" "When set to [code]true[/code], the [Bone2D] node will attempt to " "automatically calculate the bone angle and length using the first child " @@ -17771,6 +18568,10 @@ msgstr "该 [Button] 文本的 [Font]。" msgid "Font size of the [Button]'s text." msgstr "该 [Button] 文本的字体大小。" +msgid "" +"Default icon for the [Button]. Appears only if [member icon] is not assigned." +msgstr "该 [Button] 的默认图标。仅在未指定 [member icon] 时显示。" + msgid "[StyleBox] used when the [Button] is disabled." msgstr "该 [Button] 处于禁用状态时使用的 [StyleBox]。" @@ -17778,6 +18579,22 @@ msgid "" "[StyleBox] used when the [Button] is disabled (for right-to-left layouts)." msgstr "该 [Button] 处于禁用状态时使用的 [StyleBox](用于从右至左布局)。" +msgid "" +"[StyleBox] used when the [Button] is focused. The [theme_item focus] " +"[StyleBox] is displayed [i]over[/i] the base [StyleBox], so a partially " +"transparent [StyleBox] should be used to ensure the base [StyleBox] remains " +"visible. A [StyleBox] that represents an outline or an underline works well " +"for this purpose. To disable the focus visual effect, assign a " +"[StyleBoxEmpty] resource. Note that disabling the focus visual effect will " +"harm keyboard/controller navigation usability, so this is not recommended for " +"accessibility reasons." +msgstr "" +"该 [Button] 处于聚焦状态时使用的 [StyleBox]。[theme_item focus] [StyleBox] 显" +"示在基础 [StyleBox] [i]之上[/i],所以应该使用部分透明的 [StyleBox],确保基础 " +"[StyleBox] 仍然可见。代表轮廓或下划线的 [StyleBox] 可以很好地实现这个目的。要" +"禁用聚焦的视觉效果,请指定 [StyleBoxEmpty] 资源。请注意,禁用聚焦的视觉效果会" +"影响使用键盘/手柄进行导航的可用性,所以出于可访问性的原因,不建议这样做。" + msgid "[StyleBox] used when the [Button] is being hovered." msgstr "该 [Button] 处于悬停状态时使用的 [StyleBox]。" @@ -18193,6 +19010,21 @@ msgstr "如果两个 [Callable] 调用的自定义目标相同,则返回 [code msgid "Calls the specified method after optional delay." msgstr "在可选的延迟之后调用指定的方法。" +msgid "" +"[CallbackTweener] is used to call a method in a tweening sequence. See " +"[method Tween.tween_callback] for more usage information.\n" +"The tweener will finish automatically if the callback's target object is " +"freed.\n" +"[b]Note:[/b] [method Tween.tween_callback] is the only correct way to create " +"[CallbackTweener]. Any [CallbackTweener] created manually will not function " +"correctly." +msgstr "" +"[CallbackTweener] 可用于在补间序列中调用方法。更多用法信息请参阅 [method " +"Tween.tween_callback]。\n" +"如果回调的目标对象被释放,该补间将自动结束。\n" +"[b]注意:[/b]创建 [CallbackTweener] 的唯一正确方法是 [method Tween." +"tween_callback]。任何手动创建的 [CallbackTweener] 都无法正常工作。" + msgid "" "Makes the callback call delayed by given time in seconds.\n" "[b]Example:[/b]\n" @@ -18646,6 +19478,30 @@ msgstr "" "返回包含该相机视锥的锥体形状的 RID,忽略相机的近处平面。锥体的尖端代表该相机的" "位置。" +msgid "" +"Returns [code]true[/code] if the given position is behind the camera (the " +"blue part of the linked diagram). [url=https://raw.githubusercontent.com/" +"godotengine/godot-docs/master/img/camera3d_position_frustum.png]See this " +"diagram[/url] for an overview of position query methods.\n" +"[b]Note:[/b] A position which returns [code]false[/code] may still be outside " +"the camera's field of view." +msgstr "" +"如果给定位置在相机后面(链接图的蓝色部分),则返回 [code]true[/code]。" +"[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/" +"camera3d_position_frustum.png]查看此图[/url]以了解位置查询方法的概述。\n" +"[b]注意:[/b]返回 [code]false[/code] 的位置可能仍然在相机的视野之外。" + +msgid "" +"Returns [code]true[/code] if the given position is inside the camera's " +"frustum (the green part of the linked diagram). [url=https://raw." +"githubusercontent.com/godotengine/godot-docs/master/img/" +"camera3d_position_frustum.png]See this diagram[/url] for an overview of " +"position query methods." +msgstr "" +"如果给定位置在相机的视锥内(位于链接图中的绿色部分),则返回 [code]true[/" +"code]。[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/" +"img/camera3d_position_frustum.png]查看此图[/url]以了解位置查询方法的概述。" + msgid "" "Makes this camera the current camera for the [Viewport] (see class " "description). If the camera node is outside the scene tree, it will attempt " @@ -18823,6 +19679,25 @@ msgstr "" "该相机相对于其局部 Z 轴到远剔除边界的距离。较高的值允许相机看得更远,而减少 " "[member far] 如果会导致对象被部分或完全剔除,则可以提高性能。" +msgid "" +"The camera's field of view angle (in degrees). Only applicable in perspective " +"mode. Since [member keep_aspect] locks one axis, [member fov] sets the other " +"axis' field of view angle.\n" +"For reference, the default vertical field of view value ([code]75.0[/code]) " +"is equivalent to a horizontal FOV of:\n" +"- ~91.31 degrees in a 4:3 viewport\n" +"- ~101.67 degrees in a 16:10 viewport\n" +"- ~107.51 degrees in a 16:9 viewport\n" +"- ~121.63 degrees in a 21:9 viewport" +msgstr "" +"相机的视野角度(单位为度)。仅适用于透视模式。由于 [member keep_aspect] 锁定一" +"个轴,因此 [member fov] 设置另一个轴的视角。\n" +"作为参考,默认的垂直视野值([code]70.0[/code])相当于以下水平 FOV:\n" +"- 在 4:3 视口中约 91.31 度\n" +"- 在 16:10 视口中约 101.67 度\n" +"- 在 16:9 视口中约 107.51 度\n" +"- 在 21:9 视口中约 121.63 度" + msgid "" "The camera's frustum offset. This can be changed from the default to create " "\"tilted frustum\" effects such as [url=https://zdoom.org/wiki/Y-shearing]Y-" @@ -19482,6 +20357,43 @@ msgstr "" msgid "Abstract base class for everything in 2D space." msgstr "2D 空间中所有对象的抽象基类。" +msgid "" +"Abstract base class for everything in 2D space. Canvas items are laid out in " +"a tree; children inherit and extend their parent's transform. [CanvasItem] is " +"extended by [Control] for GUI-related nodes, and by [Node2D] for 2D game " +"objects.\n" +"Any [CanvasItem] can draw. For this, [method queue_redraw] is called by the " +"engine, then [constant NOTIFICATION_DRAW] will be received on idle time to " +"request a redraw. Because of this, canvas items don't need to be redrawn on " +"every frame, improving the performance significantly. Several functions for " +"drawing on the [CanvasItem] are provided (see [code]draw_*[/code] functions). " +"However, they can only be used inside [method _draw], its corresponding " +"[method Object._notification] or methods connected to the [signal draw] " +"signal.\n" +"Canvas items are drawn in tree order on their canvas layer. By default, " +"children are on top of their parents, so a root [CanvasItem] will be drawn " +"behind everything. This behavior can be changed on a per-item basis.\n" +"A [CanvasItem] can be hidden, which will also hide its children. By adjusting " +"various other properties of a [CanvasItem], you can also modulate its color " +"(via [member modulate] or [member self_modulate]), change its Z-index, blend " +"mode, and more." +msgstr "" +"2D 空间中所有对象的抽象基类。画布项目以树状排列;子节点继承并扩展其父节点的变" +"换。[CanvasItem] 由 [Control] 扩展为 GUI 相关的节点,由 [Node2D] 扩展为 2D 游" +"戏对象。\n" +"任何 [CanvasItem] 都可以进行绘图。绘图时,引擎会调用 [method queue_redraw],然" +"后 [constant NOTIFICATION_DRAW] 就会在空闲时被接收到以请求重绘。因此,画布项目" +"不需要每一帧都重绘,这显著提升了性能。这个类还提供了几个用于在 [CanvasItem] 上" +"绘图的函数(见 [code]draw_*[/code] 函数)。不过这些函数都只能在 [method " +"_draw] 及其对应的 [method Object._notification] 或连接到 [signal draw] 的方法" +"内使用。\n" +"画布项目在其画布层上是按树状顺序绘制的。默认情况下,子项目位于其父项目的上方," +"因此根 [CanvasItem] 将被画在所有项目的后面。这种行为可以针对每个画布项目进行更" +"改。\n" +"[CanvasItem] 可以隐藏,隐藏时也会隐藏其子项目。通过调整 [CanvasItem] 的各种其" +"它属性,你还可以调制它的颜色(通过 [member modulate] 或 [member " +"self_modulate])、更改 Z 索引、混合模式等。" + msgid "Viewport and canvas transforms" msgstr "Viewport 和画布变换" @@ -19506,6 +20418,34 @@ msgstr "" "后续的绘制命令将被忽略,除非它们位于指定的动画切片内。这是实现在背景上循环而不" "是不断重绘的动画的更快方法。" +msgid "" +"Draws an unfilled arc between the given angles with a uniform [param color] " +"and [param width] and optional antialiasing (supported only for positive " +"[param width]). The larger the value of [param point_count], the smoother the " +"curve. See also [method draw_circle].\n" +"If [param width] is negative, it will be ignored and the arc will be drawn " +"using [constant RenderingServer.PRIMITIVE_LINE_STRIP]. This means that when " +"the CanvasItem is scaled, the arc will remain thin. If this behavior is not " +"desired, then pass a positive [param width] like [code]1.0[/code].\n" +"The arc is drawn from [param start_angle] towards the value of [param " +"end_angle] so in clockwise direction if [code]start_angle < end_angle[/code] " +"and counter-clockwise otherwise. Passing the same angles but in reversed " +"order will produce the same arc. If absolute difference of [param " +"start_angle] and [param end_angle] is greater than [constant @GDScript.TAU] " +"radians, then a full circle arc is drawn (i.e. arc will not overlap itself)." +msgstr "" +"使用一个 uniform [param color] 和 [param width] 以及可选的抗锯齿(仅支持正 " +"[param width] ),在给定的角度之间绘制一条未填充的弧线。[param point_count] 的" +"值越大,该曲线越平滑。另见 [method draw_circle]。\n" +"如果 [param width] 为负,则它将被忽略,并使用 [constant RenderingServer." +"PRIMITIVE_LINE_STRIP] 绘制该弧线。这意味着当缩放 CanvasItem 时,弧线将保持细" +"长。如果不需要此行为,请传递一个正的 [param width],如 [code]1.0[/code]。\n" +"如果 [code]start_angle < end_angle[/code] ,则圆弧是从 [param start_angle] 朝" +"向 [param end_angle] 的值绘制的,即是顺时针方向;否则为逆时针方向。以相反的顺" +"序传递相同的角度,将产生相同的弧线。如果 [param start_angle] 和 [param " +"end_angle] 的差的绝对值大于 [constant @GDScript.TAU] 弧度,则绘制一个完整的圆" +"弧(即弧线不会与自身重叠)。" + msgid "Draws a string first character using a custom font." msgstr "使用自定义字体绘制字符串的第一个字符。" @@ -19702,6 +20642,51 @@ msgstr "" "能够使用骨骼),请改用 [method RenderingServer." "canvas_item_add_triangle_array]。" +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, it will be ignored and the polyline will be " +"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 "" +"使用一致的 [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], point-by-" +"point coloring, and optional antialiasing (supported only for positive [param " +"width]). Colors assigned to line points match by index between [param points] " +"and [param colors], i.e. each line segment is filled with a gradient between " +"the colors of the endpoints. 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, it will be ignored and the polyline will be " +"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 "" +"绘制相连的线段,使用一致的宽度 [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 " @@ -20714,6 +21699,16 @@ msgstr "" "允许手动应用向地板的吸附,无论该物体的速度多大。[method is_on_floor] 返回 " "[code]true[/code] 时这个函数什么都不做。" +msgid "" +"Returns the floor's collision angle at the last collision point according to " +"[param up_direction], which is [constant Vector2.UP] by default. This value " +"is always positive and only valid after calling [method move_and_slide] and " +"when [method is_on_floor] returns [code]true[/code]." +msgstr "" +"返回地板在最近一次碰撞点的碰撞角度,依据为 [param up_direction],默认为 " +"[constant Vector2.UP]。该值始终为正数,只有在调用了 [method move_and_slide] 并" +"且 [method is_on_floor] 返回值为 [code]true[/code] 时才有效。" + msgid "" "Returns the surface normal of the floor at the last collision point. Only " "valid after calling [method move_and_slide] and when [method is_on_floor] " @@ -21028,6 +22023,18 @@ msgstr "" "如果为 [code]true[/code],则该物体在跳到天花板时会滑动;如果为 [code]false[/" "code],则会停止并垂直下落。" +msgid "" +"Vector pointing upwards, used to determine what is a wall and what is a floor " +"(or a ceiling) when calling [method move_and_slide]. Defaults to [constant " +"Vector2.UP]. As the vector will be normalized it can't be equal to [constant " +"Vector2.ZERO], if you want all collisions to be reported as walls, consider " +"using [constant MOTION_MODE_FLOATING] as [member motion_mode]." +msgstr "" +"指向上方的向量,用于在调用 [method move_and_slide] 时决定什么是墙壁、什么是地" +"板(或者天花板)。默认为 [constant Vector2.UP]。因为会对该向量进行归一化,所以" +"不能等于 [constant Vector2.ZERO],如果你想要让所有碰撞都被报告为墙壁,请考虑使" +"用 [constant MOTION_MODE_FLOATING] 作为 [member motion_mode]。" + msgid "" "Current velocity vector in pixels per second, used and modified during calls " "to [method move_and_slide]." @@ -21100,6 +22107,16 @@ msgstr "" "如果是移动平台等不需要复杂移动和碰撞检测的游戏对象,[AnimatableBody3D] 更方便" "配置。" +msgid "" +"Returns the floor's collision angle at the last collision point according to " +"[param up_direction], which is [constant Vector3.UP] by default. This value " +"is always positive and only valid after calling [method move_and_slide] and " +"when [method is_on_floor] returns [code]true[/code]." +msgstr "" +"返回地板在最近一次碰撞点的碰撞角度,依据为 [param up_direction],默认为 " +"[constant Vector3.UP]。该值始终为正数,只有在调用了 [method move_and_slide] 并" +"且 [method is_on_floor] 返回值为 [code]true[/code] 时才有效。" + msgid "" "Returns the last motion applied to the [CharacterBody3D] during the last call " "to [method move_and_slide]. The movement can be split into multiple motions " @@ -21176,6 +22193,18 @@ msgstr "" "用于检测墙壁物体的碰撞层,该墙壁物体会被用作 [CharacterBody3D] 所要跟随的移动" "平台。默认情况下会忽略所有墙壁物体。" +msgid "" +"Vector pointing upwards, used to determine what is a wall and what is a floor " +"(or a ceiling) when calling [method move_and_slide]. Defaults to [constant " +"Vector3.UP]. As the vector will be normalized it can't be equal to [constant " +"Vector3.ZERO], if you want all collisions to be reported as walls, consider " +"using [constant MOTION_MODE_FLOATING] as [member motion_mode]." +msgstr "" +"指向上方的向量,用于在调用 [method move_and_slide] 时决定什么是墙壁、什么是地" +"板(或者天花板)。默认为 [constant Vector3.UP]。因为会对该向量进行归一化,所以" +"不能等于 [constant Vector3.ZERO],如果你想要让所有碰撞都被报告为墙壁,请考虑使" +"用 [constant MOTION_MODE_FLOATING] 作为 [member motion_mode]。" + msgid "" "Current velocity vector (typically meters per second), used and modified " "during calls to [method move_and_slide]." @@ -21700,6 +22729,13 @@ msgstr "清除所有已执行的行。" msgid "Removes all string delimiters." msgstr "移除所有字符串分隔符。" +msgid "" +"Inserts the selected entry into the text. If [param replace] is true, any " +"existing text is replaced rather than merged." +msgstr "" +"将选定的条目插入到文本中。如果 [param replace] 为真,任何现有的文本都会被替" +"换,而不是被合并。" + msgid "" "Converts the indents of lines between [param from_line] and [param to_line] " "to tabs or spaces as set by [member indent_use_spaces].\n" @@ -21709,10 +22745,36 @@ msgstr "" "indent_use_spaces] 设置的制表符或空格。\n" "值均为 [code]-1[/code] 将转换整个文本。" +msgid "" +"Creates a new code region with the selection. At least one single line " +"comment delimiter have to be defined (see [method add_comment_delimiter]).\n" +"A code region is a part of code that is highlighted when folded and can help " +"organize your script.\n" +"Code region start and end tags can be customized (see [method " +"set_code_region_tags]).\n" +"Code regions are delimited using start and end tags (respectively " +"[code]region[/code] and [code]endregion[/code] by default) preceded by one " +"line comment delimiter. (eg. [code]#region[/code] and [code]#endregion[/code])" +msgstr "" +"使用选区创建一个新的代码区块。必须至少定义一个单行注释分隔符(见 [method " +"add_comment_delimiter])。\n" +"代码区块是代码的一部分,它在折叠时会高亮显示,且可以帮助组织脚本。\n" +"代码区块的开始和结束标记可以被自定义(见 [method set_code_region_tags])。\n" +"代码区块使用开始和结束标记(默认情况下分别为 [code]region[/code] 和 " +"[code]endregion[/code])进行分隔,前面有一个行注释分隔符。(例如 " +"[code]#region[/code] 和 [code]#endregion[/code])" + msgid "" "Perform an indent as if the user activated the \"ui_text_indent\" action." msgstr "执行一个缩进,就像用户触发了“ui_text_indent”动作一样。" +msgid "" +"Duplicates all lines currently selected with any caret. Duplicates the entire " +"line beneath the current one no matter where the caret is within the line." +msgstr "" +"复制当前使用任何文本光标选择的所有行。无论文本光标位于行内的哪个位置,复制当前" +"行所在的整行。" + msgid "" "Folds all lines that are possible to be folded (see [method can_fold_line])." msgstr "折叠所有可能被折叠的行(参见 [method can_fold_line])。" @@ -21756,6 +22818,12 @@ msgstr "获取所有补全选项,返回值见 [method get_code_completion_opti msgid "Gets the index of the current selected completion option." msgstr "获取当前已选定补全项的索引。" +msgid "Returns the code region end tag (without comment delimiter)." +msgstr "返回代码区块结束标签(不带注释分隔符)。" + +msgid "Returns the code region start tag (without comment delimiter)." +msgstr "返回代码区块开始标签(不带注释分隔符)。" + msgid "Gets the end key for a string or comment region index." msgstr "获取字符串或注释块索引的结束键。" @@ -21836,6 +22904,12 @@ msgstr "返回指定索引处的行是否添加了书签。" msgid "Returns whether the line at the specified index is breakpointed or not." msgstr "返回指定索引处的行是否有断点。" +msgid "Returns whether the line at the specified index is a code region end." +msgstr "返回指定索引处的行是否是代码区块末尾。" + +msgid "Returns whether the line at the specified index is a code region start." +msgstr "返回指定索引处的行是否是代码区块开始。" + msgid "" "Returns whether the line at the specified index is marked as executing or not." msgstr "返回指定索引处的行是否标记为正在执行。" @@ -21899,6 +22973,16 @@ msgstr "" "解除所选行的缩进,或者在没有选择的情况下,将光标行缩进一个。与触" "发“ui_text_unindent ”动作相同。" +msgid "" +"Submits all completion options added with [method " +"add_code_completion_option]. Will try to force the autocomplete menu to " +"popup, if [param force] is [code]true[/code].\n" +"[b]Note:[/b] This will replace all current candidates." +msgstr "" +"提交所有用 [method add_code_completion_option] 添加的补全选项。如果 [param " +"force] 是 [code]true[/code],将尝试强制弹出自动补全菜单 。\n" +"[b]注意:[/b]这将取代所有当前的候补选项。" + msgid "Sets whether brace pairs should be autocompleted." msgstr "设置括号对是否应自动补全。" @@ -21954,6 +23038,13 @@ msgstr "设置是否启用自动缩进,如果找到前缀或括号,这将添 msgid "Prefixes to trigger an automatic indent." msgstr "触发自动缩进的前缀。" +msgid "" +"Size of the tabulation indent (one [kbd]Tab[/kbd] press) in characters. If " +"[member indent_use_spaces] is enabled the number of spaces to use." +msgstr "" +"制表缩进的大小(按一次 [kbd]Tab[/kbd]),以字符为单位。如果启用 [member " +"indent_use_spaces],则代表使用的空格数。" + msgid "Use spaces instead of tabs for indentation." msgstr "使用空格代替制表符进行缩进。" @@ -22099,6 +23190,11 @@ msgid "" "Max number of options to display in the code completion popup at any one time." msgstr "同时在代码补全弹出窗口中显示的最大选项数。" +msgid "" +"Max width of options in the code completion popup. Options longer than this " +"will be cut off." +msgstr "代码补全弹出窗口中选项的最大宽度。超过此长度的选项将被截断。" + msgid "Width of the scrollbar in the code completion popup." msgstr "代码补全弹出窗口中滚动条的宽度。" @@ -22116,6 +23212,11 @@ msgid "" "be folded." msgstr "设置可折叠行的自定义 [Texture2D],会在折叠行栏中绘制。" +msgid "" +"Sets a custom [Texture2D] to draw in the line folding gutter when a code " +"region can be folded." +msgstr "设置一个自定义 [Texture2D],以在代码区块可以折叠时在行折叠栏中绘制。" + msgid "Icon to draw in the executing gutter for executing lines." msgstr "执行行的图标,会在执行栏中绘制。" @@ -22123,7 +23224,14 @@ msgid "" "Sets a custom [Texture2D] to draw in the line folding gutter when a line is " "folded and can be unfolded." msgstr "" -"当行被折叠且可以展开时,设置要在行折叠装订线中绘制的一个自定义 [Texture2D]。" +"设置一个自定义 [Texture2D],以在行被折叠且可以展开时,在行折叠边栏中绘制。" + +msgid "" +"Sets a custom [Texture2D] to draw in the line folding gutter when a code " +"region is folded and can be unfolded." +msgstr "" +"设置一个自定义 [Texture2D],以在代码区块被折叠且可以展开时,在行折叠边栏中绘" +"制。" msgid "Sets a custom [Texture2D] to draw at the end of a folded line." msgstr "设置要绘制在折叠行末尾的一个自定义 [Texture2D]。" @@ -22266,6 +23374,18 @@ msgstr "" "[b]注意:[/b]仅支持相同画布中不同对象的碰撞([Viewport] 画布或 " "[CanvasLayer])。不同画布中的对象之间的碰撞行为是未定义的。" +msgid "" +"Accepts unhandled [InputEvent]s. [param shape_idx] is the child index of the " +"clicked [Shape2D]. Connect to [signal input_event] to easily pick up these " +"events.\n" +"[b]Note:[/b] [method _input_event] requires [member input_pickable] to be " +"[code]true[/code] and at least one [member collision_layer] bit to be set." +msgstr "" +"接收未处理的 [InputEvent]。[param shape_idx] 是被点击的 [Shape2D] 的子索引。连" +"接到 [signal input_event] 即可轻松获取这些事件。\n" +"[b]注意:[/b][method _input_event] 要求 [member input_pickable] 为 " +"[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 " @@ -22748,6 +23868,21 @@ msgstr "" msgid "A node that provides a polygon shape to a [CollisionObject2D] parent." msgstr "向 [CollisionObject2D] 父级提供多边形形状的节点。" +msgid "" +"A node that provides a thickened polygon shape (a prism) to a " +"[CollisionObject2D] parent and allows to edit it. The polygon can be concave " +"or convex. This can give a detection shape to an [Area2D] or turn " +"[PhysicsBody2D] into a solid object.\n" +"[b]Warning:[/b] A non-uniformly scaled [CollisionShape2D] will likely not " +"behave as expected. Make sure to keep its scale the same on all axes and " +"adjust its shape resource instead." +msgstr "" +"一个节点,为 [CollisionObject2D] 父级提供加厚多边形形状(角柱体)并允许对其进" +"行编辑。该多边形可以是凹的或凸的。这可以为 [Area2D] 提供检测形状,也能够将 " +"[PhysicsBody2D] 转变为实体对象。\n" +"[b]警告:[/b]非均匀缩放的 [CollisionShape2D] 可能不会按预期运行。可改为确保在" +"所有轴上保持其缩放相同,并调整其形状资源。" + msgid "Collision build mode. Use one of the [enum BuildMode] constants." msgstr "碰撞构建模式。使用 [enum BuildMode] 常量之一。" @@ -22836,6 +23971,18 @@ msgid "" "for more details." msgstr "生成的 [Shape3D] 的碰撞边距。详情见 [member Shape3D.margin]。" +msgid "" +"Array of vertices which define the 2D polygon in the local XY plane.\n" +"[b]Note:[/b] The returned value is a copy of the original. Methods which " +"mutate the size or properties of the return value will not impact the " +"original polygon. To change properties of the polygon, assign it to a " +"temporary variable and make changes before reassigning the class property." +msgstr "" +"顶点数组,定义局部 XY 平面上的 2D 多边形。\n" +"[b]注意:[/b]返回值为原始值的副本。修改返回值大小或属性的方法不会影响原始的多" +"边形。要修改该多边形的属性,请先将其赋值给临时变量,修改完成后再重新赋值给该类" +"属性。" + msgid "A node that provides a [Shape2D] to a [CollisionObject2D] parent." msgstr "向 [CollisionObject2D] 父级提供 [Shape2D] 的节点。" @@ -22919,6 +24066,42 @@ msgstr "禁用的碰撞形状对世界没有任何影响。" msgid "A color represented in RGBA format." msgstr "以 RGBA 格式表示的颜色。" +msgid "" +"A color represented in RGBA format by a red ([member r]), green ([member g]), " +"blue ([member b]), and alpha ([member a]) component. Each component is a 16-" +"bit floating-point value, usually ranging from [code]0.0[/code] to [code]1.0[/" +"code]. Some properties (such as [member CanvasItem.modulate]) may support " +"values greater than [code]1.0[/code], for overbright or HDR (High Dynamic " +"Range) colors.\n" +"Colors can be created in various ways: By the various [Color] constructors, " +"by static methods such as [method from_hsv], and by using a name from the set " +"of standardized colors based on [url=https://en.wikipedia.org/wiki/" +"X11_color_names]X11 color names[/url] with the addition of [constant " +"TRANSPARENT]. GDScript also provides [method @GDScript.Color8], which uses " +"integers from [code]0[/code] to [code]255[/code] and doesn't support " +"overbright colors.\n" +"[b]Note:[/b] In a boolean context, a Color will evaluate to [code]false[/" +"code] if it is equal to [code]Color(0, 0, 0, 1)[/code] (opaque black). " +"Otherwise, a Color will always evaluate to [code]true[/code].\n" +"[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/" +"color_constants.png]Color constants cheatsheet[/url]" +msgstr "" +"由红([member r])、绿([member g])、蓝([member b])和 alpha([member a])分" +"量表示的 RGBA 格式的颜色。每个分量都是一个 16 位浮点值,通常介于 [code]0.0[/" +"code] 到 [code]1.0[/code] 之间。某些属性(例如 [member CanvasItem.modulate])" +"可能支持大于 [code]1.0[/code] 的值,用于表示过亮或 HDR(High Dynamic Range,高" +"动态范围)颜色。\n" +"创建颜色的方法有很多:可以使用 [Color] 的各种构造函数,[method from_hsv] 等静" +"态方法,以及使用基于 [url=https://en.wikipedia.org/wiki/X11_color_names]X11 颜" +"色名称[/url]的标准化颜色集外加 [constant TRANSPARENT]。GDScript 还提供了 " +"[method @GDScript.Color8],使用的是 [code]0[/code] 到 [code]255[/code] 之间的" +"整数,且不支持过亮的颜色。\n" +"[b]注意:[/b]在布尔上下文中,等于 [code]Color(0, 0, 0, 1)[/code](不透明的黑" +"色)的 Color 将被评估为 [code]false[/code]。否则,Color 将始终被评估为 " +"[code]true[/code]。\n" +"[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/" +"color_constants.png]Color 常量速查表[/url]" + msgid "2D GD Paint Demo" msgstr "2D GD 画图演示" @@ -23259,6 +24442,57 @@ msgstr "" "[/csharp]\n" "[/codeblocks]" +msgid "" +"Returns [code]true[/code] if [param color] is a valid HTML hexadecimal color " +"string. The string must be a hexadecimal value (case-insensitive) of either " +"3, 4, 6 or 8 digits, and may be prefixed by a hash sign ([code]#[/code]). " +"This method is identical to [method String.is_valid_html_color].\n" +"[codeblocks]\n" +"[gdscript]\n" +"Color.html_is_valid(\"#55aaFF\") # Returns true\n" +"Color.html_is_valid(\"#55AAFF20\") # Returns true\n" +"Color.html_is_valid(\"55AAFF\") # Returns true\n" +"Color.html_is_valid(\"#F2C\") # Returns true\n" +"\n" +"Color.html_is_valid(\"#AABBC\") # Returns false\n" +"Color.html_is_valid(\"#55aaFF5\") # Returns false\n" +"[/gdscript]\n" +"[csharp]\n" +"Color.HtmlIsValid(\"#55AAFF\"); // Returns true\n" +"Color.HtmlIsValid(\"#55AAFF20\"); // Returns true\n" +"Color.HtmlIsValid(\"55AAFF\"); // Returns true\n" +"Color.HtmlIsValid(\"#F2C\"); // Returns true\n" +"\n" +"Color.HtmlIsValid(\"#AABBC\"); // Returns false\n" +"Color.HtmlIsValid(\"#55aaFF5\"); // Returns false\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"如果 [param color] 是一个有效的 HTML 十六进制颜色字符串,则返回 [code]true[/" +"code]。该字符串必须是一个由 3、4、6 或 8 位数字组成的十六进制值(不区分大小" +"写),并且可以以井号 ([code]#[/code]) 作为前缀。该方法与 [method String." +"is_valid_html_color] 相同。\n" +"[codeblocks]\n" +"[gdscript]\n" +"Color.html_is_valid(\"#55aaFF\") # 返回 true\n" +"Color.html_is_valid(\"#55AAFF20\") # 返回 true\n" +"Color.html_is_valid(\"55AAFF\") # 返回 true\n" +"Color.html_is_valid(\"#F2C\") # 返回 true\n" +"\n" +"Color.html_is_valid(\"#AABBC\") # 返回 false\n" +"Color.html_is_valid(\"#55aaFF5\") # 返回 false\n" +"[/gdscript]\n" +"[csharp]\n" +"Color.HtmlIsValid(\"#55AAFF\"); // 返回 true\n" +"Color.HtmlIsValid(\"#55AAFF20\"); // 返回 true\n" +"Color.HtmlIsValid(\"55AAFF\"); // 返回 true\n" +"Color.HtmlIsValid(\"#F2C\"); // 返回 true\n" +"\n" +"Color.HtmlIsValid(\"#AABBC\"); // 返回 false\n" +"Color.HtmlIsValid(\"#55aaFF5\"); // 返回 false\n" +"[/csharp]\n" +"[/codeblocks]" + msgid "" "Returns the color with its [member r], [member g], and [member b] components " "inverted ([code](1 - r, 1 - g, 1 - b, a)[/code]).\n" @@ -24284,6 +25518,11 @@ msgid "" "selected from the shapes popup." msgstr "色彩空间形状和形状选择按钮被隐藏。不能从形状弹出窗口中选择。" +msgid "" +"Overrides the [theme_item Slider.center_grabber] theme property of the " +"sliders." +msgstr "覆盖滑块的 [theme_item Slider.center_grabber] 主题属性。" + msgid "The width of the hue selection slider." msgstr "色相选择滑块的宽度。" @@ -24632,6 +25871,49 @@ msgstr "加载纹理所使用的路径。" msgid "A 2D polyline shape used for physics collision." msgstr "用于物理碰撞的 2D 多线段形状。" +msgid "" +"A 2D polyline shape, intended for use in physics. Used internally in " +"[CollisionPolygon2D] when it's in [constant CollisionPolygon2D." +"BUILD_SEGMENTS] mode.\n" +"Being just a collection of interconnected line segments, " +"[ConcavePolygonShape2D] is the most freely configurable single 2D shape. It " +"can be used to form polygons of any nature, or even shapes that don't enclose " +"an area. However, [ConcavePolygonShape2D] is [i]hollow[/i] even if the " +"interconnected line segments do enclose an area, which often makes it " +"unsuitable for physics or detection.\n" +"[b]Note:[/b] When used for collision, [ConcavePolygonShape2D] is intended to " +"work with static [CollisionShape2D] nodes like [StaticBody2D] and will likely " +"not behave well for [CharacterBody2D]s or [RigidBody2D]s in a mode other than " +"Static.\n" +"[b]Warning:[/b] Physics bodies that are small have a chance to clip through " +"this shape when moving fast. This happens because on one frame, the physics " +"body may be on the \"outside\" of the shape, and on the next frame it may be " +"\"inside\" it. [ConcavePolygonShape2D] is hollow, so it won't detect a " +"collision.\n" +"[b]Performance:[/b] Due to its complexity, [ConcavePolygonShape2D] is the " +"slowest 2D collision shape to check collisions against. Its use should " +"generally be limited to level geometry. If the polyline is closed, " +"[CollisionPolygon2D]'s [constant CollisionPolygon2D.BUILD_SOLIDS] mode can be " +"used, which decomposes the polygon into convex ones; see " +"[ConvexPolygonShape2D]'s documentation for instructions." +msgstr "" +"一种 2D 折线形状,用于物理运算。当 [CollisionPolygon2D] 处于 [constant " +"CollisionPolygon2D.BUILD_SEGMENTS] 模式时,会在其内部使用。\n" +"作为一组相互连接线段,[ConcavePolygonShape2D] 是最自由的可配置的单一 2D 形状。" +"它可以用于形成任何性质的多边形,甚至是不封闭区域的形状。然而,即使相互连接的线" +"段确实封闭了一个区域,[ConcavePolygonShape2D] 仍然是[i]中空的[/i],这常常使其" +"不适用于物理模拟或碰撞检测。\n" +"[b]注意:[/b]当用于碰撞计算时,[ConcavePolygonShape2D] 旨在与 [StaticBody2D] " +"等静态 [CollisionShape2D] 节点一起使用,并且对于 [CharacterBody2D] 或 " +"[RigidBody2D],在除静态模式之外的其他模式下可能表现不佳。\n" +"[b]警告:[/b]较小的物理物体在快速移动时有机会穿过该形状。发生这种情况是因为在" +"一帧上,物理物体可能位于形状的“外部”,而在下一帧上,它可能位于形状的“内部”。由" +"于[ConcavePolygonShape2D] 是中空的,因此它不会检测到碰撞。\n" +"[b]性能:[/b]由于其复杂性, [ConcavePolygonShape2D] 是检测碰撞最慢的 2D 碰撞形" +"状。它的使用一般仅限于关卡几何体。如果折线是闭合的,可以使用 " +"[CollisionPolygon2D] 的 [constant CollisionPolygon2D.BUILD_SOLIDS] 模式,它会" +"将多边形分解成凸多边形;相关说明请参阅 [ConvexPolygonShape2D] 文档。" + msgid "" "The array of points that make up the [ConcavePolygonShape2D]'s line segments. " "The array (of length divisible by two) is naturally divided into pairs (one " @@ -24644,6 +25926,49 @@ msgstr "" msgid "A 3D trimesh shape used for physics collision." msgstr "用于物理碰撞的 3D 三角网格形状。" +msgid "" +"A 3D trimesh shape, intended for use in physics. Usually used to provide a " +"shape for a [CollisionShape3D].\n" +"Being just a collection of interconnected triangles, [ConcavePolygonShape3D] " +"is the most freely configurable single 3D shape. It can be used to form " +"polyhedra of any nature, or even shapes that don't enclose a volume. However, " +"[ConcavePolygonShape3D] is [i]hollow[/i] even if the interconnected triangles " +"do enclose a volume, which often makes it unsuitable for physics or " +"detection.\n" +"[b]Note:[/b] When used for collision, [ConcavePolygonShape3D] is intended to " +"work with static [CollisionShape3D] nodes like [StaticBody3D] and will likely " +"not behave well for [CharacterBody3D]s or [RigidBody3D]s in a mode other than " +"Static.\n" +"[b]Warning:[/b] Physics bodies that are small have a chance to clip through " +"this shape when moving fast. This happens because on one frame, the physics " +"body may be on the \"outside\" of the shape, and on the next frame it may be " +"\"inside\" it. [ConcavePolygonShape3D] is hollow, so it won't detect a " +"collision.\n" +"[b]Performance:[/b] Due to its complexity, [ConcavePolygonShape3D] is the " +"slowest 3D collision shape to check collisions against. Its use should " +"generally be limited to level geometry. For convex geometry, " +"[ConvexPolygonShape3D] should be used. 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." +msgstr "" +"一种用于物理模拟的 3D 三角网格形状。通常用于为 [CollisionShape3D] 提供形状。\n" +"作为一组相互连接的三角形, [ConcavePolygonShape3D] 是最自由的可配置的单一 3D " +"形状。它可以用于形成任何性质的多面体,甚至是不封闭体积的形状。然而,即使相互连" +"接的三角形封闭了一个体积, [ConvexPolygonShape3D] 仍然是[i]中空[/i]的,这常常" +"使其不适用于物理模拟或碰撞检测。\n" +"[b]注意:[/b]当用于碰撞计算时, [ConcavePolygonShape3D] 旨在与 [StaticBody3D] " +"等静态 [CollisionShape3D] 节点一起使用 。并且对于 [CharacterBody3D] 或 " +"[RigidBody3D],在除静态模式之外的其他模式下可能表现不佳。\n" +"[b]警告:[/b]较小的物理物体在快速移动时有机会穿过该形状。发生这种情况是因为在" +"一帧上,物理物体可能位于形状的“外部”,而在下一帧上,它可能位于形状的“内部”。由" +"于[ConcavePolygonShape3D] 是中空的,因此它不会检测到碰撞。\n" +"[b]性能:[/b]由于其复杂性, [ConcavePolygonShape3D] 是检测碰撞最慢的 3D 碰撞形" +"状。它的使用一般仅限于关卡几何体。对于凸几何体,应使用 " +"[ConvexPolygonShape3D] 。对于需要凹碰撞的动态物体,可以使用多个 " +"[ConvexPolygonShape3D] 通过凸分解来表示其碰撞;相关说明请参阅 " +"[ConvexPolygonShape3D] 文档。" + msgid "" "Returns the faces of the trimesh shape as an array of vertices. The array (of " "length divisible by three) is naturally divided into triples; each triple of " @@ -24977,6 +26302,80 @@ msgstr "如果指定的小节存在,则返回 [code]true[/code]。" msgid "Returns [code]true[/code] if the specified section-key pair exists." msgstr "如果指定的小节-键对存在,则返回 [code]true[/code]。" +msgid "" +"Loads the config file specified as a parameter. The file's contents are " +"parsed and loaded in the [ConfigFile] object which the method was called on.\n" +"Returns [constant OK] on success, or one of the other [enum Error] values if " +"the operation failed." +msgstr "" +"加载指定为参数的配置文件。解析文件的内容并将其加载到调用该方法的 [ConfigFile] " +"对象中。\n" +"成功时返回 [constant OK];如果操作失败,则返回其他 [enum Error] 值。" + +msgid "" +"Loads the encrypted config file specified as a parameter, using the provided " +"[param key] to decrypt it. The file's contents are parsed and loaded in the " +"[ConfigFile] object which the method was called on.\n" +"Returns [constant OK] on success, or one of the other [enum Error] values if " +"the operation failed." +msgstr "" +"加载指定为参数的加密配置文件,使用提供的 [param key] 对其解密。解析文件的内容" +"并将其加载到调用该方法的 [ConfigFile] 对象中。\n" +"成功时返回 [constant OK];如果操作失败,则返回其他 [enum Error] 值。" + +msgid "" +"Loads the encrypted config file specified as a parameter, using the provided " +"[param password] to decrypt it. The file's contents are parsed and loaded in " +"the [ConfigFile] object which the method was called on.\n" +"Returns [constant OK] on success, or one of the other [enum Error] values if " +"the operation failed." +msgstr "" +"加载作为参数的加密配置文件,使用提供的 [param password] 解密。该文件的内容被解" +"析并加载到调用该方法的 [ConfigFile] 对象中。\n" +"成功时返回 [constant OK];如果操作失败,则返回其他 [enum Error] 值。" + +msgid "" +"Parses the passed string as the contents of a config file. The string is " +"parsed and loaded in the ConfigFile object which the method was called on.\n" +"Returns [constant OK] on success, or one of the other [enum Error] values if " +"the operation failed." +msgstr "" +"将传递的字符串解析为配置文件的内容。该字符串被解析并加载到调用该方法的 " +"ConfigFile 对象中。\n" +"成功时返回 [constant OK];如果操作失败,则返回其他 [enum Error] 值。" + +msgid "" +"Saves the contents of the [ConfigFile] object to the file specified as a " +"parameter. The output file uses an INI-style structure.\n" +"Returns [constant OK] on success, or one of the other [enum Error] values if " +"the operation failed." +msgstr "" +"将 [ConfigFile] 对象的内容保存到指定为参数的文件中。输出文件使用 INI 样式的结" +"构。\n" +"成功时返回 [constant OK];如果操作失败,则返回其他 [enum Error] 值。" + +msgid "" +"Saves the contents of the [ConfigFile] object to the AES-256 encrypted file " +"specified as a parameter, using the provided [param key] to encrypt it. The " +"output file uses an INI-style structure.\n" +"Returns [constant OK] on success, or one of the other [enum Error] values if " +"the operation failed." +msgstr "" +"使用提供的 [param key] 将 [ConfigFile] 对象的内容保存到作为参数指定的 AES-256 " +"加密文件中。输出文件使用 INI 样式的结构。\n" +"成功时返回 [constant OK];如果操作失败,则返回其他 [enum Error] 值。" + +msgid "" +"Saves the contents of the [ConfigFile] object to the AES-256 encrypted file " +"specified as a parameter, using the provided [param password] to encrypt it. " +"The output file uses an INI-style structure.\n" +"Returns [constant OK] on success, or one of the other [enum Error] values if " +"the operation failed." +msgstr "" +"将 [ConfigFile] 对象的内容保存到作为参数指定的 AES-256 加密文件中,使用提供的 " +"[param password] 进行加密。输出文件使用 INI 风格的结构。\n" +"成功时返回 [constant OK];如果操作失败,则返回其他 [enum Error] 值。" + msgid "" "Assigns a value to the specified key of the specified section. If either the " "section or the key do not exist, they are created. Passing a [code]null[/" @@ -25768,6 +27167,16 @@ msgid "" "Finds the previous (above in the tree) [Control] that can receive the focus." msgstr "找到上一个可以接受焦点的 [Control],在树的上方。" +msgid "" +"Finds the next [Control] that can receive the focus on the specified [enum " +"Side].\n" +"[b]Note:[/b] This is different from [method get_focus_neighbor], which " +"returns the path of a specified focus neighbor." +msgstr "" +"查找指定 [enum Side] 上可以接收焦点的下一个 [Control]。\n" +"[b]注意:[/b]这与 [method get_focus_neighbor] 不同,后者返回指定焦点邻居的路" +"径。" + msgid "" "Forces drag and bypasses [method _get_drag_data] and [method " "set_drag_preview] by passing [param data] and [param preview]. Drag will " @@ -25810,6 +27219,19 @@ msgstr "返回控件在鼠标悬停时显示的鼠标指针形状。见 [enum Cu msgid "Returns [member offset_right] and [member offset_bottom]." msgstr "返回 [member offset_right] 和 [member offset_bottom]。" +msgid "" +"Returns the focus neighbor for the specified [enum Side]. A getter method for " +"[member focus_neighbor_bottom], [member focus_neighbor_left], [member " +"focus_neighbor_right] and [member focus_neighbor_top].\n" +"[b]Note:[/b] To find the next [Control] on the specific [enum Side], even if " +"a neighbor is not assigned, use [method find_valid_focus_neighbor]." +msgstr "" +"返回指定 [enum Side] 的焦点邻居。用于 [member focus_neighbor_bottom]、[member " +"focus_neighbor_left]、[member focus_neighbor_right]、和 [member " +"focus_neighbor_top] 的取值方法。\n" +"[b]注意:[/b]要查找特定 [enum Side] 上的下一个 [Control],即使未指定邻居,也请" +"使用 [method find_valid_focus_neighbor]。" + msgid "" "Returns the position and size of the control relative to the containing " "canvas. See [member global_position] and [member size].\n" @@ -26873,6 +28295,35 @@ msgstr "" "[Theme] 资源,则会合并主题项,子节点的定义优先级更高。\n" "[b]注意:[/b]除非 [Window] 为嵌入式,否则窗口样式无效。" +msgid "" +"The name of a theme type variation used by this [Control] to look up its own " +"theme items. When empty, the class name of the node is used (e.g. [code skip-" +"lint]Button[/code] for the [Button] control), as well as the class names of " +"all parent classes (in order of inheritance).\n" +"When set, this property gives the highest priority to the type of the " +"specified name. This type can in turn extend another type, forming a " +"dependency chain. See [method Theme.set_type_variation]. If the theme item " +"cannot be found using this type or its base types, lookup falls back on the " +"class names.\n" +"[b]Note:[/b] To look up [Control]'s own items use various [code]get_theme_*[/" +"code] methods without specifying [code]theme_type[/code].\n" +"[b]Note:[/b] Theme items are looked for in the tree order, from branch to " +"root, where each [Control] node is checked for its [member theme] property. " +"The earliest match against any type/class name is returned. The project-level " +"Theme and the default Theme are checked last." +msgstr "" +"该 [Control] 用于查找其自有的主题项的主题类型变体的名称。当为空时,将使用节点" +"的类名(例如 [code skip-lint]Button[/code] 用于 [Button] 控件),以及所有父类" +"的类名(按继承顺序)。\n" +"设置后,该属性将最高优先级赋予指定名称的类型。这种类型又可以扩展另一种类型,形" +"成依赖链。参见 [method Theme.set_type_variation]。如果使用该类型或其基类型无法" +"找到主题项,则查找会回退到依赖类名查找。\n" +"[b]注意:[/b]要查找 [Control] 自有的项目,请使用各种 [code]get_theme_*[/code] " +"方法且无需指定 [code]theme_type[/code]。\n" +"[b]注意:[/b]主题项按树状顺序查找,从分支到根,其中每个 [Control] 节点的 " +"[member theme] 属性都将被检查。最早匹配任意类型名称/类名称的项将被返回。最后检" +"查项目级的主题和默认主题。" + msgid "" "The default tooltip text. The tooltip appears when the user's mouse cursor " "stays idle over this control for a few moments, provided that the [member " @@ -26945,6 +28396,46 @@ msgstr "当节点收到 [InputEvent] 时发出。" msgid "Emitted when the node's minimum size changes." msgstr "当节点的最小大小更改时发出。" +msgid "" +"Emitted when the mouse cursor enters the control's (or any child control's) " +"visible area, that is not occluded behind other Controls or Windows, provided " +"its [member mouse_filter] lets the event reach it and regardless if it's " +"currently focused or not.\n" +"[b]Note:[/b] [member CanvasItem.z_index] doesn't affect, which Control " +"receives the signal." +msgstr "" +"当鼠标光标进入控件(或任何子控件)的可见区域时发出,可见区域即未被其他 " +"Control 和 Window 遮挡的区域,需要 [member mouse_filter] 允许事件达到,与控件" +"是否持有焦点无关。\n" +"[b]注意:[/b][member CanvasItem.z_index] 不影响哪个 Control 会收到信号。" + +msgid "" +"Emitted when the mouse cursor leaves the control's (and all child control's) " +"visible area, that is not occluded behind other Controls or Windows, provided " +"its [member mouse_filter] lets the event reach it and regardless if it's " +"currently focused or not.\n" +"[b]Note:[/b] [member CanvasItem.z_index] doesn't affect, which Control " +"receives the signal.\n" +"[b]Note:[/b] If you want to check whether the mouse truly left the area, " +"ignoring any top nodes, you can use code like this:\n" +"[codeblock]\n" +"func _on_mouse_exited():\n" +" if not Rect2(Vector2(), size).has_point(get_local_mouse_position()):\n" +" # Not hovering over area.\n" +"[/codeblock]" +msgstr "" +"当鼠标光标离开控件(或任何子控件)的可见区域时发出,可见区域即未被其他 " +"Control 和 Window 遮挡的区域,需要 [member mouse_filter] 允许事件达到,与控件" +"是否持有焦点无关。\n" +"[b]注意:[/b][member CanvasItem.z_index] 不影响哪个 Control 会收到信号。\n" +"[b]注意:[/b]如果要忽略任何顶部节点,检查鼠标是否真的离开了该区域,可以使用如" +"下代码:\n" +"[codeblock]\n" +"func _on_mouse_exited():\n" +" if not Rect2(Vector2(), size).has_point(get_local_mouse_position()):\n" +" # 未悬停在区域上。\n" +"[/codeblock]" + msgid "Emitted when the control changes size." msgstr "当控件更改大小时发出。" @@ -26977,6 +28468,62 @@ msgstr "" msgid "Sent when the node changes size. Use [member size] to get the new size." msgstr "当节点改变大小时发送。请使用 [member size] 获取新大小。" +msgid "" +"Sent when the mouse cursor enters the control's (or any child control's) " +"visible area, that is not occluded behind other Controls or Windows, provided " +"its [member mouse_filter] lets the event reach it and regardless if it's " +"currently focused or not.\n" +"[b]Note:[/b] [member CanvasItem.z_index] doesn't affect which Control " +"receives the notification.\n" +"See also [constant NOTIFICATION_MOUSE_ENTER_SELF]." +msgstr "" +"当鼠标光标进入控件(或任何子控件)的可见区域时发送,可见区域即未被其他 " +"Control 和 Window 遮挡的区域,需要 [member mouse_filter] 允许事件达到,与控件" +"是否持有焦点无关。\n" +"[b]注意:[/b][member CanvasItem.z_index] 不影响哪个 Control 会收到该通知。\n" +"另见 [constant NOTIFICATION_MOUSE_ENTER_SELF]。" + +msgid "" +"Sent when the mouse cursor leaves the control's (and all child control's) " +"visible area, that is not occluded behind other Controls or Windows, provided " +"its [member mouse_filter] lets the event reach it and regardless if it's " +"currently focused or not.\n" +"[b]Note:[/b] [member CanvasItem.z_index] doesn't affect which Control " +"receives the notification.\n" +"See also [constant NOTIFICATION_MOUSE_EXIT_SELF]." +msgstr "" +"当鼠标光标离开控件(以及所有子控件)的可见区域时发送,可见区域即未被其他 " +"Control 和 Window 遮挡的区域,需要 [member mouse_filter] 允许事件达到,与控件" +"是否持有焦点无关。\n" +"[b]注意:[/b][member CanvasItem.z_index] 不影响哪个 Control 会收到该通知。\n" +"另见 [constant NOTIFICATION_MOUSE_EXIT_SELF]。" + +msgid "" +"Sent when the mouse cursor enters the control's visible area, that is not " +"occluded behind other Controls or Windows, provided its [member mouse_filter] " +"lets the event reach it and regardless if it's currently focused or not.\n" +"[b]Note:[/b] [member CanvasItem.z_index] doesn't affect which Control " +"receives the notification.\n" +"See also [constant NOTIFICATION_MOUSE_ENTER]." +msgstr "" +"当鼠标光标进入控件的可见区域时发送,可见区域即未被其他 Control 和 Window 遮挡" +"的区域,需要 [member mouse_filter] 允许事件达到,与控件是否持有焦点无关。\n" +"[b]注意:[/b][member CanvasItem.z_index] 不影响哪个 Control 会收到该通知。\n" +"另见 [constant NOTIFICATION_MOUSE_ENTER]。" + +msgid "" +"Sent when the mouse cursor leaves the control's visible area, that is not " +"occluded behind other Controls or Windows, provided its [member mouse_filter] " +"lets the event reach it and regardless if it's currently focused or not.\n" +"[b]Note:[/b] [member CanvasItem.z_index] doesn't affect which Control " +"receives the notification.\n" +"See also [constant NOTIFICATION_MOUSE_EXIT]." +msgstr "" +"当鼠标光标离开控件的可见区域时发送,可见区域即未被其他 Control 和 Window 遮挡" +"的区域,需要 [member mouse_filter] 允许事件达到,与控件是否持有焦点无关。\n" +"[b]注意:[/b][member CanvasItem.z_index] 不影响哪个 Control 会收到该通知。\n" +"另见 [constant NOTIFICATION_MOUSE_EXIT]。" + msgid "Sent when the node grabs focus." msgstr "当节点获得焦点时发送。" @@ -27003,6 +28550,36 @@ msgstr "" "[b]注意:[/b]作为一种优化,当该节点在场景树之外时,发生的更改不会发送该通知。" "相反,所有的主题项更新可以在该节点进入场景树时一次性应用。" +msgid "" +"Sent when this node is inside a [ScrollContainer] which has begun being " +"scrolled when dragging the scrollable area [i]with a touch event[/i]. This " +"notification is [i]not[/i] sent when scrolling by dragging the scrollbar, " +"scrolling with the mouse wheel or scrolling with keyboard/gamepad events.\n" +"[b]Note:[/b] This signal is only emitted on Android or iOS, or on desktop/web " +"platforms when [member ProjectSettings.input_devices/pointing/" +"emulate_touch_from_mouse] is enabled." +msgstr "" +"当该节点位于 [ScrollContainer] 内部时发送,该容器在通过[i]触摸事件[/i]拖动该可" +"滚动区域时已开始滚动。通过拖动滚动条滚动、使用鼠标滚轮滚动、或使用键盘/游戏手" +"柄事件滚动时,[i]不[/i]会发送该通知。\n" +"[b]注意:[/b]该信号仅在在 Android 或 iOS 上、或当启用 [member ProjectSettings." +"input_devices/pointing/emulate_touch_from_mouse] 时的桌面/Web 平台上发出。" + +msgid "" +"Sent when this node is inside a [ScrollContainer] which has stopped being " +"scrolled when dragging the scrollable area [i]with a touch event[/i]. This " +"notification is [i]not[/i] sent when scrolling by dragging the scrollbar, " +"scrolling with the mouse wheel or scrolling with keyboard/gamepad events.\n" +"[b]Note:[/b] This signal is only emitted on Android or iOS, or on desktop/web " +"platforms when [member ProjectSettings.input_devices/pointing/" +"emulate_touch_from_mouse] is enabled." +msgstr "" +"当该节点位于 [ScrollContainer] 内部时发送,该容器在通过[i]触摸事件[/i]拖动该可" +"滚动区域时已停止滚动。通过拖动滚动条滚动、使用鼠标滚轮滚动、或使用键盘/游戏手" +"柄事件滚动时,[i]不[/i]会发送该通知。\n" +"[b]注意:[/b]该信号仅在在 Android 或 iOS 上、或当启用 [member ProjectSettings." +"input_devices/pointing/emulate_touch_from_mouse] 时的桌面/Web 平台上发出。" + msgid "Sent when control layout direction is changed." msgstr "当控件的布局方向改变时发送。" @@ -27319,6 +28896,52 @@ msgstr "" "SIZE_EXPAND] 一起使用。与 [member size_flags_horizontal] 和 [member " "size_flags_vertical] 一起使用。" +msgid "" +"The control will receive mouse movement input events and mouse button input " +"events if clicked on through [method _gui_input]. And the control will " +"receive the [signal mouse_entered] and [signal mouse_exited] signals. These " +"events are automatically marked as handled, and they will not propagate " +"further to other controls. This also results in blocking signals in other " +"controls." +msgstr "" +"在控件上点击时,将通过 [method _gui_input] 收到鼠标移动输入事件和鼠标按钮输入" +"事件。控件能够接收到 [signal mouse_entered] 和 [signal mouse_exited] 信号。这" +"些事件将自动被标记为已处理,不会进一步传播到其他控件。这也会导致其他控件中的信" +"号被阻止。" + +msgid "" +"The control will receive mouse movement input events and mouse button input " +"events if clicked on through [method _gui_input]. And the control will " +"receive the [signal mouse_entered] and [signal mouse_exited] signals. If this " +"control does not handle the event, the parent control (if any) will be " +"considered, and so on until there is no more parent control to potentially " +"handle it. This also allows signals to fire in other controls. If no control " +"handled it, the event will be passed to [method Node._shortcut_input] for " +"further processing." +msgstr "" +"在控件上点击时,将通过 [method _gui_input] 收到鼠标移动输入事件和鼠标按钮输入" +"事件。并且控件能够接收到 [signal mouse_entered] 和 [signal mouse_exited] 信" +"号。如果此控件不处理事件,则将考虑其父控件(如果有的话),依此类推,直到没有更" +"多的父控件可以处理该事件。这也允许信号在其他控件中触发。如果没有控件处理它,该" +"事件将被传递到 [method Node._shortcut_input] 进行进一步处理。" + +msgid "" +"The control will not receive mouse movement input events and mouse button " +"input events if clicked on through [method _gui_input]. The control will also " +"not receive the [signal mouse_entered] nor [signal mouse_exited] signals. " +"This will not block other controls from receiving these events or firing the " +"signals. Ignored events will not be handled automatically.\n" +"[b]Note:[/b] If the control has received [signal mouse_entered] but not " +"[signal mouse_exited], changing the [member mouse_filter] to [constant " +"MOUSE_FILTER_IGNORE] will cause [signal mouse_exited] to be emitted." +msgstr "" +"在控件上点击时,不会通过 [method _gui_input] 收到鼠标移动输入事件和鼠标按钮输" +"入事件,也不会接收到 [signal mouse_entered] 和 [signal mouse_exited] 信号。这" +"不会阻止其他控件接收这些事件或触发信号。被忽略的事件将不会被自动处理。\n" +"[b]注意:[/b]如果控件已收到 [signal mouse_entered] 但未收到 [signal " +"mouse_exited],则将 [member mouse_filter] 更改为 [constant " +"MOUSE_FILTER_IGNORE] 将导致发出 [signal mouse_exited]。" + msgid "" "The control will grow to the left or top to make up if its minimum size is " "changed to be greater than its current size on the respective axis." @@ -27391,6 +29014,40 @@ msgstr "从右至左的文本书写方向。" msgid "A 2D convex polygon shape used for physics collision." msgstr "用于物理碰撞的 2D 凸多边形形状。" +msgid "" +"A 2D convex polygon shape, intended for use in physics. Used internally in " +"[CollisionPolygon2D] when it's in [constant CollisionPolygon2D.BUILD_SOLIDS] " +"mode.\n" +"[ConvexPolygonShape2D] is [i]solid[/i], which means it detects collisions " +"from objects that are fully inside it, unlike [ConcavePolygonShape2D] which " +"is hollow. This makes it more suitable for both detection and physics.\n" +"[b]Convex decomposition:[/b] A concave polygon can be split up into several " +"convex polygons. This allows dynamic physics bodies to have complex concave " +"collisions (at a performance cost) and can be achieved by using several " +"[ConvexPolygonShape2D] nodes or by using the [CollisionPolygon2D] node in " +"[constant CollisionPolygon2D.BUILD_SOLIDS] mode. To generate a collision " +"polygon from a sprite, select the [Sprite2D] node, go to the [b]Sprite2D[/b] " +"menu that appears above the viewport, and choose [b]Create Polygon2D Sibling[/" +"b].\n" +"[b]Performance:[/b] [ConvexPolygonShape2D] is faster to check collisions " +"against compared to [ConcavePolygonShape2D], but it is slower than primitive " +"collision shapes such as [CircleShape2D] and [RectangleShape2D]. Its use " +"should generally be limited to medium-sized objects that cannot have their " +"collision accurately represented by primitive shapes." +msgstr "" +"2D 凸多边形形状,旨在用于物理。[CollisionPolygon2D] 为 [constant " +"CollisionPolygon2D.BUILD_SOLIDS] 模式时内部会使用这个类。\n" +"[ConvexPolygonShape2D] 是[i]实心[/i]的,与空心的 [ConcavePolygonShape2D] 不" +"同,如果对象完全位于其内部,也能够检测到碰撞。因此更适于检测和物理。\n" +"[b]凸分解:[/b]凹多边形可以拆分为多个凸多边形。这样就能够让动态物理体拥有复杂" +"的凹碰撞(以消耗性能为代价),做法是使用多个 [ConvexPolygonShape3D] 节点,或者" +"使用 [constant CollisionPolygon2D.BUILD_SOLIDS] 模式的 [CollisionPolygon2D] 节" +"点。要根据精灵生成碰撞多边形,请选中 [Sprite2D] 节点,前往出现在视口上方的 " +"[b]Sprite2D[/b] 菜单,然后选择[b]创建 Polygon2D 同级[/b]。\n" +"[b]性能:[/b][ConvexPolygonShape2D] 检查碰撞的速度比 [ConcavePolygonShape2D] " +"要快,但比 [CircleShape2D]、[RectangleShape2D] 等基本碰撞形状要慢。通常应该仅" +"限于中等大小的对象,在无法使用基本形状精确表示碰撞时使用。" + msgid "" "Based on the set of points provided, this assigns the [member points] " "property using the convex hull algorithm, removing all unneeded points. See " @@ -27634,6 +29291,20 @@ msgstr "" "[member emission_shape] 被设置为 [constant EMISSION_SHAPE_SPHERE] 时,该球体的" "半径。" +msgid "" +"If [code]true[/code], particles are being emitted. [member emitting] can be " +"used to start and stop particles from emitting. However, if [member one_shot] " +"is [code]true[/code] setting [member emitting] to [code]true[/code] will not " +"restart the emission cycle until after all active particles finish " +"processing. You can use the [signal finished] signal to be notified once all " +"active particles finish processing." +msgstr "" +"如果为 [code]true[/code],则正在发射粒子。[member emitting] 可用于启动和停止粒" +"子发射。但是,如果 [member one_shot] 为 [code]true[/code],则将 [member " +"emitting] 设置为 [code]true[/code] 将不会重新启动该发射循环,直到所有活动粒子" +"完成处理为止。一旦所有活动粒子完成处理,你可以使用 [signal finished] 信号来收" +"取通知。" + msgid "" "How rapidly particles in an emission cycle are emitted. If greater than " "[code]0[/code], there will be a gap in emissions before the next cycle begins." @@ -27809,12 +29480,17 @@ msgstr "[member tangential_accel_max] 的对应最小值。" msgid "Particle texture. If [code]null[/code], particles will be squares." msgstr "粒子纹理。如果为 [code]null[/code],则粒子将为正方形。" +msgid "" +"Emitted when all active particles have finished processing. When [member " +"one_shot] is disabled, particles will process continuously, so this is never " +"emitted." +msgstr "" +"当所有活动粒子完成处理时发出。当 [member one_shot] 被禁用时,粒子将连续处理," +"因此它永远不会触发。" + msgid "Particles are drawn in the order emitted." msgstr "粒子按发射顺序绘制。" -msgid "Particles are drawn in order of remaining lifetime." -msgstr "粒子按剩余寿命的顺序绘制。" - msgid "" "Use with [method set_param_min], [method set_param_max], and [method " "set_param_curve] to set initial velocity properties." @@ -28691,6 +30367,27 @@ msgstr "" msgid "The [Material] used in drawing the CSG shape." msgstr "用于绘制 CSG 形状的 [Material]。" +msgid "" +"The [Mesh] resource to use as a CSG shape.\n" +"[b]Note:[/b] When using an [ArrayMesh], all vertex attributes except " +"[constant Mesh.ARRAY_VERTEX], [constant Mesh.ARRAY_NORMAL] and [constant Mesh." +"ARRAY_TEX_UV] are left unused. Only [constant Mesh.ARRAY_VERTEX] and " +"[constant Mesh.ARRAY_TEX_UV] will be passed to the GPU.\n" +"[constant Mesh.ARRAY_NORMAL] is only used to determine which faces require " +"the use of flat shading. By default, CSGMesh will ignore the mesh's vertex " +"normals, recalculate them for each vertex and use a smooth shader. If a flat " +"shader is required for a face, ensure that all vertex normals of the face are " +"approximately equal." +msgstr "" +"用作 CSG 形状的 [Mesh] 资源。\n" +"[b]注意:[/b]使用 [ArrayMesh] 时,除 [constant Mesh.ARRAY_VERTEX]、[constant " +"Mesh.ARRAY_NORMAL] 和 [constant Mesh.ARRAY_TEX_UV] 之外的所有顶点属性均保持未" +"被使用的状态。只有 [constant Mesh.ARRAY_VERTEX] 和 [constant Mesh." +"ARRAY_TEX_UV] 会被传递到 GPU。\n" +"[constant Mesh.ARRAY_NORMAL] 仅被用于确定哪些面需要使用平直着色。默认情况下," +"CSGMesh 将忽略该网格的顶点法线,为每个顶点重新计算它们并使用一个平滑着色器。如" +"果面需要平直着色器,请确保面的所有顶点法线大致相等。" + msgid "Extrudes a 2D polygon shape to create a 3D mesh." msgstr "拉伸 2D 多边形形状以创建 3D 网格。" @@ -29102,6 +30799,11 @@ msgstr "C# 文档索引" msgid "Returns a new instance of the script." msgstr "返回该脚本的新实例。" +msgid "" +"Six square textures representing the faces of a cube. Commonly used as a " +"skybox." +msgstr "代表立方体面的六个正方形纹理。通常用作天空盒。" + msgid "" "A cubemap is made of 6 textures organized in layers. They are typically used " "for faking reflections in 3D rendering (see [ReflectionProbe]). It can be " @@ -29130,6 +30832,39 @@ msgstr "" msgid "Creates a placeholder version of this resource ([PlaceholderCubemap])." msgstr "创建该资源的占位符版本([PlaceholderCubemap])。" +msgid "An array of [Cubemap]s, stored together and with a single reference." +msgstr "[Cubemap] 数组,存储在一起并使用单个引用。" + +msgid "" +"[CubemapArray]s are made of an array of [Cubemap]s. Like [Cubemap]s, they are " +"made of multiple textures, the amount of which must be divisible by 6 (one " +"for each face of the cube). The primary benefit of [CubemapArray]s is that " +"they can be accessed in shader code using a single texture reference. In " +"other words, you can pass multiple [Cubemap]s into a shader using a single " +"[CubemapArray].\n" +"Moreover, [Cubemap]s are allocated in adjacent cache regions on the GPU. This " +"makes [CubemapArray]s the most efficient way to store multiple [Cubemap]s.\n" +"Internally, Godot uses [CubemapArray]s for many effects, including the [Sky] " +"if you set [member ProjectSettings.rendering/reflections/sky_reflections/" +"texture_array_reflections] to [code]true[/code].\n" +"To create such a texture file yourself, reimport your image files using the " +"import presets of the File System dock.\n" +"[b]Note:[/b] [CubemapArray] is not supported in the OpenGL 3 rendering " +"backend." +msgstr "" +"[CubemapArray] 由一组 [Cubemap] 组成。它们像 [Cubemap] 一样是由多个纹理组成" +"的,其纹理的数量必须能被 6 整除(立方体的每个面都有一个)。[CubemapArray] 的主" +"要好处是可以使用单个纹理引用在着色器代码中访问它们。换句话说,可以使用单个 " +"[CubemapArray] 将多个 [Cubemap] 传入着色器。\n" +"此外,[Cubemap] 被分配在 GPU 上相邻的缓存区块中。这使得 [CubemapArray] 成为存" +"储多个 [Cubemap] 的最有效方式。\n" +"如果将 [member ProjectSettings.rendering/reflections/sky_reflections/" +"texture_array_reflections] 设置为 [code]true[/code],Godot 在内部会将 " +"[CubemapArray] 用于多种效果,包括 [Sky]。\n" +"要想自己创建这样的纹理文件,请使用文件系统停靠面板的导入预设重新导入你的图像文" +"件。\n" +"[b]注意:[/b][CubemapArray] 在 OpenGL 3 渲染后端中不受支持。" + msgid "" "Creates a placeholder version of this resource ([PlaceholderCubemapArray])." msgstr "创建该资源的占位符版本([PlaceholderCubemapArray])。" @@ -29137,6 +30872,19 @@ msgstr "创建该资源的占位符版本([PlaceholderCubemapArray])。" msgid "A mathematical curve." msgstr "数学曲线。" +msgid "" +"This resource describes a mathematical curve by defining a set of points and " +"tangents at each point. By default, it ranges between [code]0[/code] and " +"[code]1[/code] on the Y axis and positions points relative to the [code]0.5[/" +"code] Y position.\n" +"See also [Gradient] which is designed for color interpolation. See also " +"[Curve2D] and [Curve3D]." +msgstr "" +"该资源通过定义一组点和每个点的切线来描述数学曲线。默认情况下,它在 Y 轴上的范" +"围在 [code]0[/code] 到 [code]1[/code] 之间,并且位置点相对于 [code]0.5[/code] " +"Y 位置。\n" +"另请参阅为颜色插值设计的 [Gradient]。另请参阅 [Curve2D] 和 [Curve3D]。" + msgid "" "Adds a point to the curve. For each side, if the [code]*_mode[/code] is " "[constant TANGENT_LINEAR], the [code]*_tangent[/code] angle (in degrees) uses " @@ -29568,6 +31316,49 @@ msgstr "" "略。如果曲线没有点,则该函数将向控制台发送一个错误,并返回 [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. 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 " +"单位测量距离。为此,它会找到 [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. 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 单位测量距离。为此,它会找到 [param offset] 位于其间的两个缓存向上向量,然" +"后对值进行插值。如果 [param apply_tilt] 为 [code]true[/code],则对插值后的向上" +"向量应用插值后的倾斜。\n" +"如果曲线没有向上向量,则该函数将向控制台发送一个错误,并返回 [code](0, 1, 0)[/" +"code]。" + +msgid "" +"Returns a [Transform3D] with [code]origin[/code] as point position, " +"[code]basis.x[/code] as sideway vector, [code]basis.y[/code] as up vector, " +"[code]basis.z[/code] as forward vector. When the curve length is 0, there is " +"no reasonable way to calculate the rotation, all vectors aligned with global " +"space axes. See also [method sample_baked]." +msgstr "" +"返回一个 [Transform3D],其中 [code]origin[/code] 作为点位置,[code]basis.x[/" +"code] 作为横向向量,[code]basis.y[/code] 作为向上向量,[code]basis.z[/code] 作" +"为前向向量。当曲线长度为 0 时,将没有合理的方法来计算旋转,所有向量都会与全局" +"空间轴对齐。另请参见 [method sample_baked]。" + msgid "" "Sets 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.\n" @@ -29601,6 +31392,22 @@ msgstr "" "rotation_mode] 被设置为 [constant PathFollow3D.ROTATION_ORIENTED] 时使用。更改" "它会强制缓存被重新计算。" +msgid "A 1D texture where pixel brightness corresponds to points on a curve." +msgstr "一维纹理,其中像素亮度对应于曲线上的点。" + +msgid "" +"A 1D texture where pixel brightness corresponds to points on a [Curve] " +"resource, either in grayscale or in red. This visual representation " +"simplifies the task of saving curves as image files.\n" +"If you need to store up to 3 curves within a single texture, use " +"[CurveXYZTexture] instead. See also [GradientTexture1D] and " +"[GradientTexture2D]." +msgstr "" +"1D 纹理,其中像素亮度对应于 [Curve] 资源上的点(以灰度或红色来表示)。这种视觉" +"表示简化了将曲线保存为图像文件的任务。\n" +"如果需要在单个纹理中,存储最多 3 条曲线,请改用 [CurveXYZTexture]。另见 " +"[GradientTexture1D] 和 [GradientTexture2D]。" + msgid "The [Curve] that is rendered onto the texture." msgstr "渲染到纹理上的 [Curve]。" @@ -29638,6 +31445,18 @@ msgid "" "points on 3 curves." msgstr "一维纹理,其中红色、绿色和蓝色通道分别对应 3 条曲线上的点。" +msgid "" +"A 1D texture where the red, green, and blue color channels correspond to " +"points on 3 [Curve] resources. Compared to using separate [CurveTexture]s, " +"this further simplifies the task of saving curves as image files.\n" +"If you only need to store one curve within a single texture, use " +"[CurveTexture] instead. See also [GradientTexture1D] and [GradientTexture2D]." +msgstr "" +"1D 纹理,其中红色、绿色和蓝色通道对应于 3 条 [Curve] 资源上的点。与使用单独的 " +"[CurveTexture] 相比,这进一步简化了将曲线保存为图像文件的任务。\n" +"如果只需要在单个纹理中存储一条曲线,请改用 [CurveTexture]。另见 " +"[GradientTexture1D] 和 [GradientTexture2D]。" + msgid "The [Curve] that is rendered onto the texture's red channel." msgstr "渲染到该纹理红色通道上的 [Curve]。" @@ -29725,6 +31544,20 @@ msgstr "" msgid "A 3D cylinder shape used for physics collision." msgstr "用于物理碰撞的 3D 圆柱体形状。" +msgid "" +"A 3D cylinder shape, intended for use in physics. Usually used to provide a " +"shape for a [CollisionShape3D].\n" +"[b]Note:[/b] There are several known bugs with cylinder collision shapes. " +"Using [CapsuleShape3D] or [BoxShape3D] instead is recommended.\n" +"[b]Performance:[/b] [CylinderShape3D] is fast to check collisions against, " +"but it is slower than [CapsuleShape3D], [BoxShape3D], and [SphereShape3D]." +msgstr "" +"3D 圆柱体形状,旨在用于物理学。通常用于为 [CollisionShape3D] 提供形状。\n" +"[b]注意:[/b]圆柱体碰撞形状有若干已知的问题。建议改用 [CapsuleShape3D] 或 " +"[BoxShape3D]。\n" +"[b]性能:[/b][CylinderShape3D] 可以快速检查碰撞,但比 [CapsuleShape3D]、" +"[BoxShape3D] 和 [SphereShape3D] 慢。" + msgid "The cylinder's height." msgstr "圆柱体的高度。" @@ -29742,6 +31575,16 @@ msgstr "" "通过类似弹簧的力连接两个 2D 物理物体的物理关节。这就像一个总是想拉伸到给定长度" "的弹簧。" +msgid "" +"The spring joint's damping ratio. A value between [code]0[/code] and [code]1[/" +"code]. When the two bodies move into different directions the system tries to " +"align them to the spring axis again. A high [member damping] value forces the " +"attached bodies to align faster." +msgstr "" +"弹簧关节的阻尼比。值在 [code]0[/code] 和 [code]1[/code] 之间。当两个实体移动到" +"不同的方向时,系统会尝试将它们再次对准弹簧轴。高的 [member damping] 值迫使连接" +"的实体更快地对齐。" + msgid "" "The spring joint's maximum length. The two attached bodies cannot stretch it " "past this value." @@ -30545,6 +32388,49 @@ msgstr "" "data.has_all([\"height\", \"width\"]) # 返回 true\n" "[/codeblock]" +msgid "" +"Returns a hashed 32-bit integer value representing the dictionary contents.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var dict1 = {\"A\": 10, \"B\": 2}\n" +"var dict2 = {\"A\": 10, \"B\": 2}\n" +"\n" +"print(dict1.hash() == dict2.hash()) # Prints true\n" +"[/gdscript]\n" +"[csharp]\n" +"var dict1 = new Godot.Collections.Dictionary{{\"A\", 10}, {\"B\", 2}};\n" +"var dict2 = new Godot.Collections.Dictionary{{\"A\", 10}, {\"B\", 2}};\n" +"\n" +"// Godot.Collections.Dictionary has no Hash() method. Use GD.Hash() instead.\n" +"GD.Print(GD.Hash(dict1) == GD.Hash(dict2)); // Prints true\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Note:[/b] Dictionaries with the same entries but in a different order will " +"not have the same hash.\n" +"[b]Note:[/b] Dictionaries with equal hash values are [i]not[/i] guaranteed to " +"be the same, because of hash collisions. On the contrary, dictionaries with " +"different hash values are guaranteed to be different." +msgstr "" +"返回代表该字典内容的 32 位整数哈希值。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var dict1 = {\"A\": 10, \"B\": 2}\n" +"var dict2 = {\"A\": 10, \"B\": 2}\n" +"\n" +"print(dict1.hash() == dict2.hash()) # 输出 true\n" +"[/gdscript]\n" +"[csharp]\n" +"var dict1 = new Godot.Collections.Dictionary{{\"A\", 10}, {\"B\", 2}};\n" +"var dict2 = new Godot.Collections.Dictionary{{\"A\", 10}, {\"B\", 2}};\n" +"\n" +"// Godot.Collections.Dictionary 没有 Hash() 方法。请改用 GD.Hash()。\n" +"GD.Print(GD.Hash(dict1) == GD.Hash(dict2)); // 输出 true\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]注意:[/b]如果两个字典条目相同,但顺序不同,则哈希值也不同。\n" +"[b]注意:[/b]哈希值相同的字典[i]不保证[/i]相同,因为可能存在哈希碰撞。相对地," +"哈希值不同的字典保证不同。" + msgid "" "Returns [code]true[/code] if the dictionary is empty (its size is [code]0[/" "code]). See also [method size]." @@ -30570,6 +32456,97 @@ msgid "" msgstr "" "使该字典只读,即禁用字典内容的修改。不适用于嵌套内容,例如内嵌字典的内容。" +msgid "" +"Adds entries from [param dictionary] to this dictionary. By default, " +"duplicate keys are not copied over, unless [param overwrite] is [code]true[/" +"code].\n" +"[codeblocks]\n" +"[gdscript]\n" +"var dict = { \"item\": \"sword\", \"quantity\": 2 }\n" +"var other_dict = { \"quantity\": 15, \"color\": \"silver\" }\n" +"\n" +"# Overwriting of existing keys is disabled by default.\n" +"dict.merge(other_dict)\n" +"print(dict) # { \"item\": \"sword\", \"quantity\": 2, \"color\": " +"\"silver\" }\n" +"\n" +"# With overwriting of existing keys enabled.\n" +"dict.merge(other_dict, true)\n" +"print(dict) # { \"item\": \"sword\", \"quantity\": 15, \"color\": " +"\"silver\" }\n" +"[/gdscript]\n" +"[csharp]\n" +"var dict = new Godot.Collections.Dictionary\n" +"{\n" +" [\"item\"] = \"sword\",\n" +" [\"quantity\"] = 2,\n" +"};\n" +"\n" +"var otherDict = new Godot.Collections.Dictionary\n" +"{\n" +" [\"quantity\"] = 15,\n" +" [\"color\"] = \"silver\",\n" +"};\n" +"\n" +"// Overwriting of existing keys is disabled by default.\n" +"dict.Merge(otherDict);\n" +"GD.Print(dict); // { \"item\": \"sword\", \"quantity\": 2, \"color\": " +"\"silver\" }\n" +"\n" +"// With overwriting of existing keys enabled.\n" +"dict.Merge(otherDict, true);\n" +"GD.Print(dict); // { \"item\": \"sword\", \"quantity\": 15, \"color\": " +"\"silver\" }\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Note:[/b] [method merge] is [i]not[/i] recursive. Nested dictionaries are " +"considered as keys that can be overwritten or not depending on the value of " +"[param overwrite], but they will never be merged together." +msgstr "" +"将 [param dictionary] 中的条目添加到该字典中。默认情况下,不会复制重复的键,除" +"非 [param overwrite] 为 [code]true[/code]。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var dict = { \"item\": \"sword\", \"quantity\": 2 }\n" +"var other_dict = { \"quantity\": 15, \"color\": \"silver\" }\n" +"\n" +"# 默认情况下禁用覆盖已有键。\n" +"dict.merge(other_dict)\n" +"print(dict) # { \"item\": \"sword\", \"quantity\": 2, \"color\": " +"\"silver\" }\n" +"\n" +"# 启用覆盖已有键。\n" +"dict.merge(other_dict, true)\n" +"print(dict) # { \"item\": \"sword\", \"quantity\": 15, \"color\": " +"\"silver\" }\n" +"[/gdscript]\n" +"[csharp]\n" +"var dict = new Godot.Collections.Dictionary\n" +"{\n" +" [\"item\"] = \"sword\",\n" +" [\"quantity\"] = 2,\n" +"};\n" +"\n" +"var otherDict = new Godot.Collections.Dictionary\n" +"{\n" +" [\"quantity\"] = 15,\n" +" [\"color\"] = \"silver\",\n" +"};\n" +"\n" +"// 默认情况下禁用覆盖已有键。\n" +"dict.Merge(otherDict);\n" +"GD.Print(dict); // { \"item\": \"sword\", \"quantity\": 2, \"color\": " +"\"silver\" }\n" +"\n" +"// 启用覆盖已有键。\n" +"dict.Merge(otherDict, true);\n" +"GD.Print(dict); // { \"item\": \"sword\", \"quantity\": 15, \"color\": " +"\"silver\" }\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]注意:[/b][method merge] [i]不[/i]是递归的。嵌套的字典是否可被视为键可以被" +"覆盖,具体取决于 [param overwrite] 的值,但它们永远不会被合并在一起。" + msgid "" "Returns the number of entries in the dictionary. Empty dictionaries ([code]{ }" "[/code]) always return [code]0[/code]. See also [method is_empty]." @@ -30735,6 +32712,25 @@ msgstr "" 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).\n" +"[b]Note:[/b] The new directory must be within the same scope, e.g. when you " +"had opened a directory inside [code]res://[/code], you can't change it to " +"[code]user://[/code] directory. If you need to open a directory in another " +"access scope, use [method open] to create a new instance instead." +msgstr "" +"将当前打开的目录改为作为参数传递的目录。该参数可以是相对于当前目录的(例如 " +"[code]newdir[/code] 或 [code]../newdir[/code]),也可以是绝对路径(例如 " +"[code]/tmp/newdir[/code] 或 [code]res://somedir/newdir[/code])。\n" +"返回 [enum Error] 错误码常量之一(成功时为 [constant OK])。\n" +"[b]注意:[/b]新目录必须在相同范围内,例如当在 [code]res://[/code] 中打开目录" +"时,无法将其更改为 [code]user://[/code] 目录。如果需要在另一个访问范围中打开目" +"录,请使用 [method open] 创建一个新实例。" + 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 " @@ -30894,6 +32890,17 @@ msgstr "" "返回当前目录所在磁盘的可用空间,单位为字节。如果该平台查询可用空间的方法失败," "则返回 [code]0[/code]。" +msgid "" +"Returns [code]true[/code] if the file system or directory use case sensitive " +"file names.\n" +"[b]Note:[/b] This method is implemented on macOS, Linux (for EXT4 and F2FS " +"filesystems only) and Windows. On other platforms, it always returns " +"[code]true[/code]." +msgstr "" +"如果文件系统或目录使用区分大小写的文件名,则返回 [code]true[/code]。\n" +"[b]注意:[/b]该方法在 macOS、Linux(仅对于 EXT4 和 F2FS 文件系统)和 Windows " +"上实现。在其他平台上,它始终返回 [code]true[/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. " @@ -31226,6 +33233,9 @@ msgstr "" msgid "Returns the user's clipboard as a string if possible." msgstr "如果可能,将用户的剪贴板作为字符串返回。" +msgid "Returns the user's clipboard as an image if possible." +msgstr "如果可能,将用户的剪贴板作为图像返回。" + msgid "" "Returns the user's [url=https://unix.stackexchange.com/questions/139191/whats-" "the-difference-between-primary-selection-and-clipboard-buffer]primary[/url] " @@ -31242,6 +33252,15 @@ msgstr "" "序中,通过点击鼠标中键来粘贴该剪贴板数据。\n" "[b]注意:[/b]这个方法只在 Linux(X11)上实现。" +msgid "" +"Returns [code]true[/code] if there is a text content on the user's clipboard." +msgstr "如果用户的剪贴板中有文本内容,则返回 [code]true[/code]。" + +msgid "" +"Returns [code]true[/code] if there is an image content on the user's " +"clipboard." +msgstr "如果用户的剪贴板中有图像内容,则返回 [code]true[/code]。" + msgid "Sets the user's clipboard content to the given string." msgstr "将用户的剪贴板内容设置为给定的字符串。" @@ -31317,6 +33336,34 @@ msgstr "" "定 PID 的焦点窃取保护。\n" "[b]注意:[/b]该方法仅在 Windows 上实现。" +msgid "" +"Displays OS native dialog for selecting files or directories in the file " +"system.\n" +"Callbacks have the following arguments: [code]bool status, PackedStringArray " +"selected_paths, int selected_filter_index[/code].\n" +"[b]Note:[/b] This method is implemented if the display server has the " +"[constant FEATURE_NATIVE_DIALOG] feature.\n" +"[b]Note:[/b] This method is implemented on Linux, Windows and macOS.\n" +"[b]Note:[/b] [param current_directory] might be ignored.\n" +"[b]Note:[/b] On Linux, [param show_hidden] is ignored.\n" +"[b]Note:[/b] On macOS, native file dialogs have no title.\n" +"[b]Note:[/b] On macOS, sandboxed apps will save security-scoped bookmarks to " +"retain access to the opened folders across multiple sessions. Use [method OS." +"get_granted_permissions] to get a list of saved bookmarks." +msgstr "" +"显示操作系统原生对话框,用于选择文件系统中的文件或目录。\n" +"回调具有以下参数:[code]bool status, PackedStringArray selected_paths, int " +"selected_filter_index[/code]。\n" +"[b]注意:[/b]如果显示服务器具有 [constant FEATURE_NATIVE_DIALOG] 功能,则该方" +"法已被实现。\n" +"[b]注意:[/b]该方法在 Linux、Windows 和 macOS 上实现。\n" +"[b]注意:[/b][param current_directory] 可能会被忽略。\n" +"[b]注意:[/b]在 Linux 上,[param show_hidden] 被忽略。\n" +"[b]注意:[/b]在 macOS 上,原生文件对话框没有标题。\n" +"[b]注意:[/b]在 macOS 上,沙盒应用程序将保存安全范围的书签,以保留对多个会话中" +"打开的文件夹的访问权限。使用 [method OS.get_granted_permissions] 获取已保存书" +"签的列表。" + msgid "" "Forces window manager processing while ignoring all [InputEvent]s. See also " "[method process_events].\n" @@ -31388,6 +33435,20 @@ msgstr "返回可用的显示器数量。" msgid "Returns index of the screen which contains specified rectangle." msgstr "返回包含指定矩形的屏幕的索引。" +msgid "" +"Returns [code]true[/code] if positions of [b]OK[/b] and [b]Cancel[/b] buttons " +"are swapped in dialogs. This is enabled by default on Windows to follow " +"interface conventions, and be toggled by changing [member ProjectSettings.gui/" +"common/swap_cancel_ok].\n" +"[b]Note:[/b] This doesn't affect native dialogs such as the ones spawned by " +"[method DisplayServer.dialog_show]." +msgstr "" +"如果对话框中的[b]确定[/b]和[b]取消[/b]按钮进行了交换,则返回 [code]true[/" +"code]。在 Windows 上默认启用,从而遵循界面规范,可以使用 [member " +"ProjectSettings.gui/common/swap_cancel_ok] 开关。\n" +"[b]注意:[/b]由 [method DisplayServer.dialog_show] 等生成的原生对话框不受影" +"响。" + msgid "" "Returns the ID of the window at the specified screen [param position] (in " "pixels). On multi-monitor setups, the screen position is relative to the " @@ -31899,6 +33960,16 @@ msgstr "" "关于如何禁用菜单项的更多信息见 [method global_menu_set_item_disabled]。\n" "[b]注意:[/b]该方法仅在 macOS 上实现。" +msgid "" +"Returns [code]true[/code] if the item at index [param idx] is hidden.\n" +"See [method global_menu_set_item_hidden] for more info on how to hide an " +"item.\n" +"[b]Note:[/b] This method is implemented only on macOS." +msgstr "" +"如果索引为 [param idx] 的菜单项被隐藏,则返回 [code]true[/code]。\n" +"关于如何隐藏菜单项的更多信息见 [method global_menu_set_item_hidden]。\n" +"[b]注意:[/b]该方法仅在 macOS 上实现。" + msgid "" "Returns [code]true[/code] if the item at index [param idx] has radio button-" "style checkability.\n" @@ -31970,6 +34041,28 @@ msgstr "" "启用/禁用索引为 [param idx] 的菜单项。禁用状态下无法被选中,也无法激活动作。\n" "[b]注意:[/b]该方法仅在 macOS 上实现。" +msgid "" +"Hides/shows the item at index [param idx]. When it is hidden, an item does " +"not appear in a menu and its action cannot be invoked.\n" +"[b]Note:[/b] This method is implemented only on macOS." +msgstr "" +"隐藏/显示索引为 [param idx] 的菜单项。当它被隐藏时,项目不会出现在菜单中,并且" +"无法调用其操作。\n" +"[b]注意:[/b]该方法仅在 macOS 上实现。" + +msgid "" +"Sets the callback of the item at index [param idx]. The callback is emitted " +"when an item is hovered.\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 [code]tag[/code] parameter when the menu item was created.\n" +"[b]Note:[/b] This method is implemented only on macOS." +msgstr "" +"设置索引为 [param idx] 的菜单项的回调。回调会在菜单项被悬停时发出。\n" +"[b]注意:[/b][param callback] Callable 需要接受一个 Variant 参数,传入 " +"Callable 的参数是创建菜单项时传给 [code]tag[/code] 参数的值。\n" +"[b]注意:[/b]该方法仅在 macOS 上实现。" + msgid "" "Replaces the [Texture2D] icon of the specified [param idx].\n" "[b]Note:[/b] This method is implemented only on macOS.\n" @@ -32060,6 +34153,11 @@ msgstr "" "设置索引为 [param idx] 的菜单项的工具提示 [String]。\n" "[b]注意:[/b]该方法仅在 macOS 上实现。" +msgid "" +"Registers callables to emit when the menu is respectively about to show or " +"closed." +msgstr "注册当菜单分别即将显示或关闭时发出的可调用对象。" + msgid "" "Returns [code]true[/code] if the specified [param feature] is supported by " "the current [DisplayServer], [code]false[/code] otherwise." @@ -32088,6 +34186,22 @@ msgstr "" "器[/url]窗口中的编组字符串。\n" "[b]注意:[/b]该方法仅在 macOS 上实现。" +msgid "" +"Returns [code]true[/code] if OS is using dark mode.\n" +"[b]Note:[/b] This method is implemented on Android, iOS, macOS, Windows, and " +"Linux (X11)." +msgstr "" +"如果操作系统正在使用暗黑模式,则返回 [code]true[/code]。\n" +"[b]注意:[/b]该方法在 Android、iOS、macOS、Windows 和 Linux(X11)上实现。" + +msgid "" +"Returns [code]true[/code] if OS supports dark mode.\n" +"[b]Note:[/b] This method is implemented on Android, iOS, macOS, Windows, and " +"Linux (X11)." +msgstr "" +"如果操作系统支持暗黑模式,则返回 [code]true[/code]。\n" +"[b]注意:[/b]该方法在 Android、iOS、macOS、Windows 和 Linux(X11)上实现。" + msgid "" "Returns [code]true[/code] if touch events are available (Android or iOS), the " "capability is detected on the Web platform or if [member ProjectSettings." @@ -32112,6 +34226,15 @@ msgstr "" "将物理(美式 QWERTY)键码 [param keycode] 转换为激活键盘布局中的键码。\n" "[b]注意:[/b]本方法在 Linux(X11)、macOS 和 Windows 上实现。" +msgid "" +"Converts a physical (US QWERTY) [param keycode] to localized label printed on " +"the key in the active keyboard layout.\n" +"[b]Note:[/b] This method is implemented on Linux (X11), macOS and Windows." +msgstr "" +"将物理(美式 QWERTY)键码 [param keycode] 转换为活动键盘布局中的按键上印刷的本" +"地化标签。\n" +"[b]注意:[/b]该方法在 Linux(X11)、macOS 和 Windows 上实现。" + msgid "" "Returns the number of keyboard layouts.\n" "[b]Note:[/b] This method is implemented on Linux (X11), macOS and Windows." @@ -32402,6 +34525,42 @@ msgstr "" "设置活动的数位板驱动程序的名称。\n" "[b]注意:[/b]该方法仅在 Windows 上实现。" +msgid "" +"Returns an [Array] of voice information dictionaries.\n" +"Each [Dictionary] contains two [String] entries:\n" +"- [code]name[/code] is voice name.\n" +"- [code]id[/code] is voice identifier.\n" +"- [code]language[/code] is language code in [code]lang_Variant[/code] format. " +"The [code]lang[/code] part is a 2 or 3-letter code based on the ISO-639 " +"standard, in lowercase. The [code skip-lint]Variant[/code] part is an engine-" +"dependent string describing country, region or/and dialect.\n" +"Note that Godot depends on system libraries for text-to-speech functionality. " +"These libraries are installed by default on Windows and macOS, but not on all " +"Linux distributions. If they are not present, this method will return an " +"empty list. This applies to both Godot users on Linux, as well as end-users " +"on Linux running Godot games that use text-to-speech.\n" +"[b]Note:[/b] This method is implemented on Android, iOS, Web, Linux (X11), " +"macOS, and Windows.\n" +"[b]Note:[/b] [member ProjectSettings.audio/general/text_to_speech] should be " +"[code]true[/code] to use text-to-speech." +msgstr "" +"返回语音信息字典的 [Array]。\n" +"每个 [Dictionary] 包含两个 [String] 条目:\n" +"- [code]name[/code] 是语音名称。\n" +"- [code]id[/code] 是语音标识符。\n" +"- [code]language[/code] 是语言代码,格式为 [code]lang_Variant[/code] 。" +"[code]lang[/code] 部分是小写的基于 ISO-639 标准的 2 或 3 字母代码。而 [code " +"skip-lint]Variant[/code] 部分是一个依赖于引擎的字符串,描述国家、地区或/和方" +"言。\n" +"请注意,Godot 依赖于系统库来实现文本到语音的功能。这些库在 Windows 和 MacOS 上" +"是默认安装的,但并非安装在所有 Linux 发行版上。如果它们不存在,此方法将返回一" +"个空列表。这适用于 Linux 上的 Godot 用户,以及在 Linux 上运行使用文本到语音的 " +"Godot 游戏的最终用户。\n" +"[b]注意:[/b]这个方法在 Android、iOS、Web、Linux(X11)、macOS 和 Windows 上实" +"现。\n" +"[b]注意:[/b][member ProjectSettings.audio/general/text_to_speech] 应当为 " +"[code]true[/code] 才能够使用文本到语音功能。" + msgid "" "Returns an [PackedStringArray] of voice identifiers for the [param " "language].\n" @@ -32701,6 +34860,16 @@ msgstr "" "返回窗口的大小(单位为像素),包含操作系统绘制的边框,该窗口由 [param " "window_id] 指定。另见 [method window_get_size]。" +msgid "" +"Returns the estimated window title bar size (including text and window " +"buttons) for the window specified by [param window_id] (in pixels). This " +"method does not change the window title.\n" +"[b]Note:[/b] This method is implemented on macOS and Windows." +msgstr "" +"返回由 [param window_id] 指定的窗口的估计窗口标题栏大小(包括文本和窗口按钮)" +"(单位:像素)。该方法不会更改窗口标题。\n" +"[b]注意:[/b]该方法在 macOS 和 Windows 上实现。" + msgid "Returns the V-Sync mode of the given window." msgstr "返回给定窗口的垂直同步模式。" @@ -32753,6 +34922,21 @@ msgstr "" "将由 [param window_id] 指定的窗口移动至指定的屏幕 [param screen]。另见 " "[method window_get_current_screen]。" +msgid "" +"Sets the [param callback] that should be called when files are dropped from " +"the operating system's file manager to the window specified by [param " +"window_id].\n" +"[b]Warning:[/b] Advanced users only! Adding such a callback to a [Window] " +"node will override its default implementation, which can introduce bugs.\n" +"[b]Note:[/b] This method is implemented on Windows, macOS, Linux (X11) and " +"Web." +msgstr "" +"设置回调 [param callback],将文件从操作系统的文件管理器拖放到由 [param " +"window_id] 指定的窗口中时会进行调用。\n" +"[b]警告:[/b]仅限高级用户!将这样的回调添加到 [Window] 节点将覆盖其默认实现," +"这可能会引入错误。\n" +"[b]注意:[/b]这个方法在 Windows、macOS、Linux(X11)、Web 上实现。" + msgid "" "If set to [code]true[/code], this window will always stay on top of its " "parent window, parent window will ignore input while this window is opened.\n" @@ -32792,6 +34976,28 @@ msgstr "" "%E8%BE%93%E5%85%A5%E6%B3%95]输入法编辑器[/url]弹出框的位置。仅在指定 [param " "window_id] 的 [method window_set_ime_active] 为 [code]true[/code] 时有效。" +msgid "" +"Sets the [param callback] that should be called when any [InputEvent] is sent " +"to the window specified by [param window_id].\n" +"[b]Warning:[/b] Advanced users only! Adding such a callback to a [Window] " +"node will override its default implementation, which can introduce bugs." +msgstr "" +"设置回调 [param callback],向由 [param window_id] 指定的窗口发送任何 " +"[InputEvent] 时会进行回调。\n" +"[b]警告:[/b]仅限高级用户!将这样的回调添加到 [Window] 节点将覆盖其默认实现," +"这可能会引入错误。" + +msgid "" +"Sets the [param callback] that should be called when text is entered using " +"the virtual keyboard to the window specified by [param window_id].\n" +"[b]Warning:[/b] Advanced users only! Adding such a callback to a [Window] " +"node will override its default implementation, which can introduce bugs." +msgstr "" +"设置回调 [param callback],使用虚拟键盘向由 [param window_id] 指定的窗口输入文" +"本时会进行回调。\n" +"[b]警告:[/b]仅限高级用户!将这样的回调添加到 [Window] 节点将覆盖其默认实现," +"这可能会引入错误。" + msgid "" "Sets the maximum size of the window specified by [param window_id] in pixels. " "Normally, the user will not be able to drag the window to make it smaller " @@ -32939,6 +35145,17 @@ msgstr "" "另见 [method window_get_position] 和 [method window_set_size]。\n" "[b]注意:[/b]建议改用 [member Window.position] 更改此值。" +msgid "" +"Sets the [param callback] that will be called when the window specified by " +"[param window_id] is moved or resized.\n" +"[b]Warning:[/b] Advanced users only! Adding such a callback to a [Window] " +"node will override its default implementation, which can introduce bugs." +msgstr "" +"设置回调 [param callback],由 [param window_id] 指定的窗口发生移动或调整大小时" +"会进行回调。\n" +"[b]警告:[/b]仅限高级用户!将这样的回调添加到 [Window] 节点将覆盖其默认实现," +"这可能会引入错误。" + msgid "" "Sets the size of the given window to [param size] (in pixels). See also " "[method window_get_size] and [method window_get_position].\n" @@ -33004,6 +35221,17 @@ msgstr "" "心的偏移量。\n" "[b]注意:[/b]这个标志仅在 macOS 上实现。" +msgid "" +"Sets the [param callback] that will be called when an event occurs in the " +"window specified by [param window_id].\n" +"[b]Warning:[/b] Advanced users only! Adding such a callback to a [Window] " +"node will override its default implementation, which can introduce bugs." +msgstr "" +"设置回调 [param callback],由 [param window_id] 指定的窗口发生事件时会进行回" +"调。\n" +"[b]警告:[/b]仅限高级用户!将这样的回调添加到 [Window] 节点将覆盖其默认实现," +"这可能会引入错误。" + msgid "" "Display server supports global menu. This allows the application to display " "its menu items in the operating system's top bar. [b]macOS[/b]" @@ -33387,6 +35615,23 @@ msgstr "" msgid "Represents the size of the [enum CursorShape] enum." msgstr "代表 [enum CursorShape] 枚举的大小。" +msgid "The native file dialog allows selecting one, and only one file." +msgstr "该原生对话框只允许选择一个文件。" + +msgid "The native file dialog allows selecting multiple files." +msgstr "该原生对话框允许选择多个文件。" + +msgid "" +"The native file dialog only allows selecting a directory, disallowing the " +"selection of any file." +msgstr "该原生对话框只允许选择一个目录,不允许选择任何文件。" + +msgid "The native file dialog allows selecting one file or directory." +msgstr "该原生对话框允许选择一个文件或目录。" + +msgid "The native file dialog will warn when a file exists." +msgstr "当文件存在时,原生对话框会发出警告。" + msgid "" "Windowed mode, i.e. [Window] doesn't occupy the whole screen (unless set to " "the size of the screen)." @@ -33407,6 +35652,56 @@ msgstr "" "最大化窗口模式,即 [Window] 会占据整个屏幕区域,任务栏除外,并且会显示边框。通" "常发生在按下最大化按钮时。" +msgid "" +"Full screen mode with full multi-window support.\n" +"Full screen window covers the entire display area of a screen and has no " +"decorations. The display's video mode is not changed.\n" +"[b]On Windows:[/b] Multi-window full-screen mode has a 1px border of the " +"[member ProjectSettings.rendering/environment/defaults/default_clear_color] " +"color.\n" +"[b]On macOS:[/b] A new desktop is used to display the running project.\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]在 Windows 上:[/b]多窗口全屏模式具有 1px 宽的颜色为 [member " +"ProjectSettings.rendering/environment/defaults/default_clear_color] 的边框。\n" +"[b]在 macOS 上:[/b]使用新桌面来显示正在运行的项目。\n" +"[b]注意:[/b]无论平台如何,启用全屏都会更改窗口大小以匹配显示器的大小。因此," +"请确保你的项目在启用全屏模式时支持[url=$DOCS_URL/tutorials/rendering/" +"multiple_resolutions.html]多种分辨率[/url]。" + +msgid "" +"A single window full screen mode. This mode has less overhead, but only one " +"window can be open on a given screen at a time (opening a child window or " +"application switching will trigger a full screen transition).\n" +"Full screen window covers the entire display area of a screen and has no " +"border or decorations. The display's video mode is not changed.\n" +"[b]On Windows:[/b] Depending on video driver, full screen transition might " +"cause screens to go black for a moment.\n" +"[b]On macOS:[/b] A new desktop is used to display the running project. " +"Exclusive full screen mode prevents Dock and Menu from showing up when the " +"mouse pointer is hovering the edge of the screen.\n" +"[b]On Linux (X11):[/b] Exclusive full screen mode bypasses compositor.\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]在 Windows 上:[/b]取决于视频驱动程序,全屏过渡可能会导致屏幕暂时变黑。\n" +"[b]在 macOS 上:[/b]一个新的桌面用于显示正在运行的项目。当鼠标指针悬停在屏幕边" +"缘时,独占全屏模式会阻止 Dock 和 Menu 出现。\n" +"[b]在 Linux(X11)上:[/b]独占全屏模式会绕过合成器。\n" +"[b]注意:[/b]无论平台如何,启用全屏都会更改窗口大小以匹配显示器的大小。因此," +"确保你的项目在启用全屏模式时支持[url=$DOCS_URL/tutorials/rendering/" +"multiple_resolutions.html]多个分辨率[/url]。" + msgid "" "The window can't be resized by dragging its resize grip. It's still possible " "to resize the window using [method window_set_size]. This flag is ignored for " @@ -33482,6 +35777,93 @@ msgstr "所有鼠标事件都被传递到同一应用程序的底层窗口。" msgid "Max value of the [enum WindowFlags]." msgstr "[enum WindowFlags] 的最大值。" +msgid "Sent when the mouse pointer enters the window." +msgstr "当鼠标指针进入该窗口时发送。" + +msgid "Sent when the mouse pointer exits the window." +msgstr "当鼠标指针退出该窗口时发送。" + +msgid "Sent when the window grabs focus." +msgstr "当窗口获得焦点时发送。" + +msgid "Sent when the window loses focus." +msgstr "当窗口失去焦点时发送。" + +msgid "" +"Sent when the user has attempted to close the window (e.g. close button is " +"pressed)." +msgstr "当用户试图关闭该窗口时发送(例如按下关闭按钮)。" + +msgid "" +"Sent when the device \"Back\" button is pressed.\n" +"[b]Note:[/b] This event is implemented only on Android." +msgstr "" +"当按下设备的“后退”按钮时发送。\n" +"[b]注意:[/b]该事件仅在 Android 上实现。" + +msgid "" +"Sent when the window is moved to the display with different DPI, or display " +"DPI is changed.\n" +"[b]Note:[/b] This flag is implemented only on macOS." +msgstr "" +"当窗口被移动到具有不同 DPI 的显示器上,或者显示器的 DPI 更改时发送。\n" +"[b]注意:[/b]该标志仅在 macOS 上实现。" + +msgid "" +"Sent when the window title bar decoration is changed (e.g. [constant " +"WINDOW_FLAG_EXTEND_TO_TITLE] is set or window entered/exited full screen " +"mode).\n" +"[b]Note:[/b] This flag is implemented only on macOS." +msgstr "" +"当窗口标题栏的装饰改变时发送(例如 [constant WINDOW_FLAG_EXTEND_TO_TITLE] 被设" +"置或窗口进入/退出全屏模式)。\n" +"[b]注意:[/b]该标志仅在 macOS 上实现。" + +msgid "" +"No vertical synchronization, which means the engine will display frames as " +"fast as possible (tearing may be visible). Framerate is unlimited " +"(notwithstanding [member Engine.max_fps])." +msgstr "" +"没有垂直同步,这意味着引擎将尽可能快地显示帧(可能会有可见的撕裂)。帧速率是未" +"限制的(不考虑 [member Engine.max_fps])。" + +msgid "" +"Default vertical synchronization mode, the image is displayed only on " +"vertical blanking intervals (no tearing is visible). Framerate is limited by " +"the monitor refresh rate (notwithstanding [member Engine.max_fps])." +msgstr "" +"默认的垂直同步模式,图像只在垂直消隐间隔显示(没有可见的撕裂)。帧速率受显示器" +"刷新率的限制(不考虑 [member Engine.max_fps])。" + +msgid "" +"Behaves like [constant VSYNC_DISABLED] when the framerate drops below the " +"screen's refresh rate to reduce stuttering (tearing may be visible). " +"Otherwise, vertical synchronization is enabled to avoid tearing. Framerate is " +"limited by the monitor refresh rate (notwithstanding [member Engine." +"max_fps]). Behaves like [constant VSYNC_ENABLED] when using the Compatibility " +"rendering method." +msgstr "" +"当帧速率降至屏幕刷新率以下以减少卡顿(可能有可见的撕裂)时,行为类似于 " +"[constant VSYNC_DISABLED]。否则,启用垂直同步以避免撕裂。帧速率受显示器刷新率" +"的限制(不考虑 [member Engine.max_fps])。使用兼容渲染方法时表现得像 " +"[constant VSYNC_ENABLED]。" + +msgid "" +"Displays the most recent image in the queue on vertical blanking intervals, " +"while rendering to the other images (no tearing is visible). Framerate is " +"unlimited (notwithstanding [member Engine.max_fps]).\n" +"Although not guaranteed, the images can be rendered as fast as possible, " +"which may reduce input lag (also called \"Fast\" V-Sync mode). [constant " +"VSYNC_MAILBOX] works best when at least twice as many frames as the display " +"refresh rate are rendered. Behaves like [constant VSYNC_ENABLED] when using " +"the Compatibility rendering method." +msgstr "" +"在垂直消隐间隔显示队列中的最新图像,同时对其他图像渲染(没有可见的撕裂)。帧速" +"率是未限制的(不考虑 [member Engine.max_fps])。\n" +"虽然不能保证,但可以尽可能快地渲染图像,这可能会减少输入滞后(也称为“快速”V-" +"Sync 模式)。[constant VSYNC_MAILBOX] 在渲染的帧数至少是显示器刷新率的两倍时效" +"果最佳。使用兼容渲染方法时表现得像 [constant VSYNC_ENABLED]。" + msgid "" "Display handle:\n" "- Linux (X11): [code]X11::Display*[/code] for the display.\n" @@ -33518,6 +35900,23 @@ msgstr "" "- macOS:窗口主视图的 [code]NSView*[/code]。\n" "- iOS:窗口主视图的 [code]UIView*[/code]。" +msgid "" +"OpenGL context (only with the GL Compatibility renderer):\n" +"- Windows: [code]HGLRC[/code] for the window (native GL), or " +"[code]EGLContext[/code] for the window (ANGLE).\n" +"- Linux: [code]GLXContext*[/code] for the window.\n" +"- macOS: [code]NSOpenGLContext*[/code] for the window (native GL), or " +"[code]EGLContext[/code] for the window (ANGLE).\n" +"- Android: [code]EGLContext[/code] for the window." +msgstr "" +"OpenGL 上下文(仅适用于 GL 兼容性渲染器):\n" +"- Windows:窗口的 [code]HGLRC[/code](原生 GL)或窗口的 [code]EGLContext[/" +"code](ANGLE)。\n" +"- Linux:窗口的 [code]GLXContext*[/code]。\n" +"- macOS:窗口的 [code]NSOpenGLContext*[/code](原生 GL)或窗口的 " +"[code]EGLContext[/code](ANGLE)。\n" +"- Android:窗口的 [code]EGLContext[/code]。" + msgid "Utterance has begun to be spoken." msgstr "发言开始。" @@ -33865,6 +36264,54 @@ msgstr "" msgid "Godot editor's command palette." msgstr "Godot 编辑器的命令面板。" +msgid "" +"Object that holds all the available Commands and their shortcuts text. These " +"Commands can be accessed through [b]Editor > Command Palette[/b] menu.\n" +"Command key names use slash delimiters to distinguish sections, for example: " +"[code]\"example/command1\"[/code] then [code]example[/code] will be the " +"section name.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var command_palette = EditorInterface.get_command_palette()\n" +"# external_command is a function that will be called with the command is " +"executed.\n" +"var command_callable = Callable(self, \"external_command\").bind(arguments)\n" +"command_palette.add_command(\"command\", \"test/command\",command_callable)\n" +"[/gdscript]\n" +"[csharp]\n" +"EditorCommandPalette commandPalette = EditorInterface.Singleton." +"GetCommandPalette();\n" +"// ExternalCommand is a function that will be called with the command is " +"executed.\n" +"Callable commandCallable = new Callable(this, MethodName.ExternalCommand);\n" +"commandPalette.AddCommand(\"command\", \"test/command\", commandCallable)\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Note:[/b] This class shouldn't be instantiated directly. Instead, access " +"the singleton using [method EditorInterface.get_command_palette]." +msgstr "" +"该对象包含所有可用命令及其快捷方式文本。这些命令可以通过 [b]Editor > 命令面板" +"[/b] 菜单访问。\n" +"命令键名使用斜杠分隔符来区分部分,例如:[code]\"example/command1\"[/code],那" +"么 [code]example[/code] 将是部分名称。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var command_palette = EditorInterface.get_command_palette()\n" +"# external_command 是将在命令执行时调用的函数。\n" +"var command_callable = Callable(self, \"external_command\").bind(arguments)\n" +"command_palette.add_command(\"command\", \"test/command\",command_callable)\n" +"[/gdscript]\n" +"[csharp]\n" +"EditorCommandPalette commandPalette = EditorInterface.Singleton." +"GetCommandPalette();\n" +"// ExternalCommand 是将在命令执行时调用的函数。\n" +"Callable commandCallable = new Callable(this, MethodName.ExternalCommand);\n" +"commandPalette.AddCommand(\"command\", \"test/command\", commandCallable)\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]注意:[/b]不应直接实例化此类。相反,使用 [method EditorInterface." +"get_command_palette] 访问单例。" + msgid "" "Adds a custom command to EditorCommandPalette.\n" "- [param command_name]: [String] (Name of the [b]Command[/b]. This is " @@ -34122,12 +36569,25 @@ msgstr "" msgid "$DOCS_URL/tutorials/platform/consoles.html" msgstr "$DOCS_URL/tutorials/platform/consoles.html" +msgid "" +"Returns the name of the export operating system handled by this " +"[EditorExportPlatform] class, as a friendly string. Possible return values " +"are [code]Windows[/code], [code]Linux[/code], [code]macOS[/code], " +"[code]Android[/code], [code]iOS[/code], and [code]Web[/code]." +msgstr "" +"以友好字符串的形式,返回由该 [EditorExportPlatform] 类处理的导出操作系统的名" +"称。可能的返回值为 [code]Windows[/code]、[code]Linux[/code]、[code]macOS[/" +"code]、[code]Android[/code]、[code]iOS[/code]、和 [code]Web[/code]。" + msgid "Exporter for Android." msgstr "适用于 Android 的导出器。" msgid "Exporting for Android" msgstr "为 Android 导出" +msgid "Gradle builds for Android" +msgstr "适用于 Android 的 Gradle 构建" + msgid "Android plugins documentation index" msgstr "Android 插件文档索引" @@ -34298,6 +36758,23 @@ msgid "" msgstr "" "如果为 [code]true[/code],当用户卸载应用程序时,将显示保留应用程序数据的提示。" +msgid "" +"If [code]true[/code], the user will be able to set this app as the system " +"launcher in Android preferences." +msgstr "" +"如果为 [code]true[/code],用户将能够在 Android 首选项中将该应用程序设置为系统" +"启动器。" + +msgid "If [code]true[/code], this app will show in Android TV launcher UI." +msgstr "如果为 [code]true[/code],该应用将显示在 Android TV 启动器 UI 中。" + +msgid "" +"If [code]true[/code], this app will show in the device's app library.\n" +"[b]Note:[/b] This is [code]true[/code] by default." +msgstr "" +"如果为 [code]true[/code],则该应用程序将显示在设备的应用程序库中。\n" +"[b]注意:[/b]默认情况下为 [code]true[/code]。" + msgid "If [code]true[/code], package signing is enabled." msgstr "如果为 [code]true[/code],则包签名被启用。" @@ -35408,6 +37885,13 @@ msgid "" msgstr "" "机器可读的应用程序版本。每向 Play Store 推送一个新版本,该版本都必须递增。" +msgid "" +"Application version visible to the user. Falls back to [member " +"ProjectSettings.application/config/version] if left empty." +msgstr "" +"用户可见的应用程序版本。如果留空,则将回退到 [member ProjectSettings." +"application/config/version]。" + msgid "Exporter for iOS." msgstr "iOS 导出器。" @@ -35445,6 +37929,18 @@ msgstr "应用程序分发目标(调试导出)。" msgid "Application distribution target (release export)." msgstr "应用程序分发目标(发布导出)。" +msgid "" +"If [code]true[/code], exports iOS project files without building an XCArchive " +"or [code].ipa[/code] file. If [code]false[/code], exports iOS project files " +"and builds an XCArchive and [code].ipa[/code] file at the same time. When " +"combining Godot with Fastlane or other build pipelines, you may want to set " +"this to [code]true[/code]." +msgstr "" +"如果为 [code]true[/code],则导出 iOS 项目文件而不构建一份 XCArchive 或 [code]." +"ipa[/code] 文件。如果为 [code]false[/code],则导出 iOS 项目文件并同时构建一份 " +"XCArchive 和 [code].ipa[/code] 文件。将 Godot 与 Fastlane 或其他构建管道结合使" +"用时,你可能需要将其设置为 [code]true[/code]。" + msgid "Interpolation method used to resize application icon." msgstr "用于调整应用程序图标大小的插值方法。" @@ -35478,12 +37974,31 @@ msgstr "" "可以使用环境变量 [code]GODOT_IOS_PROVISIONING_PROFILE_UUID_RELEASE[/code] 覆" "盖。" +msgid "" +"Application version visible to the user, can only contain numeric characters " +"([code]0-9[/code]) and periods ([code].[/code]). Falls back to [member " +"ProjectSettings.application/config/version] if left empty." +msgstr "" +"用户可见的应用程序版本,只能包含数字字符([code]0-9[/code])和句点([code].[/" +"code])。如果留空,则回退到 [member ProjectSettings.application/config/" +"version]。" + msgid "A four-character creator code that is specific to the bundle. Optional." msgstr "特定于该捆绑包的四字符创建者码。可选的。" msgid "Supported device family." msgstr "支持的设备家族。" +msgid "" +"Machine-readable application version, in the [code]major.minor.patch[/code] " +"format, can only contain numeric characters ([code]0-9[/code]) and periods " +"([code].[/code]). This must be incremented on every new release pushed to the " +"App Store." +msgstr "" +"机器可读的应用程序版本,采用 [code]major.minor.patch[/code] 格式,只能包含数字" +"字符([code]0-9[/code])和句点([code].[/code])。该值必须在被推送到 App " +"Store 的每个新版本中递增。" + msgid "" "If [code]true[/code], networking features related to Wi-Fi access are " "enabled. See [url=https://developer.apple.com/support/required-device-" @@ -35825,6 +38340,16 @@ msgstr "捆绑包的(英文)版权声明,用户可见。" msgid "Copyright notice for the bundle visible to the user (localized)." msgstr "捆绑包的(本地化)版权声明,用户可见。" +msgid "" +"If set to [code]1[/code], ANGLE libraries are exported with the exported " +"application. If set to [code]0[/code], ANGLE libraries are exported only if " +"[member ProjectSettings.rendering/gl_compatibility/driver] is set to " +"[code]\"opengl3_angle\"[/code]." +msgstr "" +"如果设置为 [code]1[/code],ANGLE 库将随导出的应用程序一起导出。如果设置为 " +"[code]0[/code],则仅当 [member ProjectSettings.rendering/gl_compatibility/" +"driver] 被设置为 [code]\"opengl3_angle\"[/code] 时才会导出 ANGLE 库。" + msgid "" "Application icon file. If left empty, it will fallback to [member " "ProjectSettings.application/config/macos_native_icon], and then to [member " @@ -35878,6 +38403,20 @@ msgid "" "tool." msgstr "要额外传给代码签名工具的命令行参数的数组。" +msgid "" +"Enable to allow access to contacts in the user's address book, if it's " +"enabled you should also provide usage message in the [member privacy/" +"address_book_usage_description] option. See [url=https://developer.apple.com/" +"documentation/bundleresources/entitlements/com_apple_security_personal-" +"information_addressbook]com.apple.security.personal-information.addressbook[/" +"url]." +msgstr "" +"启用后允许访问用户地址簿中的联系人,如果启用,还应该在 [member privacy/" +"address_book_usage_description] 选项中提供用途信息。请参阅 [url=https://" +"developer.apple.com/documentation/bundleresources/entitlements/" +"com_apple_security_personal-information_addressbook]com.apple.security." +"personal-information.addressbook[/url]。" + msgid "" "Allows app to use dynamic linker environment variables to inject code. If you " "are using add-ons with dynamic or self-modifying native code, enable them " @@ -35998,6 +38537,17 @@ msgstr "" "com_apple_security_assets_pictures_read-write]com.apple.security.files." "pictures.read-write[/url]。" +msgid "" +"Allows read or write access to the locations the user has selected using a " +"native file dialog. See [url=https://developer.apple.com/documentation/" +"bundleresources/entitlements/com_apple_security_files_user-selected_read-" +"write]com.apple.security.files.user-selected.read-write[/url]." +msgstr "" +"允许对用户使用原生文件对话框选择的位置进行读或写访问。请参阅 [url=https://" +"developer.apple.com/documentation/bundleresources/entitlements/" +"com_apple_security_files_user-selected_read-write]com.apple.security.files." +"user-selected.read-write[/url]。" + msgid "" "List of helper executables to embedded to the app bundle. Sandboxed app are " "limited to execute only these executable. See [url=https://developer.apple." @@ -36037,6 +38587,43 @@ msgstr "" "com_apple_security_automation_apple-events]com.apple.security.automation." "apple-events[/url]。" +msgid "" +"Enable if you need to use the microphone or other audio input sources, if " +"it's enabled you should also provide usage message in the [member privacy/" +"microphone_usage_description] option. See [url=https://developer.apple.com/" +"documentation/bundleresources/entitlements/com_apple_security_device_audio-" +"input]com.apple.security.device.audio-input[/url]." +msgstr "" +"需要使用麦克风或其他音频输入源时启用,启用时还应在 [member privacy/" +"microphone_usage_description] 选项中提供用途信息。请参阅 [url=https://" +"developer.apple.com/documentation/bundleresources/entitlements/" +"com_apple_security_device_audio-input]com.apple.security.device.audio-input[/" +"url]。" + +msgid "" +"Enable to allow access to the user's calendar, if it's enabled you should " +"also provide usage message in the [member privacy/calendar_usage_description] " +"option. See [url=https://developer.apple.com/documentation/bundleresources/" +"entitlements/com_apple_security_personal-information_calendars]com.apple." +"security.personal-information.calendars[/url]." +msgstr "" +"启用后允许访问用户的日历,启用时还应在 [member privacy/" +"calendar_usage_description] 选项中提供用途信息。请参阅 [url=https://developer." +"apple.com/documentation/bundleresources/entitlements/" +"com_apple_security_personal-information_calendars]com.apple.security.personal-" +"information.calendars[/url]。" + +msgid "" +"Enable if you need to use the camera, if it's enabled you should also provide " +"usage message in the [member privacy/camera_usage_description] option. See " +"[url=https://developer.apple.com/documentation/bundleresources/entitlements/" +"com_apple_security_device_camera]com.apple.security.device.camera[/url]." +msgstr "" +"需要使用相机时启用,启用时还应在 [member privacy/camera_usage_description] 选" +"项中提供用途信息。请参阅 [url=https://developer.apple.com/documentation/" +"bundleresources/entitlements/com_apple_security_device_camera]com.apple." +"security.device.camera[/url]。" + msgid "" "Custom entitlements [code].plist[/code] file, if specified the rest of " "entitlements in the export config are ignored." @@ -36069,6 +38656,33 @@ msgstr "" "documentation/bundleresources/entitlements/com_apple_security_cs_disable-" "library-validation]com.apple.security.cs.disable-library-validation[/url]。" +msgid "" +"Enable if you need to use location information from Location Services, if " +"it's enabled you should also provide usage message in the [member privacy/" +"location_usage_description] option. See [url=https://developer.apple.com/" +"documentation/bundleresources/entitlements/com_apple_security_personal-" +"information_location]com.apple.security.personal-information.location[/url]." +msgstr "" +"需要使用位置服务中的位置信息时启用,启用时还应在 [member privacy/" +"location_usage_description] 选项中提供用途信息。请参阅 [url=https://developer." +"apple.com/documentation/bundleresources/entitlements/" +"com_apple_security_personal-information_location]com.apple.security.personal-" +"information.location[/url]。" + +msgid "" +"Enable to allow access to the user's Photos library, if it's enabled you " +"should also provide usage message in the [member privacy/" +"photos_library_usage_description] option. See [url=https://developer.apple." +"com/documentation/bundleresources/entitlements/com_apple_security_personal-" +"information_photos-library]com.apple.security.personal-information.photos-" +"library[/url]." +msgstr "" +"启用后允许访问用户的照片库,启用时还应在 [member privacy/" +"photos_library_usage_description] 选项中提供用途消息。请参阅 [url=https://" +"developer.apple.com/documentation/bundleresources/entitlements/" +"com_apple_security_personal-information_photos-library]com.apple.security." +"personal-information.photos-library[/url]。" + msgid "" "The \"Full Name\", \"Common Name\" or SHA-1 hash of the signing identity used " "to sign [code].app[/code] bundle." @@ -36105,6 +38719,14 @@ msgstr "" "启用后,会在导出后的应用程序旁创建一个封装程序,可以用来以带命令行输出的形式运" "行该应用程序。" +msgid "" +"If [code]true[/code], the application is rendered at native display " +"resolution, otherwise it is always rendered at loDPI resolution and upscaled " +"by OS when required." +msgstr "" +"如果为 [code]true[/code],则应用程序使用原生显示器分辨率渲染,否则始终使用 " +"loDPI 分辨率渲染,必要时由操作系统放大。" + msgid "Application distribution target." msgstr "应用程序分发目标。" @@ -36309,6 +38931,15 @@ msgstr "" "展示给用户的文件说明。必填。见 [url=https://learn.microsoft.com/en-us/windows/" "win32/menurc/stringfileinfo-block]StringFileInfo[/url]。" +msgid "" +"Version number of the file. Falls back to [member ProjectSettings.application/" +"config/version] if left empty. See [url=https://learn.microsoft.com/en-us/" +"windows/win32/menurc/stringfileinfo-block]StringFileInfo[/url]." +msgstr "" +"文件的版本号。如果留空,则回退到 [member ProjectSettings.application/config/" +"version]。请参阅 [url=https://learn.microsoft.com/en-us/windows/win32/menurc/" +"stringfileinfo-block]StringFileInfo[/url]。" + msgid "" "Application icon file. If left empty, it will fallback to [member " "ProjectSettings.application/config/windows_native_icon], and then to [member " @@ -36332,6 +38963,16 @@ msgstr "" "应用程序的名称。必填。见 [url=https://learn.microsoft.com/en-us/windows/win32/" "menurc/stringfileinfo-block]StringFileInfo[/url]。" +msgid "" +"Application version visible to the user. Falls back to [member " +"ProjectSettings.application/config/version] if left empty. See [url=https://" +"learn.microsoft.com/en-us/windows/win32/menurc/stringfileinfo-" +"block]StringFileInfo[/url]." +msgstr "" +"用户可见的应用程序版本。如果留空,则回退到 [member ProjectSettings." +"application/config/version]。请参阅 [url=https://learn.microsoft.com/en-us/" +"windows/win32/menurc/stringfileinfo-block]StringFileInfo[/url]。" + msgid "" "Trademarks and registered trademarks that apply to the file. Optional. See " "[url=https://learn.microsoft.com/en-us/windows/win32/menurc/stringfileinfo-" @@ -36485,6 +39126,18 @@ msgstr "" "如果 [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_scenes] " +"returns [code]true[/code]." +msgstr "" +"定制一个场景。如果对其进行了修改,则返回相同的或新的场景。否则,返回 " +"[code]null[/code] 。如果返回一个新的场景,则由你来处理旧的场景。\n" +"如果 [method _begin_customize_scenes] 返回 [code]true[/code],则需要实现该方" +"法。" + msgid "This is called when the customization process for resources ends." msgstr "资源的自定义处理完成时调用。" @@ -36523,6 +39176,104 @@ msgstr "" "[PackedScene]),[param features]是导出的特性列表。\n" "在此回调中调用[method skip]将使文件不包含在导出中。" +msgid "" +"Virtual method to be overridden by the user. This is called to retrieve the " +"set of Android dependencies provided by this plugin. Each returned Android " +"dependency should have the format of an Android remote binary dependency: " +"[code]org.godot.example:my-plugin:0.0.0[/code]\n" +"For more information see [url=https://developer.android.com/build/" +"dependencies?agpversion=4.1#dependency-types]Android documentation on " +"dependencies[/url].\n" +"[b]Note:[/b] Only supported on Android and requires [member " +"EditorExportPlatformAndroid.gradle_build/use_gradle_build] to be enabled." +msgstr "" +"由用户覆盖的虚方法。调用该函数是为了检索该插件提供的 Android 依赖项集。每个返" +"回的 Android 依赖项应具有 Android 远程二进制依赖项的格式:[code]org.godot." +"example:my-plugin:0.0.0[/code]\n" +"有关详细信息,请参阅 [url=https://developer.android.com/build/dependencies?" +"agpversion=4.1#dependency-types]有关依赖项的 Android 文档[/url]。\n" +"[b]注意:[/b]仅在 Android 上受支持,并且需要启用 [member " +"EditorExportPlatformAndroid.gradle_build/use_gradle_build]。" + +msgid "" +"Virtual method to be overridden by the user. This is called to retrieve the " +"URLs of Maven repositories for the set of Android dependencies provided by " +"this plugin.\n" +"For more information see [url=https://docs.gradle.org/current/userguide/" +"dependency_management.html#sec:maven_repo]Gradle documentation on dependency " +"management[/url].\n" +"[b]Note:[/b] Google's Maven repo and the Maven Central repo are already " +"included by default.\n" +"[b]Note:[/b] Only supported on Android and requires [member " +"EditorExportPlatformAndroid.gradle_build/use_gradle_build] to be enabled." +msgstr "" +"由用户覆盖的虚方法。调用该函数是为了检索该插件提供的 Android 依赖项集的 Maven " +"存储库的 URL。\n" +"有关更多信息,请参阅 [url=https://docs.gradle.org/current/userguide/" +"dependency_management.html#sec:maven_repo]有关依赖管理的 Gradle 文档[/url]。\n" +"[b]注意:[/b]Google 的 Maven 存储库和 Maven Central 存储库默认已包含在内。\n" +"[b]注意:[/b]仅在 Android 上受支持,并且需要启用 [member " +"EditorExportPlatformAndroid.gradle_build/use_gradle_build]。" + +msgid "" +"Virtual method to be overridden by the user. This is called to retrieve the " +"local paths of the Android libraries archive (AAR) files provided by this " +"plugin.\n" +"[b]Note:[/b] Relative paths [b]must[/b] be relative to Godot's [code]res://" +"addons/[/code] directory. For example, an AAR file located under [code]res://" +"addons/hello_world_plugin/HelloWorld.release.aar[/code] can be returned as an " +"absolute path using [code]res://addons/hello_world_plugin/HelloWorld.release." +"aar[/code] or a relative path using [code]hello_world_plugin/HelloWorld." +"release.aar[/code].\n" +"[b]Note:[/b] Only supported on Android and requires [member " +"EditorExportPlatformAndroid.gradle_build/use_gradle_build] to be enabled." +msgstr "" +"由用户覆盖的虚方法。调用该函数是为了检索该插件提供的 Android 库存档(AAR)文件" +"的本地路径。\n" +"[b]注意:[/b]相对路径[b]必须[/b]相对于 Godot 的 [code]res://addons/[/code] 目" +"录。例如,位于 [code]res://addons/hello_world_plugin/HelloWorld.release.aar[/" +"code] 下的 AAR 文件,可以使用 [code]res://addons/hello_world_plugin/" +"HelloWorld.release.aar[/code] 作为绝对路径,或使用 [code]hello_world_plugin/" +"HelloWorld.release.aar[/code] 作为相对路径返回。\n" +"[b]注意:[/b]仅在 Android 上受支持,并且需要启用 [member " +"EditorExportPlatformAndroid.gradle_build/use_gradle_build]。" + +msgid "" +"Virtual method to be overridden by the user. This is used at export time to " +"update the contents of the [code]activity[/code] element in the generated " +"Android manifest.\n" +"[b]Note:[/b] Only supported on Android and requires [member " +"EditorExportPlatformAndroid.gradle_build/use_gradle_build] to be enabled." +msgstr "" +"由用户覆盖的虚方法。这在导出时用于更新生成的 Android 清单中的 [code]activity[/" +"code] 元素的内容。\n" +"[b]注意:[/b]仅在 Android 上受支持,并且需要启用 [member " +"EditorExportPlatformAndroid.gradle_build/use_gradle_build]。" + +msgid "" +"Virtual method to be overridden by the user. This is used at export time to " +"update the contents of the [code]application[/code] element in the generated " +"Android manifest.\n" +"[b]Note:[/b] Only supported on Android and requires [member " +"EditorExportPlatformAndroid.gradle_build/use_gradle_build] to be enabled." +msgstr "" +"由用户覆盖的虚方法。这在导出时用于更新生成的 Android 清单中的 " +"[code]application[/code] 元素的内容。\n" +"[b]注意:[/b]仅在 Android 上受支持,并且需要启用 [member " +"EditorExportPlatformAndroid.gradle_build/use_gradle_build]。" + +msgid "" +"Virtual method to be overridden by the user. This is used at export time to " +"update the contents of the [code]manifest[/code] element in the generated " +"Android manifest.\n" +"[b]Note:[/b] Only supported on Android and requires [member " +"EditorExportPlatformAndroid.gradle_build/use_gradle_build] to be enabled." +msgstr "" +"由用户覆盖的虚方法。这在导出时用于更新生成的 Android 清单中的 [code]manifest[/" +"code] 元素的内容。\n" +"[b]注意:[/b]仅在 Android 上受支持,并且需要启用 [member " +"EditorExportPlatformAndroid.gradle_build/use_gradle_build]。" + msgid "" "Return a hash based on the configuration passed (for both scenes and " "resources). This helps keep separate caches for separate export " @@ -36542,6 +39293,14 @@ msgstr "" "返回该预设对于给定的 [param platform],应该具有的附加功能的 " "[PackedStringArray]。" +msgid "" +"Check the requirements for the given [param option] and return a non-empty " +"warning string if they are not met.\n" +"[b]Note:[/b] Use [method get_option] to check the value of the export options." +msgstr "" +"检查给定 [param option] 的要求,如果不满足则返回非空警告字符串。\n" +"[b]注意:[/b]使用 [method get_option] 检查导出选项的值。" + msgid "" "Return a list of export options that can be configured for this export " "plugin.\n" @@ -36577,6 +39336,10 @@ msgstr "" "如果 [method _get_export_options] 的结果发生了改变,与 [param platform] 对应的" "导出预设的选项需要更新,则返回 [code]true[/code]。" +msgid "" +"Return [code]true[/code] if the plugin supports the given [param platform]." +msgstr "如果插件支持给定的 [param platform],则返回 [code]true[/code]。" + 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.\n" @@ -36601,6 +39364,20 @@ msgstr "" "将 C++ 代码添加到 iOS 导出中。最终的代码是由每个激活的导出插件附加的代码创建" "的。" +msgid "" +"Adds a dynamic library (*.dylib, *.framework) to Linking Phase in iOS's Xcode " +"project and embeds it into resulting binary.\n" +"[b]Note:[/b] For static libraries (*.a) works in same way as [method " +"add_ios_framework].\n" +"[b]Note:[/b] This method should not be used for System libraries as they are " +"already present on the device." +msgstr "" +"将动态库(*.dylib、*.framework)添加到 iOS 的 Xcode 项目的链接阶段,并将其嵌入" +"到生成的二进制文件中。\n" +"[b]注意:[/b]对于静态库(*.a),该方法的工作方式与 [method add_ios_framework] " +"相同。\n" +"[b]注意:[/b]此方法不该用于系统库,因为它们已经存在于设备上。" + msgid "" "Adds a static library (*.a) or dynamic library (*.dylib, *.framework) to " "Linking Phase in iOS's Xcode project." @@ -36708,6 +39485,36 @@ 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.\n" +"[b]Note:[/b] Feature profiles created via the user interface are loaded from " +"the [code]feature_profiles[/code] directory, as a file with the [code]." +"profile[/code] extension. The editor configuration folder can be found by " +"using [method EditorPaths.get_config_dir]." +msgstr "" +"从文件加载编辑器功能配置文件。该文件必须遵循使用功能配置文件管理器的[b]导出[/" +"b]按钮或 [method save_to_file] 方法获取的 JSON 格式。\n" +"[b]注意:[/b]通过用户界面创建的功能配置文件将从 [code]feature_profiles[/code] " +"目录中的扩展名为 [code].profile[/code] 的文件加载。可以使用 [method " +"EditorPaths.get_config_dir] 找到编辑器配置文件夹。" + +msgid "" +"Saves the editor feature profile to a file in JSON format. It can then be " +"imported using the feature profile manager's [b]Import[/b] button or the " +"[method load_from_file] method.\n" +"[b]Note:[/b] Feature profiles created via the user interface are saved in the " +"[code]feature_profiles[/code] directory, as a file with the [code].profile[/" +"code] extension. The editor configuration folder can be found by using " +"[method EditorPaths.get_config_dir]." +msgstr "" +"将编辑器功能配置文件保存到一个 JSON 格式的文件中。然后可以使用功能配置文件管理" +"器的[b]导入[/b]按钮或 [method load_from_file] 方法导入它。\n" +"[b]注意:[/b]通过用户界面创建的功能配置文件,将作为扩展名为 [code].profile[/" +"code] 的文件,保存在 [code]feature_profiles[/code] 目录中。可以使用 [method " +"EditorPaths.get_config_dir] 找到编辑器配置文件夹。" + msgid "" "If [param disable] is [code]true[/code], disables the class specified by " "[param class_name]. When disabled, the class won't appear in the Create New " @@ -36817,6 +39624,13 @@ msgstr "" "例如,[code]\"*.tscn, *.scn\"[/code] 的 [param filter] 和 [code]\"场景\"[/" "code] 的 [param description] 会产生过滤文本“场景 (* .tscn, *.scn)”。" +msgid "" +"Adds the given [param menu] to the side of the file dialog with the given " +"[param title] text on top. Only one side menu is allowed." +msgstr "" +"将给定的 [param menu] 添加到文件对话框的侧边,在顶部显示标题文本 [param " +"title]。仅支持一个侧边菜单。" + msgid "Removes all filters except for \"All Files (*)\"." msgstr "移除“All Files(*)”筛选器之外的所有筛选器。" @@ -36830,6 +39644,16 @@ msgstr "" "[b]警告:[/b]这是一个必需的内部节点,删除和释放它可能会导致崩溃。如果你希望隐" "藏它或其任何子项,请使用它们的 [member CanvasItem.visible] 属性。" +msgid "" +"Returns the [VBoxContainer] used to display the file system.\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 CanvasItem.visible] property." +msgstr "" +"返回用于显示文件系统的 [VBoxContainer]。\n" +"[b]警告:[/b]这是一个必需的内部节点,移除和释放它可能会导致崩溃。如果你想隐藏" +"它或它的任何子节点,请使用 [member CanvasItem.visible] 属性。" + msgid "" "Notify the [EditorFileDialog] that its view of the data is no longer " "accurate. Updates the view contents on next view update." @@ -37533,6 +40357,28 @@ msgstr "" "组。\n" "必须重写这个方法才能完成实际的导入工作。参阅本类的描述以了解如何重写该方法。" +msgid "" +"This function can only be called during the [method _import] callback and it " +"allows manually importing resources from it. This is useful when the imported " +"file generates external resources that require importing (as example, " +"images). Custom parameters for the \".import\" file can be passed via the " +"[param custom_options]. Additionally, in cases where multiple importers can " +"handle a file, the [param custom_importer] ca be specified to force a " +"specific one. This function performs a resource import and returns " +"immediately with a success or error code. [param generator_parameters] " +"defines optional extra metadata which will be stored as [code skip-" +"lint]generator_parameters[/code] in the [code]remap[/code] section of the " +"[code].import[/code] file, for example to store a md5 hash of the source data." +msgstr "" +"该函数只能在 [method _import] 回调期间调用,它允许从中手动导入资源。当导入的文" +"件生成需要导入的外部资源(例如图像)时,这很有用。“.import”文件的自定义参数可" +"以通过 [param custom_options] 传递。此外,在多个导入器可以处理一个文件的情况" +"下,可以指定 [param custom_importer] 以强制使用某个特定的导入器。该函数会执行" +"一次资源导入并立即返回成功或错误代码。[param generator_parameters] 定义可选的" +"额外元数据,这些元数据将作为 [code skip-lint]generator_parameters[/code] 存储" +"在 [code].import[/code] 文件的 [code]remap[/code] 小节中,例如存储源数据的一" +"个 md5 散列值。" + msgid "A control used to edit properties of an object." msgstr "用于编辑对象属性的控件。" @@ -37592,6 +40438,9 @@ msgstr "" "据分组创建的部分的名称进行首字母大写。因此,包含分组用法的属性通常使用首字母大" "写的名称,而不是 snake_case。" +msgid "Returns the object currently selected in this inspector." +msgstr "返回当前在该检查器中选择的对象。" + msgid "Gets the path of the currently selected property." msgstr "获取当前选定属性的路径。" @@ -37806,6 +40655,24 @@ msgstr "" "返回 [FileSystemDock] 中当前正在查看的目录。如果选择了一个文件,则将使用 " "[method String.get_base_dir] 返回其基本目录。" +msgid "" +"Returns the name of the currently activated feature profile. If the default " +"profile is currently active, an empty string is returned instead.\n" +"In order to get a reference to the [EditorFeatureProfile], you must load the " +"feature profile using [method EditorFeatureProfile.load_from_file].\n" +"[b]Note:[/b] Feature profiles created via the user interface are loaded from " +"the [code]feature_profiles[/code] directory, as a file with the [code]." +"profile[/code] extension. The editor configuration folder can be found by " +"using [method EditorPaths.get_config_dir]." +msgstr "" +"返回当前激活的功能配置文件的名称。如果默认配置文件当前处于活动状态,则返回空字" +"符串。\n" +"为了获取对 [EditorFeatureProfile] 的引用,你必须使用 [method " +"EditorFeatureProfile.load_from_file] 加载该功能配置文件。\n" +"[b]注意:[/b]通过用户界面创建的功能配置文件将从 [code]feature_profiles[/code] " +"目录中的扩展名为 [code].profile[/code] 的文件加载。可以使用 [method " +"EditorPaths.get_config_dir] 找到编辑器配置文件夹。" + msgid "Returns the current path being viewed in the [FileSystemDock]." msgstr "返回在 [FileSystemDock] 中查看的当前路径。" @@ -38009,11 +40876,48 @@ msgstr "" msgid "Saves all opened scenes in the editor." msgstr "保存编辑器中打开的所有场景。" +msgid "" +"Saves the currently active scene. Returns either [constant OK] or [constant " +"ERR_CANT_CREATE]." +msgstr "保存当前活动场景。返回 [constant OK] 或 [constant ERR_CANT_CREATE]。" + +msgid "Saves the currently active scene as a file at [param path]." +msgstr "将当前活动场景保存为 [param path] 处的文件。" + msgid "" "Selects the file, with the path provided by [param file], in the FileSystem " "dock." msgstr "在文件系统面板中选中文件,路径由 [param file] 提供。" +msgid "" +"Selects and activates the specified feature profile with the given [param " +"profile_name]. Set [param profile_name] to an empty string to reset to the " +"default feature profile.\n" +"A feature profile can be created programmatically using the " +"[EditorFeatureProfile] class.\n" +"[b]Note:[/b] The feature profile that gets activated must be located in the " +"[code]feature_profiles[/code] directory, as a file with the [code].profile[/" +"code] extension. If a profile could not be found, an error occurs. The editor " +"configuration folder can be found by using [method EditorPaths." +"get_config_dir]." +msgstr "" +"使用给定的 [param profile_name] 选择并激活指定的功能配置文件。将 [param " +"profile_name] 设置为空字符串以重置为默认功能配置文件。\n" +"可以使用 [EditorFeatureProfile] 类以编程方式创建功能配置文件。\n" +"[b]注意:[/b]激活的功能配置文件必须位于 [code]feature_profiles[/code] 目录中," +"且该文件的扩展名为 [code].profile[/code]。如果找不到配置文件,则会发生错误。可" +"以使用 [method EditorPaths.get_config_dir] 找到编辑器配置文件夹。" + +msgid "" +"Sets the editor's current main screen to the one specified in [param name]. " +"[param name] must match the title of the tab in question exactly (e.g. " +"[code]2D[/code], [code]3D[/code], [code skip-lint]Script[/code], or " +"[code]AssetLib[/code] for default tabs)." +msgstr "" +"将编辑器的当前主屏幕设置为 [param name] 中指定的屏幕。[param name] 必须与相关" +"选项卡的文本完全匹配([code]2D[/code]、[code]3D[/code]、[code skip-" +"lint]Script[/code]、[code]AssetLib[/code])。" + msgid "" "Sets the enabled status of a plugin. The plugin name is the same as its " "directory name." @@ -38036,6 +40940,19 @@ msgstr "" "如果为 [code]true[/code],则编辑器启用了 Movie Maker 模式。详见 " "[MovieWriter]。" +msgid "Gizmo for editing [Node3D] objects." +msgstr "用于编辑 [Node3D] 对象的小工具。" + +msgid "" +"Gizmo that is used for providing custom visualization and editing (handles " +"and subgizmos) for [Node3D] objects. Can be overridden to create custom " +"gizmos, but for simple gizmos creating a [EditorNode3DGizmoPlugin] is usually " +"recommended." +msgstr "" +"小工具可用于为 [Node3D] 对象提供自定义可视化和编辑功能(控柄和子小工具)。可以" +"被重写以创建自定义小工具,但对于简单的小工具而言,通常建议创建 " +"[EditorNode3DGizmoPlugin]。" + msgid "" "Override this method to commit a handle being edited (handles must have been " "previously added by [method add_handles]). This usually means creating an " @@ -38134,6 +41051,32 @@ msgstr "" "当编辑的控柄是次要控柄时,[param secondary] 参数为 [code]true[/code](有关更多" "信息,请参阅 [method add_handles])。" +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 "" +"Override this method to allow selecting subgizmos using mouse drag box " +"selection. Given a [param camera] and a [param frustum], this method should " +"return which subgizmos are contained within the frustum. The [param frustum] " +"argument consists of an array with all the [Plane]s that make up the " +"selection frustum. The returned value should contain a list of unique " +"subgizmo identifiers, which can have any non-negative value and will be used " +"in other virtual methods like [method _get_subgizmo_transform] or [method " +"_commit_subgizmos]." +msgstr "" +"覆盖该方法,以允许使用鼠标拖动框选来选择子小工具。给定一个 [param camera] 和一" +"个 [param frustum],这个方法应该返回哪些子小工具包含在锥体中。[param frustum] " +"参数由一个数组组成,其中包含构成选择锥体的所有 [Plane]。返回的值应该包含一个唯" +"一的子小工具标识符列表,它可以有任何非负值,并将用于其他虚方法,如 [method " +"_get_subgizmo_transform] 或 [method _commit_subgizmos]。" + msgid "" "Override this method to allow selecting subgizmos using mouse clicks. Given a " "[param camera] and a [param point] in screen coordinates, this method should " @@ -38161,6 +41104,29 @@ msgstr "" "将碰撞三角形添加到小工具以进行拾取。[TriangleMesh] 也可以从常规 [Mesh] 生成。" "在 [method _redraw] 期间调用该方法。" +msgid "" +"Adds a list of handles (points) which can be used to edit the properties of " +"the gizmo's [Node3D]. The [param ids] argument can be used to specify a " +"custom identifier for each handle, if an empty array is passed, the ids will " +"be assigned automatically from the [param handles] argument order.\n" +"The [param secondary] argument marks the added handles as secondary, meaning " +"they will normally have lower selection priority than regular handles. When " +"the user is holding the shift key secondary handles will switch to have " +"higher priority than regular handles. This change in priority can be used to " +"place multiple handles at the same point while still giving the user control " +"on their selection.\n" +"There are virtual methods which will be called upon editing of these handles. " +"Call this method during [method _redraw]." +msgstr "" +"添加可用于编辑该小工具的 [Node3D] 属性的一组控柄(点)。[param ids] 参数可用于" +"为每个控柄指定一个自定义的标识符,如果传递了一个空的数组,id 将按照 [param " +"handles] 参数顺序自动分配。\n" +"[param secondary] 参数将添加的控柄标记为次要控柄,这意味着它们通常比普通控柄具" +"有更低的选择优先级。当用户按住 Shift 键时,次要控柄将被切换为比普通控柄具有更" +"高的优先级。这种优先级的变化可用于在同一点放置多个控柄,同时仍让用户控制他们的" +"选择。\n" +"这些虚方法将在编辑这些控柄时被调用。在 [method _redraw] 期间将调用该方法。" + 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 " @@ -38413,6 +41379,23 @@ msgstr "" "_subgizmos_intersect_ray] 和 [method _subgizmos_intersect_frustum])。[param " "transform] 在 Node3D 的局部坐标系中给出。为该插件的活动小工具而调用。" +msgid "" +"Override this method to allow selecting subgizmos using mouse drag box " +"selection. Given a [param camera] and [param frustum_planes], this method " +"should return which subgizmos are contained within the frustums. The [param " +"frustum_planes] argument consists of an array with all the [Plane]s that make " +"up the selection frustum. The returned value should contain a list of unique " +"subgizmo identifiers, these identifiers can have any non-negative value and " +"will be used in other virtual methods like [method _get_subgizmo_transform] " +"or [method _commit_subgizmos]. Called for this plugin's active gizmos." +msgstr "" +"覆盖该方法,以允许使用鼠标拖动框选来选择子小工具。给定一个 [param camera] 和 " +"[param frustum_planes],该方法应返回哪些子小工具包含在视锥体中。[param " +"frustum_planes] 参数由一个构成选择视锥体的所有 [Plane] 的数组组成。返回的值应" +"该包含一个唯一的子小工具标识符列表,这些标识符可以有任何非负值,并将用于其他虚" +"方法,如 [method _get_subgizmo_transform] 或 [method _commit_subgizmos]。为该" +"插件的活动小工具而调用。" + msgid "" "Override this method to allow selecting subgizmos using mouse clicks. Given a " "[param camera] and a [param screen_pos] in screen coordinates, this method " @@ -38621,6 +41604,21 @@ msgstr "" msgid "Used by the editor to extend its functionality." msgstr "由编辑器使用,用于扩展其功能。" +msgid "" +"Plugins are used by the editor to extend functionality. The most common types " +"of plugins are those which edit a given node or resource type, import plugins " +"and export plugins. See also [EditorScript] to add functions to the editor.\n" +"[b]Note:[/b] Some names in this class contain \"left\" or \"right\" (e.g. " +"[constant DOCK_SLOT_LEFT_UL]). These APIs assume left-to-right layout, and " +"would be backwards when using right-to-left layout. These names are kept for " +"compatibility reasons." +msgstr "" +"编辑器使用插件来扩展功能。最常见的插件类型是编辑给定的节点或资源类型的插件、导" +"入插件和导出插件。另见 [EditorScript],能够向编辑器添加功能。\n" +"[b]注意:[/b]这个类中的部分名称中包含“left”和“right”(例如 [constant " +"DOCK_SLOT_LEFT_UL])。这些 API 假设的是从左至右的布局,使用从右至左布局时是反" +"的。保留这些名称是出于兼容的原因。" + msgid "Editor plugins documentation index" msgstr "编辑器插件文档索引" @@ -39025,6 +42023,61 @@ msgstr "" "该函数用于编辑基于脚本的对象的编辑器。可以返回格式为([code]script:line[/" "code])的断点的列表,例如:[code]res://path_to_script.gd:25[/code]。" +msgid "" +"Override this method in your plugin to return a [Texture2D] in order to give " +"it an icon.\n" +"For main screen plugins, this appears at the top of the screen, to the right " +"of the \"2D\", \"3D\", \"Script\", and \"AssetLib\" buttons.\n" +"Ideally, the plugin icon should be white with a transparent background and " +"16x16 pixels in size.\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _get_plugin_icon():\n" +" # You can use a custom icon:\n" +" return preload(\"res://addons/my_plugin/my_plugin_icon.svg\")\n" +" # Or use a built-in icon:\n" +" return EditorInterface.get_editor_theme().get_icon(\"Node\", " +"\"EditorIcons\")\n" +"[/gdscript]\n" +"[csharp]\n" +"public override Texture2D _GetPluginIcon()\n" +"{\n" +" // You can use a custom icon:\n" +" return ResourceLoader.Load(\"res://addons/my_plugin/" +"my_plugin_icon.svg\");\n" +" // Or use a built-in icon:\n" +" return EditorInterface.Singleton.GetEditorTheme().GetIcon(\"Node\", " +"\"EditorIcons\");\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"在插件中覆盖该方法,以返回一个 [Texture2D] 以便为插件提供一个图标。\n" +"对于主界面插件,它出现在屏幕顶部,“2D”、“3D”、“脚本”和 “AssetLib” 按钮的右" +"侧。\n" +"理想情况下,插件图标应为透明背景的白色,大小为 16x16 像素。\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _get_plugin_icon():\n" +" # 你可以使用一个自定义的图标:\n" +" return preload(\"res://addons/my_plugin/my_plugin_icon.svg\")\n" +" # 或者使用一个内置的图标:\n" +" return EditorInterface.get_editor_theme().get_icon(\"Node\", " +"\"EditorIcons\")\n" +"[/gdscript]\n" +"[csharp]\n" +"public override Texture2D _GetPluginIcon()\n" +"{\n" +" // 你可以使用一个自定义的图标:\n" +" return ResourceLoader.Load(\"res://addons/my_plugin/" +"my_plugin_icon.svg\");\n" +" // 或者使用一个内置的图标:\n" +" return EditorInterface.Singleton.GetEditorTheme().GetIcon(\"Node\", " +"\"EditorIcons\");\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" + msgid "" "Override this method in your plugin to provide the name of the plugin when " "displayed in the Godot editor.\n" @@ -39067,6 +42120,64 @@ msgstr "" " return state\n" "[/codeblock]" +msgid "" +"Override this method to provide a custom message that lists unsaved changes. " +"The editor will call this method when exiting or when closing a scene, and " +"display the returned string in a confirmation dialog. Return empty string if " +"the plugin has no unsaved changes.\n" +"When closing a scene, [param for_scene] is the path to the scene being " +"closed. You can use it to handle built-in resources in that scene.\n" +"If the user confirms saving, [method _save_external_data] will be called, " +"before closing the editor.\n" +"[codeblock]\n" +"func _get_unsaved_status(for_scene):\n" +" if not unsaved:\n" +" return \"\"\n" +"\n" +" if for_scene.is_empty():\n" +" return \"Save changes in MyCustomPlugin before closing?\"\n" +" else:\n" +" return \"Scene %s has changes from MyCustomPlugin. Save before " +"closing?\" % for_scene.get_file()\n" +"\n" +"func _save_external_data():\n" +" unsaved = false\n" +"[/codeblock]\n" +"If the plugin has no scene-specific changes, you can ignore the calls when " +"closing scenes:\n" +"[codeblock]\n" +"func _get_unsaved_status(for_scene):\n" +" if not for_scene.is_empty():\n" +" return \"\"\n" +"[/codeblock]" +msgstr "" +"覆盖该方法以提供列出未保存更改的自定义消息。编辑器将在退出或关闭场景时调用该方" +"法,并在确认对话框中显示返回的字符串。如果该插件没有未保存的更改,则返回空字符" +"串。\n" +"关闭场景时,[param for_scene] 是正在关闭的场景的路径。你可以使用它来处理该场景" +"中的内置资源。\n" +"如果用户确认保存,将在关闭编辑器之前将调用 [method _save_external_data]。\n" +"[codeblock]\n" +"func _get_unsaved_status(for_scene):\n" +" if not unsaved:\n" +" return \"\"\n" +"\n" +" if for_scene.is_empty():\n" +" return \"Save changes in MyCustomPlugin before closing?\"\n" +" else:\n" +" return \"Scene %s has changes from MyCustomPlugin. Save before " +"closing?\" % for_scene.get_file()\n" +"\n" +"func _save_external_data():\n" +" unsaved = false\n" +"[/codeblock]\n" +"如果该插件没有特定于场景的更改,则可以在关闭场景时忽略这些调用:\n" +"[codeblock]\n" +"func _get_unsaved_status(for_scene):\n" +" if not for_scene.is_empty():\n" +" return \"\"\n" +"[/codeblock]" + msgid "" "Override this method to provide the GUI layout of the plugin or any other " "data you want to be stored. This is used to save the project's editor layout " @@ -39093,6 +42204,85 @@ msgstr "" " configuration.set_value(\"MyPlugin\", \"icon_color\", $Icon.modulate)\n" "[/codeblock]" +msgid "" +"Implement this function if your plugin edits a specific type of object " +"(Resource or Node). If you return [code]true[/code], then you will get the " +"functions [method _edit] and [method _make_visible] called when the editor " +"requests them. If you have declared the methods [method " +"_forward_canvas_gui_input] and [method _forward_3d_gui_input] these will be " +"called too.\n" +"[b]Note:[/b] Each plugin should handle only one type of objects at a time. If " +"a plugin handes more types of objects and they are edited at the same time, " +"it will result in errors." +msgstr "" +"如果插件会编辑特定类型的对象(资源或节点),则请实现该函数。如果返回 " +"[code]true[/code],则将在编辑器请求时,调用函数 [method _edit] 和 [method " +"_make_visible]。如果已经声明了方法 [method _forward_canvas_gui_input] 和 " +"[method _forward_3d_gui_input],则它们也会被调用。\n" +"[b]注意:[/b]每个插件一次只应处理一种类型的对象。如果一个插件处理多种类型的对" +"象并且同时编辑这些对象,则会导致错误。" + +msgid "" +"Returns [code]true[/code] if this is a main screen editor plugin (it goes in " +"the workspace selector together with [b]2D[/b], [b]3D[/b], [b]Script[/b] and " +"[b]AssetLib[/b]).\n" +"When the plugin's workspace is selected, other main screen plugins will be " +"hidden, but your plugin will not appear automatically. It needs to be added " +"as a child of [method EditorInterface.get_base_control] and made visible " +"inside [method _make_visible].\n" +"Use [method _get_plugin_name] and [method _get_plugin_icon] to customize the " +"plugin button's appearance.\n" +"[codeblock]\n" +"var plugin_control\n" +"\n" +"func _enter_tree():\n" +" plugin_control = preload(\"my_plugin_control.tscn\").instantiate()\n" +" EditorInterface.get_editor_main_screen().add_child(plugin_control)\n" +" plugin_control.hide()\n" +"\n" +"func _has_main_screen():\n" +" return true\n" +"\n" +"func _make_visible(visible):\n" +" plugin_control.visible = visible\n" +"\n" +"func _get_plugin_name():\n" +" return \"My Super Cool Plugin 3000\"\n" +"\n" +"func _get_plugin_icon():\n" +" return EditorInterface.get_editor_theme().get_icon(\"Node\", " +"\"EditorIcons\")\n" +"[/codeblock]" +msgstr "" +"如果这是一个主屏幕编辑器插件,则返回 [code]true[/code](它与 [b]2D[/b]、" +"[b]3D[/b]、[b]Script[/b] 和 [b]AssetLib[/b] 一起进入工作区选择器)。\n" +"当该插件的工作区被选中时,其他主屏幕插件将被隐藏,但你的插件不会自动出现。它需" +"要被添加为 [method EditorInterface.get_base_control] 的子节点,并在 [method " +"_make_visible] 中使其可见。\n" +"使用 [method _get_plugin_name] 和 [method _get_plugin_icon] 自定义插件按钮的外" +"观。\n" +"[codeblock]\n" +"var plugin_control\n" +"\n" +"func _enter_tree():\n" +" plugin_control = preload(\"my_plugin_control.tscn\").instantiate()\n" +" EditorInterface.get_editor_main_screen().add_child(plugin_control)\n" +" plugin_control.hide()\n" +"\n" +"func _has_main_screen():\n" +" return true\n" +"\n" +"func _make_visible(visible):\n" +" plugin_control.visible = visible\n" +"\n" +"func _get_plugin_name():\n" +" return \"My Super Cool Plugin 3000\"\n" +"\n" +"func _get_plugin_icon():\n" +" return EditorInterface.get_editor_theme().get_icon(\"Node\", " +"\"EditorIcons\")\n" +"[/codeblock]" + msgid "" "This function will be called when the editor is requested to become visible. " "It is used for plugins that edit a specific object type.\n" @@ -39344,6 +42534,14 @@ msgstr "" "在[b]项目 > 工具[/b]中添加名为 [param name] 的自定义菜单项。点击时会调用所提供" "的 [param callable]。" +msgid "" +"Adds a custom [PopupMenu] submenu under [b]Project > Tools >[/b] [param " +"name]. Use [method remove_tool_menu_item] on plugin clean up to remove the " +"menu." +msgstr "" +"在[b]项目 > 工具[/b]中添加名为 [param name] 的自定义 [PopupMenu] 子菜单。请在" +"清理插件时调用 [method remove_tool_menu_item] 移除该菜单。" + msgid "" "Registers a custom translation parser plugin for extracting translatable " "strings from custom files." @@ -39366,9 +42564,22 @@ msgstr "" "[code]new_value[/code]。它们分别是检查器使用的 [UndoRedo] 对象、当前修改的对" "象、修改的属性的名称、和该属性即将采用的新值。" +msgid "" +"Returns the [EditorInterface] singleton instance.\n" +"[i]Deprecated.[/i] [EditorInterface] is a global singleton and can be " +"accessed directly by its name." +msgstr "" +"返回 [EditorInterface] 单例实例。\n" +"[i]已废弃。[/i][EditorInterface] 是全局单例,可以使用其名称直接访问。" + msgid "Returns the [PopupMenu] under [b]Scene > Export As...[/b]." msgstr "返回[b]场景 > 另存为...[/b]下的 [PopupMenu]。" +msgid "" +"Provide the version of the plugin declared in the [code]plugin.cfg[/code] " +"config file." +msgstr "提供在 [code]plugin.cfg[/code] 配置文件中声明的插件版本。" + msgid "" "Gets the Editor's dialog used for making scripts.\n" "[b]Note:[/b] Users can configure it before use.\n" @@ -39505,6 +42716,13 @@ msgstr "" "当用户改变工作空间([b]2D[/b]、[b]3D[/b]、[b]Script[/b]、[b]AssetLib[/b])时发" "出。也适用于由插件定义的自定义屏幕。" +msgid "" +"Emitted when any project setting has changed.\n" +"[i]Deprecated.[/i] Use [signal ProjectSettings.settings_changed] instead." +msgstr "" +"当任意项目设置发生改变时发出。\n" +"[i]已废弃。[/i]请改用 [signal ProjectSettings.settings_changed]。" + msgid "Emitted when the given [param resource] was saved on disc." msgstr "给定的资源 [param resource] 保存到磁盘时发出。" @@ -40068,6 +43286,51 @@ msgid "" msgstr "" "如果插件要处理给定的 [Resource] 类型 [param type],则返回 [code]true[/code]。" +msgid "" +"Create and return a tooltip that will be displayed when the user hovers a " +"resource under the given [param path] in filesystem dock.\n" +"The [param metadata] dictionary is provided by preview generator (see [method " +"EditorResourcePreviewGenerator._generate]).\n" +"[param base] is the base default tooltip, which is a [VBoxContainer] with a " +"file name, type and size labels. If another plugin handled the same file " +"type, [param base] will be output from the previous plugin. For best result, " +"make sure the base tooltip is part of the returned [Control].\n" +"[b]Note:[/b] It's unadvised to use [method ResourceLoader.load], especially " +"with heavy resources like models or textures, because it will make the editor " +"unresponsive when creating the tooltip. You can use [method " +"request_thumbnail] if you want to display a preview in your tooltip.\n" +"[b]Note:[/b] If you decide to discard the [param base], make sure to call " +"[method Node.queue_free], because it's not freed automatically.\n" +"[codeblock]\n" +"func _make_tooltip_for_path(path, metadata, base):\n" +" var t_rect = TextureRect.new()\n" +" request_thumbnail(path, t_rect)\n" +" base.add_child(t_rect) # The TextureRect will appear at the bottom of the " +"tooltip.\n" +" return base\n" +"[/codeblock]" +msgstr "" +"创建并返回工具提示,会在用户悬停在文件系统面板上路径为 [param path] 的资源上时" +"显示。\n" +"元数据字典 [param metadata] 由预览生成器提供(见 [method " +"EditorResourcePreviewGenerator._generate])。\n" +"[param base] 是基础的默认工具提示,是一个包含文件名、类型、大小标签的 " +"[VBoxContainer]。如果其他插件也能够处理相同的文件类型,那么 [param base] 就是" +"上一个插件的输出。为了达到最佳效果,请确保基础工具提示是返回的 [Control] 的一" +"部分。\n" +"[b]注意:[/b]不建议使用 [method ResourceLoader.load],尤其是模型、纹理等开销较" +"大的资源,否则会在创建工具提示时让编辑器失去响应。如果想要在工具提示中显示预" +"览,可以使用 [method request_thumbnail]。\n" +"[b]注意:[/b]如果你决定要丢弃 [param base],请确保调用了 [method Node." +"queue_free],否则不会自动释放。\n" +"[codeblock]\n" +"func _make_tooltip_for_path(path, metadata, base):\n" +" var t_rect = TextureRect.new()\n" +" request_thumbnail(path, t_rect)\n" +" base.add_child(t_rect) # TextureRect 会出现在工具提示的底部。\n" +" return base\n" +"[/codeblock]" + msgid "" "Requests a thumbnail for the given [TextureRect]. The thumbnail is created " "asynchronously by [EditorResourcePreview] and automatically set when " @@ -40243,6 +43506,9 @@ msgstr "" "[/csharp]\n" "[/codeblocks]" +msgid "Importing 3D scenes: Configuration: Using import scripts for automation" +msgstr "导入 3D 场景:配置:使用导入脚本进行自动化" + msgid "" "Called after the scene was imported. This method must return the modified " "version of the scene." @@ -40478,6 +43744,71 @@ msgstr "更改选择时发出。" msgid "Object that holds the project-independent editor settings." msgstr "保存编辑器设置的对象,这些设置与项目无关。" +msgid "" +"Object that holds the project-independent editor settings. These settings are " +"generally visible in the [b]Editor > Editor Settings[/b] menu.\n" +"Property names use slash delimiters to distinguish sections. Setting values " +"can be of any [Variant] type. It's recommended to use [code]snake_case[/code] " +"for editor settings to be consistent with the Godot editor itself.\n" +"Accessing the settings can be done using the following methods, such as:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var settings = EditorInterface.get_editor_settings()\n" +"# `settings.set(\"some/property\", 10)` also works as this class overrides " +"`_set()` internally.\n" +"settings.set_setting(\"some/property\", 10)\n" +"# `settings.get(\"some/property\")` also works as this class overrides " +"`_get()` internally.\n" +"settings.get_setting(\"some/property\")\n" +"var list_of_settings = settings.get_property_list()\n" +"[/gdscript]\n" +"[csharp]\n" +"EditorSettings settings = EditorInterface.Singleton.GetEditorSettings();\n" +"// `settings.set(\"some/property\", value)` also works as this class " +"overrides `_set()` internally.\n" +"settings.SetSetting(\"some/property\", Value);\n" +"// `settings.get(\"some/property\", value)` also works as this class " +"overrides `_get()` internally.\n" +"settings.GetSetting(\"some/property\");\n" +"Godot.Collections.Array listOfSettings = " +"settings.GetPropertyList();\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Note:[/b] This class shouldn't be instantiated directly. Instead, access " +"the singleton using [method EditorInterface.get_editor_settings]." +msgstr "" +"保存编辑器设置的对象,这些设置与项目无关,通常在[b]编辑器 > 编辑器设置[/b]菜单" +"中可见。\n" +"属性名称中使用斜线分隔符来区分不同的部分。设置的值可以是任何 [Variant] 类型。" +"编辑器设置的名称建议使用 [code]snake_case[/code] 形式,与 Godot 编辑器本身保持" +"一致。\n" +"可以使用以下方法访问设置,例如:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var settings = EditorInterface.get_editor_settings()\n" +"# 也可以写 `settings.set(\"some/property\", 10)`,因为这个类内部覆盖了 " +"`_set()`。\n" +"settings.set_setting(\"some/property\", 10)\n" +"# 也可以写 `settings.get(\"some/property\")` ,因为这个类内部覆盖了 " +"`_get()`。\n" +"settings.get_setting(\"some/property\")\n" +"var list_of_settings = settings.get_property_list()\n" +"[/gdscript]\n" +"[csharp]\n" +"EditorSettings settings = EditorInterface.Singleton.GetEditorSettings();\n" +"// 也可以写 `settings.set(\"some/property\", 10)`,因为这个类内部覆盖了 " +"`_set()`。\n" +"settings.SetSetting(\"some/property\", Value);\n" +"// 也可以写 `settings.get(\"some/property\")` ,因为这个类内部覆盖了 " +"`_get()`。\n" +"settings.GetSetting(\"some/property\");\n" +"Godot.Collections.Array listOfSettings = " +"settings.GetPropertyList();\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]注意:[/b]不能直接实例化这个类。请改用 [method EditorInterface." +"get_editor_settings] 访问单例。" + msgid "" "Adds a custom property info to a property. The dictionary must contain:\n" "- [code]name[/code]: [String] (the name of the property)\n" @@ -40780,6 +44111,17 @@ msgstr "" "2D 骨架编辑器中,用于未选中骨骼的轮廓颜色。另见 [member editors/2d/" "bone_selected_color]。" +msgid "" +"The outline size in the 2D skeleton editor (in pixels). See also [member " +"editors/2d/bone_width].\n" +"[b]Note:[/b] Changes to this value only apply after modifying a [Bone2D] node " +"in any way, or closing and reopening the scene." +msgstr "" +"2D 骨架编辑器中轮廓的大小(单位为像素)。另见 [member editors/2d/" +"bone_width]。\n" +"[b]注意:[/b]对此值的更改只有在以任何方式修改 [Bone2D] 节点,或者关闭并重新打" +"开场景后才会生效。" + msgid "" "The color to use for selected bones in the 2D skeleton editor. See also " "[member editors/2d/bone_outline_color]." @@ -40787,6 +44129,17 @@ msgstr "" "2D 骨架编辑器中,用于已选中骨骼的颜色。另见 [member editors/2d/" "bone_outline_color]。" +msgid "" +"The bone width in the 2D skeleton editor (in pixels). See also [member " +"editors/2d/bone_outline_size].\n" +"[b]Note:[/b] Changes to this value only apply after modifying a [Bone2D] node " +"in any way, or closing and reopening the scene." +msgstr "" +"2D 骨架编辑器中的骨骼宽度(单位为像素)。另见 [member editors/2d/" +"bone_outline_size]。\n" +"[b]注意:[/b]对此值的更改只有在以任何方式修改 [Bone2D] 节点,或者关闭并重新打" +"开场景后才会生效。" + msgid "The grid color to use in the 2D editor." msgstr "2D 编辑器使用的栅格颜色。" @@ -40804,6 +44157,15 @@ msgstr "" "在 2D 编辑器中,绘制智能吸附线时使用的颜色。如果在 2D 编辑器视口顶部的“吸附选" "项”菜单中启用智能吸附,则移动 2D 节点时智能吸附线将自动显示。" +msgid "" +"If [code]true[/code], the 2D editor will snap to integer zoom values while " +"not holding the [kbd]Alt[/kbd] key and powers of two while holding it. If " +"[code]false[/code], this behavior is swapped." +msgstr "" +"如果为 [code]true[/code],2D 编辑器将在不按住 [kbd]Alt[/kbd] 键的情况下吸附到" +"整数缩放值,并在按住时吸附到 2 的幂。如果为 [code]false[/code],则交换这种行" +"为。" + msgid "" "The color of the viewport border in the 2D editor. This border represents the " "viewport's size at the base resolution defined in the Project Settings. " @@ -41455,6 +44817,24 @@ msgstr "" "要为指定项目启用这个功能,请使用 [member ProjectSettings.filesystem/import/" "blender/enabled]。" +msgid "" +"The port number used for Remote Procedure Call (RPC) communication with " +"Godot's created process of the blender executable.\n" +"Setting this to 0 effectively disables communication with Godot and the " +"blender process, making performance slower." +msgstr "" +"用于与 Godot 创建的 Blender 可执行文件进程进行远程过程调用(RPC)通信的端口" +"号。\n" +"将其设置为 0 会有效禁用与 Godot 的通信和 Blender 进程,从而降低性能。" + +msgid "" +"The maximum idle uptime (in seconds) of the Blender process.\n" +"This prevents Godot from having to create a new process for each import " +"within the given seconds." +msgstr "" +"Blender 进程的最大空闲运行时间(单位为秒)。\n" +"能够在给定的秒数内,防止 Godot 每次导入都创建一个新的进程。" + msgid "" "The path to the FBX2glTF executable used for converting Autodesk FBX 3D scene " "files [code].fbx[/code] to glTF 2.0 format during import.\n" @@ -41485,6 +44865,20 @@ msgstr "" "[b]注意:[/b]在 Windows 上,该功能可能会与某些防病毒程序产生负面的交互。在这种" "情况下,可能必须将其设置为 [code]false[/code],以防止出现文件锁定问题。" +msgid "" +"The path to the directory containing the Open Image Denoise (OIDN) " +"executable, used optionally for denoising lightmaps. It can be downloaded " +"from [url=https://www.openimagedenoise.org/downloads.html]openimagedenoise." +"org[/url].\n" +"To enable this feature for your specific project, use [member ProjectSettings." +"rendering/lightmapping/denoising/denoiser]." +msgstr "" +"包含开放图像去噪(OIDN)可执行文件的目录路径,可选择用于去噪光照贴图。它可以" +"从 [url=https://www.openimagedenoise.org/downloads.html]openimagedenoise.org[/" +"url] 下载。\n" +"要为特定项目启用该功能,请使用 [member ProjectSettings.rendering/lightmapping/" +"denoising/denoiser]。" + msgid "" "How to position the Cancel and OK buttons in the editor's [AcceptDialog]s. " "Different platforms have different standard behaviors for this, which can be " @@ -42405,6 +45799,23 @@ msgid "" "displayed when the user stops typing." msgstr "用户停止输入后,应显示自动补全建议的延迟时间(以秒为单位)。" +msgid "" +"If [code]true[/code], code completion will be triggered automatically after " +"[member text_editor/completion/code_complete_delay]. If [code]false[/code], " +"you can still trigger completion manually by pressing [kbd]Ctrl + Space[/kbd] " +"([kbd]Cmd + Space[/kbd] on macOS)." +msgstr "" +"如果为 [code]true[/code],代码补全将在 [member text_editor/completion/" +"code_complete_delay] 之后自动触发。如果为 [code]false[/code],你仍然可以通过" +"按 [kbd]Ctrl + Space[/kbd](在 macOS 上为 [kbd]Cmd + Space[/kbd])手动触发补" +"全。" + +msgid "" +"If [code]true[/code] enables the coloring for some items in the " +"autocompletion suggestions, like vector components." +msgstr "" +"如果为 [code]true[/code],则启用自动补全建议中某些项目的着色,例如向量分量。" + msgid "" "If [code]true[/code], provides autocompletion suggestions for file paths in " "methods such as [code]load()[/code] and [code]preload()[/code]." @@ -42597,6 +46008,14 @@ msgstr "" "显示在其他的行颜色修饰之上,例如 [member text_editor/theme/highlighting/" "mark_color]。" +msgid "" +"The script editor's documentation comment color. In GDScript, this is used " +"for comments starting with [code]##[/code]. In C#, this is used for comments " +"starting with [code]///[/code] or [code]/**[/code]." +msgstr "" +"脚本编辑器的文档注释颜色。在 GDScript 中,这被用于以 [code]##[/code] 开头的注" +"释。在 C# 中,这被用于以 [code]///[/code] 或 [code]/**[/code] 开头的注释。" + msgid "" "The script editor's engine type color ([Vector2], [Vector3], [Color], ...)." msgstr "脚本编辑器中,引擎类型的颜色([Vector2]、[Vector3]、[Color]……)。" @@ -42606,6 +46025,10 @@ msgid "" "in the gutter)." msgstr "脚本编辑器中,调试器执行行图标(显示在装订线中)的颜色。" +msgid "" +"The script editor's background line highlighting color for folded code region." +msgstr "脚本编辑器的背景行高亮颜色,用于折叠代码区块。" + msgid "" "The script editor's function call color.\n" "[b]Note:[/b] When using the GDScript syntax highlighter, this is replaced by " @@ -42732,9 +46155,26 @@ msgstr "" msgid "Godot editor's control for editing numeric values." msgstr "Godot 编辑器用于编辑数值的控件。" +msgid "" +"This [Control] node is used in the editor's Inspector dock to allow editing " +"of numeric values. Can be used with [EditorInspectorPlugin] to recreate the " +"same behavior.\n" +"If the [member Range.step] value is [code]1[/code], the [EditorSpinSlider] " +"will display up/down arrows, similar to [SpinBox]. If the [member Range.step] " +"value is not [code]1[/code], a slider will be displayed instead." +msgstr "" +"这个 [Control] 节点在编辑器的检查器面板中使用,允许编辑数值。可以与 " +"[EditorInspectorPlugin] 一起使用,以重新创建相同的行为。\n" +"如果 [member Range.step] 值为 [code]1[/code],则 [EditorSpinSlider] 将显示向" +"上/向下箭头,类似于 [SpinBox]。如果 [member Range.step] 值不是 [code]1[/" +"code],则会显示一个滑块。" + msgid "If [code]true[/code], the slider will not draw background." msgstr "如果为 [code]true[/code],则滑块不会绘制背景。" +msgid "If [code]true[/code], the slider and up/down arrows are hidden." +msgstr "如果为 [code]true[/code],则隐藏滑块和向上/向下箭头。" + msgid "The text that displays to the left of the value." msgstr "在值的左侧显示的文本。" @@ -43444,6 +46884,13 @@ msgid "" "a file." msgstr "辅助函数,用于创建被编辑器用来读取文件状态的 [Dictionary]。" +msgid "" +"Pops up an error message in the editor which is shown as coming from the " +"underlying VCS. Use this to show VCS specific error messages." +msgstr "" +"在编辑器中弹出一条错误消息,显示为来自底层 VCS。使用它来显示 VCS 特定的错误消" +"息。" + msgid "A new file has been added." msgstr "添加了新文件。" @@ -43738,6 +47185,14 @@ msgstr "" "成时,生成该事件。该数组将包含断开连接的对等体。数据字段包含用户提供的描述断开" "连接的数据,如果没有可用的数据,则为 0。" +msgid "" +"A packet has been received from a peer. The array will contain the peer which " +"sent the packet and the channel number upon which the packet was received. " +"The received packet will be queued to the associated [ENetPacketPeer]." +msgstr "" +"已从对等体接收到一个数据包。该数组将包含发送数据包的对等体和接收数据包的通道" +"号。接收到的数据包将被排队到关联的 [ENetPacketPeer]。" + msgid "Total data sent." msgstr "发送数据的总数。" @@ -44927,6 +48382,30 @@ msgstr "" "都依赖于前一个级别。这意味着启用较高的辉光等级会减慢辉光效果的渲染速度,即使之" "前的等级没有启用。" +msgid "" +"The global brightness value of the rendered scene. Effective only if [member " +"adjustment_enabled] is [code]true[/code]." +msgstr "" +"渲染场景的全局亮度值。只有当 [member adjustment_enabled] 为 [code]true[/code] " +"时才有效。" + +msgid "" +"The [Texture2D] or [Texture3D] lookup table (LUT) to use for the built-in " +"post-process color grading. Can use a [GradientTexture1D] for a 1-dimensional " +"LUT, or a [Texture3D] for a more complex LUT. Effective only if [member " +"adjustment_enabled] is [code]true[/code]." +msgstr "" +"用于内置后处理颜色分级的 [Texture2D] 或 [Texture3D] 查找表(LUT)。可以将 " +"[GradientTexture1D] 用于一维 LUT,或将 [Texture3D] 用于更复杂的 LUT。仅当 " +"[member adjustment_enabled] 为 [code]true[/code] 时有效。" + +msgid "" +"The global contrast value of the rendered scene (default value is 1). " +"Effective only if [member adjustment_enabled] is [code]true[/code]." +msgstr "" +"渲染场景的全局对比度值(默认值为 1)。只有当 [member adjustment_enabled] 为 " +"[code]true[/code] 时才有效。" + msgid "" "If [code]true[/code], enables the [code]adjustment_*[/code] properties " "provided by this resource. If [code]false[/code], modifications to the " @@ -44940,6 +48419,13 @@ msgstr "" "染场景产生影响。\n" "[b]注意:[/b]调整仅支持 Forward+ 和 Mobile 渲染方式,不支持 Compatibility。" +msgid "" +"The global color saturation value of the rendered scene (default value is 1). " +"Effective only if [member adjustment_enabled] is [code]true[/code]." +msgstr "" +"渲染场景的全局色彩饱和度值(默认值为 1)。只有在 [member adjustment_enabled] " +"为 [code]true[/code] 时才有效。" + msgid "" "The ambient light's [Color]. Only effective if [member " "ambient_light_sky_contribution] is lower than [code]1.0[/code] (exclusive)." @@ -46027,6 +49513,19 @@ msgstr "" msgid "Generates noise using the FastNoiseLite library." msgstr "使用 FastNoiseLite 库生成噪声。" +msgid "" +"This class generates noise using the FastNoiseLite library, which is a " +"collection of several noise algorithms including Cellular, Perlin, Value, and " +"more.\n" +"Most generated noise values are in the range of [code][-1, 1][/code], but not " +"always. Some of the cellular noise algorithms return results above [code]1[/" +"code]." +msgstr "" +"该类使用 FastNoiseLite 库生成噪声,该库是多种噪声算法的集合,包括 Cellular、" +"Perlin、Value 等。\n" +"大多数生成的噪声值都在 [code][-1, 1][/code] 范围内,但并非总是如此。一些蜂窝噪" +"声算法返回高于 [code]1[/code] 的结果。" + msgid "" "Determines how the distance to the nearest/second-nearest point is computed. " "See [enum CellularDistanceFunction] for options." @@ -46534,9 +50033,36 @@ msgstr "" "返回试图执行操作时发生的最后一个错误。请与 [enum Error] 中的 " "[code]ERR_FILE_*[/code] 常量比较。" +msgid "" +"Returns the whole [param path] file contents as a [PackedByteArray] without " +"any decoding.\n" +"Returns an empty [PackedByteArray] if an error occurred while opening the " +"file. You can use [method get_open_error] to check the error that occurred." +msgstr "" +"将整个 [param path] 文件内容作为 [PackedByteArray] 返回,无需任何解码。\n" +"如果打开文件时发生错误,则返回空的 [PackedByteArray]。你可以使用 [method " +"get_open_error] 来检查发生的错误。" + +msgid "" +"Returns the whole [param path] file contents as a [String]. Text is " +"interpreted as being UTF-8 encoded.\n" +"Returns an empty [String] if an error occurred while opening the file. You " +"can use [method get_open_error] to check the error that occurred." +msgstr "" +"将整个 [param path] 文件内容以 [String] 形式返回。文本被解释为 UTF-8 编码。\n" +"如果打开文件时发生错误,则返回空 [String]。可以使用 [method get_open_error] 来" +"检查发生的错误。" + msgid "Returns the next 32 bits from the file as a floating-point number." msgstr "将文件中接下来的 32 位作为浮点数返回。" +msgid "" +"Returns [code]true[/code], if file [code]hidden[/code] attribute is set.\n" +"[b]Note:[/b] This method is implemented on iOS, BSD, macOS, and Windows." +msgstr "" +"如果文件 [code]hidden[/code] 属性已设置,则返回 [code]true[/code]。\n" +"[b]注意:[/b]该方法在 iOS、BSD、macOS 和 Windows 上实现。" + msgid "Returns the size of the file in bytes." msgstr "返回该文件的大小,单位为字节。" @@ -46552,6 +50078,14 @@ msgid "" "[String] on failure." msgstr "返回一个给定路径文件的 MD5 字符串,如果失败则返回一个空的 [String]。" +msgid "" +"Returns the last time the [param file] was modified in Unix timestamp format, " +"or [code]0[/code] on error. This Unix timestamp can be converted to another " +"format using the [Time] singleton." +msgstr "" +"返回 [param file] 的最后修改时间,使用 Unix 时间戳格式,出错时返回 [code]0[/" +"code]。这个 Unix 时间戳可以用 [Time] 单例转换为其他格式。" + msgid "" "Returns a [String] saved in Pascal format from the file.\n" "Text is interpreted as being UTF-8 encoded." @@ -46568,6 +50102,13 @@ msgstr "返回当前打开的文件的绝对路径为[String]。" msgid "Returns the file cursor's position." msgstr "返回文件光标的位置。" +msgid "" +"Returns [code]true[/code], if file [code]read only[/code] attribute is set.\n" +"[b]Note:[/b] This method is implemented on iOS, BSD, macOS, and Windows." +msgstr "" +"如果文件 [code]read only[/code] 属性已设置,则返回 [code]true[/code]。\n" +"[b]注意:[/b]此方法在 iOS、BSD、macOS 和 Windows 上实现。" + msgid "Returns the next bits from the file as a floating-point number." msgstr "将文件中接下来的若干位以浮点数形式返回。" @@ -46577,6 +50118,13 @@ msgid "" msgstr "" "返回一个给定路径的文件的 SHA-256 字符串,如果失败则返回一个空的 [String]。" +msgid "" +"Returns file UNIX permissions.\n" +"[b]Note:[/b] This method is implemented on iOS, Linux/BSD, and macOS." +msgstr "" +"返回文件的 UNIX 权限。\n" +"[b]注意:[/b]该方法在 iOS、Linux/BSD 和 macOS 上实现。" + msgid "" "Returns the next [Variant] value from the file. If [param allow_objects] is " "[code]true[/code], decoding objects is allowed.\n" @@ -46659,6 +50207,27 @@ msgstr "" "将文件的读/写光标改变到指定的位置(从文件的末端算起,以字节为单位)。\n" "[b]注意:[/b]这是一个偏移量,所以你应该使用负数,否则光标会在文件的末端。" +msgid "" +"Sets file [b]hidden[/b] attribute.\n" +"[b]Note:[/b] This method is implemented on iOS, BSD, macOS, and Windows." +msgstr "" +"设置文件 [b]hidden[/b] 属性。\n" +"[b]注意:[/b]该方法在 iOS、BSD、macOS 和 Windows 上实现。" + +msgid "" +"Sets file [b]read only[/b] attribute.\n" +"[b]Note:[/b] This method is implemented on iOS, BSD, macOS, and Windows." +msgstr "" +"设置文件 [b]read only[/b] 属性。\n" +"[b]注意:[/b]该方法在 iOS、BSD、macOS 和 Windows 上实现。" + +msgid "" +"Sets file UNIX permissions.\n" +"[b]Note:[/b] This method is implemented on iOS, Linux/BSD, and macOS." +msgstr "" +"设置文件的 UNIX 权限。\n" +"[b]注意:[/b]该方法在 iOS、Linux/BSD 和 macOS 上实现。" + msgid "" "Stores an integer as 8 bits in the file.\n" "[b]Note:[/b] The [param value] should lie in the interval [code][0, 255][/" @@ -47053,6 +50622,18 @@ msgstr "" msgid "If [code]true[/code], the dialog will show hidden files." msgstr "如果为 [code]true[/code],对话框将显示出隐藏文件。" +msgid "" +"If [code]true[/code], [member access] is set to [constant ACCESS_FILESYSTEM], " +"and it is supported by the current [DisplayServer], OS native dialog will be " +"used instead of custom one.\n" +"[b]Note:[/b] On macOS, sandboxed apps always use native dialogs to access " +"host filesystem." +msgstr "" +"如果为 [code]true[/code],[member access] 被设置为[constant " +"ACCESS_FILESYSTEM],并且它被当前的 [DisplayServer] 支持,则将使用操作系统原生" +"对话框而不是自定义对话框。\n" +"[b]注意:[/b]在 macOS 上,沙盒应用程序始终使用原生对话框来访问主机文件系统。" + msgid "Emitted when the user selects a directory." msgstr "当用户选择一个目录时触发的。" @@ -47187,6 +50768,34 @@ msgstr "外部资源 [param resource] 的对应文件被移除时发出。" msgid "A built-in type for floating point numbers." msgstr "浮点数内置类型。" +msgid "" +"The [float] built-in type is a 64-bit double-precision floating-point number, " +"equivalent to [code]double[/code] in C++. This type has 14 reliable decimal " +"digits of precision. The maximum value of [float] is approximately " +"[code]1.79769e308[/code], and the minimum is approximately " +"[code]-1.79769e308[/code].\n" +"Many methods and properties in the engine use 32-bit single-precision " +"floating-point numbers instead, equivalent to [code skip-lint]float[/code] in " +"C++, which have 6 reliable decimal digits of precision. For data structures " +"such as [Vector2] and [Vector3], Godot uses 32-bit floating-point numbers by " +"default, but it can be changed to use 64-bit doubles if Godot is compiled " +"with the [code]precision=double[/code] option.\n" +"Math done using the [float] type is not guaranteed to be exact and will often " +"result in small errors. You should usually use the [method @GlobalScope." +"is_equal_approx] and [method @GlobalScope.is_zero_approx] methods instead of " +"[code]==[/code] to compare [float] values for equality." +msgstr "" +"[float] 内置类型是 64 位双精度浮点数,相当于 C++ 中的 [code]double[/code]。这" +"个类型有 14 个可靠的十进制小数位精度。[float] 的最大值约为 [code]1.79769e308[/" +"code],最小值约为 [code]-1.79769e308[/code]。\n" +"不过引擎中的许多方法和属性默认使用的都是 32 位单精度浮点数,相当于 C++ 中的 " +"[code skip-lint]float[/code],有 6 位可靠的十进制小数位精度。Godot 在 " +"[Vector2] 和 [Vector3] 等数据结构中默认使用 32 位浮点数,但如果 Godot 编译时使" +"用了 [code]precision=double[/code] 选项,就会改为 64 位的 double。\n" +"使用 [float] 类型进行的数学运算无法保证精确与稳定,经常会产生较小的误差。你通" +"常应该使用 [method @GlobalScope.is_equal_approx] 和 [method @GlobalScope." +"is_zero_approx] 方法来比较 [float] 值是否相等,不应该用 [code]==[/code]。" + msgid "Wikipedia: Double-precision floating-point format" msgstr "维基百科:双精度浮点数格式" @@ -47232,6 +50841,18 @@ msgid "" "Returns [code]true[/code] if the integer has different value than the float." msgstr "如果整数的值与浮点数不同,则返回 [code]true[/code]。" +msgid "" +"Multiplies each component of the [Color], including the alpha, by the given " +"[float].\n" +"[codeblock]\n" +"print(1.5 * Color(0.5, 0.5, 0.5)) # Prints \"(0.75, 0.75, 0.75, 1.5)\"\n" +"[/codeblock]" +msgstr "" +"将该 [Color] 的每个分量乘以给定的 [float],包括 Alpha。\n" +"[codeblock]\n" +"print(1.5 * Color(0.5, 0.5, 0.5)) # 输出“(0.75, 0.75, 0.75, 1.5)”\n" +"[/codeblock]" + msgid "" "Multiplies each component of the [Quaternion] by the given [float]. This " "operation is not meaningful on its own, but it can be used as a part of a " @@ -47455,6 +51076,11 @@ msgstr "子节点的水平分隔量。" msgid "The vertical separation of children nodes." msgstr "子节点的垂直分隔量。" +msgid "" +"A material that controls how volumetric fog is rendered, to be assigned to a " +"[FogVolume]." +msgstr "控制体积雾渲染方式的材质,可被分配给 [FogVolume]。" + msgid "" "A [Material] resource that can be used by [FogVolume]s to draw volumetric " "effects.\n" @@ -47524,6 +51150,11 @@ msgstr "" "渡,而低的衰减将产生更平滑的过渡。[code]0.0[/code] 的值会产生均匀密度的雾。高" "度阈值由关联的 [FogVolume] 的高度决定。" +msgid "" +"A region that contributes to the default volumetric fog from the world " +"environment." +msgstr "影响世界环境中默认体积雾的区块。" + msgid "" "[FogVolume]s are used to add localized fog into the global volumetric fog " "effect. [FogVolume]s can also remove volumetric fog from specific areas if " @@ -47937,6 +51568,16 @@ msgstr "" msgid "Sets LRU cache capacity for [code]draw_*[/code] methods." msgstr "为 [code]draw_*[/code] 方法设置 LRU 缓存容量。" +msgid "" +"Array of fallback [Font]s to use as a substitute if a glyph is not found in " +"this current [Font].\n" +"If this array is empty in a [FontVariation], the [member FontVariation." +"base_font]'s fallbacks are used instead." +msgstr "" +"回退 [Font] 数组,会在这个当前 [Font] 中无法找到某个字形时用作替换。\n" +"如果 [FontVariation] 中的这个数组为空,则会改用 [member FontVariation." +"base_font] 的回退字体。" + msgid "" "Holds font source data and prerendered glyph cache, imported from a dynamic " "or a bitmap font." @@ -48066,6 +51707,16 @@ msgid "" "outlines. Negative values reduce the outline thickness." msgstr "返回加粗强度,如果不等于零,则加粗字体轮廓。负值会减小轮廓粗细。" +msgid "" +"Returns spacing for [param spacing] (see [enum TextServer.SpacingType]) in " +"pixels (not relative to the font size)." +msgstr "" +"返回 [param spacing] 的间距(见 [enum TextServer.SpacingType]),单位为像素" +"(与字体大小无关)。" + +msgid "Returns an active face index in the TrueType / OpenType collection." +msgstr "返回 TrueType / OpenType 集合中的活动字体索引。" + msgid "" "Returns glyph advance (offset of the next glyph).\n" "[b]Note:[/b] Advance for glyphs outlines is the same as the base glyph " @@ -48116,6 +51767,12 @@ msgstr "如果为 [param script] 启用了支持覆盖,则返回 [code]true[/c msgid "Returns list of script support overrides." msgstr "返回文字支持覆盖的列表。" +msgid "" +"Returns list of the font sizes in the cache. Each size is [Vector2i] with " +"font size and outline size." +msgstr "" +"返回缓存中字体大小的列表。每个大小都是由字体大小和轮廓大小组成的 [Vector2i]。" + msgid "Returns number of textures used by font cache entry." msgstr "返回字体缓存条目所使用的纹理数。" @@ -48218,6 +51875,13 @@ msgid "" "Negative values reduce the outline thickness." msgstr "设置加粗强度,如果不等于零,则会加粗字体的轮廓。负值会减小轮廓的厚度。" +msgid "" +"Sets the spacing for [param spacing] (see [enum TextServer.SpacingType]) to " +"[param value] in pixels (not relative to the font size)." +msgstr "" +"将 [param spacing] 的间距(见 [enum TextServer.SpacingType])设置为 [param " +"value],单位为像素(与字体大小无关)。" + msgid "Sets an active face index in the TrueType / OpenType collection." msgstr "在 TrueType / OpenType 集合中设置活动字体索引。" @@ -48282,6 +51946,11 @@ msgstr "动态字体源文件的内容。" msgid "Font size, used only for the bitmap fonts." msgstr "字体大小,仅用于位图字体。" +msgid "" +"Scaling mode, used only for the bitmap fonts with [member fixed_size] greater " +"than zero." +msgstr "缩放模式,只有 [member fixed_size] 大于零的位图字体会使用。" + msgid "Font family name." msgstr "字体家族名称。" @@ -48490,6 +52159,31 @@ msgstr "" msgid "Active face index in the TrueType / OpenType collection file." msgstr "在 TrueType / OpenType 集合文件中的活动字体索引。" +msgid "" +"Font OpenType variation coordinates. More info: [url=https://docs.microsoft." +"com/en-us/typography/opentype/spec/dvaraxisreg]OpenType variation tags[/" +"url].\n" +"[b]Note:[/b] This [Dictionary] uses OpenType tags as keys. Variation axes can " +"be identified both by tags ([int], e.g. [code]0x77678674[/code]) and names " +"([String], e.g. [code]wght[/code]). Some axes might be accessible by multiple " +"names. For example, [code]wght[/code] refers to the same axis as " +"[code]weight[/code]. Tags on the other hand are unique. To convert between " +"names and tags, use [method TextServer.name_to_tag] and [method TextServer." +"tag_to_name].\n" +"[b]Note:[/b] To get available variation axes of a font, use [method Font." +"get_supported_variation_list]." +msgstr "" +"字体 OpenType 变体坐标。详见:[url=https://docs.microsoft.com/en-us/" +"typography/opentype/spec/dvaraxisreg]OpenType 变体标签[/url]。\n" +"[b]注意:[/b]这个 [Dictionary] 使用 OpenType 标签作为键。变体轴既可以用标签来" +"标识([int],例如 [code]0x77678674[/code]),也可以用名称来标识([String],例" +"如 [code]wght[/code])。有些轴可以通过多个名称来访问。例如,[code]wght[/code] " +"和 [code]weight[/code] 引用的是同一个轴。而标签则是唯一的。要在名称和标签之间" +"转换,请使用 [method TextServer.name_to_tag] 和 [method TextServer." +"tag_to_name]。\n" +"[b]注意:[/b]要获取字体的可用变体轴,请使用 [method Font." +"get_supported_variation_list]。" + msgid "" "2D transform, applied to the font outlines, can be used for slanting, " "flipping and rotating glyphs.\n" @@ -48500,6 +52194,9 @@ msgstr "" "例如,要通过倾斜来模拟斜体字体,请应用以下变换 [code]Transform2D(1.0, slant, " "0.0, 1.0, 0.0, 0.0)[/code]。" +msgid "Emitted after the editor has automatically reloaded any extensions." +msgstr "在编辑器自动重新加载任何扩展后发出。" + msgid "A script implemented in the GDScript programming language." msgstr "用 GDScript 编程语言实现的脚本。" @@ -49314,6 +53011,11 @@ msgstr "" "将 [param points] 中的点所定义的多边形,裁剪该 [param plane] 并返回该裁剪后的" "多边形的点。" +msgid "" +"Calculates and returns all the vertex points of a convex shape defined by an " +"array of [param planes]." +msgstr "计算并返回由一组 [param planes] 定义的凸形状的所有顶点。" + 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 " @@ -49342,6 +53044,22 @@ msgstr "" "两个线段见距离最近的两个点。返回 [PackedVector3Array],包含 ([param p1], " "[param q1]) 和 ([param p2], [param q2]) 上的点。" +msgid "" +"Returns a [Vector3] containing weights based on how close a 3D position " +"([param point]) is to a triangle's different vertices ([param a], [param b] " +"and [param c]). This is useful for interpolating between the data of " +"different vertices in a triangle. One example use case is using this to " +"smoothly rotate over a mesh instead of relying solely on face normals.\n" +"[url=https://en.wikipedia.org/wiki/Barycentric_coordinate_system]Here is a " +"more detailed explanation of barycentric coordinates.[/url]" +msgstr "" +"返回一个 [Vector3],其中包含基于 3D 位置([param point])与三角形不同顶点" +"([param a]、[param b] 和 [param c])的接近程度的权重。这对于在三角形中不同顶" +"点的数据之间进行插值非常有用。一个示例用例是使用它在网格上平滑旋转,而不是仅仅" +"依赖于面法线。\n" +"[url=https://en.wikipedia.org/wiki/Barycentric_coordinate_system]这里是重心坐" +"标的更详细解释。[/url]" + 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]. " @@ -49818,6 +53536,34 @@ msgstr "" "Godot 使用的是直径的米数。映射到 GLTF 的 [code]ymag[/code] 属性。只在正交相机" "中使用,即 [member perspective] 为 false 时。" +msgid "Class for importing and exporting glTF files in and out of Godot." +msgstr "用于在 Godot 中导入和导出 glTF 文件的类。" + +msgid "" +"GLTFDocument supports reading data from a glTF file, buffer, or Godot scene. " +"This data can then be written to the filesystem, buffer, or used to create a " +"Godot scene.\n" +"All of the data in a GLTF scene is stored in the [GLTFState] class. " +"GLTFDocument processes state objects, but does not contain any scene data " +"itself. GLTFDocument has member variables to store export configuration " +"settings such as the image format, but is otherwise stateless. Multiple " +"scenes can be processed with the same settings using the same GLTFDocument " +"object and different [GLTFState] objects.\n" +"GLTFDocument can be extended with arbitrary functionality by extending the " +"[GLTFDocumentExtension] class and registering it with GLTFDocument via " +"[method register_gltf_document_extension]. This allows for custom data to be " +"imported and exported." +msgstr "" +"GLTFDocument 支持从 glTF 文件、缓冲区、或 Godot 场景中读取数据。然后可以将该数" +"据写入文件系统、缓冲区、或用于创建 Godot 场景。\n" +"GLTF 场景中的所有数据都存储在 [GLTFState] 类中。GLTFDocument 处理状态对象,但" +"本身不包含任何场景数据。GLTFDocument 有成员变量来存储如图像格式等导出配置设" +"置,但在其他方面是无状态的。可以使用相同的 GLTFDocument 对象和不同的 " +"[GLTFState] 对象以相同的设置处理多个场景。\n" +"通过扩展 [GLTFDocumentExtension] 类并通过 [method " +"register_gltf_document_extension] 将其注册到 GLTFDocument,则可以使用任意功能" +"来扩展 GLTFDocument。这允许自定义数据被导入和导出。" + msgid "glTF 'What the duck?' guide" msgstr "glTF '鸭子是什么?' 指南" @@ -49896,6 +53642,73 @@ msgstr "" "[b]注意:[/b]glTF 文件的扩展名决定了它是一个 .glb 二进制文件还是一个 .gltf 文" "件。" +msgid "" +"The user-friendly name of the export image format. This is used when " +"exporting the GLTF file, including writing to a file and writing to a byte " +"array.\n" +"By default, Godot allows the following options: \"None\", \"PNG\", \"JPEG\", " +"\"Lossless WebP\", and \"Lossy WebP\". Support for more image formats can be " +"added in [GLTFDocumentExtension] classes." +msgstr "" +"导出图像格式的用户友好名称。这被用于导出 GLTF 文件,包括写入文件和写入字节数" +"组。\n" +"默认情况下,Godot 允许以下选项:“无”、“PNG”、“JPEG”、“无损 WebP”、和“有损 " +"WebP”。可以使用 [GLTFDocumentExtension] 类添加对更多图像格式的支持。" + +msgid "" +"If [member image_format] is a lossy image format, this determines the lossy " +"quality of the image. On a range of [code]0.0[/code] to [code]1.0[/code], " +"where [code]0.0[/code] is the lowest quality and [code]1.0[/code] is the " +"highest quality. A lossy quality of [code]1.0[/code] is not the same as " +"lossless." +msgstr "" +"如果 [member image_format] 是有损图像格式,则这决定了该图像的有损质量。在 " +"[code]0.0[/code] 到 [code]1.0[/code] 范围内,其中 [code]0.0[/code] 是最低质" +"量,[code]1.0[/code] 是最高质量。[code]1.0[/code] 的有损质量不同于无损质量。" + +msgid "" +"How to process the root node during export. See [enum RootNodeMode] for " +"details. The default and recommended value is [constant " +"ROOT_NODE_MODE_SINGLE_ROOT].\n" +"[b]Note:[/b] Regardless of how the glTF file is exported, when importing, the " +"root node type and name can be overridden in the scene import settings tab." +msgstr "" +"导出时如何处理根节点。详见 [enum RootNodeMode]。默认和推荐值为 [constant " +"ROOT_NODE_MODE_SINGLE_ROOT]。\n" +"[b]注意:[/b]无论 glTF 文件如何导出,导入时,根节点类型和名称都可以在场景导入" +"设置选项卡中被覆盖。" + +msgid "" +"Treat the Godot scene's root node as the root node of the glTF file, and mark " +"it as the single root node via the [code]GODOT_single_root[/code] glTF " +"extension. This will be parsed the same as [constant " +"ROOT_NODE_MODE_KEEP_ROOT] if the implementation does not support " +"[code]GODOT_single_root[/code]." +msgstr "" +"将 Godot 场景的根节点视为 glTF 文件的根节点,并通过 [code]GODOT_single_root[/" +"code] glTF 扩展将其标记为单根节点。如果实现不支持 [code]GODOT_single_root[/" +"code],这将与 [constant ROOT_NODE_MODE_KEEP_ROOT] 进行相同的解析。" + +msgid "" +"Treat the Godot scene's root node as the root node of the glTF file, but do " +"not mark it as anything special. An extra root node will be generated when " +"importing into Godot. This uses only vanilla glTF features. This is " +"equivalent to the behavior in Godot 4.1 and earlier." +msgstr "" +"将 Godot 场景的根节点视为 glTF 文件的根节点,但不要将其标记为任何特殊的东西。" +"导入 Godot 时会生成一个额外的根节点。这仅使用普通 glTF 功能。这相当于 Godot " +"4.1 及更早版本中的行为。" + +msgid "" +"Treat the Godot scene's root node as the name of the glTF scene, and add all " +"of its children as root nodes of the glTF file. This uses only vanilla glTF " +"features. This avoids an extra root node, but only the name of the Godot " +"scene's root node will be preserved, as it will not be saved as a node." +msgstr "" +"将 Godot 场景的根节点视为 glTF 场景的名称,并将其所有子节点添加为 glTF 文件的" +"根节点。这仅使用普通 glTF 功能。这避免了额外的根节点,但只会保留 Godot 场景根" +"节点的名称,因为它不会被保存为节点。" + msgid "[GLTFDocument] extension class." msgstr "[GLTFDocument] 扩展类。" @@ -49919,6 +53732,30 @@ msgstr "" "状态的才能正常运行。如果需要存储数据,请使用 [GLTFState] 或 [GLTFNode] 中的 " "[code]set_additional_data[/code] 和 [code]get_additional_data[/code] 方法。" +msgid "" +"Part of the export process. This method is run after [method " +"_export_preflight] and before [method _export_preserialize].\n" +"Runs when converting the data from a Godot scene node. This method can be " +"used to process the Godot scene node data into a format that can be used by " +"[method _export_node]." +msgstr "" +"导出过程的一部分。该方法在 [method _export_preflight] 之后和 [method " +"_export_preserialize] 之前运行。\n" +"在转换来自 Godot 场景节点的数据时运行。该方法可用于将 Godot 场景节点的数据,处" +"理成可以被 [method _export_node] 使用的格式。" + +msgid "" +"Part of the export process. This method is run after [method " +"_get_saveable_image_formats] and before [method _export_post]. If this " +"[GLTFDocumentExtension] is used for exporting images, this runs after [method " +"_serialize_texture_json].\n" +"This method can be used to modify the final JSON of each node." +msgstr "" +"导出过程的一部分。该方法在 [method _get_saveable_image_formats] 之后 [method " +"_export_post] 之前运行。如果该 [GLTFDocumentExtension] 用于导出图像,则会在 " +"[method _serialize_texture_json] 之后运行。\n" +"该方法可用于修改每个节点的最终 JSON。" + msgid "" "Part of the export process. This method is run last, after all other parts of " "the export process.\n" @@ -49940,6 +53777,69 @@ msgstr "" "文件。如果为 [constant OK],则导出将使用该 [GLTFDocumentExtension] 实例。如果" "没有被重写,则返回 [constant OK]。" +msgid "" +"Part of the export process. This method is run after [method " +"_convert_scene_node] and before [method _get_saveable_image_formats].\n" +"This method can be used to alter the state before performing serialization. " +"It runs every time when generating a buffer with [method GLTFDocument." +"generate_buffer] or writing to the file system with [method GLTFDocument." +"write_to_filesystem]." +msgstr "" +"导入过程的一部分。该方法在 [method _convert_scene_node] 之后 [method " +"_get_saveable_image_formats] 之前运行。\n" +"该方法可用于在执行序列化之前更改状态。每次使用 [method GLTFDocument." +"generate_buffer] 生成缓冲区或使用[method GLTFDocument.write_to_filesystem]写入" +"文件系统时,它都会运行。" + +msgid "" +"Part of the import process. This method is run after [method " +"_import_post_parse] and before [method _import_node].\n" +"Runs when generating a Godot scene node from a GLTFNode. The returned node " +"will be added to the scene tree. Multiple nodes can be generated in this step " +"if they are added as a child of the returned node.\n" +"[b]Note:[/b] The [param scene_parent] parameter may be null if this is the " +"single root node." +msgstr "" +"导入过程的一部分。该方法在 [method _import_post_parse] 之后 [method " +"_import_node] 之前运行。\n" +"当从 GLTFNode 生成一个 Godot 场景节点时运行。返回的节点将被添加到场景树中。如" +"果将多个节点添加为返回节点的子节点,则可以在该步骤中生成这些节点。\n" +"[b]注意:[/b]如果这是单个根节点,则 [param scene_parent] 参数可以为 null。" + +msgid "" +"Returns the file extension to use for saving image data into, for example, " +"[code]\".png\"[/code]. If defined, when this extension is used to handle " +"images, and the images are saved to a separate file, the image bytes will be " +"copied to a file with this extension. If this is set, there should be a " +"[ResourceImporter] class able to import the file. If not defined or empty, " +"Godot will save the image into a PNG file." +msgstr "" +"返回用于保存图像数据的文件的文件扩展名,例如 [code]\".png\"[/code]。如果定义" +"了,当使用该扩展名处理图像并将图像保存到单独的文件时,图像字节将被复制到具有该" +"扩展名的文件中。如果设置了该选项,则应该有一个能够导入该文件的 " +"[ResourceImporter] 类。如果未定义或为空,则 Godot 会将该图像保存到 PNG 文件" +"中。" + +msgid "" +"Part of the export process. This method is run after [method " +"_convert_scene_node] and before [method _export_node].\n" +"Returns an array of the image formats that can be saved/exported by this " +"extension. This extension will only be selected as the image exporter if the " +"[GLTFDocument]'s [member GLTFDocument.image_format] is in this array. If this " +"[GLTFDocumentExtension] is selected as the image exporter, one of the [method " +"_save_image_at_path] or [method _serialize_image_to_bytes] methods will run " +"next, otherwise [method _export_node] will run next. If the format name " +"contains [code]\"Lossy\"[/code], the lossy quality slider will be displayed." +msgstr "" +"导出过程的一部分。该方法在 [method _convert_scene_node] 之后和 [method " +"_export_node] 之前运行。\n" +"返回可以由该扩展保存/导出的图像格式的数组。仅当 [GLTFDocument] 的 [member " +"GLTFDocument.image_format] 在该数组中时,才会选择该扩展作为图像导出器。如果选" +"择该 [GLTFDocumentExtension] 作为图像导出器,则接下来将运行 [method " +"_save_image_at_path] 或 [method _serialize_image_to_bytes] 方法之一,否则接下" +"来将运行 [method _export_node]。如果格式名称包含 [code]\"Lossy\"[/code],则会" +"显示有损质量滑块。" + msgid "" "Part of the import process. This method is run after [method " "_import_preflight] and before [method _parse_node_extensions].\n" @@ -49952,6 +53852,16 @@ msgstr "" "返回一组被该 GLTFDocumentExtension 类支持的 GLTF 扩展。这用于验证是否可以加载" "一个具有所需扩展名的 GLTF 文件。" +msgid "" +"Part of the import process. This method is run after [method " +"_generate_scene_node] and before [method _import_post].\n" +"This method can be used to make modifications to each of the generated Godot " +"scene nodes." +msgstr "" +"导入过程的一部分。该方法在 [method _generate_scene_node] 之后 [method " +"_import_post] 之前运行。\n" +"该方法可用于对生成的每个 Godot 场景节点进行修改。" + msgid "" "Part of the import process. This method is run last, after all other parts of " "the import process.\n" @@ -49961,6 +53871,17 @@ msgstr "" "导入过程的一部分。该方法在最后运行,在导入过程的所有其他部分之后。\n" "该方法可用于修改导入过程生成的最终 Godot 场景。" +msgid "" +"Part of the import process. This method is run after [method " +"_parse_node_extensions] and before [method _generate_scene_node].\n" +"This method can be used to modify any of the data imported so far, including " +"any scene nodes, before running the final per-node import step." +msgstr "" +"导入过程的一部分。该方法在 [method _parse_node_extensions] 之后 [method " +"_generate_scene_node] 之前运行。\n" +"在运行最终的各节点导入步骤之前,该方法可用于修改到目前为止导入的任何数据,包括" +"任何场景节点。" + msgid "" "Part of the import process. This method is run first, before all other parts " "of the import process.\n" @@ -49985,6 +53906,20 @@ msgstr "" "从 GLTF 文件中解析图像数据时运行。数据可以从单独的文件、URI 或缓冲中获取,然后" "作为字节数组传递。" +msgid "" +"Part of the import process. This method is run after [method " +"_get_supported_extensions] and before [method _import_post_parse].\n" +"Runs when parsing the node extensions of a GLTFNode. This method can be used " +"to process the extension JSON data into a format that can be used by [method " +"_generate_scene_node]. The return value should be a member of the [enum " +"Error] enum." +msgstr "" +"导入过程的一部分。该方法在 [method _get_supported_extensions] 之后和 [method " +"_import_post_parse] 之前运行。\n" +"在解析 GLTFNode 的节点扩展时运行。该方法可用于将扩展 JSON 数据,处理成可被 " +"[method _generate_scene_node] 使用的格式。该返回值应该是 [enum Error] 枚举中的" +"一个成员。" + msgid "" "Part of the import process. This method is run after [method " "_parse_image_data] and before [method _generate_scene_node].\n" @@ -49995,6 +53930,59 @@ msgstr "" "_generate_scene_node] 之前运行。\n" "从 GLTF 纹理数组中解析纹理 JSON 时运行。可用于设置用作纹理的源图像索引。" +msgid "" +"Part of the export process. This method is run after [method " +"_get_saveable_image_formats] and before [method _serialize_texture_json].\n" +"This method is run when saving images separately from the GLTF file. When " +"images are embedded, [method _serialize_image_to_bytes] runs instead. Note " +"that these methods only run when this [GLTFDocumentExtension] is selected as " +"the image exporter." +msgstr "" +"导入过程的一部分。该方法在 [method _get_saveable_image_formats] 之后 [method " +"_serialize_texture_json] 之前运行。\n" +"当与 GLTF 文件分开保存图像时运行该方法。嵌入图像时,将运行 [method " +"_serialize_image_to_bytes]。请注意,这些方法仅在选择该 " +"[GLTFDocumentExtension] 作为图像导出器时运行。" + +msgid "" +"Part of the export process. This method is run after [method " +"_get_saveable_image_formats] and before [method _serialize_texture_json].\n" +"This method is run when embedding images in the GLTF file. When images are " +"saved separately, [method _save_image_at_path] runs instead. Note that these " +"methods only run when this [GLTFDocumentExtension] is selected as the image " +"exporter.\n" +"This method must set the image MIME type in the [param image_dict] with the " +"[code]\"mimeType\"[/code] key. For example, for a PNG image, it would be set " +"to [code]\"image/png\"[/code]. The return value must be a [PackedByteArray] " +"containing the image data." +msgstr "" +"导出过程的一部分。该方法在 [method _get_saveable_image_formats] 之后和 " +"[method _serialize_texture_json] 之前运行。\n" +"在 GLTF 文件中嵌入图像时运行该方法。当图像单独保存时,将运行 [method " +"_save_image_at_path]。请注意,这些方法仅在选择该 [GLTFDocumentExtension] 作为" +"图像导出器时运行。\n" +"该方法必须使用 [code]\"mimeType\"[/code] 键在 [param image_dict] 中设置该图像" +"的 MIME 类型。例如,对于 PNG 图像,它将被设置为 [code]\"image/png\"[/code]。该" +"返回值必须是包含该图像数据的 [PackedByteArray]。" + +msgid "" +"Part of the export process. This method is run after [method " +"_save_image_at_path] or [method _serialize_image_to_bytes], and before " +"[method _export_node]. Note that this method only runs when this " +"[GLTFDocumentExtension] is selected as the image exporter.\n" +"This method can be used to set up the extensions for the texture JSON by " +"editing [param texture_json]. The extension must also be added as used " +"extension with [method GLTFState.add_used_extension], be sure to set " +"[code]required[/code] to [code]true[/code] if you are not providing a " +"fallback." +msgstr "" +"导出过程的一部分。该方法在 [method _save_image_at_path] 或 [method " +"_serialize_image_to_bytes] 之后、[method _export_node] 之前运行。请注意,该方" +"法仅在选择该 [GLTFDocumentExtension] 作为图像导出器时运行。\n" +"该方法可用于通过编辑 [param texture_json] 设置该纹理 JSON 的扩展。还必须使用 " +"[method GLTFState.add_used_extension] 将该扩展添加为使用的扩展,如果你不提供后" +"备,请务必将 [code]required[/code] 设置为 [code]true[/code]。" + msgid "Represents a GLTF light." msgstr "代表 GLTF 灯光。" @@ -50234,6 +54222,20 @@ msgid "" msgstr "" "该物理体的角速度,单位为弧度每秒。仅在物体类型为“rigid”或“vehicle”时使用。" +msgid "" +"The type of the body. When importing, this controls what type of " +"[CollisionObject3D] node Godot should generate. Valid values are \"static\", " +"\"kinematic\", \"character\", \"rigid\", \"vehicle\", and \"trigger\"." +msgstr "" +"该物体的类型。导入时,控制 Godot 应该生成何种类型的 [CollisionObject3D] 节点。" +"有效值有“static”“kinematic”“character”“rigid”“vehicle”“trigger”。" + +msgid "" +"The center of mass of the body, in meters. This is in local space relative to " +"the body. By default, the center of the mass is the body's origin." +msgstr "" +"该物体的质心,单位为米。使用相对于物体的局部空间。质心默认为物体的原点。" + msgid "" "The inertia tensor of the physics body, in kilogram meter squared (kg⋅m²). " "This is only used when the body type is \"rigid\" or \"vehicle\".\n" @@ -50647,6 +54649,33 @@ msgid "" "process and export process." msgstr "设置该状态中的唯一节点名称。这用于导入过程和导出过程。" +msgid "" +"The folder path associated with this GLTF data. This is used to find other " +"files the GLTF file references, like images or binary buffers. This will be " +"set during import when appending from a file, and will be set during export " +"when writing to a file." +msgstr "" +"与该 GLTF 数据关联的文件夹路径。这用于查找该 GLTF 文件引用的其他文件,例如图像" +"或二进制缓冲区。这将在导入期间从文件追加时设置,并将在导出期间写入文件时设置。" + +msgid "" +"The copyright string in the asset header of the GLTF file. This is set during " +"import if present and export if non-empty. See the GLTF asset header " +"documentation for more information." +msgstr "" +"该 GLTF 文件的资产标头中的版权字符串。如果存在,则在导入期间设置;如果非空则在" +"导出期间设置。详见 GLTF 资产标头文档。" + +msgid "" +"The file name associated with this GLTF data. If it ends with [code].gltf[/" +"code], this is text-based GLTF, otherwise this is binary GLB. This will be " +"set during import when appending from a file, and will be set during export " +"when writing to a file. If writing to a buffer, this will be an empty string." +msgstr "" +"与该 GLTF 数据关联的文件名。如果它以 [code].gltf[/code] 结尾,则这是基于文本" +"的 GLTF,否则这是二进制 GLB。这将在导入期间从文件追加时设置,并将在导出期间写" +"入文件时设置。如果写入到缓冲区,这将是一个空字符串。" + msgid "" "The root nodes of the GLTF file. Typically, a GLTF file will only have one " "scene, and therefore one root node. However, a GLTF file may have multiple " @@ -50746,6 +54775,24 @@ msgstr "" msgid "A 2D particle emitter." msgstr "2D 粒子发射器。" +msgid "" +"2D particle node used to create a variety of particle systems and effects. " +"[GPUParticles2D] features an emitter that generates some number of particles " +"at a given rate.\n" +"Use the [member process_material] property to add a [ParticleProcessMaterial] " +"to configure particle appearance and behavior. Alternatively, you can add a " +"[ShaderMaterial] which will be applied to all particles.\n" +"2D particles can optionally collide with [LightOccluder2D], but they don't " +"collide with [PhysicsBody2D] nodes." +msgstr "" +"2D 粒子节点,用于创建各种粒子系统和效果。[GPUParticles2D] 是一个发射器,特点是" +"以给定的速度生成一定数量的粒子。\n" +"使用 [member process_material] 属性来添加一个配置粒子的外观和行为的 " +"[ParticleProcessMaterial]。或者,你可以添加一个应用于所有粒子的 " +"[ShaderMaterial]。\n" +"2D 粒子可以选择与 [LightOccluder2D] 碰撞,但它们不会与 [PhysicsBody2D] 节点碰" +"撞。" + msgid "2D Particles Demo" msgstr "2D 粒子演示" @@ -50753,6 +54800,18 @@ msgid "" "2D Dodge The Creeps Demo (uses GPUParticles2D for the trail behind the player)" msgstr "2D Dodge The Creeps 演示(玩家身后的拖尾使用的是 GPUParticles2D)" +msgid "" +"Returns a rectangle containing the positions of all existing particles.\n" +"[b]Note:[/b] When using threaded rendering this method synchronizes the " +"rendering thread. Calling it often may have a negative impact on performance." +msgstr "" +"返回一个包含所有已有粒子位置的矩形。\n" +"[b]注意:[/b]当使用线程渲染时,该方法会同步渲染线程。经常调用它可能会对性能产" +"生负面影响。" + +msgid "Sets this node's properties to match a given [CPUParticles2D] node." +msgstr "设置该节点的属性以匹配给定的 [CPUParticles2D] 节点。" + msgid "" "Emits a single particle. Whether [param xform], [param velocity], [param " "color] and [param custom] are applied depends on the value of [param flags]. " @@ -50764,11 +54823,84 @@ msgstr "" msgid "Restarts all the existing particles." msgstr "重新启动所有现有的粒子。" +msgid "" +"The number of particles to emit in one emission cycle. The effective emission " +"rate is [code](amount * amount_ratio) / lifetime[/code] particles per second. " +"Higher values will increase GPU requirements, even if not all particles are " +"visible at a given time or if [member amount_ratio] is decreased.\n" +"[b]Note:[/b] Changing this value will cause the particle system to restart. " +"To avoid this, change [member amount_ratio] instead." +msgstr "" +"一个发射周期内发射的粒子数。有效发射速率为每秒 [code](amount * " +"amount_ratio) / lifetime[/code] 个粒子。较高的值会增加 GPU 要求,即使在给定时" +"间并非所有粒子都可见或 [member amount_ratio] 减少。\n" +"[b]注意:[/b]更改该值将导致粒子系统重新启动。为了避免这种情况,请更改 [member " +"amount_ratio]。" + +msgid "" +"The ratio of particles that should actually be emitted. If set to a value " +"lower than [code]1.0[/code], this will set the amount of emitted particles " +"throughout the lifetime to [code]amount * amount_ratio[/code]. Unlike " +"changing [member amount], changing [member amount_ratio] while emitting does " +"not affect already-emitted particles and doesn't cause the particle system to " +"restart. [member amount_ratio] can be used to create effects that make the " +"number of emitted particles vary over time.\n" +"[b]Note:[/b] Reducing the [member amount_ratio] has no performance benefit, " +"since resources need to be allocated and processed for the total [member " +"amount] of particles regardless of the [member amount_ratio]. If you don't " +"intend to change the number of particles emitted while the particles are " +"emitting, make sure [member amount_ratio] is set to [code]1[/code] and change " +"[member amount] to your liking instead." +msgstr "" +"实际应该发射的粒子的比率。如果被设置为低于 [code]1.0[/code] 的值,则会将整个生" +"命周期内发射的粒子数量设置为 [code]amount * amount_ratio[/code]。与更改 " +"[member amount] 不同,发射时更改 [member amount_ratio] 不会影响已发射的粒子," +"也不会导致粒子系统重新启动。[member amount_ratio] 可用于创建使发射粒子的数量随" +"时间变化的效果。\n" +"[b]注意:[/b]减少 [member amount_ratio] 不会带来性能优势,因为无论 [member " +"amount_ratio] 是多少,都需要为粒子总数 [member amount] 分配和处理资源。如果你" +"不打算在粒子发射时更改发射的粒子数量,请确保将 [member amount_ratio] 设置为 " +"[code]1[/code] 并根据你的喜好更改 [member amount]。" + +msgid "" +"Multiplier for particle's collision radius. [code]1.0[/code] corresponds to " +"the size of the sprite. If particles appear to sink into the ground when " +"colliding, increase this value. If particles appear to float when colliding, " +"decrease this value. Only effective if [member ParticleProcessMaterial." +"collision_mode] is [constant ParticleProcessMaterial.COLLISION_RIGID] or " +"[constant ParticleProcessMaterial.COLLISION_HIDE_ON_CONTACT].\n" +"[b]Note:[/b] Particles always have a spherical collision shape." +msgstr "" +"粒子碰撞半径的乘数。[code]1.0[/code] 对应于该精灵的大小。如果碰撞时粒子似乎沉" +"入地下,请增加该值。如果粒子在碰撞时出现漂浮,请减小该值。仅当 [member " +"ParticleProcessMaterial.collision_mode] 为 [constant ParticleProcessMaterial." +"COLLISION_RIGID] 或 [constant ParticleProcessMaterial." +"COLLISION_HIDE_ON_CONTACT] 时有效。\n" +"[b]注意:[/b]粒子始终具有球形碰撞形状。" + +msgid "" +"Causes all the particles in this node to interpolate towards the end of their " +"lifetime.\n" +"[b]Note:[/b] This only works when used with a [ParticleProcessMaterial]. It " +"needs to be manually implemented for custom process shaders." +msgstr "" +"导致该节点中的所有粒子插值到其生命周期结束时。\n" +"[b]注意:[/b]这仅在与 [ParticleProcessMaterial] 一起使用时才有效。对于自定义进" +"程着色器,需要手动实现。" + msgid "" "Enables particle interpolation, which makes the particle movement smoother " "when their [member fixed_fps] is lower than the screen refresh rate." msgstr "启用粒子插值,当[member fixed_fps] 低于屏幕刷新率时,使粒子运动更平滑。" +msgid "" +"The amount of time each particle will exist (in seconds). The effective " +"emission rate is [code](amount * amount_ratio) / lifetime[/code] particles " +"per second." +msgstr "" +"每个粒子存在的时间(以秒为单位)。有效发射速率为每秒 [code](amount * " +"amount_ratio) / lifetime[/code] 个粒子。" + msgid "" "If [code]true[/code], particles use the parent node's coordinate space (known " "as local coordinates). This will cause particles to move and rotate along the " @@ -50789,6 +54921,38 @@ msgstr "" "用于处理粒子的 [Material] 。可以是 [ParticleProcessMaterial] 或 " "[ShaderMaterial] 。" +msgid "" +"Path to another [GPUParticles2D] node that will be used as a subemitter (see " +"[member ParticleProcessMaterial.sub_emitter_mode]). Subemitters can be used " +"to achieve effects such as fireworks, sparks on collision, bubbles popping " +"into water drops, and more.\n" +"[b]Note:[/b] When [member sub_emitter] is set, the target [GPUParticles2D] " +"node will no longer emit particles on its own." +msgstr "" +"到将被用作子发射器(请参阅 [member ParticleProcessMaterial.sub_emitter_mode])" +"的另一个 [GPUParticles2D] 节点的路径。子发射器可被用于实现烟花、碰撞火花、气泡" +"弹出水滴等效果。\n" +"[b]注意:[/b]当 [member sub_emitter] 被设置时,该目标 [GPUParticles2D] 节点将" +"不再自行发射粒子。" + +msgid "" +"Particle texture. If [code]null[/code], particles will be squares with a size " +"of 1×1 pixels.\n" +"[b]Note:[/b] To use a flipbook texture, assign a new [CanvasItemMaterial] to " +"the [GPUParticles2D]'s [member CanvasItem.material] property, then enable " +"[member CanvasItemMaterial.particles_animation] and set [member " +"CanvasItemMaterial.particles_anim_h_frames], [member CanvasItemMaterial." +"particles_anim_v_frames], and [member CanvasItemMaterial.particles_anim_loop] " +"to match the flipbook texture." +msgstr "" +"粒子纹理。如果为 [code]null[/code],则粒子将是大小为 1×1 像素的正方形。\n" +"[b]注意:[/b]要使用翻页纹理,请将新的 [CanvasItemMaterial] 分配给 " +"[GPUParticles2D] 的 [member CanvasItem.material] 属性,然后启用 [member " +"CanvasItemMaterial.particles_animation] 并设置 [member CanvasItemMaterial." +"particles_anim_h_frames]、[member CanvasItemMaterial." +"particles_anim_v_frames]、和 [member CanvasItemMaterial.particles_anim_loop] " +"来匹配该翻页纹理。" + msgid "" "If [code]true[/code], enables particle trails using a mesh skinning system.\n" "[b]Note:[/b] Unlike [GPUParticles3D], the number of trail sections and " @@ -50837,6 +55001,17 @@ msgstr "" "如果当节点进入/退出屏幕时粒子突然出现/消失,则增长矩形。[Rect2] 可以通过代码或" "使用 [b]Particles → Generate Visibility Rect[/b] 编辑器工具生成。" +msgid "" +"Emitted when all active particles have finished processing. When [member " +"one_shot] is disabled, particles will process continuously, so this is never " +"emitted.\n" +"[b]Note:[/b] Due to the particles being computed on the GPU there might be a " +"delay before the signal gets emitted." +msgstr "" +"当所有活动粒子完成处理时发出。当 [member one_shot] 被禁用时,粒子将连续处理," +"因此它永远不会发出。\n" +"[b]注意:[/b]由于粒子是在 GPU 上计算的,因此在该信号发出之前可能会有延迟。" + msgid "Particle starts at the specified position." msgstr "粒子在指定位置开始。" @@ -50857,6 +55032,20 @@ msgstr "粒子以指定的 [code]CUSTOM[/code] 数据开始。" msgid "A 3D particle emitter." msgstr "3D 粒子发射器。" +msgid "" +"3D particle node used to create a variety of particle systems and effects. " +"[GPUParticles3D] features an emitter that generates some number of particles " +"at a given rate.\n" +"Use [member process_material] to add a [ParticleProcessMaterial] to configure " +"particle appearance and behavior. Alternatively, you can add a " +"[ShaderMaterial] which will be applied to all particles." +msgstr "" +"3D 粒子节点,用于创建各种粒子系统和效果。[GPUParticles3D] 的特点是,发射器以给" +"定的速度产生一定数量的粒子。\n" +"使用 [member process_material] 属性来添加一个配置粒子外观和行为的 " +"[ParticleProcessMaterial]。或者,你可以添加一个应用于所有粒子的 " +"[ShaderMaterial]。" + msgid "Controlling thousands of fish with Particles" msgstr "用粒子控制数千条鱼" @@ -50865,6 +55054,9 @@ msgid "" "are active in the current frame." msgstr "返回包含当前帧中所有活动粒子的轴对齐边界框。" +msgid "Sets this node's properties to match a given [CPUParticles3D] node." +msgstr "设置该节点的属性以匹配给定的 [CPUParticles3D] 节点。" + msgid "Returns the [Mesh] that is drawn at index [param pass]." msgstr "返回在索引 [param pass] 处绘制的 [Mesh] 。" @@ -50874,6 +55066,31 @@ msgstr "重新发射粒子,清除现有的粒子。" msgid "Sets the [Mesh] that is drawn at index [param pass]." msgstr "设置在索引 [param pass] 处绘制的 [Mesh] 。" +msgid "" +"The base diameter for particle collision in meters. If particles appear to " +"sink into the ground when colliding, increase this value. If particles appear " +"to float when colliding, decrease this value. Only effective if [member " +"ParticleProcessMaterial.collision_mode] is [constant ParticleProcessMaterial." +"COLLISION_RIGID] or [constant ParticleProcessMaterial." +"COLLISION_HIDE_ON_CONTACT].\n" +"[b]Note:[/b] Particles always have a spherical collision shape." +msgstr "" +"粒子碰撞的基本直径(以米为单位)。如果碰撞时粒子似乎沉入地下,请增加该值。如果" +"粒子在碰撞时出现漂浮,请减小该值。仅当 [member ParticleProcessMaterial." +"collision_mode] 为 [constant ParticleProcessMaterial.COLLISION_RIGID] 或 " +"[constant ParticleProcessMaterial.COLLISION_HIDE_ON_CONTACT] 时有效。\n" +"[b]注意:[/b]粒子始终具有球形碰撞形状。" + +msgid "" +"Particle draw order. Uses [enum DrawOrder] values.\n" +"[b]Note:[/b] [constant DRAW_ORDER_INDEX] is the only option that supports " +"motion vectors for effects like TAA. It is suggested to use this draw order " +"if the particles are opaque to fix ghosting artifacts." +msgstr "" +"粒子绘制顺序。使用 [enum DrawOrder] 值。\n" +"[b]注意:[/b][constant DRAW_ORDER_INDEX] 是支持 TAA 等效果的运动向量的唯一选" +"项。如果粒子不透明,建议使用该绘制顺序来修复重影伪影。" + msgid "[Mesh] that is drawn for the first draw pass." msgstr "第一绘制阶段所绘制的 [Mesh]。" @@ -50909,6 +55126,11 @@ msgstr "" "[code]false[/code],则粒子使用全局坐标;当移动或旋转时,它们不会沿着 " "[GPUParticles3D] 节点(及其父节点)移动或旋转。" +msgid "" +"If [code]true[/code], only the number of particles equal to [member amount] " +"will be emitted." +msgstr "如果为 [code]true[/code],将只发出 [member amount] 数量的粒子。" + msgid "" "Amount of time to preprocess the particles before animation starts. Lets you " "start the animation some time after particles have started emitting." @@ -50923,6 +55145,20 @@ msgid "" "particles." msgstr "速度缩放比例。[code]0[/code] 的值可被用于暂停粒子。" +msgid "" +"Path to another [GPUParticles3D] node that will be used as a subemitter (see " +"[member ParticleProcessMaterial.sub_emitter_mode]). Subemitters can be used " +"to achieve effects such as fireworks, sparks on collision, bubbles popping " +"into water drops, and more.\n" +"[b]Note:[/b] When [member sub_emitter] is set, the target [GPUParticles3D] " +"node will no longer emit particles on its own." +msgstr "" +"到将被用作子发射器(请参阅 [member ParticleProcessMaterial.sub_emitter_mode])" +"的另一个 [GPUParticles3D] 节点的路径。子发射器可被用于实现烟花、碰撞火花、气泡" +"弹出水滴等效果。\n" +"[b]注意:[/b]当 [member sub_emitter] 被设置时,该目标 [GPUParticles3D] 节点将" +"不再自行发射粒子。" + msgid "" "If [code]true[/code], enables particle trails using a mesh skinning system. " "Designed to work with [RibbonTrailMesh] and [TubeTrailMesh].\n" @@ -50941,9 +55177,32 @@ msgstr "" "[b]注意:[/b]与 [GPUParticles2D] 不同,尾迹部分及其细分的数量是在 " "[RibbonTrailMesh] 或 [TubeTrailMesh] 的属性中设置的。" +msgid "" +"The [AABB] that determines the node's region which needs to be visible on " +"screen for the particle system to be active. [member GeometryInstance3D." +"extra_cull_margin] is added on each of the AABB's axes. Particle collisions " +"and attraction will only occur within this area.\n" +"Grow the box if particles suddenly appear/disappear when the node enters/" +"exits the screen. The [AABB] can be grown via code or with the [b]Particles → " +"Generate AABB[/b] editor tool.\n" +"[b]Note:[/b] [member visibility_aabb] is overridden by [member " +"GeometryInstance3D.custom_aabb] if that property is set to a non-default " +"value." +msgstr "" +"[AABB] 确定节点的区域,该区域需要在屏幕上可见,才能使粒子系统处于活动状态。" +"[member GeometryInstance3D.extra_cull_margin] 被添加到 AABB 的每个轴上。粒子碰" +"撞和吸引只会发生在该区域内。\n" +"如果在节点进入/退出屏幕时,粒子突然出现/消失,则应该增大矩形。[AABB] 可以通过" +"代码,或使用 [b]粒子 → 生成 AABB[/b] 编辑器工具生成。\n" +"[b]注意:[/b]如果该属性被设置为非默认值,[member visibility_aabb] 会被 " +"[member GeometryInstance3D.custom_aabb] 覆盖。" + msgid "Maximum number of draw passes supported." msgstr "支持的最大绘制阶段数。" +msgid "Abstract base class for 3D particle attractors." +msgstr "3D 粒子吸引器的抽象基类。" + 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" @@ -51007,9 +55266,62 @@ msgstr "" "[b]注意:[/b]如果 [member directionality] 大于 [code]0.0[/code],则可以通过旋" "转 [GPUParticlesAttractor3D] 节点,来改变粒子推送的方向。" +msgid "" +"Adjusts the strength of the attractor. If [member strength] is negative, " +"particles will be pushed in the opposite direction. Particles will be pushed " +"[i]away[/i] from the attractor's origin if [member directionality] is " +"[code]0.0[/code], or towards local +Z if [member directionality] is greater " +"than [code]0.0[/code]." +msgstr "" +"调整吸引器的强度。如果 [member strength] 为负,则粒子将被反向推动。如果 " +"[member directionality] 为 [code]0.0[/code],则粒子将被推[i]离[/i]吸引器的原" +"点;如果 [member directionality] 大于 [code]0.0[/code],则粒子将被推向局部 " +"+Z。" + +msgid "" +"A box-shaped attractor that influences particles from [GPUParticles3D] nodes." +msgstr "影响来自 [GPUParticles3D] 节点的粒子的盒形吸引器。" + +msgid "" +"A box-shaped attractor that influences particles from [GPUParticles3D] nodes. " +"Can be used to attract particles towards its origin, or to push them away " +"from its 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" +"[b]Note:[/b] Particle attractors only affect [GPUParticles3D], not " +"[CPUParticles3D]." +msgstr "" +"影响来自 [GPUParticles3D] 节点的粒子的盒形吸引器。可用于将粒子吸引到其原点,或" +"将它们推离其原点。\n" +"粒子吸引器是实时工作的,可以在游戏过程中进行移动、旋转、缩放。与碰撞形状不同," +"吸引器还支持不统一的缩放。\n" +"[b]注意:[/b]粒子吸引器只会影响 [GPUParticles3D],不影响 [CPUParticles3D]。" + msgid "The attractor box's size in 3D units." msgstr "吸引器盒的尺寸,使用 3D 单位。" +msgid "" +"A spheroid-shaped attractor that influences particles from [GPUParticles3D] " +"nodes." +msgstr "影响来自 [GPUParticles3D] 节点的粒子的球形吸引器。" + +msgid "" +"A spheroid-shaped attractor that influences particles from [GPUParticles3D] " +"nodes. Can be used to attract particles towards its origin, or to push them " +"away from its 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" +"[b]Note:[/b] Particle attractors only affect [GPUParticles3D], not " +"[CPUParticles3D]." +msgstr "" +"影响来自 [GPUParticles3D] 节点的粒子的球形吸引器。可用于将粒子吸引到其原点,或" +"将它们推离其原点。\n" +"粒子吸引器是实时工作的,可以在游戏过程中进行移动、旋转、缩放。与碰撞形状不同," +"吸引器还支持不统一的缩放。\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 " @@ -51019,6 +55331,36 @@ msgstr "" "[b]注意:[/b]要得到拉伸椭圆形,可以对 [GPUParticlesAttractorSphere3D] 节点使用" "非统一缩放。" +msgid "" +"A box-shaped attractor with varying directions and strengths defined in it " +"that influences particles from [GPUParticles3D] nodes." +msgstr "" +"盒形吸引器,其中定义了不同的方向和强度,会影响来自 [GPUParticles3D] 节点的粒" +"子。" + +msgid "" +"A box-shaped attractor with varying directions and strengths defined in it " +"that influences particles from [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" +"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" +"[b]Note:[/b] Particle attractors only affect [GPUParticles3D], not " +"[CPUParticles3D]." +msgstr "" +"盒形吸引器,其中定义了不同的方向和强度,会影响来自 [GPUParticles3D] 节点的粒" +"子。\n" +"与 [GPUParticlesAttractorBox3D] 不同,[GPUParticlesAttractorVectorField3D] 使" +"用 [member texture] 来影响盒子内的吸引力强度。可用于创建复杂的吸引场景,其中粒" +"子根据其位置向不同方向移动。这对于沙尘暴等天气影响很有用。\n" +"粒子吸引器是实时工作的,可以在游戏过程中进行移动、旋转、缩放。与碰撞形状不同," +"吸引器还支持不统一的缩放。\n" +"[b]注意:[/b]粒子吸引器只会影响 [GPUParticles3D],不影响 [CPUParticles3D]。" + msgid "The size of the vector field box in 3D units." msgstr "向量场盒子的尺寸,使用 3D 单位。" @@ -51035,6 +55377,42 @@ msgstr "" "size]。由于粒子吸引力通常是低频数据,因此可以将纹理保持在较低分辨率,例如 " "64×64×64。" +msgid "" +"Abstract base class for 3D particle collision shapes affecting " +"[GPUParticles3D] nodes." +msgstr "影响 [GPUParticles3D] 节点的 3D 粒子碰撞形状的抽象基类。" + +msgid "" +"Particle collision shapes can be used to make particles stop or bounce " +"against them.\n" +"Particle collision shapes work in real-time and can be moved, rotated and " +"scaled during gameplay. Unlike attractors, non-uniform scaling of collision " +"shapes is [i]not[/i] supported.\n" +"Particle collision shapes can be temporarily disabled by hiding them.\n" +"[b]Note:[/b] [member ParticleProcessMaterial.collision_mode] must be " +"[constant ParticleProcessMaterial.COLLISION_RIGID] or [constant " +"ParticleProcessMaterial.COLLISION_HIDE_ON_CONTACT] on the [GPUParticles3D]'s " +"process material for collision to work.\n" +"[b]Note:[/b] Particle collision only affects [GPUParticles3D], not " +"[CPUParticles3D].\n" +"[b]Note:[/b] Particles pushed by a collider that is being moved will not be " +"interpolated, which can result in visible stuttering. This can be alleviated " +"by setting [member GPUParticles3D.fixed_fps] to [code]0[/code] or a value " +"that matches or exceeds the target framerate." +msgstr "" +"粒子碰撞形状可用于使粒子停止或对其反弹。\n" +"粒子碰撞形状是实时工作的,在游戏过程中可以移动、旋转和缩放。与吸引器不同,碰撞" +"形状的非均匀缩放[i]不[/i]受支持。\n" +"粒子碰撞形状可以通过隐藏而暂时禁用。\n" +"[b]注意:[/b]在 [GPUParticles3D] 的处理材质上,[member " +"ParticleProcessMaterial.collision_mode] 必须是 [constant " +"ParticleProcessMaterial.COLLISION_RIGID] 或 [constant ParticleProcessMaterial." +"COLLISION_HIDE_ON_CONTACT],才能使碰撞生效。\n" +"[b]注意:[/b]粒子碰撞只影响 [GPUParticles3D],不影响 [CPUParticles3D]。\n" +"[b]注意:[/b]由正在移动的碰撞器推动的粒子不会被插值,这可能会导致可见的卡顿。" +"这可以通过将 [member GPUParticles3D.fixed_fps] 设置为 [code]0[/code] 或一个符" +"合或超过目标帧速率的值来缓解。" + msgid "" "The particle rendering layers ([member VisualInstance3D.layers]) that will be " "affected by the collision shape. By default, all particles that have [member " @@ -51060,9 +55438,70 @@ msgstr "" "通过在 [GPUParticles3D] 节点上设置 [member ParticleProcessMaterial." "attractor_interaction_enabled],也可以在每个进程材质的基础上禁用粒子吸引。" +msgid "" +"A box-shaped 3D particle collision shape affecting [GPUParticles3D] nodes." +msgstr "影响 [GPUParticles3D] 节点的盒形 3D 粒子碰撞形状。" + +msgid "" +"A box-shaped 3D particle collision shape affecting [GPUParticles3D] nodes.\n" +"Particle collision shapes work in real-time and can be moved, rotated and " +"scaled during gameplay. Unlike attractors, non-uniform scaling of collision " +"shapes is [i]not[/i] supported.\n" +"[b]Note:[/b] [member ParticleProcessMaterial.collision_mode] must be " +"[constant ParticleProcessMaterial.COLLISION_RIGID] or [constant " +"ParticleProcessMaterial.COLLISION_HIDE_ON_CONTACT] on the [GPUParticles3D]'s " +"process material for collision to work.\n" +"[b]Note:[/b] Particle collision only affects [GPUParticles3D], not " +"[CPUParticles3D]." +msgstr "" +"影响 [GPUParticles3D] 节点的盒形 3D 粒子碰撞形状。\n" +"粒子碰撞形状是实时工作的,可以在游戏过程中进行移动、旋转、缩放。与吸引器不同," +"碰撞形状的非均匀缩放[i]不[/i]被支持。\n" +"[b]注意:[/b][GPUParticles3D] 的处理材质上的 [member ParticleProcessMaterial." +"collision_mode] 必须为 [constant ParticleProcessMaterial.COLLISION_RIGID] 或 " +"[constant ParticleProcessMaterial.COLLISION_HIDE_ON_CONTACT],碰撞才能发挥作" +"用。\n" +"[b]注意:[/b]粒子碰撞只会影响 [GPUParticles3D],不影响 [CPUParticles3D]。" + msgid "The collision box's size in 3D units." msgstr "碰撞框的范围,使用 3D 单位。" +msgid "" +"A real-time heightmap-shaped 3D particle collision shape affecting " +"[GPUParticles3D] nodes." +msgstr "影响 [GPUParticles3D] 节点的实时高度图形状 3D 粒子碰撞形状。" + +msgid "" +"A real-time heightmap-shaped 3D particle collision shape affecting " +"[GPUParticles3D] nodes.\n" +"Heightmap shapes allow for efficiently representing collisions for convex and " +"concave objects with a single \"floor\" (such as terrain). This is less " +"flexible than [GPUParticlesCollisionSDF3D], but it doesn't require a baking " +"step.\n" +"[GPUParticlesCollisionHeightField3D] can also be regenerated in real-time " +"when it is moved, when the camera moves, or even continuously. This makes " +"[GPUParticlesCollisionHeightField3D] a good choice for weather effects such " +"as rain and snow and games with highly dynamic geometry. However, this class " +"is limited since heightmaps cannot represent overhangs (e.g. indoors or " +"caves).\n" +"[b]Note:[/b] [member ParticleProcessMaterial.collision_mode] must be " +"[code]true[/code] on the [GPUParticles3D]'s process material for collision to " +"work.\n" +"[b]Note:[/b] Particle collision only affects [GPUParticles3D], not " +"[CPUParticles3D]." +msgstr "" +"影响 [GPUParticles3D] 节点的实时高度图形状的 3D 粒子碰撞形状。\n" +"高度图形状允许有效地表示凸面和凹面对象与单个“地板”(例如地形)的碰撞。它不如 " +"[GPUParticlesCollisionSDF3D] 灵活,但不需要烘焙步骤。\n" +"也可以在移动时、相机移动时、甚至连续时,实时重新生成 " +"[GPUParticlesCollisionHeightField3D]。这对雨雪等天气效果、以及具有高度动态几何" +"体的游戏来说,[GPUParticlesCollisionHeightField3D] 是一个不错的选择。但是,该" +"类有限制,因为高度图无法表示悬垂(例如室内或洞穴)。\n" +"[b]注意:[/b]在 [GPUParticles3D] 的处理材质上,[member " +"ParticleProcessMaterial.collision_mode] 必须为 [code]true[/code],才能使碰撞生" +"效。\n" +"[b]注意:[/b]粒子碰撞只影响 [GPUParticles3D],不影响 [CPUParticles3D]。" + msgid "" "If [code]true[/code], the [GPUParticlesCollisionHeightField3D] will follow " "the current camera in global space. The [GPUParticlesCollisionHeightField3D] " @@ -51150,6 +55589,50 @@ msgstr "" "每帧更新高度图。这具有显著的性能成本。只有当粒子可以碰撞的几何体在游戏过程中发" "生显著变化时,才应使用该更新选项。" +msgid "" +"A baked signed distance field 3D particle collision shape affecting " +"[GPUParticles3D] nodes." +msgstr "影响 [GPUParticles3D] 节点的烘焙的带符号距离场 3D 粒子碰撞形状。" + +msgid "" +"A baked signed distance field 3D particle collision shape affecting " +"[GPUParticles3D] nodes.\n" +"Signed distance fields (SDF) allow for efficiently representing approximate " +"collision shapes for convex and concave objects of any shape. This is more " +"flexible than [GPUParticlesCollisionHeightField3D], but it requires a baking " +"step.\n" +"[b]Baking:[/b] The signed distance field texture can be baked by selecting " +"the [GPUParticlesCollisionSDF3D] node in the editor, then clicking [b]Bake " +"SDF[/b] at the top of the 3D viewport. Any [i]visible[/i] [MeshInstance3D]s " +"within the [member size] will be taken into account for baking, regardless of " +"their [member GeometryInstance3D.gi_mode].\n" +"[b]Note:[/b] Baking a [GPUParticlesCollisionSDF3D]'s [member texture] is only " +"possible within the editor, as there is no bake method exposed for use in " +"exported projects. However, it's still possible to load pre-baked " +"[Texture3D]s into its [member texture] property in an exported project.\n" +"[b]Note:[/b] [member ParticleProcessMaterial.collision_mode] must be " +"[constant ParticleProcessMaterial.COLLISION_RIGID] or [constant " +"ParticleProcessMaterial.COLLISION_HIDE_ON_CONTACT] on the [GPUParticles3D]'s " +"process material for collision to work.\n" +"[b]Note:[/b] Particle collision only affects [GPUParticles3D], not " +"[CPUParticles3D]." +msgstr "" +"影响 [GPUParticles3D] 节点的烘焙的带符号距离场 3D 粒子碰撞形状。\n" +"有符号的距离场(SDF)允许有效地表示任何形状的凸面和凹面对象的近似碰撞形状。它" +"比 [GPUParticlesCollisionHeightField3D] 更灵活,但需要一个烘焙步骤。\n" +"[b]烘焙:[/b]可以通过在编辑器中选择 [GPUParticlesCollisionSDF3D] 节点,然后点" +"击 3D 视口顶部的[b]烘焙 SDF[/b],来烘焙有符号的距离场纹理。[member size] 内的" +"任何[i]可见[/i] [MeshInstance3D],无论它们的 [member GeometryInstance3D." +"gi_mode] 如何,都将被考虑用于烘焙。\n" +"[b]注意:[/b]烘焙 [GPUParticlesCollisionSDF3D] 的 [member texture] 只能在编辑" +"器中进行,因为没有公开的烘焙方法可用于导出的游戏项目中。但是,在导出的游戏项目" +"中,仍然可以将预先烘焙的 [Texture3D] 加载到 [member texture] 属性中。\n" +"[b]注意:[/b]在 [GPUParticles3D] 的处理材质上,[member " +"ParticleProcessMaterial.collision_mode] 必须是 [constant " +"ParticleProcessMaterial.COLLISION_RIGID] 或 [constant ParticleProcessMaterial." +"COLLISION_HIDE_ON_CONTACT],才能使碰撞生效。\n" +"[b]注意:[/b]粒子碰撞只影响 [GPUParticles3D],不影响 [CPUParticles3D]。" + msgid "" "Returns whether or not the specified layer of the [member bake_mask] is " "enabled, given a [param layer_number] between 1 and 32." @@ -51233,12 +55716,50 @@ msgid "" "also the most precise." msgstr "烘焙 512×512×512 的有符号距离场。这是最慢的选项,但也是最精确的。" +msgid "" +"A sphere-shaped 3D particle collision shape affecting [GPUParticles3D] nodes." +msgstr "影响 [GPUParticles3D] 节点的球形 3D 粒子碰撞形状。" + +msgid "" +"A sphere-shaped 3D particle collision shape affecting [GPUParticles3D] " +"nodes.\n" +"Particle collision shapes work in real-time and can be moved, rotated and " +"scaled during gameplay. Unlike attractors, non-uniform scaling of collision " +"shapes is [i]not[/i] supported.\n" +"[b]Note:[/b] [member ParticleProcessMaterial.collision_mode] must be " +"[constant ParticleProcessMaterial.COLLISION_RIGID] or [constant " +"ParticleProcessMaterial.COLLISION_HIDE_ON_CONTACT] on the [GPUParticles3D]'s " +"process material for collision to work.\n" +"[b]Note:[/b] Particle collision only affects [GPUParticles3D], not " +"[CPUParticles3D]." +msgstr "" +"影响 [GPUParticles3D] 节点的球形 3D 粒子碰撞形状。\n" +"粒子碰撞形状是实时工作的,可以在游戏过程中进行移动、旋转、缩放。与吸引器不同," +"碰撞形状的非均匀缩放[i]不[/i]被支持。\n" +"[b]注意:[/b][GPUParticles3D] 的处理材质上的 [member ParticleProcessMaterial." +"collision_mode] 必须为 [constant ParticleProcessMaterial.COLLISION_RIGID] 或 " +"[constant ParticleProcessMaterial.COLLISION_HIDE_ON_CONTACT],碰撞才能发挥作" +"用。\n" +"[b]注意:[/b]粒子碰撞只会影响 [GPUParticles3D],不影响 [CPUParticles3D]。" + msgid "The collision sphere's radius in 3D units." msgstr "碰撞球的半径,以 3D 单位表示。" msgid "A color transition." msgstr "颜色过渡。" +msgid "" +"This resource describes a color transition by defining a set of colored " +"points and how to interpolate between them.\n" +"See also [Curve] which supports more complex easing methods, but does not " +"support colors." +msgstr "" +"该资源通过定义一组彩色点以及如何在它们之间进行插值来描述颜色过渡。\n" +"另见 [Curve],它支持更复杂的缓动方法,但不支持颜色。" + +msgid "Adds the specified color to the gradient, with the specified offset." +msgstr "使用指定的偏移,将指定的颜色添加到该渐变中。" + msgid "Returns the color of the gradient color at index [param point]." msgstr "返回渐变色在索引 [param point] 处的颜色。" @@ -51336,6 +55857,20 @@ msgstr "" "[url=https://bottosson.github.io/posts/oklab/]Oklab[/url] 色彩空间。该色彩空间" "能够在不同颜色之间进行平滑、外观统一的过渡。" +msgid "A 1D texture that uses colors obtained from a [Gradient]." +msgstr "使用从 [Gradient] 获得的颜色的一维纹理。" + +msgid "" +"A 1D texture that obtains colors from a [Gradient] to fill the texture data. " +"The texture is filled by sampling the gradient for each pixel. Therefore, the " +"texture does not necessarily represent an exact copy of the gradient, as it " +"may miss some colors if there are not enough pixels. See also " +"[GradientTexture2D], [CurveTexture] and [CurveXYZTexture]." +msgstr "" +"从 [Gradient] 获取颜色来填充纹理数据的一维纹理。通过为每个像素采样渐变来填充纹" +"理。因此,该纹理不一定代表渐变的精确副本,因为如果没有足够的像素,它可能会丢失" +"一些颜色。另见 [GradientTexture2D]、[CurveTexture] 和 [CurveXYZTexture]。" + msgid "The [Gradient] used to fill the texture." msgstr "用于填充纹理的 [Gradient]。" @@ -51354,6 +55889,23 @@ msgstr "" msgid "The number of color samples that will be obtained from the [Gradient]." msgstr "将从 [Gradient] 中获得的颜色样本的数量。" +msgid "" +"A 2D texture that creates a pattern with colors obtained from a [Gradient]." +msgstr "使用从 [Gradient] 获得的颜色创建图案的 2D 纹理。" + +msgid "" +"A 2D texture that obtains colors from a [Gradient] to fill the texture data. " +"This texture is able to transform a color transition into different patterns " +"such as a linear or a radial gradient. The gradient is sampled individually " +"for each pixel so it does not necessarily represent an exact copy of the " +"gradient(see [member width] and [member height]). See also " +"[GradientTexture1D], [CurveTexture] and [CurveXYZTexture]." +msgstr "" +"2D纹理,从一个 [Gradient] 中获取颜色来填充纹理数据。该纹理能够将颜色过渡转换为" +"不同的图案,例如线性或径向渐变。渐变是针对每个像素单独采样的,因此它不一定代表" +"渐变的精确副本(请参阅 [member width] 和 [member height])。另见 " +"[GradientTexture1D]、[CurveTexture] 和 [CurveXYZTexture]。" + msgid "" "The gradient fill type, one of the [enum Fill] values. The texture is filled " "by interpolating colors starting from [member fill_from] to [member fill_to] " @@ -51418,10 +55970,107 @@ msgstr "" msgid "An editor for graph-like structures, using [GraphNode]s." msgstr "图结构编辑器,使用 [GraphNode]。" +msgid "" +"[GraphEdit] provides tools for creation, manipulation, and display of various " +"graphs. Its main purpose in the engine is to power the visual programming " +"systems, such as visual shaders, but it is also available for use in user " +"projects.\n" +"[GraphEdit] by itself is only an empty container, representing an infinite " +"grid where [GraphNode]s can be placed. Each [GraphNode] represents a node in " +"the graph, a single unit of data in the connected scheme. [GraphEdit], in " +"turn, helps to control various interactions with nodes and between nodes. " +"When the user attempts to connect, disconnect, or delete a [GraphNode], a " +"signal is emitted in the [GraphEdit], but no action is taken by default. It " +"is the responsibility of the programmer utilizing this control to implement " +"the necessary logic to determine how each request should be handled.\n" +"[b]Performance:[/b] It is greatly advised to enable low-processor usage mode " +"(see [member OS.low_processor_usage_mode]) when using GraphEdits." +msgstr "" +"[GraphEdit] 提供了用于对各种图进行创建、操作、显示的工具。它在引擎中的主要目的" +"是驱动可视化编程系统,例如可视化着色器,但也可以在用户项目中使用。\n" +"[GraphEdit] 本身只是一个空容器,表示一个可以放置 [GraphNode] 的无限栅格。每个 " +"[GraphNode] 代表图中的一个节点,是连接方案中的单个数据单元。而 [GraphEdit] 则" +"有助于控制节点和节点之间的各种交互。当用户尝试连接、断开或删除一个 " +"[GraphNode] 时,[GraphEdit] 中会发出对应的信号,但默认情况下不执行任何动作。使" +"用此控件的程序员负责实现必要的逻辑,来确定应如何处理每个请求。\n" +"[b]性能:[/b]强烈建议在使用 GraphEdit 时启用低处理器使用模式(见 [member OS." +"low_processor_usage_mode])。" + msgid "" "Virtual method which can be overridden to customize how connections are drawn." msgstr "可以重写的虚方法,以自定义如何绘制连接。" +msgid "" +"Returns whether the [param mouse_position] is in the input hot zone.\n" +"By default, a hot zone is a [Rect2] positioned such that its center is at " +"[param in_node].[method GraphNode.get_input_port_position]([param in_port]) " +"(For output's case, call [method GraphNode.get_output_port_position] " +"instead). The hot zone's width is twice the Theme Property " +"[code]port_grab_distance_horizontal[/code], and its height is twice the " +"[code]port_grab_distance_vertical[/code].\n" +"Below is a sample code to help get started:\n" +"[codeblock]\n" +"func _is_in_input_hotzone(in_node, in_port, mouse_position):\n" +" var port_size: Vector2 = " +"Vector2(get_theme_constant(\"port_grab_distance_horizontal\"), " +"get_theme_constant(\"port_grab_distance_vertical\"))\n" +" var port_pos: Vector2 = in_node.get_position() + in_node." +"get_input_port_position(in_port) - port_size / 2\n" +" var rect = Rect2(port_pos, port_size)\n" +"\n" +" return rect.has_point(mouse_position)\n" +"[/codeblock]" +msgstr "" +"返回 [param mouse_position] 是否在输入热区。\n" +"默认情况下,热区是一个 [Rect2],其中心位于 [param in_node].[method GraphNode." +"get_input_port_position]([param in_port])(对于输出的情况,请改为调用 [method " +"GraphNode.get_output_port_position])。热区的宽度是主题属性 " +"[code]port_grab_distance_horizontal[/code] 的两倍,高度是 " +"[code]port_grab_distance_vertical[/code] 的两倍。\n" +"下面是一个示例代码,以帮助入门:\n" +"[codeblock]\n" +"func _is_in_input_hotzone(in_node, in_port, mouse_position):\n" +" var port_size: Vector2 = " +"Vector2(get_theme_constant(\"port_grab_distance_horizontal\"), " +"get_theme_constant(\"port_grab_distance_vertical\"))\n" +" var port_pos: Vector2 = in_node.get_position() + in_node." +"get_input_port_position(in_port) - port_size / 2\n" +" var rect = Rect2(port_pos, port_size)\n" +"\n" +" return rect.has_point(mouse_position)\n" +"[/codeblock]" + +msgid "" +"Returns whether the [param mouse_position] is in the output hot zone. For " +"more information on hot zones, see [method _is_in_input_hotzone].\n" +"Below is a sample code to help get started:\n" +"[codeblock]\n" +"func _is_in_output_hotzone(in_node, in_port, mouse_position):\n" +" var port_size: Vector2 = " +"Vector2(get_theme_constant(\"port_grab_distance_horizontal\"), " +"get_theme_constant(\"port_grab_distance_vertical\"))\n" +" var port_pos: Vector2 = in_node.get_position() + in_node." +"get_output_port_position(in_port) - port_size / 2\n" +" var rect = Rect2(port_pos, port_size)\n" +"\n" +" return rect.has_point(mouse_position)\n" +"[/codeblock]" +msgstr "" +"返回 [param mouse_position] 是否在输出热区。有关热区的更多信息,请参阅 " +"[method _is_in_input_hotzone]。\n" +"下面是一个示例代码,以帮助入门:\n" +"[codeblock]\n" +"func _is_in_output_hotzone(in_node, in_port, mouse_position):\n" +" var port_size: Vector2 = " +"Vector2(get_theme_constant(\"port_grab_distance_horizontal\"), " +"get_theme_constant(\"port_grab_distance_vertical\"))\n" +" var port_pos: Vector2 = in_node.get_position() + in_node." +"get_output_port_position(in_port) - port_size / 2\n" +" var rect = Rect2(port_pos, port_size)\n" +"\n" +" return rect.has_point(mouse_position)\n" +"[/codeblock]" + msgid "" "This virtual method can be used to insert additional error detection while " "the user is dragging a connection over a valid port.\n" @@ -51614,6 +56263,17 @@ msgstr "" "点的连接。使用该方法来禁用以前使用 [method add_valid_right_disconnect_type] 允" "许的断开连接。" +msgid "" +"Sets the coloration of the connection between [param from_node]'s [param " +"from_port] and [param to_node]'s [param to_port] with the color provided in " +"the [theme_item activity] theme property. The color is linearly interpolated " +"between the connection color and the activity color using [param amount] as " +"weight." +msgstr "" +"使用 [theme_item activity] 主题属性中提供的颜色,设置 [param from_node] 的 " +"[param from_port] 和 [param to_node] 的 [param to_port] 之间的连接的颜色。使" +"用 [param amount] 作为权重,在连接颜色和活动颜色之间线性插值颜色。" + msgid "Sets the specified [param node] as the one selected." msgstr "将指定的 [param node] 节点设置为选中的节点。" @@ -51650,12 +56310,40 @@ msgstr "" msgid "The scroll offset." msgstr "滚动偏移量。" +msgid "" +"If [code]true[/code], the button to automatically arrange graph nodes is " +"visible." +msgstr "如果为 [code]true[/code],则自动排列图形节点的按钮可见。" + msgid "If [code]true[/code], the grid is visible." msgstr "如果为 [code]true[/code],则该网格可见。" +msgid "" +"If [code]true[/code], buttons that allow to configure grid and snapping " +"options are visible." +msgstr "如果为 [code]true[/code],则允许配置栅格和吸附选项的按钮可见。" + msgid "If [code]true[/code], the menu toolbar is visible." msgstr "如果为 [code]true[/code],则菜单栏可见。" +msgid "If [code]true[/code], the button to toggle the minimap is visible." +msgstr "如果为 [code]true[/code],则切换小地图的按钮可见。" + +msgid "" +"If [code]true[/code], buttons that allow to change and reset the zoom level " +"are visible." +msgstr "如果为 [code]true[/code],则允许更改和重置缩放级别的按钮可见。" + +msgid "" +"If [code]true[/code], the label with the current zoom level is visible. The " +"zoom level is displayed in percents." +msgstr "" +"如果为 [code]true[/code],则使带有当前缩放级别的标签可见。缩放级别以百分比显" +"示。" + +msgid "The snapping distance in pixels, also determines the grid line distance." +msgstr "吸附距离,单位为像素,也决定了栅格线距离。" + msgid "If [code]true[/code], enables snapping." msgstr "如果为 [code]true[/code],启用自动吸附。" @@ -51701,6 +56389,14 @@ msgstr "当用户将连接从输出端口拖动到图形的空白区域时发出 msgid "Emitted when the user presses [kbd]Ctrl + C[/kbd]." msgstr "当用户按下 [kbd]Ctrl + C[/kbd] 时发出。" +msgid "" +"Emitted when attempting to remove a GraphNode from the GraphEdit. Provides a " +"list of node names to be removed (all selected nodes, excluding nodes without " +"closing button)." +msgstr "" +"当尝试从该 GraphEdit 中移除一个 GraphNode 时触发。提供要移除的节点名称列表(所" +"有选中的节点,除去不包含关闭按钮的节点)。" + msgid "" "Emitted to the GraphEdit when the connection between [param from_port] of " "[param from_node] [GraphNode] and [param to_port] of [param to_node] " @@ -51744,6 +56440,10 @@ msgid "" "zoom." msgstr "[kbd]鼠标滚轮[/kbd]进行视图的移动,[kbd]Ctrl + 鼠标滚轮[/kbd]进行缩放。" +msgid "" +"Color of the connection's activity (see [method set_connection_activity])." +msgstr "该连接活动的颜色(请参阅 [method set_connection_activity])。" + msgid "Color of major grid lines." msgstr "主要栅格线的颜色。" @@ -51765,6 +56465,9 @@ msgstr "能够抓取端口的(外侧)横向范围。" msgid "The icon for the grid toggle button." msgstr "网格开关按钮的图标。" +msgid "The icon for the layout button for auto-arranging the graph." +msgstr "用于自动排列图形的布局按钮的图标。" + msgid "The icon for the minimap toggle button." msgstr "小地图开关按钮的图标。" @@ -51783,6 +56486,21 @@ msgstr "缩放重置按钮的图标。" msgid "The background drawn under the grid." msgstr "绘制在栅格下方的背景。" +msgid "" +"A container that represents a basic element that can be placed inside a " +"[GraphEdit] control." +msgstr "表示可以放置在 [GraphEdit] 控件内的基本元素的容器。" + +msgid "" +"[GraphElement] allows to create custom elements for a [GraphEdit] graph. By " +"default such elements can be selected, resized, and repositioned, but they " +"cannot be connected. For a graph element that allows for connections see " +"[GraphNode]." +msgstr "" +"[GraphElement] 允许为 [GraphEdit] 图表创建自定义元素。默认情况下,可以此类元素" +"可以被选择、调整大小、和重新定位,但它们无法被连接。对于允许连接的图形元素,请" +"参阅 [GraphNode]。" + msgid "If [code]true[/code], the user can drag the GraphElement." msgstr "如果为 [code]true[/code],则用户能够拖动该 GraphElement。" @@ -51835,6 +56553,10 @@ msgstr "" "当 GraphElement 被要求调整大小时发出。在拖动调整器手柄时发生(见 [member " "resizable])。" +msgid "" +"The icon used for the resizer, visible when [member resizable] is enabled." +msgstr "用于调整大小的图标,在 [member resizable] 被启用时可见。" + msgid "A container with connection ports, representing a node in a [GraphEdit]." msgstr "带有连接端口的容器,代表 [GraphEdit] 中的一个节点。" @@ -52027,6 +56749,38 @@ msgid "" "slot_index]." msgstr "开关索引为 [param slot_index] 的插槽的背景 [StyleBox]。" +msgid "" +"Toggles the left (input) side of the slot with the given [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 with the given [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 "" +"Sets the left (input) type of the slot with the given [param slot_index] to " +"[param type]. If the value is negative, all connections will be disallowed to " +"be created via user inputs." +msgstr "" +"将给定插槽 [param slot_index] 的左侧(输入)类型设置为 [param type]。如果该值" +"为负,则所有的连接将不允许通过用户输入来创建。" + +msgid "" +"Sets the right (output) type of the slot with the given [param slot_index] to " +"[param type]. If the value is negative, all connections will be disallowed to " +"be created via user inputs." +msgstr "" +"将给定插槽 [param slot_index] 的右侧(输出)类型设置为 [param type]。如果该值" +"为负,则所有的连接将不允许通过用户输入来创建。" + msgid "The text displayed in the GraphNode's title bar." msgstr "显示在 GraphNode 标题栏中的文本。" @@ -52045,9 +56799,22 @@ msgstr "端口之间的垂直距离。" msgid "The icon used for representing ports." msgstr "该图标用于表示端口。" +msgid "The default background for the slot area of the [GraphNode]." +msgstr "[GraphNode] 槽区域的默认背景。" + +msgid "The [StyleBox] used for the slot area when selected." +msgstr "用于被选中时的插槽区域的 [StyleBox]。" + msgid "The [StyleBox] used for each slot of the [GraphNode]." msgstr "用于 [GraphNode] 的每个插槽的 [StyleBox]。" +msgid "The [StyleBox] used for the title bar of the [GraphNode]." +msgstr "用于该 [GraphNode] 标题栏的 [StyleBox]。" + +msgid "" +"The [StyleBox] used for the title bar of the [GraphNode] when it is selected." +msgstr "当 [GraphNode] 被选中时,用于其标题栏的 [StyleBox]。" + msgid "A container that arranges its child controls in a grid layout." msgstr "将子控件按照网格布局排列的容器。" @@ -52292,6 +57059,9 @@ msgstr "覆盖整个 [GridMap] 的默认摩擦力和反弹物理属性。" msgid "Emitted when [member cell_size] changes." msgstr "当 [member cell_size] 改变时触发。" +msgid "Emitted when the [MeshLibrary] of this GridMap changes." +msgstr "该 GridMap 的 [MeshLibrary] 发生改变时发出。" + msgid "" "Invalid cell item that can be used in [method set_cell_item] to clear cells " "(or represent an empty cell in [method get_cell_item])." @@ -52837,6 +57607,19 @@ msgstr "" "信任的证书颁发机构,或者使用 HTTPS 时的通用名称验证。请参阅 [method " "TLSOptions.client] 和 [method TLSOptions.client_unsafe]。" +msgid "" +"Returns the response's body length.\n" +"[b]Note:[/b] Some Web servers may not send a body length. In this case, the " +"value returned will be [code]-1[/code]. If using chunked transfer encoding, " +"the body length will also be [code]-1[/code].\n" +"[b]Note:[/b] This function always returns [code]-1[/code] on the Web platform " +"due to browsers limitations." +msgstr "" +"返回响应体长度。\n" +"[b]注意:[/b]部分 Web 服务器可能不发送响应体长度,此时返回值将为 [code]-1[/" +"code]。如果使用分块传输编码,响应体的长度也将为 [code]-1[/code]。\n" +"[b]注意:[/b]由于浏览器的限制,该函数在 Web 平台上始终返回 [code]-1[/code]。" + msgid "Returns the response's HTTP status code." msgstr "返回响应的 HTTP 状态码。" @@ -54100,6 +58883,30 @@ msgid "" msgstr "" "设置连接到 HTTPS 服务器时使用的 [TLSOptions]。见 [method TLSOptions.client]。" +msgid "" +"If [code]true[/code], this header will be added to each request: [code]Accept-" +"Encoding: gzip, deflate[/code] telling servers that it's okay to compress " +"response bodies.\n" +"Any Response body declaring a [code]Content-Encoding[/code] of either " +"[code]gzip[/code] or [code]deflate[/code] will then be automatically " +"decompressed, and the uncompressed bytes will be delivered via [signal " +"request_completed].\n" +"If the user has specified their own [code]Accept-Encoding[/code] header, then " +"no header will be added regardless of [member accept_gzip].\n" +"If [code]false[/code] no header will be added, and no decompression will be " +"performed on response bodies. The raw bytes of the response body will be " +"returned via [signal request_completed]." +msgstr "" +"如果为 [code]true[/code],这个报头会被添加到每个请求中:[code]Accept-" +"Encoding: gzip, deflate[/code] 告诉服务器可以压缩响应正文。\n" +"任何声明 [code]gzip[/code] 或 [code]deflate[/code] 的 [code]Content-Encoding[/" +"code] 的响应正文,将被自动解压缩,并且未压缩的字节将通过 [signal " +"request_completed] 被传递。\n" +"如果用户指定了自己的 [code]Accept-Encoding[/code] 报头,那么无论 [member " +"accept_gzip] 是什么,都不会添加任何报头。\n" +"如果为 [code]false[/code],这将不会添加报头,并且不会对响应正文执行任何解压" +"缩。响应正文的原始字节将通过 [signal request_completed] 返回。" + msgid "" "Maximum allowed size for response bodies. If the response body is compressed, " "this will be used as the maximum allowed size for the decompressed body." @@ -54193,6 +59000,25 @@ msgstr "" msgid "Image datatype." msgstr "图像数据类型。" +msgid "" +"Native image datatype. Contains image data which can be converted to an " +"[ImageTexture] and provides commonly used [i]image processing[/i] methods. " +"The maximum width and height for an [Image] are [constant MAX_WIDTH] and " +"[constant MAX_HEIGHT].\n" +"An [Image] cannot be assigned to a texture property of an object directly " +"(such as [member Sprite2D.texture]), and has to be converted manually to an " +"[ImageTexture] first.\n" +"[b]Note:[/b] The maximum image size is 16384×16384 pixels due to graphics " +"hardware limitations. Larger images may fail to import." +msgstr "" +"本机图像数据类型。包含可以被转换为 [ImageTexture] 的图像数据,并提供常用的[i]" +"图像处理[/i]方法。[Image] 的最大宽度和高度为 [constant MAX_WIDTH] 和 " +"[constant MAX_HEIGHT]。\n" +"[Image] 不能被直接分配给对象的纹理属性(例如 [member Sprite2D.texture]),必须" +"先手动转换为 [ImageTexture]。\n" +"[b]注意:[/b]由于图形硬件限制,最大图像大小为 16384×16384 像素。较大的图像可能" +"无法导入。" + msgid "Importing images" msgstr "导入图像" @@ -54368,25 +59194,6 @@ 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]. Enabling " -"[param renormalize] when generating mipmaps for normal textures will make " -"sure all resulting vector values are normalized.\n" -"It is possible to check if the image has mipmaps by calling [method " -"has_mipmaps] or [method get_mipmap_count]." -msgstr "" -"为图像生成 Mipmap。Mipmap 是预先计算好的图像的低分辨率副本,如果图像在渲染时需" -"要按比例缩小,则会自动使用这些副本。它们有助于在渲染时提高图像质量和性能。如果" -"图像被压缩,或采用自定义格式,或图像的宽度或高度为 [code]0[/code],则该方法返" -"回错误。在为法线纹理生成 mipmap 时启用 [param renormalize] 能够确保得到的所有" -"向量值都是归一化的。\n" -"调用 [method has_mipmaps] 或 [method get_mipmap_count] 能够检查图像是否使用 " -"mipmap。" - msgid "Returns a copy of the image's raw data." msgstr "返回图像原始数据的副本。" @@ -54396,6 +59203,22 @@ msgstr "返回图像的格式。参阅 [enum Format] 常量。" msgid "Returns the image's height." msgstr "返回图像的高度。" +msgid "" +"Returns the number of mipmap levels or 0 if the image has no mipmaps. The " +"largest main level image is not counted as a mipmap level by this method, so " +"if you want to include it you can add 1 to this count." +msgstr "" +"返回多级渐远纹理级别数;如果该图像没有多级渐远纹理,则返回 0。该方法不会将最大" +"的主要级别图像计为一个多级渐远纹理级别,因此如果你想将其包括在内,可以在该计数" +"中加 1。" + +msgid "" +"Returns the offset where the image's mipmap with index [param mipmap] is " +"stored in the [member data] dictionary." +msgstr "" +"返回存储在图像的 [member data] 字典中的索引为 [param mipmap] 的多级渐远纹理的" +"偏移量。" + msgid "" "Returns the color of the pixel at [code](x, y)[/code].\n" "This is the same as [method get_pixelv], but with two integer arguments " @@ -54463,15 +59286,6 @@ msgstr "" "[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." -msgstr "" -"从 BMP 文件的二进制内容中加载图像。\n" -"[b]注意:[/b]Godot 的 BMP 模块不支持 16 位像素的图像。只支持 1 位、4 位、8 " -"位、24 位和 32 位像素的图像。" - msgid "Creates a new [Image] and loads data from the specified file." msgstr "创建一个新的 [Image] 并从指定文件加载数据。" @@ -54481,8 +59295,32 @@ msgstr "从 JPEG 文件的二进制内容加载图像。" msgid "Loads an image from the binary contents of a PNG file." msgstr "从 PNG 文件的二进制内容加载图像。" -msgid "Loads an image from the binary contents of a TGA file." -msgstr "从 TGA 文件的二进制内容加载图像。" +msgid "" +"Loads an image from the UTF-8 binary contents of an [b]uncompressed[/b] SVG " +"file ([b].svg[/b]).\n" +"[b]Note:[/b] Beware when using compressed SVG files (like [b].svgz[/b]), they " +"need to be [code]decompressed[/code] before loading.\n" +"[b]Note:[/b] This method is only available in engine builds with the SVG " +"module enabled. By default, the SVG module is enabled, but it can be disabled " +"at build-time using the [code]module_svg_enabled=no[/code] SCons option." +msgstr "" +"从[b]未压缩[/b] SVG 文件([b].svg[/b])的 UTF-8 二进制内容加载图像。\n" +"[b]注意:[/b]使用压缩的 SVG 文件(如 [b].svgz[/b])时请注意,在加载之前需要对" +"其进行 [code]decompressed[/code]。\n" +"[b]注意:[/b]该方法仅在启用了 SVG 模块的引擎版本中可用。默认情况下,SVG 模块是" +"启用的,但可以在构建时使用 [code]module_svg_enabled=no[/code] SCons 选项禁用" +"它。" + +msgid "" +"Loads an image from the string contents of a SVG file ([b].svg[/b]).\n" +"[b]Note:[/b] This method is only available in engine builds with the SVG " +"module enabled. By default, the SVG module is enabled, but it can be disabled " +"at build-time using the [code]module_svg_enabled=no[/code] SCons option." +msgstr "" +"从 SVG 文件([b].svg[/b])的字符串内容加载图像。\n" +"[b]注意:[/b]该方法仅在启用了 SVG 模块的引擎版本中可用。默认情况下,SVG 模块是" +"启用的,但可以在构建时使用 [code]module_svg_enabled=no[/code] SCons 选项禁用" +"它。" msgid "Loads an image from the binary contents of a WebP file." msgstr "从 WebP 文件的二进制内容加载图像。" @@ -54495,12 +59333,6 @@ msgstr "" "转换图像的数据以表示 3D 平面上的坐标。可以在该图像表示法线贴图时使用。法线贴图" "可以在不增加多边形数量的情况下向 3D 表面添加大量细节。" -msgid "" -"Multiplies color values with alpha values. Resulting color values for a pixel " -"are [code](color * alpha)/256[/code]." -msgstr "" -"将颜色值与 Alpha 值相乘。像素的结果颜色值为 [code](color * alpha)/256[/code]。" - msgid "" "Resizes the image to the given [param width] and [param height]. New pixels " "are calculated using the [param interpolation] mode defined via [enum " @@ -54613,25 +59445,6 @@ msgstr "将该图像作为 PNG 文件保存到位于 [param path] 的文件中 msgid "Saves the image as a PNG file to a byte array." msgstr "将该图像作为 PNG 文件保存到字节数组中。" -msgid "" -"Saves the image as a WebP (Web Picture) file to the file at [param path]. By " -"default it will save lossless. If [param lossy] is true, the image will be " -"saved lossy, using the [param quality] setting between 0.0 and 1.0 " -"(inclusive)." -msgstr "" -"将该图像作为 WebP(Web 图片)文件保存到 [param path] 中的文件中。默认情况下," -"它将无损保存。如果 [param lossy] 为真,则该图像将使用介于 0.0 和 1.0(包含)之" -"间的 [param quality] 设置进行有损保存。" - -msgid "" -"Saves the image as a WebP (Web Picture) file to a byte array. By default it " -"will save lossless. If [param lossy] is true, the image will be saved lossy, " -"using the [param quality] setting between 0.0 and 1.0 (inclusive)." -msgstr "" -"将该图像作为 WebP(Web 图片)文件保存到字节数组中。默认情况下,它将无损保存。" -"如果 [param lossy] 为真,则该图像将使用介于 0.0 和 1.0(包含)之间的 [param " -"quality] 设置进行有损保存。" - msgid "" "Overwrites data of an existing [Image]. Non-static equivalent of [method " "create_from_data]." @@ -54724,9 +59537,6 @@ msgstr "" "[/codeblocks]\n" "这与 [method set_pixel] 相同,只是使用一个 [Vector2i] 参数而不是两个整数参数。" -msgid "Shrinks the image by a factor of 2." -msgstr "将图像缩小 2 倍。" - msgid "Converts the raw data from the sRGB colorspace to a linear scale." msgstr "将原始数据从 sRGB 色彩空间转换为线性比例。" @@ -54809,6 +59619,33 @@ msgstr "" "OpenGL 纹理格式 [code]GL_RGBA32F[/code],其中有四个部分,每个部分都是 32 位浮" "点值。" +msgid "" +"OpenGL texture format [code]GL_R16F[/code] where there's one component, a 16-" +"bit \"half-precision\" floating-point value." +msgstr "" +"OpenGL 纹理格式 [code]GL_R16F[/code],其中有一个分量,即 16 位“半精度”浮点值。" + +msgid "" +"OpenGL texture format [code]GL_RG16F[/code] where there are two components, " +"each a 16-bit \"half-precision\" floating-point value." +msgstr "" +"OpenGL 纹理格式 [code]GL_RG16F[/code],其中有两个分量,每个分量都是 16 位“半精" +"度”浮点值。" + +msgid "" +"OpenGL texture format [code]GL_RGB16F[/code] where there are three " +"components, each a 16-bit \"half-precision\" floating-point value." +msgstr "" +"OpenGL 纹理格式 [code]GL_RGB16F[/code],其中有三个分量,每个分量都是 16 位“半" +"精度”浮点值。" + +msgid "" +"OpenGL texture format [code]GL_RGBA16F[/code] where there are four " +"components, each a 16-bit \"half-precision\" floating-point value." +msgstr "" +"OpenGL 纹理格式 [code]GL_RGBA16F[/code],其中有四个分量,每个都是 16 位“半精" +"度”浮点值。" + msgid "" "A special OpenGL texture format where the three color components have 9 bits " "of precision and all three share a single 5-bit exponent." @@ -55355,9 +60192,74 @@ msgstr "" "其他图像[i]必须[/i]具有相同的宽度、高度、图像格式和 mipmapping 设置。\n" "每个 [Image] 代表一个 [code]layer[/code]。" +msgid "" +"Replaces the existing [Image] data at the given [param layer] with this new " +"image.\n" +"The given [Image] must have the same width, height, image format, and " +"mipmapping flag as the rest of the referenced images.\n" +"If the image format is unsupported, it will be decompressed and converted to " +"a similar and supported [enum Image.Format].\n" +"The update is immediate: it's synchronized with drawing." +msgstr "" +"用这个新图像替换给定 [param layer] 的现有 [Image] 数据。\n" +"给定的 [Image] 必须与其余引用的图像具有相同的宽度、高度、图像格式、和多级渐远" +"纹理标志。\n" +"如果图像格式不受支持,它将被解压缩并转换为一个相似且受支持的 [enum Image." +"Format]。\n" +"更新是即时的:它与绘制同步。" + msgid "Mesh optimized for creating geometry manually." msgstr "为手动创建几何体,而优化的网格。" +msgid "" +"A mesh type optimized for creating geometry manually, similar to OpenGL 1.x " +"immediate mode.\n" +"Here's a sample on how to generate a triangular face:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var mesh = ImmediateMesh.new()\n" +"mesh.surface_begin(Mesh.PRIMITIVE_TRIANGLES)\n" +"mesh.surface_add_vertex(Vector3.LEFT)\n" +"mesh.surface_add_vertex(Vector3.FORWARD)\n" +"mesh.surface_add_vertex(Vector3.ZERO)\n" +"mesh.surface_end()\n" +"[/gdscript]\n" +"[csharp]\n" +"var mesh = new ImmediateMesh();\n" +"mesh.SurfaceBegin(Mesh.PrimitiveType.Triangles);\n" +"mesh.SurfaceAddVertex(Vector3.Left);\n" +"mesh.SurfaceAddVertex(Vector3.Forward);\n" +"mesh.SurfaceAddVertex(Vector3.Zero);\n" +"mesh.SurfaceEnd();\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Note:[/b] Generating complex geometries with [ImmediateMesh] is highly " +"inefficient. Instead, it is designed to generate simple geometry that changes " +"often." +msgstr "" +"针对手动创建几何体优化的网格类型,与 OpenGL 1.x 的立即模式类似。\n" +"以下是生成三角形面的示例:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var mesh = ImmediateMesh.new()\n" +"mesh.surface_begin(Mesh.PRIMITIVE_TRIANGLES)\n" +"mesh.surface_add_vertex(Vector3.LEFT)\n" +"mesh.surface_add_vertex(Vector3.FORWARD)\n" +"mesh.surface_add_vertex(Vector3.ZERO)\n" +"mesh.surface_end()\n" +"[/gdscript]\n" +"[csharp]\n" +"var mesh = new ImmediateMesh();\n" +"mesh.SurfaceBegin(Mesh.PrimitiveType.Triangles);\n" +"mesh.SurfaceAddVertex(Vector3.Left);\n" +"mesh.SurfaceAddVertex(Vector3.Forward);\n" +"mesh.SurfaceAddVertex(Vector3.Zero);\n" +"mesh.SurfaceEnd();\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]注意:[/b]使用 [ImmediateMesh] 生成复杂的几何体极其低效。这种网格的设计目的" +"是用来生成经常变化的简单几何体。" + msgid "Using ImmediateMesh" msgstr "使用 ImmediateMesh" @@ -55475,6 +60377,11 @@ msgstr "" "如果还没有缓存并且提供了 [param base_mesh],则 [param base_mesh] 将被使用并被" "改变。" +msgid "" +"Returns the arrays for the vertices, normals, UVs, etc. that make up the " +"requested surface. See [method add_surface]." +msgstr "返回构成请求表面的顶点、法线、UV 等的数组。参见 [method add_surface]。" + msgid "" "Returns a single set of blend shape arrays for the requested blend shape " "index for a surface." @@ -55574,6 +60481,22 @@ msgstr "" "引擎已经会在关键的执行点执行此操作,至少每帧一次。然而,在你想要精确控制事件处" "理时间的高级情况下,这可能是有用的。" +msgid "" +"Returns the acceleration in m/s² of the device's accelerometer sensor, if the " +"device has one. Otherwise, the method returns [constant Vector3.ZERO].\n" +"Note this method returns an empty [Vector3] when running from the editor even " +"when your device has an accelerometer. You must export your project to a " +"supported device to read values from the accelerometer.\n" +"[b]Note:[/b] This method only works on Android and iOS. On other platforms, " +"it always returns [constant Vector3.ZERO]." +msgstr "" +"如果设备有加速度计传感器,则返回该设备加速度计传感器的加速度,单位为 m/s²。否" +"则,该方法返回 [constant Vector3.ZERO]。\\\n" +"请注意,即使你的设备具有一个加速度计,在从编辑器运行时,该方法也会返回一个空" +"的 [Vector3]。必须将项目导出到一个支持的设备上,才能从加速度计读取值。\n" +"[b]注意:[/b]该方法仅适用于 Android 和 iOS。在其他平台上,它总是返回 " +"[constant Vector3.ZERO]。" + 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 " @@ -55588,6 +60511,23 @@ msgstr "" "[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 such 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." @@ -55697,6 +60637,18 @@ msgstr "" "返回上次的鼠标速度。为了提供精确且无抖动的速度,鼠标速度仅每 0.1 秒计算一次。" "因此,鼠标速度将滞后于鼠标移动。" +msgid "" +"Returns the magnetic field strength in micro-Tesla for all axes of the " +"device's magnetometer sensor, if the device has one. Otherwise, the method " +"returns [constant Vector3.ZERO].\n" +"[b]Note:[/b] This method only works on Android and iOS. On other platforms, " +"it always returns [constant Vector3.ZERO]." +msgstr "" +"如果设备有磁力传感器,则返回设备所有轴的磁场强度,单位为微特斯拉。否则,该方法" +"返回 [constant Vector3.ZERO]。\n" +"[b]注意:[/b]该方法仅适用于 Android 和 iOS。在其他平台上,它总是返回 " +"[constant Vector3.ZERO]。" + msgid "" "Returns mouse buttons as a bitmask. If multiple mouse buttons are pressed at " "the same time, the bits are added together. Equivalent to [method " @@ -55722,59 +60674,24 @@ msgstr "" "要的值(在 0 到 1 的范围内)。" msgid "" -"Returns [code]true[/code] when the user has [i]started[/i] pressing the " -"action event in the current frame or physics tick. It will only return " -"[code]true[/code] on the frame or tick 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" +"Returns [code]true[/code] if you are pressing the action event.\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] Returning [code]true[/code] does not imply that the action is " -"[i]still[/i] pressed. An action can be pressed and released again rapidly, " -"and [code]true[/code] will still be returned so as not to miss input.\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 " +"[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 "" -"当用户在当前帧或物理周期中[i]开始[/i]按下动作事件时返回 [code]true[/code]。只" -"在用户按下按钮的那一帧或周期中为 [code]true[/code]。\n" -"如果代码只需要在动作按下时执行一次,而不是只要处于按下状态就每帧都需要执行,那" -"么这个方法就很有用。\n" -"如果 [param exact_match] 为 [code]false[/code],则会忽略 [InputEventKey] 和 " +"如果正在按下操作事件,则返回 [code]true[/code]。\n" +"如果 [param exact_match] 为 [code]false[/code],则它会忽略 [InputEventKey] 和 " "[InputEventMouseButton] 事件的额外输入修饰键,以及 [InputEventJoypadMotion] 事" "件的方向。\n" -"[b]注意:[/b]返回 [code]true[/code] 并不意味着该动作[i]仍然[/i]处于按下状态。" -"动作在按下后是可以很快再释放的,为了不丢失输入,这种情况下仍然会返回 " -"[code]true[/code]。\n" -"[b]注意:[/b]由于键盘重影,即便该动作的某个键处于按下状态,[method " -"is_action_just_pressed] 仍可能会返回 [code]false[/code]。详情见文档中的" +"[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] when the user [i]stops[/i] pressing the action " -"event in the current frame or physics tick. It will only return [code]true[/" -"code] on the frame or tick that the user releases the button.\n" -"[b]Note:[/b] Returning [code]true[/code] does not imply that the action is " -"[i]still[/i] not pressed. An action can be released and pressed again " -"rapidly, and [code]true[/code] will still be returned so as not to miss " -"input.\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 "" -"当用户在当前帧或物理周期中[i]停止[/i]按下动作事件时返回 [code]true[/code]。只" -"在用户松开按钮的那一帧或周期中为 [code]true[/code]。\n" -"[b]注意:[/b]返回 [code]true[/code] 并不意味着该动作[i]仍然[/i]处于松开状态。" -"动作在松开后是可以很快再按下的,为了不丢失输入,这种情况下仍然会返回 " -"[code]true[/code]。\n" -"如果 [param exact_match] 为 [code]false[/code],则会忽略 [InputEventKey] 和 " -"[InputEventMouseButton] 事件的额外输入修饰键,以及 [InputEventJoypadMotion] 事" -"件的方向。" - msgid "" "Returns [code]true[/code] if any action, key, joypad button, or mouse button " "is being pressed. This will also return [code]true[/code] if any action is " @@ -55993,6 +60910,23 @@ msgstr "" "编辑器中。\n" "[b]注意:[/b]在 Android 和 iOS 上,这个值可立即被硬件传感器的值所覆盖。" +msgid "" +"Queries whether an input device should be ignored or not. Devices can be " +"ignored by setting the environment variable " +"[code]SDL_GAMECONTROLLER_IGNORE_DEVICES[/code]. Read the [url=https://wiki." +"libsdl.org/SDL2]SDL documentation[/url] for more information.\n" +"[b]Note:[/b] Some 3rd party tools can contribute to the list of ignored " +"devices. For example, [i]SteamInput[/i] creates virtual devices from physical " +"devices for remapping purposes. To avoid handling the same input device " +"twice, the original device is added to the ignore list." +msgstr "" +"查询输入设备是否应被忽略。可以通过设置环境变量 " +"[code]SDL_GAMECONTROLLER_IGNORE_DEVICES[/code] 来忽略设备。请阅读 " +"[url=https://wiki.libsdl.org/SDL2]SDL 文档[/url]了解更多信息。\n" +"[b]注意:[/b]某些第三方工具可以添加忽略设备列表。例如,[i]SteamInput[/i] 从物" +"理设备创建虚拟设备以进行重新映射。为了避免两次处理相同的输入设备,原始设备被添" +"加到忽略列表中。" + 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 " @@ -56613,6 +61547,58 @@ msgstr "" " +-----+ +-----+\n" "[/codeblock]" +msgid "" +"Represents the physical location of a key on the 101/102-key US QWERTY " +"keyboard, which corresponds to one of the [enum Key] constants.\n" +"To get a human-readable representation of the [InputEventKey], use [method OS." +"get_keycode_string] in combination with [method DisplayServer." +"keyboard_get_keycode_from_physical]:\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _input(event):\n" +" if event is InputEventKey:\n" +" var keycode = DisplayServer.keyboard_get_keycode_from_physical(event." +"physical_keycode)\n" +" print(OS.get_keycode_string(keycode))\n" +"[/gdscript]\n" +"[csharp]\n" +"public override void _Input(InputEvent @event)\n" +"{\n" +" if (@event is InputEventKey inputEventKey)\n" +" {\n" +" var keycode = DisplayServer." +"KeyboardGetKeycodeFromPhysical(inputEventKey.PhysicalKeycode);\n" +" GD.Print(OS.GetKeycodeString(keycode));\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"代表按键在 101/102 键的美式键盘上的物理位置,对应一个 [enum Key] 常量。\n" +"要获取 [InputEventKey] 的人类可读表示,请搭配使用 [method OS." +"get_keycode_string] 和 [method DisplayServer." +"keyboard_get_keycode_from_physical]:\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _input(event):\n" +" if event is InputEventKey:\n" +" var keycode = DisplayServer.keyboard_get_keycode_from_physical(event." +"physical_keycode)\n" +" print(OS.get_keycode_string(keycode))\n" +"[/gdscript]\n" +"[csharp]\n" +"public override void _Input(InputEvent @event)\n" +"{\n" +" if (@event is InputEventKey inputEventKey)\n" +" {\n" +" var keycode = DisplayServer." +"KeyboardGetKeycodeFromPhysical(inputEventKey.PhysicalKeycode);\n" +" GD.Print(OS.GetKeycodeString(keycode));\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" + msgid "" "If [code]true[/code], the key's state is pressed. If [code]false[/code], the " "key's state is released." @@ -56633,6 +61619,18 @@ msgstr "" msgid "Represents a magnifying touch gesture." msgstr "代表放大触摸手势。" +msgid "" +"Stores the factor of a magnifying touch gesture. This is usually performed " +"when the user pinches the touch screen and used for zooming in/out.\n" +"[b]Note:[/b] On Android, this requires the [member ProjectSettings." +"input_devices/pointing/android/enable_pan_and_scale_gestures] project setting " +"to be enabled." +msgstr "" +"存储放大触摸手势的系数。通常用户在触摸屏上将双指捏合,就执行了放大手势,可用于" +"缩放。\n" +"[b]注意:[/b]在 Android 上,这需要启用 [member ProjectSettings.input_devices/" +"pointing/android/enable_pan_and_scale_gestures] 项目设置。" + msgid "" "The amount (or delta) of the event. This value is closer to [code]1.0[/code] " "the slower the gesture is performed." @@ -56999,6 +61997,19 @@ msgstr "鼠标速度,以像素每秒为单位。" msgid "Represents a panning touch gesture." msgstr "代表平移触摸手势。" +msgid "" +"Stores information about pan gestures. A pan gesture is performed when the " +"user swipes the touch screen with two fingers. It's typically used for " +"panning/scrolling.\n" +"[b]Note:[/b] On Android, this requires the [member ProjectSettings." +"input_devices/pointing/android/enable_pan_and_scale_gestures] project setting " +"to be enabled." +msgstr "" +"存储与平移手势相关的信息。用户在触摸屏上滑动双指,就执行了平移手势。一般用于平" +"移/滚动。\n" +"[b]注意:[/b]在 Android 上,这需要启用 [member ProjectSettings.input_devices/" +"pointing/android/enable_pan_and_scale_gestures] 项目设置。" + msgid "Panning amount since last pan event." msgstr "上一次平移事件以来的平移量。" @@ -57092,9 +62103,27 @@ msgstr "" msgid "Returns the keycode combination of modifier keys." msgstr "返回修饰键的键码组合。" +msgid "" +"On macOS, returns [code]true[/code] if [kbd]Meta[/kbd] ([kbd]Cmd[/kbd]) is " +"pressed.\n" +"On other platforms, returns [code]true[/code] if [kbd]Ctrl[/kbd] is pressed." +msgstr "" +"在 macOS 上,如果 [kbd]Meta[/kbd]([kbd]Cmd[/kbd])是按下状态,则返回 " +"[code]true[/code] 。\n" +"在其他平台上,如果 [kbd]Ctrl[/kbd] 是按下状态,则返回 [code]true[/code] 。" + msgid "State of the [kbd]Alt[/kbd] modifier." msgstr "[kbd]Alt[/kbd] 修饰键的状态。" +msgid "" +"Automatically use [kbd]Meta[/kbd] ([kbd]Cmd[/kbd]) on macOS and [kbd]Ctrl[/" +"kbd] on other platforms. If [code]true[/code], [member ctrl_pressed] and " +"[member meta_pressed] cannot be set." +msgstr "" +"自动在 macOS 上使用 [kbd]Meta[/kbd]([kbd]Cmd[/kbd]),在其他平台上使用 " +"[kbd]Ctrl[/kbd]。如果为 [code]true[/code],则无法设置 [member ctrl_pressed] " +"和 [member meta_pressed]。" + msgid "State of the [kbd]Ctrl[/kbd] modifier." msgstr "[kbd]Ctrl[/kbd] 修饰键的状态。" @@ -57881,6 +62910,16 @@ msgid "" "necessary." msgstr "确保当前选择可见,根据需要调整滚动位置。" +msgid "" +"Forces an update to the list size based on its items. This happens " +"automatically whenever size of the items, or other relevant settings like " +"[member auto_height], change. The method can be used to trigger the update " +"ahead of next drawing pass." +msgstr "" +"根据列表项强制更新该列表大小。每当项目的大小或其他相关设置(例如 [member " +"auto_height])发生变化时,这种情况就会自动发生。该方法可被用于在下一次绘制阶段" +"之前触发更新。" + msgid "" "Returns the item index at the given [param position].\n" "When there is no item at that point, -1 will be returned if [param exact] is " @@ -58325,6 +63364,19 @@ msgstr "" "[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 skip-lint]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 skip-lint]eval()[/code] 的调用。\n" +"如果 [param use_global_execution_context] 为 [code]true[/code],则代码将在全局" +"执行上下文中被求值。否则,它将在引擎运行时环境中的函数的执行上下文中进行求值。" + msgid "" "Force synchronization of the persistent file system (when enabled).\n" "[b]Note:[/b] This is only useful for modules or extensions that can't use " @@ -58480,6 +63532,20 @@ msgstr "" msgid "Returns the joint's [RID]." msgstr "返回关节的 [RID]。" +msgid "" +"When [member node_a] and [member node_b] move in different directions the " +"[member bias] controls how fast the joint pulls them back to their original " +"position. The lower the [member bias] the more the two bodies can pull on the " +"joint.\n" +"When set to [code]0[/code], the default value from [member ProjectSettings." +"physics/2d/solver/default_constraint_bias] is used." +msgstr "" +"当 [member node_a] 和 [member node_b] 向不同方向移动时,[member bias] 控制关节" +"将它们拉回到原始位置的速度。[member bias] 越低,两个实体对该关节的拉力就越" +"大。\n" +"当被设置为 [code]0[/code] 时,使用来自 [member ProjectSettings.physics/2d/" +"solver/default_constraint_bias] 的默认值。" + msgid "" "If [code]true[/code], [member node_a] and [member node_b] can not collide." msgstr "" @@ -59063,6 +64129,11 @@ msgid "" "Takes priority over theme properties." msgstr "[LabelSettings] 资源,可以在多个 [Label] 节点之间共享。优先于主题属性。" +msgid "" +"The number of the lines ignored and not displayed from the start of the " +"[member text] value." +msgstr "从 [member text] 值的开头开始忽略且不显示的行数。" + msgid "Limits the lines of text the node shows on screen." msgstr "限制节点在屏幕上显示的文本行数。" @@ -59635,6 +64706,15 @@ msgstr "" "[b]注意:[/b]仅对 [OmniLight3D] 和 [SpotLight3D] 有效,且仅在 [member " "shadow_enabled] 为 [code]true[/code] 时有效。" +msgid "" +"If [code]true[/code], the light only appears in the editor and will not be " +"visible at runtime. If [code]true[/code], the light will never be baked in " +"[LightmapGI] regardless of its [member light_bake_mode]." +msgstr "" +"如果为 [code]true[/code],灯光只在编辑器中出现,在运行时将不可见。如果为 " +"[code]true[/code],则无论其 [member light_bake_mode] 如何,灯光都不会在 " +"[LightmapGI] 中进行烘焙。" + 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). " @@ -59986,6 +65066,22 @@ msgstr "" "[b]注意:[/b]将灯光隐藏,[i]不[/i]影响烘焙 [LightmapGI]。但将灯光隐藏,仍会影" "响烘焙 [VoxelGI] 和 SDFGI(请参阅 [member Environment.sdfgi_enabled])。" +msgid "" +"Light is taken into account in static baking ([VoxelGI], [LightmapGI], SDFGI " +"([member Environment.sdfgi_enabled])). The light can be moved around or " +"modified, but its global illumination will not update in real-time. This is " +"suitable for subtle changes (such as flickering torches), but generally not " +"large changes such as toggling a light on and off.\n" +"[b]Note:[/b] The light is not baked in [LightmapGI] if [member editor_only] " +"is [code]true[/code]." +msgstr "" +"在静态烘焙([VoxelGI]、[LightmapGI]、SDFGI([member Environment." +"sdfgi_enabled]))时,考虑了灯光。灯光可以四处移动或修改,但其全局照明不会实时" +"更新。这适用于细微的变化(例如闪烁的手电筒),但通常不适用于大的变化,例如打开" +"和关闭灯光。\n" +"[b]注意:[/b]如果 [member editor_only] 为 [code]true[/code],则灯光不会在 " +"[LightmapGI] 中烘焙。" + msgid "" "Light is taken into account in dynamic baking ([VoxelGI] and SDFGI ([member " "Environment.sdfgi_enabled]) only). The light can be moved around or modified " @@ -60064,6 +65160,23 @@ msgstr "" "真,但会引入阴影悬浮(阴影未连接到其障碍物)。实时 [Light3D] 阴影不受该 " "[member bias] 属性的影响。" +msgid "" +"The energy multiplier for each bounce. Higher values will make indirect " +"lighting brighter. A value of [code]1.0[/code] represents physically accurate " +"behavior, but higher values can be used to make indirect lighting propagate " +"more visibly when using a low number of bounces. This can be used to speed up " +"bake times by lowering the number of [member bounces] then increasing [member " +"bounce_indirect_energy].\n" +"[b]Note:[/b] [member bounce_indirect_energy] only has an effect if [member " +"bounces] is set to a value greater than or equal to [code]1[/code]." +msgstr "" +"每次反弹的能量乘数。较高的值将使间接照明更亮。值 [code]1.0[/code] 代表物理上准" +"确的行为,但较高的值可用于在使用少量反弹时使间接照明传播更明显。这可以通过减" +"少 [member bounces] 数量,然后增加 [member bounce_indirect_energy] 来加速烘焙" +"时间。\n" +"[b]注意:[/b][member bounce_indirect_energy] 仅在 [member bounces] 被设置为大" +"于或等于 [code]1[/code] 的值时才有效。" + msgid "" "Number of light bounces that are taken into account during baking. Higher " "values result in brighter, more realistic lighting, at the cost of longer " @@ -60084,6 +65197,38 @@ msgstr "" "应该使用曝光设置来减少烘焙时出现的动态范围。如果曝光度太高,[LightmapGI] 将出" "现带状伪影,或可能出现过度曝光伪影。" +msgid "" +"The strength of denoising step applied to the generated lightmaps. Only " +"effective if [member use_denoiser] is [code]true[/code] and [member " +"ProjectSettings.rendering/lightmapping/denoising/denoiser] is set to JNLM." +msgstr "" +"应用于生成的光照贴图的去噪步骤的强度。仅当 [member use_denoiser] 为 " +"[code]true[/code] 且 [member ProjectSettings.rendering/lightmapping/denoising/" +"denoiser] 被设置为 JNLM 时有效。" + +msgid "" +"If [code]true[/code], bakes lightmaps to contain directional information as " +"spherical harmonics. This results in more realistic lighting appearance, " +"especially with normal mapped materials and for lights that have their direct " +"light baked ([member Light3D.light_bake_mode] set to [constant Light3D." +"BAKE_STATIC] and with [member Light3D.editor_only] set to [code]false[/" +"code]). The directional information is also used to provide rough reflections " +"for static and dynamic objects. This has a small run-time performance cost as " +"the shader has to perform more work to interpret the direction information " +"from the lightmap. Directional lightmaps also take longer to bake and result " +"in larger file sizes.\n" +"[b]Note:[/b] The property's name has no relationship with " +"[DirectionalLight3D]. [member directional] works with all light types." +msgstr "" +"如果为 [code]true[/code],烘焙光照贴图以包含作为球谐函数的方向信息。这会产生更" +"逼真的光照外观,尤其是使用法线贴图材质和烘焙了直射光的灯光([member Light3D." +"light_bake_mode] 设置为 [constant Light3D.BAKE_STATIC] 并将 [member Light3D." +"editor_only] 设置为 [code]false[/code])。方向信息还用于为静态和动态对象提供粗" +"略的反射。这有一个小的运行时性能成本,因为着色器必须执行更多的工作,来解释来自" +"光照贴图的方向信息。定向光照贴图也需要更长的时间来烘焙并产生更大的文件大小。\n" +"[b]注意:[/b]属性的名称与 [DirectionalLight3D] 没有关系。[member directional] " +"适用于所有灯光类型。" + msgid "" "The color to use for environment lighting. Only effective if [member " "environment_mode] is [constant ENVIRONMENT_MODE_CUSTOM_COLOR]." @@ -60158,6 +65303,34 @@ msgstr "" "要进一步加快烘焙时间,请在导入停靠面板中减少 [member bounces]、禁用 [member " "use_denoiser]、并增加 3D 场景的光照贴图纹素大小。" +msgid "" +"If [code]true[/code], uses a GPU-based denoising algorithm on the generated " +"lightmap. This eliminates most noise within the generated lightmap at the " +"cost of longer bake times. File sizes are generally not impacted " +"significantly by the use of a denoiser, although lossless compression may do " +"a better job at compressing a denoised image." +msgstr "" +"如果为 [code]true[/code],则在生成的光照贴图上,使用基于 GPU 的降噪算法。这以" +"更长的烘焙时间为代价,消除了生成的光照贴图中的大部分噪点。尽管无损压缩在压缩降" +"噪图像方面可能做得更好,但使用降噪器通常不会显著影响文件大小。" + +msgid "" +"If [code]true[/code], a texture with the lighting information will be " +"generated to speed up the generation of indirect lighting at the cost of some " +"accuracy. The geometry might exhibit extra light leak artifacts when using " +"low resolution lightmaps or UVs that stretch the lightmap significantly " +"across surfaces. Leave [member use_texture_for_bounces] at its default value " +"of [code]true[/code] if unsure.\n" +"[b]Note:[/b] [member use_texture_for_bounces] only has an effect if [member " +"bounces] is set to a value greater than or equal to [code]1[/code]." +msgstr "" +"如果为 [code]true[/code],将生成带有照明信息的纹理,以加快间接照明的生成速度," +"但会牺牲一定的精度。当使用低分辨率光照贴图或在表面上显著拉伸光照贴图的 UV 时," +"几何体可能会出现额外的漏光伪影。如果不确定,请将 [member " +"use_texture_for_bounces] 保留为其默认值 [code]true[/code]。\n" +"[b]注意:[/b][member use_texture_for_bounces] 仅在 [member bounces] 被设置为大" +"于或等于 [code]1[/code] 的值时才有效。" + msgid "" "Low bake quality (fastest bake times). The quality of this preset can be " "adjusted by changing [member ProjectSettings.rendering/lightmapping/" @@ -60268,6 +65441,12 @@ msgid "" msgstr "" "用户中止了光照贴图烘焙操作(通常通过点击进度对话框中的[b]取消[/b]按钮)。" +msgid "" +"Lightmap baking failed as the maximum texture size is too small to fit some " +"of the meshes marked for baking." +msgstr "" +"光照贴图烘焙失败,因为最大纹理尺寸太小,无法容纳某些被标记为烘焙的网格。" + msgid "Ignore environment lighting when baking lightmaps." msgstr "烘焙光照贴图时忽略环境光照。" @@ -60343,6 +65522,18 @@ msgstr "" "烘焙光照贴图之前,材质外观将看起来不正确,在这种情况下,此处设置的值将被丢弃," "因为整个 [LightmapGIData] 资源被光照贴图器替换。" +msgid "" +"The lightmap atlas texture generated by the lightmapper.\n" +"[i]Deprecated.[/i] The lightmap atlas can now have multiple textures. See " +"[member lightmap_textures]." +msgstr "" +"由光照贴图器生成的光照贴图图集纹理。\n" +"[i]已弃用。[/i]光照贴图图集现在可以有多个纹理。请参阅 [member " +"lightmap_textures]。" + +msgid "The lightmap atlas textures generated by the lightmapper." +msgstr "由光照贴图器生成的光照贴图图集纹理。" + msgid "Abstract class extended by lightmappers, for use in [LightmapGI]." msgstr "由光照贴图器扩展的抽象类,用于 [LightmapGI]。" @@ -60418,15 +65609,211 @@ msgstr "" "LightOccluder2D 的遮挡器光照掩码。LightOccluder2D 将仅从具有相同光照掩码的 " "Light2D 投射阴影。" +msgid "" +"If enabled, the occluder will be part of a real-time generated signed " +"distance field that can be used in custom shaders." +msgstr "" +"如果启用,该遮挡器将成为实时生成的带符号距离场的一部分,可被用于自定义着色器" +"中。" + +msgid "A 2D polyline that can optionally be textured." +msgstr "可以选择设置纹理的 2D 折线。" + +msgid "" +"This node draws a 2D polyline, i.e. a shape consisting of several points " +"connected by segments. [Line2D] is not a mathematical polyline, i.e. the " +"segments are not infinitely thin. It is intended for rendering and it can be " +"colored and optionally textured.\n" +"[b]Warning:[/b] Certain configurations may be impossible to draw nicely, such " +"as very sharp angles. In these situations, the node uses fallback drawing " +"logic to look decent.\n" +"[b]Note:[/b] [Line2D] is drawn using a 2D mesh." +msgstr "" +"该节点绘制一条 2D 折线,即由多个线段连接的点组成的形状。[Line2D] 不是数学折" +"线,即线段不是无限细的。它用于渲染,且可以被着色,也可以选择纹理。\n" +"[b]警告:[/b]某些配置可能无法很好地绘制,例如非常锐利的角度。在这些情况下,节" +"点使用后备绘制逻辑来看起来不错。\n" +"[b]注意:[/b][Line2D] 使用 2D 网格进行绘制。" + +msgid "" +"Adds a point with the specified [param position] relative to the polyline's " +"own position. If no [param index] is provided, the new point will be added to " +"the end of the points array.\n" +"If [param index] is given, the new point is inserted before the existing " +"point identified by index [param index]. The indices of the points after the " +"new point get increased by 1. The provided [param index] must not exceed the " +"number of existing points in the polyline. See [method get_point_count]." +msgstr "" +"在指定的位置 [param position] 添加一个点,该位置相对于该线段自身的位置。如果未" +"提供 [param index],则新的点将被添加到点数组的末尾。\n" +"如果给出 [param index],则将新点插入到由索引 [param index] 标识的已有点之前。" +"该新点之后的点的索引增加 1。提供的 [param index] 不得超过折线中已有点的数量。" +"请参阅 [method get_point_count]。" + +msgid "Removes all points from the polyline, making it empty." +msgstr "从折线中移除所有点,使其为空。" + +msgid "Returns the number of points in the polyline." +msgstr "返回该折线中的点的数量。" + msgid "Returns the position of the point at index [param index]." msgstr "返回索引为 [param index] 的点的位置。" +msgid "Removes the point at index [param index] from the polyline." +msgstr "移除该折线中索引为 [param index] 的点。" + +msgid "" +"Overwrites the position of the point at the given [param index] with the " +"supplied [param position]." +msgstr "用提供的 [param position] 覆盖给定索引 [param index] 处的点的位置。" + +msgid "" +"If [code]true[/code], the polyline's border will be anti-aliased.\n" +"[b]Note:[/b] [Line2D] is not accelerated by batching when being anti-aliased." +msgstr "" +"如果为 [code]true[/code],则折线的边界将使用抗锯齿。\n" +"[b]注意:[/b][Line2D] 在使用抗锯齿时,不会通过批处理来加速。" + +msgid "" +"The style of the beginning of the polyline, if [member closed] is " +"[code]false[/code]. Use [enum LineCapMode] constants." +msgstr "" +"[member close] 为 [code]false[/code] 时折线开头的样式。使用 [enum " +"LineCapMode] 常量。" + +msgid "" +"If [code]true[/code] and the polyline has more than 2 points, the last point " +"and the first one will be connected by a segment.\n" +"[b]Note:[/b] The shape of the closing segment is not guaranteed to be " +"seamless if a [member width_curve] is provided.\n" +"[b]Note:[/b] The joint between the closing segment and the first segment is " +"drawn first and it samples the [member gradient] and the [member width_curve] " +"at the beginning. This is an implementation detail that might change in a " +"future version." +msgstr "" +"如果为 [code]true[/code] 并且折线有超过2个点,则最后一个点和第一个点将通过线段" +"连接。\n" +"[b]注意:[/b]如果提供了 [member width_curve],则不保证闭合线段的形状是无缝" +"的。\n" +"[b]注意:[/b]首先绘制结束线段和第一条线段之间的连接点,并在开始时对 [member " +"gradient] 和 [member width_curve] 进行采样。这是在未来版本中可能会更改的实现细" +"节。" + +msgid "The color of the polyline. Will not be used if a gradient is set." +msgstr "折线的颜色。如果设置了渐变,则不会被使用。" + +msgid "" +"The style of the end of the polyline, if [member closed] is [code]false[/" +"code]. Use [enum LineCapMode] constants." +msgstr "" +"折线末端的样式,如果 [member close] 为 [code]false[/code]。使用 [enum " +"LineCapMode] 常量。" + +msgid "" +"The gradient is drawn through the whole line from start to finish. The " +"[member default_color] will not be used if this property is set." +msgstr "" +"渐变是从头到尾贯穿整条线绘制的。如果该属性被设置,则 [member default_color] 不" +"会被使用。" + +msgid "" +"The style of the connections between segments of the polyline. Use [enum " +"LineJointMode] constants." +msgstr "折线段之间的连接样式。使用 [enum LineJointMode] 常量。" + +msgid "" +"The points of the polyline, interpreted in local 2D coordinates. Segments are " +"drawn between the adjacent points in this array." +msgstr "折线的点,以局部 2D 坐标解释。在该数组中的相邻点之间绘制线段。" + +msgid "" +"The smoothness used for rounded joints and caps. Higher values result in " +"smoother corners, but are more demanding to render and update." +msgstr "" +"用于圆形接头和端盖的光滑度。值越高,边角越平滑,但对渲染和更新的要求更高。" + +msgid "" +"Determines the miter limit of the polyline. Normally, when [member " +"joint_mode] is set to [constant LINE_JOINT_SHARP], sharp angles fall back to " +"using the logic of [constant LINE_JOINT_BEVEL] joints to prevent very long " +"miters. Higher values of this property mean that the fallback to a bevel " +"joint will happen at sharper angles." +msgstr "" +"确定该折线的斜接限制。通常,当 [member joint_mode] 被设置为 [constant " +"LINE_JOINT_SHARP] 时,锐角会回退到使用 [constant LINE_JOINT_BEVEL] 关节的逻辑" +"来防止过长的斜接。该属性的值越高意味着倒角接头的回退将以更锐利的角度发生。" + +msgid "" +"The texture used for the polyline. Uses [member texture_mode] for drawing " +"style." +msgstr "用于折线的纹理。使用 [member texture_mode] 作为绘图样式。" + +msgid "" +"The style to render the [member texture] of the polyline. Use [enum " +"LineTextureMode] constants." +msgstr "" +"渲染该折线的 [member texture] 的样式。使用 [enum LineTextureMode] 常量。" + msgid "The polyline's width." msgstr "多边形的宽度。" +msgid "" +"The polyline's width curve. The width of the polyline over its length will be " +"equivalent to the value of the width curve over its domain." +msgstr "该折线的宽度曲线。该折线在其长度上的宽度将等于宽度曲线在其域上的值。" + +msgid "" +"Makes the polyline's joints pointy, connecting the sides of the two segments " +"by extending them until they intersect. If the rotation of a joint is too big " +"(based on [member sharp_limit]), the joint falls back to [constant " +"LINE_JOINT_BEVEL] to prevent very long miters." +msgstr "" +"使该折线的接头变尖,通过延伸两条线段直至它们相交来连接它们的侧面。如果关节的旋" +"转太大(基于 [member sharp_limit]),关节将回落到 [constant LINE_JOINT_BEVEL] " +"以防止出现过长的斜角。" + +msgid "" +"Makes the polyline's joints bevelled/chamfered, connecting the sides of the " +"two segments with a simple line." +msgstr "使折线的接头倾斜/倒角,用一条简单的线连接两个线段的侧面。" + +msgid "" +"Makes the polyline's joints rounded, connecting the sides of the two segments " +"with an arc. The detail of this arc depends on [member round_precision]." +msgstr "" +"使该折线的接头变圆,用圆弧连接两条线段的侧面。该弧的细节取决于 [member " +"round_precision]。" + msgid "Draws no line cap." msgstr "不绘制线条端点。" +msgid "Draws the line cap as a box, slightly extending the first/last segment." +msgstr "将线帽绘制为方框,稍微延伸第一段/最后一段。" + +msgid "Draws the line cap as a semicircle attached to the first/last segment." +msgstr "将线帽绘制为连接到第一条/最后一条线段的半圆。" + +msgid "" +"Takes the left pixels of the texture and renders them over the whole polyline." +msgstr "获取纹理的左侧像素并将它们渲染在整条折线上。" + +msgid "" +"Tiles the texture over the polyline. [member CanvasItem.texture_repeat] of " +"the [Line2D] node must be [constant CanvasItem.TEXTURE_REPEAT_ENABLED] or " +"[constant CanvasItem.TEXTURE_REPEAT_MIRROR] for it to work properly." +msgstr "" +"将纹理平铺在该折线上。该 [Line2D] 节点的 [member CanvasItem.texture_repeat] 必" +"须为 [constant CanvasItem.TEXTURE_REPEAT_ENABLED] 或 [constant CanvasItem." +"TEXTURE_REPEAT_MIRROR],才能正常工作。" + +msgid "" +"Stretches the texture across the polyline. [member CanvasItem.texture_repeat] " +"of the [Line2D] node must be [constant CanvasItem.TEXTURE_REPEAT_DISABLED] " +"for best results." +msgstr "" +"沿该折线拉伸纹理。为了获得最佳效果,[Line2D] 节点的 [member CanvasItem." +"texture_repeat] 必须为 [constant CanvasItem.TEXTURE_REPEAT_DISABLED]。" + msgid "An input field for single-line text." msgstr "单行文本的输入字段。" @@ -60739,6 +66126,14 @@ msgstr "" "如果为 [code]true[/code],则 [LineEdit] 宽度将增加到比 [member text] 长。如果 " "[member text] 被缩短,它将[b]不[/b]压缩。" +msgid "If [code]true[/code], the [LineEdit] doesn't display decoration." +msgstr "如果为 [code]true[/code],则 [LineEdit] 不显示装饰。" + +msgid "" +"Language code used for line-breaking and text shaping algorithms. If left " +"empty, current locale is used instead." +msgstr "语言代码,用于断行和文本塑形算法。如果留空则使用当前区域设置。" + msgid "" "Maximum number of characters that can be entered inside the [LineEdit]. If " "[code]0[/code], there is no limit.\n" @@ -60826,6 +66221,14 @@ msgstr "" "如果为 [code]true[/code],则每个字符都会被替换成密码字符(见 [member " "secret_character])。" +msgid "" +"The character to use to mask secret input. Only a single character can be " +"used as the secret character. If it is longer than one character, only the " +"first one will be used. If it is empty, a space will be used instead." +msgstr "" +"用于掩盖秘密输入的字符。只能用单个字符作为秘密字符。如果长度超过一个字符,则仅" +"使用第一个字符。如果为空,则使用空格代替。" + msgid "" "If [code]true[/code], the [LineEdit] will select the whole text when it gains " "focus." @@ -61125,6 +66528,9 @@ msgstr "LinkButton 永远不会在其文本底部显示下划线。" msgid "Default text [Color] of the [LinkButton]." msgstr "[LinkButton] 默认的字体颜色 [Color]。" +msgid "Text [Color] used when the [LinkButton] is disabled." +msgstr "该 [LinkButton] 处于禁用状态时,使用的文本 [Color]。" + msgid "" "Text [Color] used when the [LinkButton] is focused. Only replaces the normal " "text color of the button. Disabled, hovered, and pressed states take " @@ -61136,6 +66542,9 @@ msgstr "" msgid "Text [Color] used when the [LinkButton] is being hovered." msgstr "当 [LinkButton] 被悬停时使用的文本颜色 [Color]。" +msgid "Text [Color] used when the [LinkButton] is being hovered and pressed." +msgstr "该 [LinkButton] 处于悬停并按下状态时,使用的文本 [Color]。" + msgid "The tint of text outline of the [LinkButton]." msgstr "[LinkButton] 的文本轮廓的色调。" @@ -61151,6 +66560,23 @@ msgstr "该 [LinkButton] 文本的字体 [Font]。" msgid "Font size of the [LinkButton]'s text." msgstr "该 [LinkButton] 文本的字体大小。" +msgid "" +"[StyleBox] used when the [LinkButton] is focused. The [theme_item focus] " +"[StyleBox] is displayed [i]over[/i] the base [StyleBox], so a partially " +"transparent [StyleBox] should be used to ensure the base [StyleBox] remains " +"visible. A [StyleBox] that represents an outline or an underline works well " +"for this purpose. To disable the focus visual effect, assign a " +"[StyleBoxEmpty] resource. Note that disabling the focus visual effect will " +"harm keyboard/controller navigation usability, so this is not recommended for " +"accessibility reasons." +msgstr "" +"该 [LinkButton] 处于聚焦状态时使用的 [StyleBox]。[theme_item focus] " +"[StyleBox] 显示在基础 [StyleBox] [i]之上[/i],所以应该使用部分透明的 " +"[StyleBox],确保基础 [StyleBox] 仍然可见。代表轮廓或下划线的 [StyleBox] 可以很" +"好地实现这个目的。要禁用聚焦的视觉效果,请指定 [StyleBoxEmpty] 资源。请注意," +"禁用聚焦的视觉效果会影响使用键盘/手柄进行导航的可用性,所以出于可访问性的原" +"因,不建议这样做。" + msgid "Abstract base class for the game's main loop." msgstr "游戏主循环的抽象基类。" @@ -61442,6 +66868,26 @@ msgstr "" "[/csharp]\n" "[/codeblocks]" +msgid "" +"Offsets towards the inside direct children of the container by this amount of " +"pixels from the bottom." +msgstr "从底部向容器的内部直接子项偏移一定量的像素。" + +msgid "" +"Offsets towards the inside direct children of the container by this amount of " +"pixels from the left." +msgstr "从左侧向容器的内部直接子项偏移一定量的像素。" + +msgid "" +"Offsets towards the inside direct children of the container by this amount of " +"pixels from the right." +msgstr "从右侧向容器的内部直接子项偏移一定量的像素。" + +msgid "" +"Offsets towards the inside direct children of the container by this amount of " +"pixels from the top." +msgstr "从顶部向容器的内部直接子项偏移一定量的像素。" + msgid "Generic 2D position hint for editing." msgstr "通用 2D 位置提示,用于编辑。" @@ -61516,9 +66962,101 @@ msgstr "" "full_objects] 为 [code]true[/code],则允许将对象进行编码(有可能包括代码)。\n" "内部实现时,使用的编码机制与 [method @GlobalScope.var_to_bytes] 方法相同。" +msgid "" +"Virtual base class for applying visual properties to an object, such as color " +"and roughness." +msgstr "用于将如颜色、粗糙度等视觉属性应用于对象的虚拟基类。" + +msgid "" +"[Material] is a base resource used for coloring and shading geometry. All " +"materials inherit from it and almost all [VisualInstance3D] derived nodes " +"carry a [Material]. A few flags and parameters are shared between all " +"material types and are configured here.\n" +"Importantly, you can inherit from [Material] to create your own custom " +"material type in script or in GDExtension." +msgstr "" +"[Material] 即材质,是一种基础资源,能够为几何体着色。所有的材质都继承自它,几" +"乎所有从 [VisualInstance3D] 派生的节点都带有 [Material]。有一些标志和参数是在" +"所有材质类型之间共享的,可以在这里进行配置。\n" +"重要的是,你可以继承 [Material] 以在脚本或 GDExtension 中创建你自己的自定义材" +"质类型。" + +msgid "" +"Only exposed for the purpose of overriding. You cannot call this function " +"directly. Used internally to determine if [member next_pass] should be shown " +"in the editor or not." +msgstr "" +"仅出于覆盖目的而暴露。你不能直接调用该函数。在内部用于确定 [member next_pass] " +"是否应显示在编辑器中。" + +msgid "" +"Only exposed for the purpose of overriding. You cannot call this function " +"directly. Used internally to determine if [member render_priority] should be " +"shown in the editor or not." +msgstr "" +"仅出于覆盖目的而暴露。你不能直接调用该函数。在内部用于确定 [member " +"render_priority] 是否应显示在编辑器中。" + +msgid "" +"Only exposed for the purpose of overriding. You cannot call this function " +"directly. Used internally by various editor tools." +msgstr "仅出于覆盖目的而暴露。你不能直接调用该函数。由各种编辑器工具内部使用。" + +msgid "" +"Only exposed for the purpose of overriding. You cannot call this function " +"directly. Used internally by various editor tools. Used to access the RID of " +"the [Material]'s [Shader]." +msgstr "" +"仅出于覆盖目的而暴露。你不能直接调用该函数。由各种编辑器工具内部使用。用于访" +"问 [Material] 的 [Shader] 的 RID。" + msgid "Creates a placeholder version of this resource ([PlaceholderMaterial])." msgstr "创建该资源的占位符版本([PlaceholderMaterial])。" +msgid "" +"Only available when running in the editor. Opens a popup that visualizes the " +"generated shader code, including all variants and internal shader code." +msgstr "" +"仅在编辑器中运行时可用。打开一个弹出窗口,其中可视化生成的着色器代码,包括所有" +"变体和内部着色器代码。" + +msgid "" +"Sets the [Material] to be used for the next pass. This renders the object " +"again using a different material.\n" +"[b]Note:[/b] [member next_pass] materials are not necessarily drawn " +"immediately after the source [Material]. Draw order is determined by material " +"properties, [member render_priority], and distance to camera.\n" +"[b]Note:[/b] This only applies to [StandardMaterial3D]s and [ShaderMaterial]s " +"with type \"Spatial\"." +msgstr "" +"设置下一阶段使用的 [Material]。这将使用不同的材质再次渲染对象。\n" +"[b]注意:[/b][member next_pass] 材质不一定是紧接在源 [Material] 之后绘制的。绘" +"制顺序由材质属性、[member render_priority] 和到相机的距离决定。\n" +"[b]注意:[/b]仅适用于 [StandardMaterial3D] 和“Spatial”类型的 " +"[ShaderMaterial]。" + +msgid "" +"Sets the render priority for objects in 3D scenes. Higher priority objects " +"will be sorted in front of lower priority objects. In other words, all " +"objects with [member render_priority] [code]1[/code] will render before all " +"objects with [member render_priority] [code]0[/code]).\n" +"[b]Note:[/b] This only applies to [StandardMaterial3D]s and [ShaderMaterial]s " +"with type \"Spatial\".\n" +"[b]Note:[/b] This will not impact how transparent objects are sorted relative " +"to opaque objects or how dynamic meshes will be sorted relative to other " +"opaque meshes. This is because all transparent objects are drawn after all " +"opaque objects and all dynamic opaque meshes are drawn before other opaque " +"meshes." +msgstr "" +"设置 3D 场景中物体的渲染优先级。优先级高的物体将被排序在优先级低的物体前面。换" +"句话说,所有具有 [member render_priority] [code]1[/code] 的对象,将在所有具有 " +"[member render_priority] [code]0[/code] 的对象之前渲染。\n" +"[b]注意:[/b]仅适用于 [StandardMaterial3D] 和“Spatial”类型的 " +"[ShaderMaterial]。\n" +"[b]注意:[/b]这不会影响透明对象相对于不透明对象的排序方式,或动态网格体相对于" +"其他不透明网格体的排序方式。这是因为所有透明对象都是在所有不透明对象之后绘制" +"的,并且所有动态不透明网格都是在其他不透明网格之前绘制的。" + msgid "Maximum value for the [member render_priority] parameter." msgstr "[member render_priority] 参数的最大值。" @@ -61703,6 +67241,15 @@ msgstr "" "调整该 [MenuButton] 的弹出位置和大小,然后显示该 [PopupMenu]。请优先使用此方" "法,而不是使用 [code]get_popup().popup()[/code]。" +msgid "" +"If [code]true[/code], when the cursor hovers above another [MenuButton] " +"within the same parent which also has [member switch_on_hover] enabled, it " +"will close the current [MenuButton] and open the other one." +msgstr "" +"如果为 [code]true[/code],当光标悬停在同一父级中也启用了 [member " +"switch_on_hover] 的另一个 [MenuButton] 上方时,它将关闭当前的 [MenuButton] 并" +"打开另一个。" + msgid "Emitted when the [PopupMenu] of this MenuButton is about to show." msgstr "该 MenuButton 的 [PopupMenu] 即将显示时发出。" @@ -61849,9 +67396,44 @@ msgstr "" "返回 [Mesh] 中存放的表面的数量。相当于 [method MeshInstance3D." "get_surface_override_material_count]。" +msgid "" +"Returns the arrays for the vertices, normals, UVs, etc. that make up the " +"requested surface (see [method ArrayMesh.add_surface_from_arrays])." +msgstr "" +"返回构成请求表面的顶点、法线、UV 等数组。(见 [method ArrayMesh." +"add_surface_from_arrays])。" + msgid "Returns the blend shape arrays for the requested surface." msgstr "返回请求表面的混合形状数组。" +msgid "" +"Returns a [Material] in a given surface. Surface is rendered using this " +"material.\n" +"[b]Note:[/b] This returns the material within the [Mesh] resource, not the " +"[Material] associated to the [MeshInstance3D]'s Surface Material Override " +"properties. To get the [Material] associated to the [MeshInstance3D]'s " +"Surface Material Override properties, use [method MeshInstance3D." +"get_surface_override_material] instead." +msgstr "" +"返回给定表面中的 [Material]。表面是使用该材质渲染的。\n" +"[b]注意:[/b]这将返回 [Mesh] 资源中的材质,而不是与 [MeshInstance3D] 的表面材" +"质覆盖属性关联的 [Material]。要获取与 [MeshInstance3D] 的表面材质覆盖属性关联" +"的 [Material],请改用 [method MeshInstance3D.get_surface_override_material]。" + +msgid "" +"Sets a [Material] for a given surface. Surface will be rendered using this " +"material.\n" +"[b]Note:[/b] This assigns the material within the [Mesh] resource, not the " +"[Material] associated to the [MeshInstance3D]'s Surface Material Override " +"properties. To set the [Material] associated to the [MeshInstance3D]'s " +"Surface Material Override properties, use [method MeshInstance3D." +"set_surface_override_material] instead." +msgstr "" +"为给定表面设置 [Material]。表面将使用该材质进行渲染。\n" +"[b]注意:[/b]这会分配 [Mesh] 资源中的材质,而不是与 [MeshInstance3D] 的表面材" +"质覆盖属性关联的 [Material]。要设置与 [MeshInstance3D] 的表面材质覆盖属性关联" +"的 [Material],请改用 [method MeshInstance3D.set_surface_override_material]。" + msgid "Sets a hint to be used for lightmap resolution." msgstr "设置用于光照贴图分辨率的提示。" @@ -61964,6 +67546,26 @@ msgstr "" "code] 到 [code]1.0[/code](闭区间)。每个顶点包含 4 个还是 8 个数字取决于是否" "存在 [constant ARRAY_FLAG_USE_8_BONE_WEIGHTS] 标志。" +msgid "" +"[PackedInt32Array] of integers used as indices referencing vertices, colors, " +"normals, tangents, and textures. All of those arrays must have the same " +"number of elements as the vertex array. No index can be beyond the vertex " +"array size. When this index array is present, it puts the function into " +"\"index mode,\" where the index selects the [i]i[/i]'th vertex, normal, " +"tangent, color, UV, etc. This means if you want to have different normals or " +"colors along an edge, you have to duplicate the vertices.\n" +"For triangles, the index array is interpreted as triples, referring to the " +"vertices of each triangle. For lines, the index array is in pairs indicating " +"the start and end of each line." +msgstr "" +"整数的 [PackedInt32Array],用作引用顶点、颜色、法线、切线、和纹理的索引。所有" +"这些数组必须具有与顶点数组相同数量的元素。任何索引都不能超过顶点数组的大小。当" +"该索引数组存在时,它会将函数置于“索引模式”,其中索引选择第 [i]i[/i] 个顶点、法" +"线、切线、颜色、UV 等。这意味着,如果想要沿着一条边有不同的法线或颜色,则必须" +"复制这些顶点。\n" +"对于三角形,索引数组被解释为三元组,指代每个三角形的顶点。对于线条,索引数组成" +"对表示每条线的开始和结束。" + msgid "Represents the size of the [enum ArrayType] enum." msgstr "代表 [enum ArrayType] 枚举的大小。" @@ -62119,6 +67721,24 @@ msgstr "" msgid "Flag used to mark that the mesh intentionally contains no vertex array." msgstr "用于标记网格有意不包含顶点数组的标志。" +msgid "" +"Flag used to mark that a mesh is using compressed attributes (vertices, " +"normals, tangents, UVs). When this form of compression is enabled, vertex " +"positions will be packed into an RGBA16UNORM attribute and scaled in the " +"vertex shader. The normal and tangent will be packed into an RG16UNORM " +"representing an axis, and a 16-bit float stored in the A-channel of the " +"vertex. UVs will use 16-bit normalized floats instead of full 32-bit signed " +"floats. When using this compression mode you must use either vertices, " +"normals, and tangents or only vertices. You cannot use normals without " +"tangents. Importers will automatically enable this compression if they can." +msgstr "" +"用于标记网格正在使用的压缩的属性(顶点、法线、切线、UV)的标志。启用这种形式的" +"压缩后,顶点位置将被打包到 RGBA16UNORM 属性中,并在顶点着色器中进行缩放。法线" +"和切线将被打包到表示一个轴的 RG16UNORM 中,并在顶点的 A 通道中存储一个 16 位浮" +"点数。UV 将使用 16 位标准化浮点数而不是完整的 32 位有符号浮点数。使用该压缩模" +"式时,必须使用顶点、法线、和切线或仅使用顶点。你无法使用没有切线的法线。如果可" +"以的话,导入器将自动启用这种压缩。" + msgid "Blend shapes are normalized." msgstr "混合形状是被归一化了的。" @@ -62354,6 +67974,44 @@ msgstr "返回与给定面关联的元数据。" msgid "Calculates and returns the face normal of the given face." msgstr "计算并返回给定面的面法线。" +msgid "" +"Returns the specified vertex index of the given face.\n" +"Vertex argument must be either 0, 1, or 2 because faces contain three " +"vertices.\n" +"[b]Example:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"var index = mesh_data_tool.get_face_vertex(0, 1) # Gets the index of the " +"second vertex of the first face.\n" +"var position = mesh_data_tool.get_vertex(index)\n" +"var normal = mesh_data_tool.get_vertex_normal(index)\n" +"[/gdscript]\n" +"[csharp]\n" +"int index = meshDataTool.GetFaceVertex(0, 1); // Gets the index of the second " +"vertex of the first face.\n" +"Vector3 position = meshDataTool.GetVertex(index);\n" +"Vector3 normal = meshDataTool.GetVertexNormal(index);\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回给定面的指定顶点索引。\n" +"顶点参数必须为 0、1 或 2,因为面包含三个顶点。\n" +"[b]示例:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"var index = mesh_data_tool.get_face_vertex(0, 1) # 获取第一个面的第二个顶点的" +"索引。\n" +"var position = mesh_data_tool.get_vertex(index)\n" +"var normal = mesh_data_tool.get_vertex_normal(index)\n" +"[/gdscript]\n" +"[csharp]\n" +"int index = meshDataTool.GetFaceVertex(0, 1); // 获取第一个面的第二个顶点的索" +"引。\n" +"Vector3 position = meshDataTool.GetVertex(index);\n" +"Vector3 normal = meshDataTool.GetVertexNormal(index);\n" +"[/csharp]\n" +"[/codeblocks]" + msgid "" "Returns the [Mesh]'s format. Format is an integer made up of [Mesh] format " "flags combined together. For example, a mesh containing both vertices and " @@ -62371,6 +68029,9 @@ msgstr "" msgid "Returns the material assigned to the [Mesh]." msgstr "返回分配给该 [Mesh] 的材质。" +msgid "Returns the position of the given vertex." +msgstr "返回给定顶点的位置。" + msgid "Returns the bones of the given vertex." msgstr "返回给定顶点的骨骼。" @@ -62568,6 +68229,28 @@ msgstr "" "[code]null[/code],或在该索引处没有混合形状,则返回 [code]0.0[/code] 并产生一" "个错误。" +msgid "" +"Returns the override [Material] for the specified [param surface] of the " +"[Mesh] resource. See also [method get_surface_override_material_count].\n" +"[b]Note:[/b] This returns the [Material] associated to the [MeshInstance3D]'s " +"Surface Material Override properties, not the material within the [Mesh] " +"resource. To get the material within the [Mesh] resource, use [method Mesh." +"surface_get_material] instead." +msgstr "" +"返回 [Mesh] 资源的指定 [param surface] 的覆盖 [Material]。另见 [method " +"get_surface_override_material_count]。\n" +"[b]注意:[/b]这将返回与 [MeshInstance3D] 的表面材质覆盖属性关联的 [Material]," +"而不是 [Mesh] 资源内的材质。要获取 [Mesh] 资源中的材质,请改用 [method Mesh." +"surface_get_material]。" + +msgid "" +"Returns the number of surface override materials. This is equivalent to " +"[method Mesh.get_surface_count]. See also [method " +"get_surface_override_material]." +msgstr "" +"返回表面覆盖材质的数量。相当于 [method Mesh.get_surface_count]。另见 [method " +"get_surface_override_material]。" + 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 " @@ -62576,6 +68259,21 @@ msgstr "" "将 [param blend_shape_idx] 处的混合形状的值设置为 [param value]。如果 [member " "mesh] 为 [code]null[/code],或在该索引处没有混合形状,则会产生一个错误。" +msgid "" +"Sets the override [param material] for the specified [param surface] of the " +"[Mesh] resource. This material is associated with this [MeshInstance3D] " +"rather than with [member mesh].\n" +"[b]Note:[/b] This assigns the [Material] associated to the [MeshInstance3D]'s " +"Surface Material Override properties, not the material within the [Mesh] " +"resource. To set the material within the [Mesh] resource, use [method Mesh." +"surface_get_material] instead." +msgstr "" +"设置 [Mesh] 资源的指定 [param surface] 的覆盖 [param material]。该材质与该 " +"[MeshInstance3D] 关联,而不是与 [member mesh] 关联。\n" +"[b]注意:[/b]这将分配与 [MeshInstance3D] 的表面材质覆盖属性关联的 [Material]," +"而不是 [Mesh] 资源内的材质。要在 [Mesh] 资源中设置材质,请改用 [method Mesh." +"surface_get_material]。" + msgid "The [Mesh] resource for the instance." msgstr "该实例的 [Mesh] 资源。" @@ -62715,6 +68413,22 @@ msgid "" "Interpolates an abstract value and supplies it to a method called over time." msgstr "对抽象值进行插值,并将其提供给一个持续调用的方法。" +msgid "" +"[MethodTweener] is similar to a combination of [CallbackTweener] and " +"[PropertyTweener]. It calls a method providing an interpolated value as a " +"parameter. See [method Tween.tween_method] for more usage information.\n" +"The tweener will finish automatically if the callback's target object is " +"freed.\n" +"[b]Note:[/b] [method Tween.tween_method] is the only correct way to create " +"[MethodTweener]. Any [MethodTweener] created manually will not function " +"correctly." +msgstr "" +"[MethodTweener] 类似于 [CallbackTweener] 和 [PropertyTweener] 的组合,会将插值" +"后的值作为调用方法时的参数。更多用法信息请参阅 [method Tween.tween_method]。\n" +"如果回调的目标对象被释放,该补间将自动完成。\n" +"[b]注意:[/b]创建 [MethodTweener] 的唯一正确方法是 [method Tween." +"tween_method]。任何手动创建的 [MethodTweener] 都无法正常工作。" + msgid "" "Sets the time in seconds after which the [MethodTweener] will start " "interpolating. By default there's no delay." @@ -62836,6 +68550,79 @@ msgstr "" msgid "Abstract class for non-real-time video recording encoders." msgstr "非实时视频录制编码器的抽象类。" +msgid "" +"Godot can record videos with non-real-time simulation. Like the [code]--fixed-" +"fps[/code] [url=$DOCS_URL/tutorials/editor/command_line_tutorial.html]command " +"line argument[/url], this forces the reported [code]delta[/code] in [method " +"Node._process] functions to be identical across frames, regardless of how " +"long it actually took to render the frame. This can be used to record high-" +"quality videos with perfect frame pacing regardless of your hardware's " +"capabilities.\n" +"Godot has 2 built-in [MovieWriter]s:\n" +"- AVI container with MJPEG for video and uncompressed audio ([code].avi[/" +"code] file extension). Lossy compression, medium file sizes, fast encoding. " +"The lossy compression quality can be adjusted by changing [member " +"ProjectSettings.editor/movie_writer/mjpeg_quality]. The resulting file can be " +"viewed in most video players, but it must be converted to another format for " +"viewing on the web or by Godot with [VideoStreamPlayer]. MJPEG does not " +"support transparency. AVI output is currently limited to a file of 4 GB in " +"size at most.\n" +"- PNG image sequence for video and WAV for audio ([code].png[/code] file " +"extension). Lossless compression, large file sizes, slow encoding. Designed " +"to be encoded to a video file with another tool such as [url=https://ffmpeg." +"org/]FFmpeg[/url] after recording. Transparency is currently not supported, " +"even if the root viewport is set to be transparent.\n" +"If you need to encode to a different format or pipe a stream through third-" +"party software, you can extend the [MovieWriter] class to create your own " +"movie writers. This should typically be done using GDExtension for " +"performance reasons.\n" +"[b]Editor usage:[/b] A default movie file path can be specified in [member " +"ProjectSettings.editor/movie_writer/movie_file]. Alternatively, for running " +"single scenes, a [code]movie_file[/code] metadata can be added to the root " +"node, specifying the path to a movie file that will be used when recording " +"that scene. Once a path is set, click the video reel icon in the top-right " +"corner of the editor to enable Movie Maker mode, then run any scene as usual. " +"The engine will start recording as soon as the splash screen is finished, and " +"it will only stop recording when the engine quits. Click the video reel icon " +"again to disable Movie Maker mode. Note that toggling Movie Maker mode does " +"not affect project instances that are already running.\n" +"[b]Note:[/b] MovieWriter is available for use in both the editor and exported " +"projects, but it is [i]not[/i] designed for use by end users to record videos " +"while playing. Players wishing to record gameplay videos should install tools " +"such as [url=https://obsproject.com/]OBS Studio[/url] or [url=https://www." +"maartenbaert.be/simplescreenrecorder/]SimpleScreenRecorder[/url] instead." +msgstr "" +"Godot 能够使用非实时模拟技术录制视频。与 [code]--fixed-fps[/code] " +"[url=$DOCS_URL/tutorials/editor/command_line_tutorial.html]命令行参数[/url]类" +"似,会强制让 [method Node._process] 等函数每一帧都收到相同的 [code]delta[/" +"code],无论实际渲染花费了多长的时间。这个技术可用于录制高画质的视频,无论你的" +"硬件性能如何,帧率始终都是恒定的。\n" +"Godot 内置的 [MovieWriter] 有两个:\n" +"- 使用 MJPEG 视频和未压缩音频的 AVI 容器(文件扩展名为 [code].avi[/code])。有" +"损压缩、文件大小中等、编码速度较快。有损压缩质量可以通过修改 [member " +"ProjectSettings.editor/movie_writer/mjpeg_quality] 来调整。生成的文件可以使用" +"大多数视频播放器查看,但如果要在 Web 上查看或者用 Godot 的 " +"[VideoStreamPlayer] 查看,则必须先进行格式的转换。MJPEG 不支持透明度。AVI 输出" +"的文件目前最多为 4 GB 大小。\n" +"- 视频使用 PNG 图像序列、音频使用 WAV(文件扩展名为 [code].png[/code])。无损" +"压缩、文件大小较大、编码速度较慢。旨在录制后使用 [url=https://ffmpeg." +"org/]FFmpeg[/url] 等其他工具编码为视频文件。目前不支持透明度,即便将根视口设为" +"透明。\n" +"如果你需要编码为其他格式,或者将流导入到第三方软件中,你可以扩展 " +"[MovieWriter] 类,创建自己的影片写入器。出于性能考虑,一般应该使用 " +"GDExtension 实现。\n" +"[b]编辑器使用:[/b]默认影片文件路径可以在 [member ProjectSettings.editor/" +"movie_writer/movie_file] 指定。或者在运行单个场景时,也可以在根节点上添加元数" +"据 [code]movie_file[/code],可以指定录制该场景时所使用的影片文件路径。设置路径" +"后,请点击编辑器右上角的电影胶卷图标,启动 Movie Maker 模式,然后和平常一样运" +"行场景即可。引擎会在启动画面结束后开始录制,只会在引擎退出时停止录制。再次点击" +"电影胶卷图标可以禁用 Movie Maker 模式。请注意,Movie Maker 模式的开关不会影响" +"正在运行的项目实例。\n" +"[b]注意:[/b]MovieWriter 既可以在编辑器中使用,也可以在导出的项目中使用,但这" +"个功能[i]不应[/i]用来让最终用户录制游戏视频。希望录制游戏视频的玩家应该安装 " +"[url=https://obsproject.com/]OBS Studio[/url] 或 [url=https://www." +"maartenbaert.be/simplescreenrecorder/]SimpleScreenRecorder[/url] 等工具。" + msgid "" "Called when the audio sample rate used for recording the audio is requested " "by the engine. The value returned must be specified in Hz. Defaults to 48000 " @@ -63348,6 +69135,169 @@ msgstr "" msgid "Base class used for extending the [MultiplayerAPI]." msgstr "用于扩展 [MultiplayerAPI] 的基类。" +msgid "" +"This class can be used to augment or replace the default [MultiplayerAPI] " +"implementation via script or extensions.\n" +"The following example augment the default implementation ([SceneMultiplayer]) " +"by logging every RPC being made, and every object being configured for " +"replication.\n" +"[codeblocks]\n" +"[gdscript]\n" +"extends MultiplayerAPIExtension\n" +"class_name LogMultiplayer\n" +"\n" +"# We want to augment the default SceneMultiplayer.\n" +"var base_multiplayer = SceneMultiplayer.new()\n" +"\n" +"func _init():\n" +" # Just passthrough base signals (copied to var to avoid cyclic " +"reference)\n" +" var cts = connected_to_server\n" +" var cf = connection_failed\n" +" var pc = peer_connected\n" +" var pd = peer_disconnected\n" +" base_multiplayer.connected_to_server.connect(func(): cts.emit())\n" +" base_multiplayer.connection_failed.connect(func(): cf.emit())\n" +" base_multiplayer.peer_connected.connect(func(id): pc.emit(id))\n" +" base_multiplayer.peer_disconnected.connect(func(id): pd.emit(id))\n" +"\n" +"func _poll():\n" +" return base_multiplayer.poll()\n" +"\n" +"# Log RPC being made and forward it to the default multiplayer.\n" +"func _rpc(peer: int, object: Object, method: StringName, args: Array) -> " +"Error:\n" +" print(\"Got RPC for %d: %s::%s(%s)\" % [peer, object, method, args])\n" +" return base_multiplayer.rpc(peer, object, method, args)\n" +"\n" +"# Log configuration add. E.g. root path (nullptr, NodePath), replication " +"(Node, Spawner|Synchronizer), custom.\n" +"func _object_configuration_add(object, config: Variant) -> Error:\n" +" if config is MultiplayerSynchronizer:\n" +" print(\"Adding synchronization configuration for %s. Synchronizer: " +"%s\" % [object, config])\n" +" elif config is MultiplayerSpawner:\n" +" print(\"Adding node %s to the spawn list. Spawner: %s\" % [object, " +"config])\n" +" return base_multiplayer.object_configuration_add(object, config)\n" +"\n" +"# Log configuration remove. E.g. root path (nullptr, NodePath), replication " +"(Node, Spawner|Synchronizer), custom.\n" +"func _object_configuration_remove(object, config: Variant) -> Error:\n" +" if config is MultiplayerSynchronizer:\n" +" print(\"Removing synchronization configuration for %s. Synchronizer: " +"%s\" % [object, config])\n" +" elif config is MultiplayerSpawner:\n" +" print(\"Removing node %s from the spawn list. Spawner: %s\" % " +"[object, config])\n" +" return base_multiplayer.object_configuration_remove(object, config)\n" +"\n" +"# These can be optional, but in our case we want to augment SceneMultiplayer, " +"so forward everything.\n" +"func _set_multiplayer_peer(p_peer: MultiplayerPeer):\n" +" base_multiplayer.multiplayer_peer = p_peer\n" +"\n" +"func _get_multiplayer_peer() -> MultiplayerPeer:\n" +" return base_multiplayer.multiplayer_peer\n" +"\n" +"func _get_unique_id() -> int:\n" +" return base_multiplayer.get_unique_id()\n" +"\n" +"func _get_peer_ids() -> PackedInt32Array:\n" +" return base_multiplayer.get_peers()\n" +"[/gdscript]\n" +"[/codeblocks]\n" +"Then in your main scene or in an autoload call [method SceneTree." +"set_multiplayer] to start using your custom [MultiplayerAPI]:\n" +"[codeblocks]\n" +"[gdscript]\n" +"# autoload.gd\n" +"func _enter_tree():\n" +" # Sets our custom multiplayer as the main one in SceneTree.\n" +"get_tree().set_multiplayer(LogMultiplayer.new())\n" +"[/gdscript]\n" +"[/codeblocks]\n" +"Native extensions can alternatively use the [method MultiplayerAPI." +"set_default_interface] method during initialization to configure themselves " +"as the default implementation." +msgstr "" +"该类可用于通过脚本或扩展来增强或替换默认的 [MultiplayerAPI] 实现。\n" +"下面的例子通过记录每一个正在进行的 RPC 和为复制而配置的每一个对象,增强了默认" +"的实现([SceneMultiplayer])。\n" +"[codeblocks]\n" +"[gdscript]\n" +"extends MultiplayerAPIExtension\n" +"class_name LogMultiplayer\n" +"\n" +"# 我们想增强默认的 SceneMultiplayer。\n" +"var base_multiplayer = SceneMultiplayer.new()\n" +"\n" +"func _init():\n" +" # 仅传递基本信号(复制到 var 以避免循环引用)\n" +" var cts = connected_to_server\n" +" var cf = connection_failed\n" +" var pc = peer_connected\n" +" var pd = peer_disconnected\n" +" base_multiplayer.connected_to_server.connect(func(): cts.emit())\n" +" base_multiplayer.connection_failed.connect(func(): cf.emit())\n" +" base_multiplayer.peer_connected.connect(func(id): pc.emit(id))\n" +" base_multiplayer.peer_disconnected.connect(func(id): pd.emit(id))\n" +"\n" +"func _poll():\n" +" return base_multiplayer.poll()\n" +"\n" +"# 记录正在进行的 RPC 并将其转发到默认的多人游戏。\n" +"func _rpc(peer: int, object: Object, method: StringName, args: Array) -> " +"Error:\n" +" print(\"获取用于 %d 的 RPC:%s::%s(%s)\" % [peer, object, method, args])\n" +" return base_multiplayer.rpc(peer, object, method, args)\n" +"\n" +"# 记录配置添加。例如,根路径(nullptr、NodePath),复制(Node、Spawner|" +"Synchronizer),自定义。\n" +"func _object_configuration_add(object, config: Variant) -> Error:\n" +" if config is MultiplayerSynchronizer:\n" +" print(\"添加用于 %s 的同步配置。同步器:%s\" % [object, config])\n" +" elif config is MultiplayerSpawner:\n" +" print(\"将节点 %s 添加到出生列表。出生器:%s\" % [object, config])\n" +" return base_multiplayer.object_configuration_add(object, config)\n" +"\n" +"# 记录配置移除。例如,根路径(nullptr、NodePath),复制(Node、Spawner|" +"Synchronizer),自定义。\n" +"func _object_configuration_remove(object, config: Variant) -> Error:\n" +" if config is MultiplayerSynchronizer:\n" +" print(\"移除用于 %s 的同步配置。同步器:%s\" % [object, config])\n" +" elif config is MultiplayerSpawner:\n" +" print(\"将节点 %s 从出生列表移除。出生器:%s\" % [object, config])\n" +" return base_multiplayer.object_configuration_remove(object, config)\n" +"\n" +"# 这些可以是可选的,但在我们的例子中,我们想要增强 SceneMultiplayer,所以转发" +"所有内容。\n" +"func _set_multiplayer_peer(p_peer: MultiplayerPeer):\n" +" base_multiplayer.multiplayer_peer = p_peer\n" +"\n" +"func _get_multiplayer_peer() -> MultiplayerPeer:\n" +" return base_multiplayer.multiplayer_peer\n" +"\n" +"func _get_unique_id() -> int:\n" +" return base_multiplayer.get_unique_id()\n" +"\n" +"func _get_peer_ids() -> PackedInt32Array:\n" +" return base_multiplayer.get_peers()\n" +"[/gdscript]\n" +"[/codeblocks]\n" +"然后在你的主场景或在自动加载中调用 [method SceneTree.set_multiplayer],以开始" +"使用你的自定义 [MultiplayerAPI]:\n" +"[codeblocks]\n" +"[gdscript]\n" +"# autoload.gd\n" +"func _enter_tree():\n" +" # 将我们的自定义多人游戏设置为 SceneTree 中的主要的多人游戏。\n" +"get_tree().set_multiplayer(LogMultiplayer.new())\n" +"[/gdscript]\n" +"[/codeblocks]\n" +"原生扩展也可以在初始化期间,使用 [method MultiplayerAPI." +"set_default_interface] 方法将自己配置为默认实现。" + msgid "Called when the [member MultiplayerAPI.multiplayer_peer] is retrieved." msgstr "在检索到 [member MultiplayerAPI.multiplayer_peer] 时调用。" @@ -64109,6 +70059,14 @@ msgid "" "Returns the path query result for the path the agent is currently following." msgstr "返回该代理目前正在使用的路径所对应的路径查询结果。" +msgid "" +"Returns the reachable final position of the current navigation path in global " +"coordinates. This position can change if the agent needs to update the " +"navigation path which makes the agent emit the [signal path_changed] signal." +msgstr "" +"返回当前导航路径上可到达的最终位置的全局坐标。如果该代理需要更新导航路径,从而" +"使该代理发出 [signal path_changed] 信号,则该位置可能会发生变化。" + msgid "" "Returns whether or not the specified layer of the [member navigation_layers] " "bitmask is enabled, given a [param layer_number] between 1 and 32." @@ -64145,6 +70103,24 @@ msgstr "" msgid "Returns the [RID] of this agent on the [NavigationServer2D]." msgstr "返回这个代理在 [NavigationServer2D] 上的 [RID]。" +msgid "" +"Returns [code]true[/code] if the end of the currently loaded navigation path " +"has been reached.\n" +"[b]Note:[/b] While true prefer to stop calling update functions like [method " +"get_next_path_position]. This avoids jittering the standing agent due to " +"calling repeated path updates." +msgstr "" +"如果已到达当前加载的导航路径的末尾,则返回 [code]true[/code]。\n" +"[b]注意:[/b]虽然 true 更喜欢停止调用更新函数,例如 [method " +"get_next_path_position]。这避免了由于调用重复的路径更新而使常设代理抖动。" + +msgid "" +"Returns [code]true[/code] if [method get_final_position] is within [member " +"target_desired_distance] of the [member target_position]." +msgstr "" +"如果 [method get_final_position] 位于 [member target_position] 的 [member " +"target_desired_distance] 范围内,则返回 [code]true[/code]。" + msgid "" "Returns true if [member target_position] is reached. It may not always be " "possible to reach the target position. It should always be possible to reach " @@ -64342,6 +70318,13 @@ msgstr "" "标点,到达目标点的大致区域内即可。如果这个值设得太小,该 NavigationAgent 会陷" "入重新寻路的死循环,因为它在每次物理帧更新后都会超过或者到达不了最终目标点。" +msgid "" +"If set, a new navigation path from the current agent position to the [member " +"target_position] is requested from the NavigationServer." +msgstr "" +"设置后,会向 NavigationServer 请求一条新的从当前代理位置到 [member " +"target_position] 的导航路径。" + msgid "" "The minimal amount of time for which this agent's velocities, that are " "computed with the collision avoidance algorithm, are safe with respect to " @@ -64405,6 +70388,34 @@ msgstr "" "- [code]link_exit_position[/code]:如果 [code]owner[/code] 可用且该所有者是一" "个 [NavigationLink2D],它将包含代理正在退出时的链接点的全局位置。" +msgid "" +"Emitted once per loaded path when the agent internal navigation path index " +"reaches the last index of the loaded path array. The agent internal " +"navigation path index can be received with [method " +"get_current_navigation_path_index]." +msgstr "" +"当代理内部导航路径索引到达加载路径数组的最后一个索引时,每个加载路径发出一次。" +"可以使用 [method get_current_navigation_path_index] 接收代理内部导航路径索引。" + +msgid "" +"Emitted when the agent had to update the loaded path:\n" +"- because path was previously empty.\n" +"- because navigation map has changed.\n" +"- because agent pushed further away from the current path segment than the " +"[member path_max_distance]." +msgstr "" +"当该代理必须更新加载的路径时发出:\n" +"- 因为路径以前是空的。\n" +"- 因为导航地图已经改变。\n" +"- 因为代理从当前路径段推得比 [member path_max_distance] 更远。" + +msgid "" +"Emitted once per loaded path when the agent's global position is the first " +"time within [member target_desired_distance] to the [member target_position]." +msgstr "" +"当代理的全局位置第一次在 [member target_desired_distance] 内到达 [member " +"target_position] 时,每个加载路径发出一次。" + msgid "" "Notifies when the collision avoidance velocity is calculated. Emitted when " "[member velocity] is set. Only emitted when [member avoidance_enabled] is " @@ -64486,6 +70497,16 @@ msgstr "" "避障代理的高度。2D 避障时,代理会忽略位于其上方或低于当前位置 + 高度的其他代理" "或障碍物。3D 避障时只使用半径球体,该设置无效。" +msgid "" +"If [code]true[/code], and the agent uses 2D avoidance, it will remember the " +"set y-axis velocity and reapply it after the avoidance step. While 2D " +"avoidance has no y-axis and simulates on a flat plane this setting can help " +"mitigate the most obvious clipping on uneven 3D geometry." +msgstr "" +"如果为 [code]true[/code],并且代理使用 2D 避障,它将记住设置的 y 轴速度并在避" +"障步进后重新应用它。虽然 2D 避障没有 y 轴并在平坦平面上进行模拟,但该设置可以" +"帮助减轻不均匀 3D 几何体上最明显的裁剪。" + msgid "" "The height offset is subtracted from the y-axis value of any vector path " "position for this NavigationAgent. The NavigationAgent height offset does not " @@ -64520,6 +70541,35 @@ msgstr "" "障碍物作出反应。其他使用 2D 避障的代理如果在该代理之下,或者高于该代理当前位置" "与 [member height] 之和则会被忽略。" +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 [NavigationLink3D], 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 [NavigationLink3D], 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 "" "A link between two positions on [NavigationRegion2D]s that agents can be " "routed through." @@ -64701,6 +70751,9 @@ msgid "" "get_vertices]." msgstr "使用调用 [method get_vertices] 得到的顶点的索引添加一个多边形。" +msgid "Clears the internal arrays for vertices and polygon indices." +msgstr "清除顶点和多边形索引的内部数组。" + msgid "" "Clears the array of polygons, but it doesn't clear the array of vertices." msgstr "清除多边形数组,但不清除顶点数组。" @@ -64806,6 +70859,15 @@ msgid "" "original raw contour." msgstr "简化轮廓的边界边缘偏离原始轮廓的最大距离。" +msgid "" +"The maximum allowed length for contour edges along the border of the mesh. A " +"value of [code]0.0[/code] disables this feature.\n" +"[b]Note:[/b] While baking, this value will be rounded up to the nearest " +"multiple of [member cell_size]." +msgstr "" +"沿网格边界的轮廓的最大允许长度。值为 [code]0.0[/code] 将禁用该功能。\n" +"[b]注意:[/b]烘焙时,这个值会向上取整到最接近的 [member cell_size] 的倍数。" + msgid "" "If the baking [AABB] has a volume the navigation mesh baking will be " "restricted to its enclosing area." @@ -65079,9 +71141,65 @@ msgid "" "Container for parsed source geometry data used in navigation mesh baking." msgstr "存放解析所得的源几何体数据的容器,用于导航网格的烘焙。" +msgid "Adds the outline points of a shape as obstructed area." +msgstr "添加形状的轮廓点作为遮挡区域。" + +msgid "Adds the outline points of a shape as traversable area." +msgstr "添加形状的轮廓点作为可遍历区域。" + msgid "Clears the internal data." msgstr "清除内部数据。" +msgid "Returns all the obstructed area outlines arrays." +msgstr "返回所有遮挡区域轮廓数组。" + +msgid "Returns all the traversable area outlines arrays." +msgstr "返回所有可遍历区域轮廓数组。" + +msgid "Returns [code]true[/code] when parsed source geometry data exists." +msgstr "当解析的源几何数据存在时,返回 [code]true[/code]。" + +msgid "Sets all the obstructed area outlines arrays." +msgstr "设置所有遮挡区域轮廓数组。" + +msgid "Sets all the traversable area outlines arrays." +msgstr "设置所有可遍历区域轮廓数组。" + +msgid "" +"Adds an array of vertex positions to the geometry data for navigation mesh " +"baking to form triangulated faces. For each face the array must have three " +"vertex positions in clockwise winding order. Since [NavigationMesh] resources " +"have no transform, all vertex positions need to be offset by the node's " +"transform using [param xform]." +msgstr "" +"向用于导航网格烘焙的几何体数据中添加一组顶点位置,以形成三角形面。对于每个面," +"数组中必须有三个使用顺时针缠绕顺序的顶点位置。由于 [NavigationMesh] 资源本身没" +"有变换,因此所有顶点位置都需要使用 [param xform] 参数使用节点的变换进行偏移。" + +msgid "" +"Adds the geometry data of a [Mesh] resource to the navigation mesh baking " +"data. The mesh must have valid triangulated mesh data to be considered. Since " +"[NavigationMesh] resources have no transform, all vertex positions need to be " +"offset by the node's transform using [param xform]." +msgstr "" +"向导航网格烘焙数据中添加 [Mesh] 资源的几何体数据。网格中必须存在有效的三角形网" +"格数据才会被使用。因为 [NavigationMesh] 资源本身没有变换,所有顶点位置都需要使" +"用 [param xform] 参数使用节点的变换进行偏移。" + +msgid "" +"Adds an [Array] the size of [constant Mesh.ARRAY_MAX] and with vertices at " +"index [constant Mesh.ARRAY_VERTEX] and indices at index [constant Mesh." +"ARRAY_INDEX] to the navigation mesh baking data. The array must have valid " +"triangulated mesh data to be considered. Since [NavigationMesh] resources " +"have no transform, all vertex positions need to be offset by the node's " +"transform using [param xform]." +msgstr "" +"向导航网格烘焙数据中添加一个 [Array],大小为 [constant Mesh.ARRAY_MAX],顶点数" +"据位于索引 [constant Mesh.ARRAY_VERTEX],索引数据位于索引 [constant Mesh." +"ARRAY_INDEX]。数组中必须存在有效的三角形网格数据才会被使用。因为 " +"[NavigationMesh] 资源本身没有变换,所有顶点位置都需要使用 [param xform] 参数使" +"用节点的变换进行偏移。" + msgid "Returns the parsed source geometry data indices array." msgstr "返回解析得到的源几何体数据索引数据。" @@ -65167,6 +71285,12 @@ msgstr "" msgid "If [code]true[/code] the obstacle affects avoidance using agents." msgstr "如果为 [code]true[/code],则该障碍物会影响使用代理的避障。" +msgid "" +"A bitfield determining the avoidance layers for this obstacle. Agents with a " +"matching bit on the their avoidance mask will avoid this obstacle." +msgstr "" +"决定该障碍物的避障层的位字段。避障掩码中存在匹配位的代理会躲避该障碍物。" + msgid "Sets the avoidance radius for the obstacle." msgstr "设置该障碍物的避障半径。" @@ -65253,6 +71377,9 @@ msgstr "" msgid "Using NavigationPathQueryObjects" msgstr "使用 NavigationPathQueryObject" +msgid "The navigation map [RID] used in the path query." +msgstr "在路径查询中使用的导航地图 [RID]。" + msgid "Additional information to include with the navigation path." msgstr "包含在导航路径中的额外信息。" @@ -65379,9 +71506,122 @@ msgstr "" "导航查询的路径数组结果。所有的路径数组位置都使用全局坐标。未自定义查询参数时," "与 [method NavigationServer3D.map_get_path] 返回的路径相同。" +msgid "" +"A 2D navigation mesh that describes a traversable surface for pathfinding." +msgstr "2D 导航网格,描述用于寻路的可穿越表面。" + +msgid "" +"A navigation mesh can be created either by baking it with the help of the " +"[NavigationServer2D], or by adding vertices and convex polygon indices arrays " +"manually.\n" +"To bake a navigation mesh at least one outline needs to be added that defines " +"the outer bounds of the baked area.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var new_navigation_mesh = NavigationPolygon.new()\n" +"var bounding_outline = PackedVector2Array([Vector2(0, 0), Vector2(0, 50), " +"Vector2(50, 50), Vector2(50, 0)])\n" +"new_navigation_mesh.add_outline(bounding_outline)\n" +"NavigationServer2D.bake_from_source_geometry_data(new_navigation_mesh, " +"NavigationMeshSourceGeometryData2D.new());\n" +"$NavigationRegion2D.navigation_polygon = new_navigation_mesh\n" +"[/gdscript]\n" +"[csharp]\n" +"var newNavigationMesh = new NavigationPolygon();\n" +"var boundingOutline = new Vector2[] { new Vector2(0, 0), new Vector2(0, 50), " +"new Vector2(50, 50), new Vector2(50, 0) };\n" +"newNavigationMesh.AddOutline(boundingOutline);\n" +"NavigationServer2D.BakeFromSourceGeometryData(newNavigationMesh, new " +"NavigationMeshSourceGeometryData2D());\n" +"GetNode(\"NavigationRegion2D\").NavigationPolygon = " +"newNavigationMesh;\n" +"[/csharp]\n" +"[/codeblocks]\n" +"Adding vertices and polygon indices manually.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var new_navigation_mesh = NavigationPolygon.new()\n" +"var new_vertices = PackedVector2Array([Vector2(0, 0), Vector2(0, 50), " +"Vector2(50, 50), Vector2(50, 0)])\n" +"new_navigation_mesh.vertices = new_vertices\n" +"var new_polygon_indices = PackedInt32Array([0, 1, 2, 3])\n" +"new_navigation_mesh.add_polygon(new_polygon_indices)\n" +"$NavigationRegion2D.navigation_polygon = new_navigation_mesh\n" +"[/gdscript]\n" +"[csharp]\n" +"var newNavigationMesh = new NavigationPolygon();\n" +"var newVertices = new Vector2[] { new Vector2(0, 0), new Vector2(0, 50), new " +"Vector2(50, 50), new Vector2(50, 0) };\n" +"newNavigationMesh.Vertices = newVertices;\n" +"var newPolygonIndices = new int[] { 0, 1, 2, 3 };\n" +"newNavigationMesh.AddPolygon(newPolygonIndices);\n" +"GetNode(\"NavigationRegion2D\").NavigationPolygon = " +"newNavigationMesh;\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"导航网格可以通过在 [NavigationServer2D] 的帮助下烘焙它来创建,也可以通过手动添" +"加顶点和凸多边形索引数组来创建。\n" +"要烘焙导航网格,至少需要添加一个轮廓来定义烘焙区域的外部边界。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var new_navigation_mesh = NavigationPolygon.new()\n" +"var bounding_outline = PackedVector2Array([Vector2(0, 0), Vector2(0, 50), " +"Vector2(50, 50), Vector2(50, 0)])\n" +"new_navigation_mesh.add_outline(bounding_outline)\n" +"NavigationServer2D.bake_from_source_geometry_data(new_navigation_mesh, " +"NavigationMeshSourceGeometryData2D.new());\n" +"$NavigationRegion2D.navigation_polygon = new_navigation_mesh\n" +"[/gdscript]\n" +"[csharp]\n" +"var newNavigationMesh = new NavigationPolygon();\n" +"var boundingOutline = new Vector2[] { new Vector2(0, 0), new Vector2(0, 50), " +"new Vector2(50, 50), new Vector2(50, 0) };\n" +"newNavigationMesh.AddOutline(boundingOutline);\n" +"NavigationServer2D.BakeFromSourceGeometryData(newNavigationMesh, new " +"NavigationMeshSourceGeometryData2D());\n" +"GetNode(\"NavigationRegion2D\").NavigationPolygon = " +"newNavigationMesh;\n" +"[/csharp]\n" +"[/codeblocks]\n" +"手动添加顶点和多边形索引。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var new_navigation_mesh = NavigationPolygon.new()\n" +"var new_vertices = PackedVector2Array([Vector2(0, 0), Vector2(0, 50), " +"Vector2(50, 50), Vector2(50, 0)])\n" +"new_navigation_mesh.vertices = new_vertices\n" +"var new_polygon_indices = PackedInt32Array([0, 1, 2, 3])\n" +"new_navigation_mesh.add_polygon(new_polygon_indices)\n" +"$NavigationRegion2D.navigation_polygon = new_navigation_mesh\n" +"[/gdscript]\n" +"[csharp]\n" +"var newNavigationMesh = new NavigationPolygon();\n" +"var newVertices = new Vector2[] { new Vector2(0, 0), new Vector2(0, 50), new " +"Vector2(50, 50), new Vector2(50, 0) };\n" +"newNavigationMesh.Vertices = newVertices;\n" +"var newPolygonIndices = new int[] { 0, 1, 2, 3 };\n" +"newNavigationMesh.AddPolygon(newPolygonIndices);\n" +"GetNode(\"NavigationRegion2D\").NavigationPolygon = " +"newNavigationMesh;\n" +"[/csharp]\n" +"[/codeblocks]" + msgid "2D Navigation Demo" msgstr "2D 导航演示" +msgid "" +"Appends a [PackedVector2Array] that contains the vertices of an outline to " +"the internal array that contains all the outlines." +msgstr "将包含轮廓顶点的 [PackedVector2Array] 追加到包含所有轮廓的内部数组。" + +msgid "" +"Adds a [PackedVector2Array] that contains the vertices of an outline to the " +"internal array that contains all the outlines at a fixed position." +msgstr "" +"将一个包含轮廓顶点的 [PackedVector2Array] 添加到包含固定位置处的所有轮廓的内部" +"数组。" + msgid "" "Clears the array of the outlines, but it doesn't clear the vertices and the " "polygons that were created by them." @@ -65412,6 +71652,14 @@ msgid "" "Returns the number of outlines that were created in the editor or by script." msgstr "返回在编辑器或脚本中创建的轮廓的数量。" +msgid "" +"Returns whether or not the specified layer of the [member " +"parsed_collision_mask] is enabled, given a [param layer_number] between 1 and " +"32." +msgstr "" +"返回 [member parsed_collision_mask] 中是否启用了指定的层,给定的 [param " +"layer_number] 应在 1 和 32 之间。" + msgid "Returns the count of all polygons." msgstr "返回多边形的数量。" @@ -65420,6 +71668,17 @@ msgid "" "create the polygons." msgstr "返回一个 [PackedVector2Array],其中包含用于创建多边形的所有顶点。" +msgid "" +"Creates polygons from the outlines added in the editor or by script.\n" +"[i]Deprecated.[/i] This function is deprecated, and might be removed in a " +"future release. Use [method NavigationServer2D.parse_source_geometry_data] " +"and [method NavigationServer2D.bake_from_source_geometry_data] instead." +msgstr "" +"从编辑器中或通过脚本添加的轮廓创建多边形。\n" +"[i]已弃用。[/i]该函数已弃用,并且可能会在将来的版本中移除。请改用 [method " +"NavigationServer2D.parse_source_geometry_data] 和 [method NavigationServer2D." +"bake_from_source_geometry_data]。" + msgid "" "Removes an outline created in the editor or by script. You have to call " "[method make_polygons_from_outlines] for the polygons to update." @@ -65434,12 +71693,74 @@ msgstr "" "更改在编辑器或脚本中创建的轮廓。你必须调用 [method " "make_polygons_from_outlines] 来更新多边形。" +msgid "" +"Based on [param value], enables or disables the specified layer in the " +"[member parsed_collision_mask], given a [param layer_number] between 1 and 32." +msgstr "" +"根据 [param value],启用或禁用 [member parsed_collision_mask] 中指定的层,给定" +"的 [param layer_number] 应在 1 和 32 之间。" + +msgid "" +"The distance to erode/shrink the walkable surface when baking the navigation " +"mesh." +msgstr "烘焙导航网格时侵蚀/收缩可行走表面的距离。" + msgid "" "The cell size used to rasterize the navigation mesh vertices. Must match with " "the cell size on the navigation map." msgstr "" "用于将导航网格顶点栅格化的单元格大小。必须与导航地图上的单元格大小相匹配。" +msgid "" +"The physics layers to scan for static colliders.\n" +"Only used when [member parsed_geometry_type] is [constant " +"PARSED_GEOMETRY_STATIC_COLLIDERS] or [constant PARSED_GEOMETRY_BOTH]." +msgstr "" +"用于扫描静态碰撞器的物理层。\n" +"仅在 [member parsed_geometry_type] 是 [constant " +"PARSED_GEOMETRY_STATIC_COLLIDERS] 或 [constant PARSED_GEOMETRY_BOTH] 时才使" +"用。" + +msgid "" +"The group name of nodes that should be parsed for baking source geometry.\n" +"Only used when [member source_geometry_mode] is [constant " +"SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN] or [constant " +"SOURCE_GEOMETRY_GROUPS_EXPLICIT]." +msgstr "" +"应被解析以烘焙源几何体的节点的组名称。\n" +"只有当 [member source_geometry_mode] 是 [constant " +"SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN] 或 [constant " +"SOURCE_GEOMETRY_GROUPS_EXPLICIT] 时才使用。" + +msgid "" +"Parses mesh instances as obstruction geometry. This includes [Polygon2D], " +"[MeshInstance2D], [MultiMeshInstance2D], and [TileMap] nodes.\n" +"Meshes are only parsed when they use a 2D vertices surface format." +msgstr "" +"将网格实例解析为障碍几何体。这包括 [Polygon2D]、[MeshInstance2D]、" +"[MultiMeshInstance2D] 和 [TileMap] 节点。\n" +"仅当网格使用 2D 顶点表面格式时才会对其进行解析。" + +msgid "" +"Parses [StaticBody2D] and [TileMap] colliders as obstruction geometry. The " +"collider should be in any of the layers specified by [member " +"parsed_collision_mask]." +msgstr "" +"将 [StaticBody2D] 和 [TileMap] 碰撞器解析为障碍几何体。碰撞器应在由 [member " +"parsed_collision_mask] 指定的层中。" + +msgid "" +"Scans nodes in a group and their child nodes recursively for geometry. The " +"group is specified by [member source_geometry_group_name]." +msgstr "" +"以递归方式扫描组中的节点及其子节点以获取几何图形。该组由 [member " +"source_geometry_group_name] 指定。" + +msgid "" +"Uses nodes in a group for geometry. The group is specified by [member " +"source_geometry_group_name]." +msgstr "将组中的节点用于几何。该组由 [member source_geometry_group_name] 指定。" + msgid "" "A traversable 2D region that [NavigationAgent2D]s can use for pathfinding." msgstr "可达的 2D 地区,[NavigationAgent2D] 能够将其用于寻路。" @@ -65476,6 +71797,16 @@ msgstr "" msgid "Using NavigationRegions" msgstr "使用 NavigationRegion" +msgid "" +"Bakes the [NavigationPolygon]. If [param on_thread] is set to [code]true[/" +"code] (default), the baking is done on a separate thread." +msgstr "" +"烘焙该 [NavigationPolygon]。如果 [param on_thread] 被设置为 [code]true[/code]" +"(默认),则烘焙将在单独的线程上完成。" + +msgid "Returns the current navigation map [RID] used by this region." +msgstr "返回该区块使用的当前导航地图 [RID]。" + msgid "" "Returns the [RID] of this region on the [NavigationServer2D]. Combined with " "[method NavigationServer2D.map_get_closest_point_owner] can be used to " @@ -65486,6 +71817,14 @@ msgstr "" "map_get_closest_point_owner] 可用于识别合并导航地图上离某点最近的 " "[NavigationRegion2D]。" +msgid "" +"Sets the [RID] of the navigation map this region should use. By default the " +"region will automatically join the [World2D] default navigation map so this " +"function is only required to override the default map." +msgstr "" +"设置该区块应使用的导航地图的 [RID]。默认情况下,该区块会自动加入 [World2D] 默" +"认导航地图,因此该函数只需要覆盖默认地图即可。" + msgid "A bitfield determining all avoidance layers for the avoidance constrain." msgstr "位域,确定避障约束的所有避障层。" @@ -65509,6 +71848,14 @@ msgstr "" 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 [member enter_cost] value is added to the path distance " +"for determining the shortest path." +msgstr "" +"当寻路从另一个区块的导航网格进入该区块的导航网格时,[member enter_cost] 值将被" +"加到路径距离,以确定最短路径。" + msgid "" "A bitfield determining all navigation layers the region belongs to. These " "navigation layers can be checked upon when requesting a path with [method " @@ -65520,6 +71867,14 @@ msgstr "" msgid "The [NavigationPolygon] resource to use." msgstr "使用的 [NavigationPolygon] 资源。" +msgid "" +"When pathfinding moves inside this region's navigation mesh the traveled " +"distances are multiplied with [member travel_cost] for determining the " +"shortest path." +msgstr "" +"当寻路在该区块的导航网格内移动时,将行进距离乘以 [member travel_cost] 以确定最" +"短路径。" + msgid "" "If enabled the navigation region will use edge connections to connect with " "other navigation regions within proximity of the navigation map edge " @@ -65528,6 +71883,14 @@ msgstr "" "如果启用,导航区块将使用边缘连接来与位于导航地图连接边距范围内的其他导航区块相" "连接。" +msgid "Emitted when a navigation polygon bake operation is completed." +msgstr "当导航多边形烘焙操作完成时触发。" + +msgid "" +"Emitted when the used navigation polygon is replaced or changes to the " +"internals of the current navigation polygon are committed." +msgstr "当使用的导航多边形被替换或对当前导航多边形内部的更改被提交时发出。" + msgid "" "A traversable 3D region that [NavigationAgent3D]s can use for pathfinding." msgstr "可达的 3D 地区,[NavigationAgent3D] 能够将其用于寻路。" @@ -65588,6 +71951,14 @@ msgstr "" "map_get_closest_point_owner] 可用于识别距离该合并导航地图上的点最近的 " "[NavigationRegion3D]。" +msgid "" +"Sets the [RID] of the navigation map this region should use. By default the " +"region will automatically join the [World3D] default navigation map so this " +"function is only required to override the default map." +msgstr "" +"设置该区块应使用的导航地图的 [RID]。默认情况下,该区块会自动加入 [World3D] 默" +"认导航地图,因此该函数只需要覆盖默认地图即可。" + msgid "Determines if the [NavigationRegion3D] is enabled or disabled." msgstr "决定该 [NavigationRegion3D] 是启用还是禁用。" @@ -65799,6 +72170,23 @@ msgstr "" "至新的较远的位置时,应该在同一帧里使用这个函数。频繁调用这个函数可能让代理卡" "住。" +msgid "" +"Bakes the provided [param navigation_polygon] with the data from the provided " +"[param source_geometry_data]. After the process is finished the optional " +"[param callback] will be called." +msgstr "" +"使用提供的 [param source_geometry_data] 中的数据烘焙提供的 [param " +"navigation_polygon]。该过程完成后,将调用可选的 [param callback]。" + +msgid "" +"Bakes the provided [param navigation_polygon] with the data from the provided " +"[param source_geometry_data] as an async task running on a background thread. " +"After the process is finished the optional [param callback] will be called." +msgstr "" +"使用提供的 [param source_geometry_data] 中的数据烘焙提供的 [param " +"navigation_polygon],并作为在后台线程上运行的异步任务。该过程完成后,将调用可" +"选的 [param callback]。" + msgid "Destroys the given RID." msgstr "销毁给定的 RID。" @@ -65816,6 +72204,9 @@ msgstr "" msgid "Create a new link between two positions on a map." msgstr "在地图上新建两个地点之间的链接。" +msgid "Returns [code]true[/code] if the specified [param link] is enabled." +msgstr "如果指定的 [param link] 已启用,则返回 [code]true[/code]。" + msgid "Returns the ending position of this [param link]." msgstr "返回链接 [param link] 的结束位置。" @@ -66006,6 +72397,16 @@ msgid "" "polygons." msgstr "设置该地图用于连接链接和导航多边形的链接连接半径。" +msgid "" +"Set the navigation [param map] edge connection use. If [param enabled] is " +"[code]true[/code], the navigation map allows navigation regions to use edge " +"connections to connect with other navigation regions within proximity of the " +"navigation map edge connection margin." +msgstr "" +"设置导航地图 [param map] 的边缘连接使用情况。如果 [param enabled] 为 " +"[code]true[/code],则导航地图允许导航区块使用边缘连接与位于导航地图边缘连接边" +"距范围内的其他导航区块相连接。" + msgid "Creates a new navigation obstacle." msgstr "新建导航障碍物。" @@ -66022,6 +72423,13 @@ msgstr "返回请求的障碍物 [param obstacle] 当前分配的导航地图 [R msgid "Returns [code]true[/code] if the specified [param obstacle] is paused." msgstr "如果指定的 [param obstacle] 被暂停,则返回 [code]true[/code]。" +msgid "" +"If [param enabled] is [code]true[/code], the provided [param obstacle] " +"affects avoidance using agents." +msgstr "" +"如果 [param enabled] 为 [code]true[/code],则提供的障碍物 [param obstacle] 会" +"影响使用代理的避障。" + msgid "Set the obstacles's [code]avoidance_layers[/code] bitmask." msgstr "设置障碍物的避障层 [code]avoidance_layers[/code] 位掩码。" @@ -66057,6 +72465,30 @@ msgstr "" "设置障碍物的轮廓顶点。如果顶点顺时针缠绕,则障碍物会将代理向内部推挤,否则向外" "推挤。" +msgid "" +"Parses the [SceneTree] for source geometry according to the properties of " +"[param navigation_polygon]. Updates the provided [param source_geometry_data] " +"resource with the resulting data. The resource can then be used to bake a " +"navigation mesh with [method bake_from_source_geometry_data]. After the " +"process is finished the optional [param callback] will be called.\n" +"[b]Note:[/b] This function needs to run on the main thread or with a deferred " +"call as the SceneTree is not thread-safe.\n" +"[b]Performance:[/b] While convenient, reading data arrays from [Mesh] " +"resources can affect the frame rate negatively. The data needs to be received " +"from the GPU, stalling the [RenderingServer] in the process. For performance " +"prefer the use of e.g. collision shapes or creating the data arrays entirely " +"in code." +msgstr "" +"根据 [param navigation_polygon] 的属性解析 [SceneTree] 中的源几何体。会使用解" +"析的结果数据对提供的 [param source_geometry_data] 资源进行更新。后续可以在使" +"用 [method bake_from_source_geometry_data] 烘焙导航网格时使用该资源。解析过程" +"完成后,会调用可选的 [param callback]。\n" +"[b]注意:[/b]因为 SceneTree 并不是线程安全的,所以这个函数需要在主线程执行或使" +"用延迟调用。\n" +"[b]性能:[/b]从 [Mesh] 资源读取数据数组虽然很方便,但会对帧率造成负面影响。这" +"些数据需要从 GPU 获取,卡住正在处理的 [RenderingServer]。出于性能考量,请优先" +"使用碰撞形状或在完全在代码中创建数据数组。" + msgid "" "Queries a path in a given navigation map. Start and target position and other " "parameters are defined through [NavigationPathQueryParameters2D]. Updates the " @@ -66089,6 +72521,9 @@ msgid "" "the map." msgstr "返回 [param region] 地区与其他地区在地图上有多少连接。" +msgid "Returns [code]true[/code] if the specified [param region] is enabled." +msgstr "如果指定的 [param region] 已启用,则返回 [code]true[/code]。" + msgid "Returns the enter cost of this [param region]." msgstr "返回 [param region] 地区的进入消耗。" @@ -66171,6 +72606,14 @@ msgstr "设置该地区的全局变换。" msgid "Sets the [param travel_cost] for this [param region]." msgstr "设置 [param region] 地区的移动消耗 [param travel_cost]。" +msgid "" +"If [param enabled] is [code]true[/code], the navigation [param region] will " +"use edge connections to connect with other navigation regions within " +"proximity of the navigation map edge connection margin." +msgstr "" +"如果 [param enabled] 为 [code]true[/code],则导航区块 [param region] 将使用边" +"缘连接来与位于导航地图边缘连接边距范围内的其他导航区块相连接。" + msgid "If [code]true[/code] enables debug mode on the NavigationServer." msgstr "如果为 [code]true[/code],则该 NavigationServer 启用了调试模式。" @@ -66186,6 +72629,53 @@ msgstr "当导航调试设置更改时发出。仅在调试版本中可用。" msgid "A server interface for low-level 3D navigation access." msgstr "用于访问低阶 3D 导航的服务器接口。" +msgid "" +"NavigationServer3D is the server that handles navigation maps, regions and " +"agents. It does not handle A* navigation from [AStar3D].\n" +"Maps are made up of regions, which are made of navigation meshes. Together, " +"they define the navigable areas in the 3D world.\n" +"[b]Note:[/b] Most [NavigationServer3D] changes take effect after the next " +"physics frame and not immediately. This includes all changes made to maps, " +"regions or agents by navigation-related nodes in the scene tree or made " +"through scripts.\n" +"For two regions to be connected to each other, they must share a similar " +"edge. An edge is considered connected to another if both of its two vertices " +"are at a distance less than [code]edge_connection_margin[/code] to the " +"respective other edge's vertex.\n" +"You may assign navigation layers to regions with [method NavigationServer3D." +"region_set_navigation_layers], which then can be checked upon when requesting " +"a path with [method NavigationServer3D.map_get_path]. This can be used to " +"allow or deny certain areas for some objects.\n" +"To use the collision avoidance system, you may use agents. You can set an " +"agent's target velocity, then the servers will emit a callback with a " +"modified velocity.\n" +"[b]Note:[/b] The collision avoidance system ignores regions. Using the " +"modified velocity directly may move an agent outside of the traversable area. " +"This is a limitation of the collision avoidance system, any more complex " +"situation may require the use of the physics engine.\n" +"This server keeps tracks of any call and executes them during the sync phase. " +"This means that you can request any change to the map, using any thread, " +"without worrying." +msgstr "" +"NavigationServer3D 是处理导航地图、区块、代理的服务器。它不处理来自 [AStar3D] " +"的 A* 导航。\n" +"地图由区块组成,区块由导航网格组成。它们共同定义了 3D 空间中的可达区域。\n" +"[b]注意:[/b]大多数 [NavigationServer3D] 的更改都是在下一个物理帧进行的,不会" +"立即生效。包括所有对地图、区块、代理的更改,无论是通过场景树中导航相关的节点作" +"出的更改,还是通过脚本作出的更改。\n" +"两个区块必须共享一条相似的边才能相连。如果一条边的两个顶点与另一条边上相应顶点" +"的距离都小于 [code]edge_connection_margin[/code],那么就会认为这两条边是相连" +"的。\n" +"可以使用 [method NavigationServer3D.region_set_navigation_layers] 为区块分配导" +"航层,使用 [method NavigationServer3D.map_get_path] 请求路径时会对导航层进行检" +"查。可用于针对某些对象允许或禁止特定的区域。\n" +"使用碰撞躲避系统就需要使用代理。你可以为代理设置目标速度,然后服务器就会发出回" +"调,提供修改后的速度。\n" +"[b]注意:[/b]碰撞躲避系统会忽略区块。直接使用修改后的速度可能会将代理移动到可" +"达区域之外。这是碰撞躲避系统的缺陷,更复杂的场合可能需要使用物理引擎。\n" +"服务器会对所有调用进行跟踪,并在同步阶段执行。这意味着你可以放心地从任何线程请" +"求对地图作出任何修改。" + msgid "" "Returns [code]true[/code] if the provided [param agent] has avoidance enabled." msgstr "如果指定代理 [param agent] 启用了避障,则返回 [code]true[/code]。" @@ -66256,6 +72746,15 @@ msgstr "" "将指定代理 [param agent] 的避障仿真内部速度替换为 [param velocity]。将代理传送" "至新的位置时,应该在同一帧里使用这个函数。频繁调用这个函数可能让代理卡住。" +msgid "" +"Bakes the provided [param navigation_mesh] with the data from the provided " +"[param source_geometry_data] as an async task running on a background thread. " +"After the process is finished the optional [param callback] will be called." +msgstr "" +"使用提供的 [param source_geometry_data] 中的数据烘焙提供的 [param " +"navigation_mesh],并作为在后台线程上运行的异步任务。该过程完成后,将调用可选" +"的 [param callback]。" + msgid "" "Returns information about the current state of the NavigationServer. See " "[enum ProcessInfo] for a list of available states." @@ -66361,6 +72860,25 @@ msgstr "" "[NavigationPathQueryParameters3D] 定义。会使用路径和其他查询中请求的信息更新提" "供的 [NavigationPathQueryResult3D]。" +msgid "" +"Bakes the [param navigation_mesh] with bake source geometry collected " +"starting from the [param root_node].\n" +"[i]Deprecated.[/i] This function is deprecated due to core threading changes. " +"To upgrade existing code, first create a [NavigationMeshSourceGeometryData3D] " +"resource. Use this resource with [method parse_source_geometry_data] to parse " +"the SceneTree for nodes that should contribute to the navigation mesh baking. " +"The SceneTree parsing needs to happen on the main thread. After the parsing " +"is finished use the resource with [method bake_from_source_geometry_data] to " +"bake a navigation mesh." +msgstr "" +"使用从 [param root_node] 开始收集的烘焙源几何体来烘焙 [param " +"navigation_mesh]。\n" +"[i]已弃用。[/i] 由于核心线程更改,该函数已弃用。要更新现有代码,请先创建一个 " +"[NavigationMeshSourceGeometryData3D] 资源。将该资源与 [method " +"parse_source_geometry_data] 结合使用来解析 SceneTree 以查找有助于导航网格烘焙" +"的节点。SceneTree 解析需要在主线程上进行。解析完成后,请在调用 [method " +"bake_from_source_geometry_data] 时使用该资源对导航网格进行烘焙。" + msgid "" "Returns true if the navigation [param region] is set to use edge connections " "to connect with other navigation regions within proximity of the navigation " @@ -66790,6 +73308,32 @@ msgstr "" "[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, [method _ready] 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]。从场景树中移除一个节" +"点后,并再次添加该节点时,将不会第二次调用 [method _ready]。这时可以通过使用 " +"[method request_ready],它可以在再次添加节点之前的任何地方被调用。" + msgid "" "Called when an [InputEventKey] or [InputEventShortcut] hasn't been consumed " "by [method _input] or any GUI [Control] item. It is called before [method " @@ -67500,8 +74044,59 @@ msgstr "" "如果这是一个实例加载占位符,则返回 [code]true[/code]。见 " "[InstancePlaceholder]。" -msgid "Returns the [SceneTree] that contains this node." -msgstr "返回包含该节点的 [SceneTree]。" +msgid "" +"Returns the tree as a [String]. 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. It also can be used in game UI/" +"UX.\n" +"[b]Example output:[/b]\n" +"[codeblock]\n" +"TheGame\n" +"TheGame/Menu\n" +"TheGame/Menu/Label\n" +"TheGame/Menu/Camera2D\n" +"TheGame/SplashScreen\n" +"TheGame/SplashScreen/Camera2D\n" +"[/codeblock]" +msgstr "" +"将树以 [String] 的形式返回。主要用于调试。这个版本显示相对于当前节点的路径,适" +"合复制/粘贴到 [method get_node] 函数中。也可以用于游戏中的 UI/UX。\n" +"[b]示例输出:[/b]\n" +"[codeblock]\n" +"TheGame\n" +"TheGame/Menu\n" +"TheGame/Menu/Label\n" +"TheGame/Menu/Camera2D\n" +"TheGame/SplashScreen\n" +"TheGame/SplashScreen/Camera2D\n" +"[/codeblock]" + +msgid "" +"Similar to [method get_tree_string], this returns the tree as a [String]. " +"This version displays a more graphical representation similar to what is " +"displayed in the Scene Dock. It is useful for inspecting larger trees.\n" +"[b]Example output:[/b]\n" +"[codeblock]\n" +" ┖╴TheGame\n" +" ┠╴Menu\n" +" ┃ ┠╴Label\n" +" ┃ ┖╴Camera2D\n" +" ┖╴SplashScreen\n" +" ┖╴Camera2D\n" +"[/codeblock]" +msgstr "" +"类似于 [method get_tree_string],会将树以 [String] 的形式返回。这个版本使用的" +"是一种更加图形化的呈现方式,类似于在“场景”面板中显示的内容。非常适合检查较大的" +"树。\n" +"[b]输出示例:[/b]\n" +"[codeblock]\n" +" ┖╴TheGame\n" +" ┠╴Menu\n" +" ┃ ┠╴Label\n" +" ┃ ┖╴Camera2D\n" +" ┖╴SplashScreen\n" +" ┖╴Camera2D\n" +"[/codeblock]" msgid "Returns the node's [Viewport]." msgstr "返回节点的 [Viewport]。" @@ -67801,6 +74396,19 @@ msgstr "" "[b]注意:[/b]被替换的节点不会被自动释放,因此需要将其保存在变量中以备后用,或" "者使用 [method Object.free] 释放它。" +msgid "" +"Requests that [method _ready] 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. [method _ready] is called only for the node which requested it, " +"which means that you need to request ready for each child if you want them to " +"call [method _ready] too (in which case, [method _ready] will be called in " +"the same order as it would normally)." +msgstr "" +"请求再次调用 [method _ready]。注意,该方法不会被立即调用,而是被安排在该节点再" +"次被添加到场景树时。只会为进行了请求的节点调用 [method _ready],也就是说,如果" +"你想让每个子节点都调用 [method _ready],就需要为它们分别进行就绪请求(在这种情" +"况下,[method _ready] 的调用顺序与正常情况下相同)。" + 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 " @@ -67883,6 +74491,29 @@ msgstr "" "设置 [param node] 相对于这个节点的可编辑子节点状态。这个方法仅适用于编辑器工" "具。" +msgid "" +"Sets the node's multiplayer authority to the peer with the given peer ID. The " +"multiplayer authority is the peer that has authority over the node on the " +"network. Useful in conjunction with [method rpc_config] and the " +"[MultiplayerAPI]. Defaults to peer ID 1 (the server). If [param recursive], " +"the given peer is recursively set as the authority for all children of this " +"node.\n" +"[b]Warning:[/b] This does [b]not[/b] automatically replicate the new " +"authority to other peers. It is developer's responsibility to do so. You can " +"propagate the information about the new authority using [member " +"MultiplayerSpawner.spawn_function], an RPC, or using a " +"[MultiplayerSynchronizer]. Also, the parent's authority does [b]not[/b] " +"propagate to newly added children." +msgstr "" +"将该节点的多人游戏控制方设置为具有给定对等体 ID 的对等体。多人游戏控制方是对网" +"络上的节点具有控制权限的对等体。可以与 [method rpc_config] 和 " +"[MultiplayerAPI] 结合使用。默认为对等体 ID 1(服务器)。如果 [param " +"recursive],则给定的对等体会被递归设置为该节点所有子节点的控制方。\n" +"[b]警告:[/b]这样做[b]不会[/b]自动将新的控制方复制给其他对等体。开发者需要自己" +"负责。你可以使用 [member MultiplayerSpawner.spawn_function]、RPC、" +"[MultiplayerSynchronizer] 等方法将这个信息传播出去。另外,父节点的控制方[b]不" +"会[/b]传播给新添加的子节点。" + msgid "" "Enables or disables physics (i.e. fixed framerate) processing. When a node is " "being processed, it will receive a [constant NOTIFICATION_PHYSICS_PROCESS] at " @@ -68002,6 +74633,17 @@ msgstr "" "为该节点添加自定义描述。该节点在编辑器的场景树中处于悬停状态时,该描述将显示在" "工具提示中。" +msgid "" +"The [MultiplayerAPI] instance associated with this node. See [method " +"SceneTree.get_multiplayer].\n" +"[b]Note:[/b] Renaming the node, or moving it in the tree, will not move the " +"[MultiplayerAPI] to the new path, you will have to update this manually." +msgstr "" +"与该节点关联的 [MultiplayerAPI] 实例。见 [method SceneTree." +"get_multiplayer]。\n" +"[b]注意:[/b]将节点重命名或者在树中移动都不会将 [MultiplayerAPI] 移动至新的路" +"径,你需要手动进行更新。" + 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 " @@ -68328,6 +74970,14 @@ msgstr "" "当设置了内部物理处理标志时,每一帧都会收到的通知(见 [method " "set_physics_process_internal])。" +msgid "" +"Notification received when the node is ready, just before [constant " +"NOTIFICATION_READY] is received. Unlike the latter, it's sent every time the " +"node enters the tree, instead of only once." +msgstr "" +"当该节点就绪,在收到 [constant NOTIFICATION_READY] 之前收到的通知。与后者不" +"同,该节点每次进入树时都会发送,而不是只发送一次。" + msgid "" "Notification received when the node is disabled. See [constant " "PROCESS_MODE_DISABLED]." @@ -68420,6 +75070,26 @@ msgid "" "Only implemented on macOS." msgstr "当屏幕的 DPI 发生更改时,从操作系统受到的通知。仅在 macOS 上实现。" +msgid "" +"Notification received when the mouse cursor enters the [Viewport]'s visible " +"area, that is not occluded behind other [Control]s or [Window]s, provided its " +"[member Viewport.gui_disable_input] is [code]false[/code] and regardless if " +"it's currently focused or not." +msgstr "" +"当鼠标指针进入 [Viewport] 的可见区域时收到的通知,可见区域指没有被其他 " +"[Control] 和 [Window] 遮挡的区域,并且需要 [member Viewport." +"gui_disable_input] 为 [code]false[/code],与当前是否持有焦点无关。" + +msgid "" +"Notification received when the mouse cursor leaves the [Viewport]'s visible " +"area, that is not occluded behind other [Control]s or [Window]s, provided its " +"[member Viewport.gui_disable_input] is [code]false[/code] and regardless if " +"it's currently focused or not." +msgstr "" +"当鼠标指针离开 [Viewport] 的可见区域时收到的通知,可见区域指没有被其他 " +"[Control] 和 [Window] 遮挡的区域,并且需要 [member Viewport." +"gui_disable_input] 为 [code]false[/code],与当前是否持有焦点无关。" + msgid "" "Inherits process mode from the node's parent. For the root node, it is " "equivalent to [constant PROCESS_MODE_PAUSABLE]. Default." @@ -68651,12 +75321,54 @@ msgstr "局部 [Transform2D]。" msgid "Most basic 3D game object, parent of all 3D-related nodes." msgstr "最基本的 3D 游戏对象,所有 3D 相关节点的父类。" +msgid "" +"Most basic 3D game object, with a [Transform3D] and visibility settings. All " +"other 3D game objects inherit from [Node3D]. Use [Node3D] as a parent node to " +"move, scale, rotate and show/hide children in a 3D project.\n" +"Affine operations (rotate, scale, translate) happen in parent's local " +"coordinate system, unless the [Node3D] object is set as top-level. Affine " +"operations in this coordinate system correspond to direct affine operations " +"on the [Node3D]'s transform. The word local below refers to this coordinate " +"system. The coordinate system that is attached to the [Node3D] object itself " +"is referred to as object-local coordinate system.\n" +"[b]Note:[/b] Unless otherwise specified, all methods that have angle " +"parameters must have angles specified as [i]radians[/i]. To convert degrees " +"to radians, use [method @GlobalScope.deg_to_rad].\n" +"[b]Note:[/b] Be aware that \"Spatial\" nodes are now called \"Node3D\" " +"starting with Godot 4. Any Godot 3.x references to \"Spatial\" nodes refer to " +"\"Node3D\" in Godot 4." +msgstr "" +"最基本的 3D 游戏对象,具有 [Transform3D] 和可见性设置。所有其他的 3D 游戏对象" +"都继承自 [Node3D]。在 3D 项目中,请使用 [Node3D] 作为父节点对子节点进行移动、" +"缩放、旋转和显示/隐藏。\n" +"除非该 [Node3D] 对象被设置为顶层,否则仿射操作(旋转、缩放、平移)会在父节点的" +"本地坐标系中进行。在这个坐标系中的仿射操作对应于对 [Node3D] 变换的直接仿射运" +"算。下文中的本地一词指的就是这个坐标系。附加到 [Node3D] 对象本身的坐标系被称为" +"对象本地坐标系。\n" +"[b]注意:[/b]除非另有规定,所有有角度参数的方法必须将角度指定为[i]弧度[/i]。请" +"使用 [method @GlobalScope.deg_to_rad] 将度数转换为弧度。\n" +"[b]注意:[/b]请注意,从 Godot 4 开始,“Spatial”节点现在被称为“Node3D”。Godot " +"3.x 中指的“Spatial”节点,均指的是 Godot 4 中的“Node3D”。" + msgid "Introduction to 3D" msgstr "3D 简介" msgid "All 3D Demos" msgstr "所有 3D 演示" +msgid "" +"Attach an editor gizmo to this [Node3D].\n" +"[b]Note:[/b] The gizmo object would typically be an instance of " +"[EditorNode3DGizmo], but the argument type is kept generic to avoid creating " +"a dependency on editor classes in [Node3D]." +msgstr "" +"将编辑器小工具附加到该 [Node3D]。\n" +"[b]注意:[/b]小工具对象通常是 [EditorNode3DGizmo] 的一个实例,但参数类型保持通" +"用以避免在 [Node3D] 中创建对编辑器类的依赖。" + +msgid "Clear all gizmos attached to this [Node3D]." +msgstr "清除附加于该 [Node3D] 的所有小工具。" + msgid "" "Clears subgizmo selection for this node in the editor. Useful when subgizmo " "IDs become invalid after a property change." @@ -68664,6 +75376,9 @@ msgstr "" "在编辑器中,清除该节点的子小工具选择。在一个属性更改后,子小工具 ID 变得无效时" "很有用。" +msgid "Returns all the gizmos attached to this [Node3D]." +msgstr "返回附加到该 [Node3D] 的所有小工具。" + msgid "" "Returns the parent [Node3D], or an empty [Object] if no parent exists or " "parent is not of type [Node3D]." @@ -68821,6 +75536,16 @@ msgstr "" "设置该节点是否通知其全局和局部变换的更改。[Node3D] 默认不会传播此属性,除非位" "于编辑器上下文中,并且存在有效的小工具。" +msgid "" +"Set subgizmo selection for this node in the editor.\n" +"[b]Note:[/b] The gizmo object would typically be an instance of " +"[EditorNode3DGizmo], but the argument type is kept generic to avoid creating " +"a dependency on editor classes in [Node3D]." +msgstr "" +"在编辑器中为该节点设置子小工具选区。\n" +"[b]注意:[/b]小工具对象通常是 [EditorNode3DGizmo] 的一个实例,但参数类型保持通" +"用以避免在 [Node3D] 中创建对编辑器类的依赖。" + msgid "" "Enables rendering of this node. Changes [member visible] to [code]true[/code]." msgstr "启用此节点的呈现。将 [member visible] 更改为 [code]true[/code]。" @@ -68849,6 +75574,9 @@ msgid "" "Changes the node's position by the given offset [Vector3] in local space." msgstr "通过给定的局部空间偏移量 [Vector3] 改变该节点的位置。" +msgid "Updates all the [Node3D] gizmos attached to this node." +msgstr "更新附加于该节点的所有 [Node3D] 小工具。" + msgid "Direct access to the 3x3 basis of the [member transform] property." msgstr "直接访问 [member transform] 属性的 3x3 基。" @@ -68982,6 +75710,44 @@ msgstr "" msgid "Emitted when node visibility changes." msgstr "当节点可见性更改时触发。" +msgid "" +"[Node3D] nodes receive this notification when their global transform changes. " +"This means that either the current or a parent node changed its transform.\n" +"In order for [constant NOTIFICATION_TRANSFORM_CHANGED] to work, users first " +"need to ask for it, with [method set_notify_transform]. The notification is " +"also sent if the node is in the editor context and it has at least one valid " +"gizmo." +msgstr "" +"[Node3D] 节点在自己的全局变换发生改变时,会收到这个通知。这意味着当前节点或者" +"某个父节点的变换发生了改变。\n" +"用户需要使用 [method set_notify_transform] 手动申请才能够收到 [constant " +"NOTIFICATION_TRANSFORM_CHANGED]。如果该节点在编辑器环境中,并且拥有至少一个有" +"效的小工具,则也会发送这个通知。" + +msgid "" +"[Node3D] nodes receive this notification when they are registered to new " +"[World3D] resource." +msgstr "[Node3D] 节点在注册到新的 [World3D] 资源时,会收到这个通知。" + +msgid "" +"[Node3D] nodes receive this notification when they are unregistered from " +"current [World3D] resource." +msgstr "[Node3D] 节点从当前的 [World3D] 资源中取消注册时,会收到这个通知。" + +msgid "[Node3D] nodes receive this notification when their visibility changes." +msgstr "[Node3D] 节点在其可见性发生变化时,会收到该通知。" + +msgid "" +"[Node3D] nodes receive this notification when their local transform changes. " +"This is not received when the transform of a parent node is changed.\n" +"In order for [constant NOTIFICATION_LOCAL_TRANSFORM_CHANGED] to work, users " +"first need to ask for it, with [method set_notify_local_transform]." +msgstr "" +"[Node3D] 节点在其局部变换发生改变时,会收到这个通知。父节点的变换发生改变时不" +"会收到这个通知。\n" +"为了使 [constant NOTIFICATION_LOCAL_TRANSFORM_CHANGED] 起作用,用户首先需要使" +"用 [method set_notify_local_transform] 请求它。" + msgid "The rotation is edited using [Vector3] Euler angles." msgstr "旋转量以 [Vector3] 欧拉角的形式编辑。" @@ -68993,9 +75759,94 @@ msgid "" "edited separately." msgstr "旋转量以 [Basis] 的形式编辑。此模式下无法单独编辑 [member scale]。" +msgid "Abstract class to expose editor gizmos for [Node3D]." +msgstr "用于公开 [Node3D] 编辑器小工具的抽象类。" + +msgid "" +"This abstract class helps connect the [Node3D] scene with the editor-specific " +"[EditorNode3DGizmo] class.\n" +"[Node3DGizmo] by itself has no exposed API, refer to [method Node3D." +"add_gizmo] and pass it an [EditorNode3DGizmo] instance." +msgstr "" +"该抽象类有助于将 [Node3D] 场景与特定于编辑器的 [EditorNode3DGizmo] 类连接起" +"来。\n" +"[Node3DGizmo] 本身没有公开的 API,请参考 [method Node3D.add_gizmo] 并向其传递" +"一个 [EditorNode3DGizmo] 实例。" + msgid "A 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" +"^\"../..\" # The grandparent node.\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.\n" +"[b]Note:[/b] In a boolean context, a [NodePath] will evaluate to [code]false[/" +"code] if it is empty ([code]NodePath(\"\")[/code]). Otherwise, a [NodePath] " +"will always evaluate to [code]true[/code]." +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" +"^\"../..\" # 祖父节点。\n" +"# 前导斜杠意味着它是来自 SceneTree 的绝对路径。\n" +"^\"/root\" # 等同于 get_tree().get_root()。\n" +"^\"/root/Main\" # 如果你的主场景的根节点被命名为“Main”。\n" +"^\"/root/MyAutoload\" # 如果你有一个自动加载的节点或场景。\n" +"[/codeblock]\n" +"另见 [StringName],它是通用字符串的类似概念。\n" +"[b]注意:[/b]在编辑器中,[NodePath] 属性在场景树中移动、重命名或删除节点时会自" +"动更新,但它们不会在运行时更新。\n" +"[b]注意:[/b]在布尔上下文中,如果 [NodePath] 为空([code]NodePath(\"\")[/" +"code]),则它将评估为 [code]false[/code]。否则,[NodePath] 将始终评估为 " +"[code]true[/code]。" + msgid "2D Role Playing Game Demo" msgstr "2D 角色扮演游戏演示" @@ -69107,6 +75958,35 @@ msgid "" msgstr "" "返回所有以斜杠字符([code]/[/code])作为分隔符连接的且不带子名称的路径。" +msgid "" +"Returns all subnames concatenated with a colon character ([code]:[/code]) as " +"separator, i.e. the right side of the first colon in a node path.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var node_path = NodePath(\"Path2D/PathFollow2D/Sprite2D:texture:load_path\")\n" +"print(node_path.get_concatenated_subnames()) # texture:load_path\n" +"[/gdscript]\n" +"[csharp]\n" +"var nodePath = new NodePath(\"Path2D/PathFollow2D/Sprite2D:texture:" +"load_path\");\n" +"GD.Print(nodePath.GetConcatenatedSubnames()); // texture:load_path\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回所有以冒号字符([code]:[/code])作为分隔符连接的子名称,即节点路径中第一个" +"冒号的右侧。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var node_path = NodePath(\"Path2D/PathFollow2D/Sprite2D:texture:load_path\")\n" +"print(node_path.get_concatenated_subnames()) # texture:load_path\n" +"[/gdscript]\n" +"[csharp]\n" +"var nodePath = new NodePath(\"Path2D/PathFollow2D/Sprite2D:texture:" +"load_path\");\n" +"GD.Print(nodePath.GetConcatenatedSubnames()); // texture:load_path\n" +"[/csharp]\n" +"[/codeblocks]" + msgid "" "Gets the node name indicated by [param idx] (0 to [method get_name_count] - " "1).\n" @@ -69226,6 +76106,22 @@ msgstr "" msgid "Abstract base class for noise generators." msgstr "噪声生成器的抽象基类。" +msgid "" +"This class defines the interface for noise generation libraries to inherit " +"from.\n" +"A default [method get_seamless_image] implementation is provided for " +"libraries that do not provide seamless noise. This function requests a larger " +"image from the [method get_image] method, reverses the quadrants of the " +"image, then uses the strips of extra width to blend over the seams.\n" +"Inheriting noise classes can optionally override this function to provide a " +"more optimal algorithm." +msgstr "" +"该类定义了噪声生成库要继承的接口。\n" +"为不提供无缝噪声的库提供一个默认的 [method get_seamless_image] 实现。该函数从 " +"[method get_image] 请求更大的图像,反转该图像的象限,然后使用额外宽度的条带在" +"接缝处混合。\n" +"继承的噪声类可以选择性地覆盖该函数,以提供更优化的算法。" + msgid "" "Returns an [Image] containing 2D noise values.\n" "[b]Note:[/b] With [param normalize] set to [code]false[/code], the default " @@ -69279,6 +76175,38 @@ msgstr "" "[b]注意:[/b][param normalize] 为 [code]false[/code] 时,默认实现要求噪声生成" "器返回 [code]-1.0[/code] 到 [code]1.0[/code] 之间的值。" +msgid "A 2D texture filled with noise generated by a [Noise] object." +msgstr "由 [Noise] 对象生成的噪声所填充的 2D 纹理。" + +msgid "" +"Uses the [FastNoiseLite] library or other noise generators to fill the " +"texture data of your desired size. [NoiseTexture2D] can also generate normal " +"map 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] 库或其他噪声生成器来填充所需大小的纹理数据。" +"[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." @@ -69374,6 +76302,34 @@ msgstr "" msgid "Width of the generated texture (in pixels)." msgstr "生成的纹理的宽度(单位为像素)。" +msgid "A 3D texture filled with noise generated by a [Noise] object." +msgstr "由 [Noise] 对象生成的噪声所填充的 3D 纹理。" + +msgid "" +"Uses the [FastNoiseLite] library or other noise generators to fill the " +"texture data of your desired size.\n" +"The class uses [Thread]s to generate the texture data internally, so [method " +"Texture3D.get_data] 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:\n" +"[codeblock]\n" +"var texture = NoiseTexture3D.new()\n" +"texture.noise = FastNoiseLite.new()\n" +"await texture.changed\n" +"var data = texture.get_data()\n" +"[/codeblock]" +msgstr "" +"使用 [FastNoiseLite] 库或其他噪声生成器来填充所需大小的纹理数据。\n" +"该类在内部使用 [Thread] 生成纹理数据,因此如果生成过程尚未完成,[method " +"Texture3D.get_data] 可能会返回 [code]null[/code]。在这种情况下,需要等待纹理生" +"成后再访问图像:\n" +"[codeblock]\n" +"var texture = NoiseTexture3D.new()\n" +"texture.noise = FastNoiseLite.new()\n" +"await texture.changed\n" +"var data = texture.get_data()\n" +"[/codeblock]" + msgid "Depth of the generated texture (in pixels)." msgstr "生成的纹理的深度(单位为像素)。" @@ -69414,6 +76370,103 @@ msgstr "" msgid "Base class for all other classes in the engine." msgstr "引擎中所有其他类的基类。" +msgid "" +"An advanced [Variant] type. All classes in the engine inherit from Object. " +"Each class may define new properties, methods or signals, which are available " +"to all inheriting classes. For example, a [Sprite2D] instance is able to call " +"[method Node.add_child] because it inherits from [Node].\n" +"You can create new instances, using [code]Object.new()[/code] in GDScript, or " +"[code]new GodotObject[/code] in C#.\n" +"To delete an Object instance, call [method free]. This is necessary for most " +"classes inheriting Object, because they do not manage memory on their own, " +"and will otherwise cause memory leaks when no longer in use. There are a few " +"classes that perform memory management. For example, [RefCounted] (and by " +"extension [Resource]) deletes itself when no longer referenced, and [Node] " +"deletes its children when freed.\n" +"Objects can have a [Script] attached to them. Once the [Script] is " +"instantiated, it effectively acts as an extension to the base class, allowing " +"it to define and inherit new properties, methods and signals.\n" +"Inside a [Script], [method _get_property_list] may be overridden to customize " +"properties in several ways. This allows them to be available to the editor, " +"display as lists of options, sub-divide into groups, save on disk, etc. " +"Scripting languages offer easier ways to customize properties, such as with " +"the [annotation @GDScript.@export] annotation.\n" +"Godot is very dynamic. An object's script, and therefore its properties, " +"methods and signals, can be changed at run-time. Because of this, there can " +"be occasions where, for example, a property required by a method may not " +"exist. To prevent run-time errors, see methods such as [method set], [method " +"get], [method call], [method has_method], [method has_signal], etc. Note that " +"these methods are [b]much[/b] slower than direct references.\n" +"In GDScript, you can also check if a given property, method, or signal name " +"exists in an object with the [code]in[/code] operator:\n" +"[codeblock]\n" +"var node = Node.new()\n" +"print(\"name\" in node) # Prints true\n" +"print(\"get_parent\" in node) # Prints true\n" +"print(\"tree_entered\" in node) # Prints true\n" +"print(\"unknown\" in node) # Prints false\n" +"[/codeblock]\n" +"Notifications are [int] constants commonly sent and received by objects. For " +"example, on every rendered frame, the [SceneTree] notifies nodes inside the " +"tree with a [constant Node.NOTIFICATION_PROCESS]. The nodes receive it and " +"may call [method Node._process] to update. To make use of notifications, see " +"[method notification] and [method _notification].\n" +"Lastly, every object can also contain metadata (data about data). [method " +"set_meta] can be useful to store information that the object itself does not " +"depend on. To keep your code clean, making excessive use of metadata is " +"discouraged.\n" +"[b]Note:[/b] Unlike references to a [RefCounted], references to an object " +"stored in a variable can become invalid without being set to [code]null[/" +"code]. To check if an object has been deleted, do [i]not[/i] compare it " +"against [code]null[/code]. Instead, use [method @GlobalScope." +"is_instance_valid]. It's also recommended to inherit from [RefCounted] for " +"classes storing data instead of [Object].\n" +"[b]Note:[/b] The [code]script[/code] is not exposed like most properties. To " +"set or get an object's [Script] in code, use [method set_script] and [method " +"get_script], respectively." +msgstr "" +"一种高级的 [Variant] 类型。引擎中的所有类都继承自 Object。每个类都可以定义新的" +"属性、方法或信号,并且这些对所有继承的类都可用。例如,一个 [Sprite2D] 实例能够" +"调用 [method Node.add_child] 因为它继承自 [Node]。\n" +"可以使用 GDScript 中的 [code]Object.new()[/code] 或 C# 中的 [code]new " +"GodotObject[/code] 来创建新实例。\n" +"要删除一个 Object 实例,请调用 [method free]。这对于大多数继承 Object 的类来说" +"是必须的,因为它们本身并不管理内存,如果不调用该方法的话,在不再使用时会造成内" +"存泄漏。有几个类会执行内存管理。例如,[RefCounted](以及扩展的 [Resource])在" +"不再被引用时删除自身,而 [Node] 在释放时会删除其子节点。\n" +"对象可以附加一个 [Script]。一旦该 [Script] 被实例化,它就有效地充当了基类的扩" +"展,允许它定义和继承新的属性、方法和信号。\n" +"在 [Script] 中,[method _get_property_list] 可以被可以重写,以通过多种方式自定" +"义属性。这允许它们对编辑器可用,显示为选项列表,细分为组,保存在磁盘上,等等。" +"脚本语言提供更简单的方式来自定义属性,例如使用 [annotation @GDScript.@export] " +"注解。\n" +"Godot 是非常动态的。一个对象的脚本,以及它的属性、方法和信号,都可以在运行时改" +"变。正因为如此,可能会出现这样的情况,例如,一个方法所需的属性可能不存在。为了" +"防止运行时出错,可以参考 [method set]、[method get]、[method call]、[method " +"has_method]、[method has_signal] 等方法。请注意,这些方法比直接引用慢[b]得多[/" +"b]。\n" +"在 GDScript 中,还可以使用 [code]in[/code] 运算符来检查对象中是否存在给定的属" +"性、方法或信号名称:\n" +"[codeblock]\n" +"var node = Node.new()\n" +"print(\"name\" in node) # 输出 true\n" +"print(\"get_parent\" in node) # 输出 true\n" +"print(\"tree_entered\" in node) # 输出 true\n" +"print(\"unknown\" in node) # 输出 false\n" +"[/codeblock]\n" +"通知是 [int] 常量,通常由对象发送和接收。例如,在每个渲染帧上,[SceneTree] 使" +"用 [constant Node.NOTIFICATION_PROCESS] 通知树内的节点。节点收到它后,可以调" +"用 [method Node._process] 进行更新。要使用通知,请参阅 [method notification] " +"和 [method _notification]。\n" +"最后,每个对象还可以包含元数据(关于数据的数据)。[method set_meta] 可用于存储" +"对象本身不依赖的信息。为了保持代码整洁,不鼓励过度使用元数据。\n" +"[b]注意:[/b]与对 [RefCounted] 的引用不同,对存储在变量中的对象的引用,可能会" +"在未被设置为 [code]null[/code] 的情况下变得无效。要检查对象是否已被删除,请[i]" +"不要[/i]将其与 [code]null[/code] 进行比较。而是使用 [method @GlobalScope." +"is_instance_valid]。存储数据的类,建议从 [RefCounted] 继承而不是 [Object]。\n" +"[b]注意:[/b][code]script[/code] 不像大多数属性那样公开。要在代码中设置或获取" +"一个对象的 [Script],请分别使用 [method set_script] 和 [method get_script]。" + msgid "Object class introduction" msgstr "Object 类介绍" @@ -69423,6 +76476,95 @@ msgstr "何时以及如何避免为任何事情使用节点" msgid "Object notifications" msgstr "对象通知" +msgid "" +"Override this method to customize the behavior of [method get]. Should return " +"the given [param property]'s value, or [code]null[/code] if the [param " +"property] should be handled normally.\n" +"Combined with [method _set] and [method _get_property_list], this method " +"allows defining custom properties, which is particularly useful for editor " +"plugins. Note that a property must be present in [method get_property_list], " +"otherwise this method will not be called.\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _get(property):\n" +" if property == \"fake_property\":\n" +" print(\"Getting my property!\")\n" +" return 4\n" +"\n" +"func _get_property_list():\n" +" return [\n" +" { \"name\": \"fake_property\", \"type\": TYPE_INT }\n" +" ]\n" +"[/gdscript]\n" +"[csharp]\n" +"public override Variant _Get(StringName property)\n" +"{\n" +" if (property == \"FakeProperty\")\n" +" {\n" +" GD.Print(\"Getting my property!\");\n" +" return 4;\n" +" }\n" +" return default;\n" +"}\n" +"\n" +"public override Godot.Collections.Array " +"_GetPropertyList()\n" +"{\n" +" return new Godot.Collections.Array()\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 get] 的行为。应该返回给定的 [param property] 的值," +"或者 [param property] 应该被正常处理时返回 [code]null[/code]。\n" +"结合 [method _set] 和 [method _get_property_list],该方法允许定义自定义属性," +"这对编辑器插件特别有用。请注意,属性必须存在于 [method get_property_list] 中," +"否则该方法不会被调用。\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _get(property):\n" +" if property == \"fake_property\":\n" +" print(\"正在获取我的属性!\")\n" +" return 4\n" +"\n" +"func _get_property_list():\n" +" return [\n" +" { \"name\": \"fake_property\", \"type\": TYPE_INT }\n" +" ]\n" +"[/gdscript]\n" +"[csharp]\n" +"public override Variant _Get(StringName property)\n" +"{\n" +" if (property == \"FakeProperty\")\n" +" {\n" +" GD.Print(\"正在获取我的属性!\");\n" +" return 4;\n" +" }\n" +" return default;\n" +"}\n" +"\n" +"public override Godot.Collections.Array " +"_GetPropertyList()\n" +"{\n" +" return new Godot.Collections.Array()\n" +" {\n" +" new Godot.Collections.Dictionary()\n" +" {\n" +" { \"name\", \"FakeProperty\" },\n" +" { \"type\", (int)Variant.Type.Int }\n" +" }\n" +" };\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" + msgid "" "Override this method to customize how script properties should be handled by " "the engine.\n" @@ -69601,6 +76743,24 @@ msgstr "" "[b]注意:[/b]如果该对象的脚本不是 [annotation @GDScript.@tool],则该方法在编辑" "器中不会被调用。" +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 GodotObject[/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 GodotObject[/code])。也可以将" +"其定义为接受参数的形式。该方法类似于大多数编程语言中的构造函数。\n" +"[b]注意:[/b]如果为 [method _init] 定义了[i]必填的[/i]参数,则带脚本的 Object " +"只能直接创建。使用任何其他方式(例如 [method PackedScene.instantiate] 或 " +"[method Node.duplicate])创建时,该脚本的初始化都将失败。" + msgid "" "Called when the object receives a notification, which can be identified in " "[param what] by comparing it with a constant. See also [method " @@ -69674,6 +76834,117 @@ msgstr "" "个还原图标。\n" "[b]注意:[/b][method _property_can_revert] 也必须被覆盖,该方法才能被调用。" +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" +"var internal_data = {}\n" +"\n" +"func _set(property, value):\n" +" if property == \"fake_property\":\n" +" # Storing the value in the fake property.\n" +" internal_data[\"fake_property\"] = value\n" +" return true\n" +" return false\n" +"\n" +"func _get_property_list():\n" +" return [\n" +" { \"name\": \"fake_property\", \"type\": TYPE_INT }\n" +" ]\n" +"[/gdscript]\n" +"[csharp]\n" +"private Godot.Collections.Dictionary _internalData = new Godot.Collections." +"Dictionary();\n" +"\n" +"public override bool _Set(StringName property, Variant value)\n" +"{\n" +" if (property == \"FakeProperty\")\n" +" {\n" +" // Storing the value in the fake property.\n" +" _internalData[\"FakeProperty\"] = value;\n" +" return true;\n" +" }\n" +"\n" +" return false;\n" +"}\n" +"\n" +"public override Godot.Collections.Array " +"_GetPropertyList()\n" +"{\n" +" return new Godot.Collections.Array()\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" +"var internal_data = {}\n" +"\n" +"func _set(property, value):\n" +" if property == \"fake_property\":\n" +" # 在冒牌属性中存值。\n" +" internal_data[\"fake_property\"] = value\n" +" return true\n" +" return false\n" +"\n" +"func _get_property_list():\n" +" return [\n" +" { \"name\": \"fake_property\", \"type\": TYPE_INT }\n" +" ]\n" +"[/gdscript]\n" +"[csharp]\n" +"private Godot.Collections.Dictionary _internalData = new Godot.Collections." +"Dictionary();\n" +"\n" +"public override bool _Set(StringName property, Variant value)\n" +"{\n" +" if (property == \"FakeProperty\")\n" +" {\n" +" // 在冒牌属性中存值。\n" +" _internalData[\"FakeProperty\"] = value;\n" +" return true;\n" +" }\n" +"\n" +" return false;\n" +"}\n" +"\n" +"public override Godot.Collections.Array " +"_GetPropertyList()\n" +"{\n" +" return new Godot.Collections.Array()\n" +" {\n" +" new Godot.Collections.Dictionary()\n" +" {\n" +" { \"name\", \"FakeProperty\" },\n" +" { \"type\", (int)Variant.Type.Int }\n" +" }\n" +" };\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" + msgid "" "Override this method to customize the return value of [method to_string], and " "therefore the object's representation as a [String].\n" @@ -69697,6 +76968,112 @@ msgstr "" " var a = str(self) # a 是“欢迎来到 Godot 4!”\n" "[/codeblock]" +msgid "" +"Override this method to customize existing properties. Every property info " +"goes through this method. The dictionary contents is the same as in [method " +"_get_property_list].\n" +"[codeblocks]\n" +"[gdscript]\n" +"@tool\n" +"extends Node\n" +"\n" +"@export var is_number_editable: bool:\n" +" set(value):\n" +" is_number_editable = value\n" +" notify_property_list_changed()\n" +"@export var number: int\n" +"\n" +"func _validate_property(property: Dictionary):\n" +" if property.name == \"number\" and not is_number_editable:\n" +" property.usage |= PROPERTY_USAGE_READ_ONLY\n" +"[/gdscript]\n" +"[csharp]\n" +"[Tool]\n" +"public partial class MyNode : Node\n" +"{\n" +" private bool _isNumberEditable;\n" +"\n" +" [Export]\n" +" public bool IsNumberEditable\n" +" {\n" +" get => _isNumberEditable;\n" +" set\n" +" {\n" +" _isNumberEditable = value;\n" +" NotifyPropertyListChanged();\n" +" }\n" +" }\n" +"\n" +" [Export]\n" +" public int Number { get; set; }\n" +"\n" +" public override void _ValidateProperty(Godot.Collections.Dictionary " +"property)\n" +" {\n" +" if (property[\"name\"].AsStringName() == PropertyName.Number && " +"IsNumberEditable)\n" +" {\n" +" var usage = property[\"usage\"].As>PropertyUsageFlags<() | " +"PropertyUsageFlags.ReadOnly;\n" +" property[\"usage\"] = (int)usage;\n" +" }\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"覆盖该方法以自定义已有属性。每个属性信息都经过该方法。字典内容与 [method " +"_get_property_list] 中的相同。\n" +"[codeblocks]\n" +"[gdscript]\n" +"@tool\n" +"extends Node\n" +"\n" +"@export var is_number_editable: bool:\n" +" set(value):\n" +" is_number_editable = value\n" +" notify_property_list_changed()\n" +"@export var number: int\n" +"\n" +"func _validate_property(property: Dictionary):\n" +" if property.name == \"number\" and not is_number_editable:\n" +" property.usage |= PROPERTY_USAGE_READ_ONLY\n" +"[/gdscript]\n" +"[csharp]\n" +"[Tool]\n" +"public partial class MyNode : Node\n" +"{\n" +" private bool _isNumberEditable;\n" +"\n" +" [Export]\n" +" public bool IsNumberEditable\n" +" {\n" +" get => _isNumberEditable;\n" +" set\n" +" {\n" +" _isNumberEditable = value;\n" +" NotifyPropertyListChanged();\n" +" }\n" +" }\n" +"\n" +" [Export]\n" +" public int Number { get; set; }\n" +"\n" +" public override void _ValidateProperty(Godot.Collections.Dictionary " +"property)\n" +" {\n" +" if (property[\"name\"].AsStringName() == PropertyName.Number && " +"IsNumberEditable)\n" +" {\n" +" var usage = property[\"usage\"].As>PropertyUsageFlags<() | " +"PropertyUsageFlags.ReadOnly;\n" +" property[\"usage\"] = (int)usage;\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] " @@ -69916,6 +77293,337 @@ msgstr "" "保持已分配的状态。主要是作为内部函数使用,用于错误处理,避免用户释放不想释放的" "对象。" +msgid "" +"Connects a [param signal] by name to a [param callable]. Optional [param " +"flags] can be also added to configure the connection's behavior (see [enum " +"ConnectFlags] constants).\n" +"A signal can only be connected once to the same [Callable]. If the signal is " +"already connected, this method returns [constant ERR_INVALID_PARAMETER] and " +"pushes an error message, unless the signal is connected with [constant " +"CONNECT_REFERENCE_COUNTED]. To prevent this, use [method is_connected] first " +"to check for existing connections.\n" +"If the [param callable]'s object is freed, the connection will be lost.\n" +"[b]Examples with recommended syntax:[/b]\n" +"Connecting signals is one of the most common operations in Godot and the API " +"gives many options to do so, which are described further down. The code block " +"below shows the recommended approach.\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _ready():\n" +" var button = Button.new()\n" +" # `button_down` here is a Signal variant type, and we thus call the " +"Signal.connect() method, not Object.connect().\n" +" # See discussion below for a more in-depth overview of the API.\n" +" button.button_down.connect(_on_button_down)\n" +"\n" +" # This assumes that a `Player` class exists, which defines a `hit` " +"signal.\n" +" var player = Player.new()\n" +" # We use Signal.connect() again, and we also use the Callable.bind() " +"method,\n" +" # which returns a new Callable with the parameter binds.\n" +" player.hit.connect(_on_player_hit.bind(\"sword\", 100))\n" +"\n" +"func _on_button_down():\n" +" print(\"Button down!\")\n" +"\n" +"func _on_player_hit(weapon_type, damage):\n" +" print(\"Hit with weapon %s for %d damage.\" % [weapon_type, damage])\n" +"[/gdscript]\n" +"[csharp]\n" +"public override void _Ready()\n" +"{\n" +" var button = new Button();\n" +" // C# supports passing signals as events, so we can use this idiomatic " +"construct:\n" +" button.ButtonDown += OnButtonDown;\n" +"\n" +" // This assumes that a `Player` class exists, which defines a `Hit` " +"signal.\n" +" var player = new Player();\n" +" // We can use lambdas when we need to bind additional parameters.\n" +" player.Hit += () => OnPlayerHit(\"sword\", 100);\n" +"}\n" +"\n" +"private void OnButtonDown()\n" +"{\n" +" GD.Print(\"Button down!\");\n" +"}\n" +"\n" +"private void OnPlayerHit(string weaponType, int damage)\n" +"{\n" +" GD.Print($\"Hit with weapon {weaponType} for {damage} damage.\");\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b][code skip-lint]Object.connect()[/code] or [code skip-lint]Signal.connect()" +"[/code]?[/b]\n" +"As seen above, the recommended method to connect signals is not [method " +"Object.connect]. The code block below shows the four options for connecting " +"signals, using either this legacy method or the recommended [method Signal." +"connect], and using either an implicit [Callable] or a manually defined one.\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _ready():\n" +" var button = Button.new()\n" +" # Option 1: Object.connect() with an implicit Callable for the defined " +"function.\n" +" button.connect(\"button_down\", _on_button_down)\n" +" # Option 2: Object.connect() with a constructed Callable using a target " +"object and method name.\n" +" button.connect(\"button_down\", Callable(self, \"_on_button_down\"))\n" +" # Option 3: Signal.connect() with an implicit Callable for the defined " +"function.\n" +" button.button_down.connect(_on_button_down)\n" +" # Option 4: Signal.connect() with a constructed Callable using a target " +"object and method name.\n" +" button.button_down.connect(Callable(self, \"_on_button_down\"))\n" +"\n" +"func _on_button_down():\n" +" print(\"Button down!\")\n" +"[/gdscript]\n" +"[csharp]\n" +"public override void _Ready()\n" +"{\n" +" var button = new Button();\n" +" // Option 1: In C#, we can use signals as events and connect with this " +"idiomatic syntax:\n" +" button.ButtonDown += OnButtonDown;\n" +" // Option 2: GodotObject.Connect() with a constructed Callable from a " +"method group.\n" +" button.Connect(Button.SignalName.ButtonDown, Callable." +"From(OnButtonDown));\n" +" // Option 3: GodotObject.Connect() with a constructed Callable using a " +"target object and method name.\n" +" button.Connect(Button.SignalName.ButtonDown, new Callable(this, " +"MethodName.OnButtonDown));\n" +"}\n" +"\n" +"private void OnButtonDown()\n" +"{\n" +" GD.Print(\"Button down!\");\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"While all options have the same outcome ([code]button[/code]'s [signal " +"BaseButton.button_down] signal will be connected to [code]_on_button_down[/" +"code]), [b]option 3[/b] offers the best validation: it will print a compile-" +"time error if either the [code]button_down[/code] [Signal] or the " +"[code]_on_button_down[/code] [Callable] are not defined. On the other hand, " +"[b]option 2[/b] only relies on string names and will only be able to validate " +"either names at runtime: it will print a runtime error if " +"[code]\"button_down\"[/code] doesn't correspond to a signal, or if " +"[code]\"_on_button_down\"[/code] is not a registered method in the object " +"[code]self[/code]. The main reason for using options 1, 2, or 4 would be if " +"you actually need to use strings (e.g. to connect signals programmatically " +"based on strings read from a configuration file). Otherwise, option 3 is the " +"recommended (and fastest) method.\n" +"[b]Binding and passing parameters:[/b]\n" +"The syntax to bind parameters is through [method Callable.bind], which " +"returns a copy of the [Callable] with its parameters bound.\n" +"When calling [method emit_signal], the signal parameters can be also passed. " +"The examples below show the relationship between these signal parameters and " +"bound parameters.\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _ready():\n" +" # This assumes that a `Player` class exists, which defines a `hit` " +"signal.\n" +" var player = Player.new()\n" +" # Using Callable.bind().\n" +" player.hit.connect(_on_player_hit.bind(\"sword\", 100))\n" +"\n" +" # Parameters added when emitting the signal are passed first.\n" +" player.emit_signal(\"hit\", \"Dark lord\", 5)\n" +"\n" +"# We pass two arguments when emitting (`hit_by`, `level`),\n" +"# and bind two more arguments when connecting (`weapon_type`, `damage`).\n" +"func _on_player_hit(hit_by, level, weapon_type, damage):\n" +" print(\"Hit by %s (level %d) with weapon %s for %d damage.\" % [hit_by, " +"level, weapon_type, damage])\n" +"[/gdscript]\n" +"[csharp]\n" +"public override void _Ready()\n" +"{\n" +" // This assumes that a `Player` class exists, which defines a `Hit` " +"signal.\n" +" var player = new Player();\n" +" // Using lambda expressions that create a closure that captures the " +"additional parameters.\n" +" // The lambda only receives the parameters defined by the signal's " +"delegate.\n" +" player.Hit += (hitBy, level) => OnPlayerHit(hitBy, level, \"sword\", " +"100);\n" +"\n" +" // Parameters added when emitting the signal are passed first.\n" +" player.EmitSignal(SignalName.Hit, \"Dark lord\", 5);\n" +"}\n" +"\n" +"// We pass two arguments when emitting (`hit_by`, `level`),\n" +"// and bind two more arguments when connecting (`weapon_type`, `damage`).\n" +"private void OnPlayerHit(string hitBy, int level, string weaponType, int " +"damage)\n" +"{\n" +" GD.Print($\"Hit by {hitBy} (level {level}) with weapon {weaponType} for " +"{damage} damage.\");\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"按名称将 [param signal] 连接到 [param callable]。还可以添加可选的 [param " +"flags] 来配置该连接的行为(请参阅 [enum ConnectFlags] 常量)。\n" +"一个信号只能连接到同一个 [Callable] 一次。如果该信号已经连接,除非该信号是使" +"用 [constant CONNECT_REFERENCE_COUNTED] 连接的,否则该方法会返回 [constant " +"ERR_INVALID_PARAMETER] 并推送一条错误消息。为防止这种情况,请首先使用 [method " +"is_connected] 检查已存在的连接。\n" +"如果 [param callable] 的对象被释放,则该连接将会丢失。\n" +"[b]推荐语法的示例:[/b]\n" +"连接信号是 Godot 中最常见的操作之一,API 提供了许多这样做的选项,这些选项将在" +"下面进一步介绍。下面的代码块显示了推荐的方法。\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _ready():\n" +" var button = Button.new()\n" +" # 这里的 `button_down` 是一个 Signal 变体类型,因此我们调用 Signal." +"connect() 方法,而不是 Object.connect()。\n" +" # 请参阅下面的讨论以更深入地了解该 API。\n" +" button.button_down.connect(_on_button_down)\n" +"\n" +" # 这假设存在一个“Player”类,它定义了一个“hit”信号。\n" +" var player = Player.new()\n" +" # 我们再次使用 Signal.connect() ,并且我们还使用了 Callable.bind() 方" +"法,\n" +" # 它返回一个带有参数绑定的新 Callable。\n" +" player.hit.connect(_on_player_hit.bind(\"剑\", 100))\n" +"\n" +"func _on_button_down():\n" +" print(\"按钮按下!\")\n" +"\n" +"func _on_player_hit(weapon_type, damage):\n" +" print(\"用武器 %s 击中,造成 %d 伤害。\" % [weapon_type, damage])\n" +"[/gdscript]\n" +"[csharp]\n" +"public override void _Ready()\n" +"{\n" +" var button = new Button();\n" +" // C# 支持将信号作为事件传递,因此我们可以使用这个惯用的构造:\n" +" button.ButtonDown += OnButtonDown;\n" +"\n" +" // 这假设存在一个“Player”类,它定义了一个“Hit”信号。\n" +" var player = new Player();\n" +" // 当我们需要绑定额外的参数时,我们可以使用 Lambda 表达式。\n" +" player.Hit += () => OnPlayerHit(\"剑\", 100);\n" +"}\n" +"\n" +"private void OnButtonDown()\n" +"{\n" +" GD.Print(\"按钮按下!\");\n" +"}\n" +"\n" +"private void OnPlayerHit(string weaponType, int damage)\n" +"{\n" +" GD.Print($\"用武器 {weaponType} 击中,造成 {damage} 伤害。\");\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b][code skip-lint]Object.connect()[/code] 还是 [code skip-lint]Signal." +"connect()[/code]?[/b]\n" +"如上所示,推荐的连接信号的方法不是 [method Object.connect]。下面的代码块显示了" +"连接信号的四个选项,使用该传统方法或推荐的 [method Signal.connect],并使用一个" +"隐式的 [Callable] 或手动定义的 [Callable]。\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _ready():\n" +" var button = Button.new()\n" +" # 选项 1:Object.connect() 并使用已定义的函数的隐式 Callable。\n" +" button.connect(\"button_down\", _on_button_down)\n" +" # 选项 2:Object.connect() 并使用由目标对象和方法名称构造的 Callable。\n" +" button.connect(\"button_down\", Callable(self, \"_on_button_down\"))\n" +" # 选项 3:Signal.connect() 并使用已定义的函数的隐式 Callable。\n" +" button.button_down.connect(_on_button_down)\n" +" # 选项 4:Signal.connect() 并使用由目标对象和方法名称构造的 Callable。\n" +" button.button_down.connect(Callable(self, \"_on_button_down\"))\n" +"\n" +"func _on_button_down():\n" +" print(\"按钮按下!\")\n" +"[/gdscript]\n" +"[csharp]\n" +"public override void _Ready()\n" +"{\n" +" var button = new Button();\n" +" // 选项 1:在 C# 中,我们可以将信号用作事件并使用以下惯用语法进行连接:\n" +" button.ButtonDown += OnButtonDown;\n" +" // 选项 2:GodotObject.Connect() 并使用从方法组构造的 Callable。\n" +" button.Connect(Button.SignalName.ButtonDown, Callable." +"From(OnButtonDown));\n" +" // 选项 3:GodotObject.Connect() 并使用由目标对象和方法名称构造的 " +"Callable。\n" +" button.Connect(Button.SignalName.ButtonDown, new Callable(this, " +"MethodName.OnButtonDown));\n" +"}\n" +"\n" +"private void OnButtonDown()\n" +"{\n" +" GD.Print(\"按钮按下!\");\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"虽然所有选项都有相同的结果([code]button[/code] 的 [signal BaseButton." +"button_down] 信号将被连接到 [code]_on_button_down[/code]),但[b]选项 3[/b] 提" +"供了最好的验证:如果 [code]button_down[/code] [Signal] 或 " +"[code]_on_button_down[/code] [Callable] 没有被定义,它将打印一个编译时错误。另" +"一方面,[b]选项 2[/b] 只依赖于字符串名称,并且只能在运行时验证这两个名称:如" +"果 [code]\"button_down\"[/code] 不对应于一个信号,或者如果 " +"[code]\"_on_button_down\"[/code] 不是对象 [code]self[/code] 中的注册方法,它将" +"打印一个运行时错误。使用选项 1、2 或 4 的主要原因,是你是否确实需要使用字符串" +"(例如,根据从配置文件读取的字符串,以编程的方式连接信号)。否则,选项 3 是推" +"荐的(也是最快的)方法。\n" +"[b]绑定和传递参数:[/b]\n" +"绑定参数的语法是通过 [method Callable.bind],它返回一个绑定了参数的 " +"[Callable] 的副本。\n" +"当调用 [method emit_signal] 时,信号参数也可以被传递。下面的示例显示了这些信号" +"参数和绑定参数之间的关系。\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _ready():\n" +" # 这假设存在一个 `Player` 类,它定义了一个 `hit` 信号。\n" +" var player = Player.new()\n" +" # 使用 Callable.bind()。\n" +" player.hit.connect(_on_player_hit.bind(\"剑\", 100))\n" +"\n" +" # 发出信号时添加的参数首先被传递。\n" +" player.emit_signal(\"hit\", \"黑暗领主\", 5)\n" +"\n" +"# 我们在发出时传递两个参数(`hit_by`,`level`),\n" +"# 并在连接时再绑定两个参数(`weapon_type`、`damage`)。\n" +"func _on_player_hit(hit_by, level, weapon_type, damage):\n" +" print(\"被 %s(等级 %d)用武器 %s 击中,造成 %d 伤害。\" % [hit_by, " +"level, weapon_type, damage])\n" +"[/gdscript]\n" +"[csharp]\n" +"public override void _Ready()\n" +"{\n" +" // 这假设存在一个 `Player` 类,它定义了一个 `Hit` 信号。\n" +" var player = new Player();\n" +" // 使用 lambda 表达式创建一个闭包来捕获额外的参数。\n" +" // lambda 仅接收由信号委托定义的参数。\n" +" player.Hit += (hitBy, level) => OnPlayerHit(hitBy, level, \"剑\", 100);\n" +"\n" +" // 发出信号时添加的参数首先被传递。\n" +" player.EmitSignal(SignalName.Hit, \"黑暗领主\", 5);\n" +"}\n" +"\n" +"// 我们在发出时传递两个参数(`hit_by`,`level`),\n" +"// 并在连接时再绑定两个参数(`weapon_type`、`damage`)。\n" +"private void OnPlayerHit(string hitBy, int level, string weaponType, int " +"damage)\n" +"{\n" +" GD.Print($\"被 {hitBy}(等级 {level})用武器 {weaponType} 击中,造成 " +"{damage} 伤害。\");\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" + 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 " @@ -70098,6 +77806,25 @@ msgstr "" "返回该对象的唯一实例 ID。该 ID 可以保存在 [EncodedObjectAsID] 中,并可用于 " "[method @GlobalScope.instance_from_id],来检索该对象实例。" +msgid "" +"Returns the object's metadata value for the given entry [param name]. If the " +"entry does not exist, returns [param default]. If [param default] is " +"[code]null[/code], an error is also generated.\n" +"[b]Note:[/b] A metadata's name must be a valid identifier as per [method " +"StringName.is_valid_identifier] method.\n" +"[b]Note:[/b] Metadata that has a name starting with an underscore ([code]_[/" +"code]) is considered editor-only. Editor-only metadata is not displayed in " +"the Inspector and should not be edited, although it can still be found by " +"this method." +msgstr "" +"返回该对象的元数据中名称为 [param name] 的条目。如果不存在该条目,则返回 " +"[param default]。如果 [param default] 为 [code]null[/code],则还会生成错误。\n" +"[b]注意:[/b]元数据的名称必须是符合 [method StringName.is_valid_identifier] 的" +"有效标识符。\n" +"[b]注意:[/b]名称以下划线([code]_[/code])开头的元数据仅供编辑器使用。仅供编" +"辑器使用的元数据不会在“检查器”中显示,虽然仍然能够被这个方法找到,但是不应该进" +"行编辑。" + msgid "Returns the object's metadata entry names as a [PackedStringArray]." msgstr "将该对象的元数据作为 [PackedStringArray] 返回。" @@ -70127,12 +77854,53 @@ msgstr "" "[b]注意:[/b][code]args[/code] 和 [code]return[/code] 的字典格式与 [method " "get_property_list] 的结果相同,但不会用到所有条目。" +msgid "" +"Returns the object's property list as an [Array] of dictionaries. Each " +"[Dictionary] contains the following entries:\n" +"- [code]name[/code] is the property's name, as a [String];\n" +"- [code]class_name[/code] is an empty [StringName], unless the property is " +"[constant TYPE_OBJECT] and it inherits from a class;\n" +"- [code]type[/code] is the property's type, as an [int] (see [enum Variant." +"Type]);\n" +"- [code]hint[/code] is [i]how[/i] the property is meant to be edited (see " +"[enum PropertyHint]);\n" +"- [code]hint_string[/code] depends on the hint (see [enum PropertyHint]);\n" +"- [code]usage[/code] is a combination of [enum PropertyUsageFlags].\n" +"[b]Note:[/b] In GDScript, all class members are treated as properties. In C# " +"and GDExtension, it may be necessary to explicitly mark class members as " +"Godot properties using decorators or attributes." +msgstr "" +"以字典 [Array] 的形式返回该对象的属性列表。每个 [Dictionary] 中都包含如下条" +"目:\n" +"- [code]name[/code] 是该属性的名称,类型为 [String];\n" +"- [code]class_name[/code] 为空 [StringName],除非该属性为 [constant " +"TYPE_OBJECT] 并继承自某个类;\n" +"- [code]type[/code] 是该属性的类型,类型为 [int](见 [enum Variant.Type]);\n" +"- [code]hint[/code] 是应当[i]如何[/i]编辑该属性(见 [enum PropertyHint]);\n" +"- [code]hint_string[/code] 取决于 hint(见 [enum PropertyHint]);\n" +"- [code]usage[/code] 是 [enum PropertyUsageFlags] 的组合。\n" +"[b]注意:[/b]在 GDScript 中,类的所有成员都被视为属性。在 C# 和 GDExtension " +"中,则需要使用装饰器或特性将类的成员显式标记为 Godot 属性。" + 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 skip-lint]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 skip-lint]signal[/code] 是对 [Signal] 的引用;\n" +"- [code]callable[/code] 是对已连接 [Callable] 的引用;\n" +"- [code]flags[/code] 是 [enum ConnectFlags] 的组合。" + msgid "" "Returns the list of existing signals as an [Array] of dictionaries.\n" "[b]Note:[/b] Due of the implementation, each [Dictionary] is formatted very " @@ -70142,6 +77910,25 @@ msgstr "" "[b]注意:[/b]由于该实现,每个 [Dictionary] 被格式为与 [method " "get_method_list] 的返回值非常相似。" +msgid "" +"Returns [code]true[/code] if a metadata entry is found with the given [param " +"name]. See also [method get_meta], [method set_meta] and [method " +"remove_meta].\n" +"[b]Note:[/b] A metadata's name must be a valid identifier as per [method " +"StringName.is_valid_identifier] method.\n" +"[b]Note:[/b] Metadata that has a name starting with an underscore ([code]_[/" +"code]) is considered editor-only. Editor-only metadata is not displayed in " +"the Inspector and should not be edited, although it can still be found by " +"this method." +msgstr "" +"如果找到名称为 [param name] 的元数据条目,则返回 [code]true[/code]。另请参阅 " +"[method get_meta]、[method set_meta] 和 [method remove_meta]。\n" +"[b]注意:[/b]元数据的名称必须是符合 [method StringName.is_valid_identifier] 的" +"有效标识符。\n" +"[b]注意:[/b]名称以下划线([code]_[/code])开头的元数据仅供编辑器使用。仅供编" +"辑器使用的元数据不会在“检查器”中显示,虽然仍然能够被这个方法找到,但是不应该进" +"行编辑。" + msgid "" "Returns [code]true[/code] if the given [param method] name exists in the " "object.\n" @@ -70332,6 +78119,24 @@ msgstr "" "_property_get_revert] 来自定义默认值。如果未实现 [method " "_property_get_revert],则这个方法返回 [code]null[/code]。" +msgid "" +"Removes the given entry [param name] from the object's metadata. See also " +"[method has_meta], [method get_meta] and [method set_meta].\n" +"[b]Note:[/b] A metadata's name must be a valid identifier as per [method " +"StringName.is_valid_identifier] method.\n" +"[b]Note:[/b] Metadata that has a name starting with an underscore ([code]_[/" +"code]) is considered editor-only. Editor-only metadata is not displayed in " +"the Inspector and should not be edited, although it can still be found by " +"this method." +msgstr "" +"从对象的元数据中移除名称为 [param name] 的条目。另请参阅 [method has_meta]、" +"[method get_meta]、和 [method set_meta]。\n" +"[b]注意:[/b]元数据的名称必须是符合 [method StringName.is_valid_identifier] 的" +"有效标识符。\n" +"[b]注意:[/b]名称以下划线([code]_[/code])开头的元数据仅供编辑器使用。仅供编" +"辑器使用的元数据不会在“检查器”中显示,虽然仍然能够被这个方法找到,但是不应该进" +"行编辑。" + msgid "" "Assigns [param value] to the given [param property]. If the property does not " "exist or the given [param value]'s type doesn't match, nothing happens.\n" @@ -70489,6 +78294,30 @@ msgstr "" "如果设置为 [code]true[/code],则允许对象使用 [method tr] 和 [method tr_n] 翻译" "消息。该属性默认启用。另请参阅 [method can_translate_messages]。" +msgid "" +"Adds or changes the entry [param name] inside the object's metadata. The " +"metadata [param value] can be any [Variant], although some types cannot be " +"serialized correctly.\n" +"If [param value] is [code]null[/code], the entry is removed. This is the " +"equivalent of using [method remove_meta]. See also [method has_meta] and " +"[method get_meta].\n" +"[b]Note:[/b] A metadata's name must be a valid identifier as per [method " +"StringName.is_valid_identifier] method.\n" +"[b]Note:[/b] Metadata that has a name starting with an underscore ([code]_[/" +"code]) is considered editor-only. Editor-only metadata is not displayed in " +"the Inspector and should not be edited, although it can still be found by " +"this method." +msgstr "" +"添加或更改对象元数据中名称为 [param name] 的条目。元数据值 [param value] 可以" +"是任何 [Variant],尽管某些类型无法正确序列化。\n" +"如果 [param value] 为 [code]null[/code],则该条目被移除。等价于使用 [method " +"remove_meta]。另见 [method has_meta] 和 [method get_meta]。\n" +"[b]注意:[/b]元数据的名称必须是符合 [method StringName.is_valid_identifier] 的" +"有效标识符。\n" +"[b]注意:[/b]名称以下划线([code]_[/code])开头的元数据仅供编辑器使用。仅供编" +"辑器使用的元数据不会在“检查器”中显示,虽然仍然能够被这个方法找到,但是不应该进" +"行编辑。" + msgid "" "Attaches [param script] to the object, and instantiates it. As a result, the " "script's [method _init] is called. A [Script] is used to extend the object's " @@ -71067,6 +78896,19 @@ msgstr "该动作集的优先级。" msgid "Makes the OpenXR API available for GDExtension." msgstr "为 GDExtension 提供 OpenXR API。" +msgid "" +"[OpenXRAPIExtension] makes OpenXR available for GDExtension. It provides the " +"OpenXR API to GDExtension through the [method get_instance_proc_addr] method, " +"and the OpenXR instance through [method get_instance].\n" +"It also provides methods for querying the status of OpenXR initialization, " +"and helper methods for ease of use of the API with GDExtension." +msgstr "" +"[OpenXRAPIExtension] 使 OpenXR 可用于 GDExtension。它通过 [method " +"get_instance_proc_addr] 方法向 GDExtension 提供 OpenXR API,并通过 [method " +"get_instance] 提供 OpenXR 实例。\n" +"它还提供了用于查询 OpenXR 初始化状态的方法,以及便于通过 GDExtension 使用 API " +"的辅助方法。" + msgid "XrResult documentation" msgstr "XrResult 文档" @@ -71088,6 +78930,12 @@ msgstr "xrBeginSession 文档" msgid "XrPosef documentation" msgstr "XrPosef 文档" +msgid "" +"Returns [code]true[/code] if OpenXR is initialized for rendering with an XR " +"viewport." +msgstr "" +"如果 OpenXR 已为使用 XR 视口进行渲染而初始化,则返回 [code]true[/code]。" + msgid "" "Returns an error string for the given [url=https://registry.khronos.org/" "OpenXR/specs/1.0/man/html/XrResult.html]XrResult[/url]." @@ -71103,9 +78951,58 @@ msgstr "" "返回 OpenXR API 初始化过程中创建的 [url=https://registry.khronos.org/OpenXR/" "specs/1.0/man/html/XrInstance.html]XrInstance[/url]。" +msgid "" +"Returns the function pointer of the OpenXR function with the specified name, " +"cast to an integer. If the function with the given name does not exist, the " +"method returns [code]0[/code].\n" +"[b]Note:[/b] [code]openxr/util.h[/code] contains utility macros for acquiring " +"OpenXR functions, e.g. [code]GDEXTENSION_INIT_XR_FUNC_V(xrCreateAction)[/" +"code]." +msgstr "" +"返回具有指定名称的 OpenXR 函数的函数指针,转换为整数。如果给定名称的函数不存" +"在,该方法返回 [code]0[/code]。\n" +"[b]注意:[/b][code]openxr/util.h[/code] 包含用于获取 OpenXR 函数的实用宏,例" +"如, [code]GDEXTENSION_INIT_XR_FUNC_V(xrCreateAction)[/code]。" + +msgid "Returns the timing for the next frame." +msgstr "返回下一帧的时间。" + +msgid "" +"Returns the play space, which is an [url=https://registry.khronos.org/OpenXR/" +"specs/1.0/man/html/XrSpace.html]XrSpace[/url] cast to an integer." +msgstr "" +"返回播放空间,它是一个被转换为整数的 [url=https://registry.khronos.org/OpenXR/" +"specs/1.0/man/html/XrSpace.html]XrSpace[/url]。" + +msgid "" +"Returns the OpenXR session, which is an [url=https://registry.khronos.org/" +"OpenXR/specs/1.0/man/html/XrSession.html]XrSession[/url] cast to an integer." +msgstr "" +"返回该 OpenXR 会话,它是一个被转换为整数的 [url=https://registry.khronos.org/" +"OpenXR/specs/1.0/man/html/XrSession.html]XrSession[/url]。" + +msgid "Returns the name of the specified swapchain format." +msgstr "返回指定交换链格式的名称。" + +msgid "" +"Returns the id of the system, which is a [url=https://registry.khronos.org/" +"OpenXR/specs/1.0/man/html/XrSystemId.html]XrSystemId[/url] cast to an integer." +msgstr "" +"返回系统的 id,它是一个被转换为整数的 [url=https://registry.khronos.org/" +"OpenXR/specs/1.0/man/html/XrSystemId.html]XrSystemId[/url]。" + msgid "Returns [code]true[/code] if OpenXR is initialized." msgstr "如果 OpenXR 已初始化,则返回 [code]true[/code]。" +msgid "" +"Returns [code]true[/code] if OpenXR is running ([url=https://registry.khronos." +"org/OpenXR/specs/1.0/man/html/xrBeginSession.html]xrBeginSession[/url] was " +"successfully called and the swapchains were created)." +msgstr "" +"如果 OpenXR 正在运行,则返回 [code]true[/code]([url=https://registry.khronos." +"org/OpenXR/specs/1.0/man/html/xrBeginSession.html]xrBeginSession[/url] 已被成" +"功调用并且交换链已被创建)。" + msgid "Returns [code]true[/code] if OpenXR is enabled." msgstr "如果启用 OpenXR,则返回 [code]true[/code]。" @@ -71116,6 +79013,152 @@ msgstr "" "从 [url=https://registry.khronos.org/OpenXR/specs/1.0/man/html/XrPosef." "html]XrPosef[/url] 创建一个 [Transform3D] 。" +msgid "" +"Returns [code]true[/code] if the provided [url=https://registry.khronos.org/" +"OpenXR/specs/1.0/man/html/XrResult.html]XrResult[/url] (cast to an integer) " +"is successful. Otherwise returns [code]false[/code] and prints the " +"[url=https://registry.khronos.org/OpenXR/specs/1.0/man/html/XrResult." +"html]XrResult[/url] converted to a string, with the specified additional " +"information." +msgstr "" +"如果提供的 [url=https://registry.khronos.org/OpenXR/specs/1.0/man/html/" +"XrResult.html]XrResult[/url](转换为整数)是成功的,则返回 [code]true[/code]。" +"否则返回 [code]false[/code] 并打印被转换为字符串的 [url=https://registry." +"khronos.org/OpenXR/specs/1.0/man/html/XrResult.html]XrResult[/url] ,以及指定" +"的附加信息。" + +msgid "Allows clients to implement OpenXR extensions with GDExtension." +msgstr "允许客户端使用 GDExtension 实现 OpenXR 扩展。" + +msgid "" +"[OpenXRExtensionWrapperExtension] allows clients to implement OpenXR " +"extensions with GDExtension. The extension should be registered with [method " +"register_extension_wrapper]." +msgstr "" +"[OpenXRExtensionWrapperExtension] 允许客户端使用 GDExtension 实现 OpenXR 扩" +"展。扩展应该使用 [method register_extension_wrapper] 注册。" + +msgid "" +"Returns a [Dictionary] of OpenXR extensions related to this extension. The " +"[Dictionary] should contain the name of the extension, mapped to a [code]bool " +"*[/code] cast to an integer:\n" +"- If the [code]bool *[/code] is a [code]nullptr[/code] this extension is " +"mandatory.\n" +"- If the [code]bool *[/code] points to a boolean, the boolean will be updated " +"to [code]true[/code] if the extension is enabled." +msgstr "" +"返回与该扩展相关的 OpenXR 扩展的 [Dictionary]。该 [Dictionary] 应包含扩展名," +"映射到 [code]bool *[/code] 转换为整数:\n" +"- 如果 [code]bool *[/code] 是 [code]nullptr[/code],则该扩展是强制性的。\n" +"- 如果 [code]bool *[/code] 指向布尔值,则在启用扩展的情况下,该布尔值将更新为 " +"[code]true[/code]。" + +msgid "Called before the OpenXR instance is created." +msgstr "在创建 OpenXR 实例之前调用。" + +msgid "" +"Called when there is an OpenXR event to process. When implementing, return " +"[code]true[/code] if the event was handled, return [code]false[/code] " +"otherwise." +msgstr "" +"当有 OpenXR 事件需要处理时调用。实现时,如果事件已被处理,则返回 [code]true[/" +"code],否则返回 [code]false[/code]。" + +msgid "Called right after the OpenXR instance is created." +msgstr "在创建 OpenXR 实例后立即调用。" + +msgid "Called right before the OpenXR instance is destroyed." +msgstr "在 OpenXR 实例被销毁之前调用。" + +msgid "Called right before the XR viewports begin their rendering step." +msgstr "在 XR 视口开始其渲染步进之前调用。" + +msgid "" +"Called as part of the OpenXR process handling. This happens right before " +"general and physics processing steps of the main loop. During this step " +"controller data is queried and made available to game logic." +msgstr "" +"作为 OpenXR 进程处理的一部分调用。这发生在主循环的一般和物理处理步进之前。在该" +"步进中,控制器数据被查询并可供游戏逻辑使用。" + +msgid "" +"Allows extensions to register additional controller metadata. This function " +"is called even when the OpenXR API is not constructed as the metadata needs " +"to be available to the editor.\n" +"Extensions should also provide metadata regardless of whether they are " +"supported on the host system. The controller data is used to setup action " +"maps for users who may have access to the relevant hardware." +msgstr "" +"允许扩展注册额外的控制器元数据。即使 OpenXR API 未被构造,也会调用该函数,因为" +"元数据需要可供编辑器使用。\n" +"扩展还应该提供元数据,无论主机系统是否支持它们。控制器数据用于为可以访问相关硬" +"件的用户设置动作映射。" + +msgid "Called right after the OpenXR session is created." +msgstr "在创建 OpenXR 会话后立即调用。" + +msgid "Called right before the OpenXR session is destroyed." +msgstr "在 OpenXR 会话被销毁之前调用。" + +msgid "Called when the OpenXR session state is changed to exiting." +msgstr "当 OpenXR 会话状态被更改为退出时调用。" + +msgid "" +"Called when the OpenXR session state is changed to focused. This state is the " +"active state when the game runs." +msgstr "当 OpenXR 会话状态被更改为聚焦时调用。该状态是游戏运行时的活动状态。" + +msgid "Called when the OpenXR session state is changed to idle." +msgstr "当 OpenXR 会话状态被更改为空闲时调用。" + +msgid "Called when the OpenXR session state is changed to loss pending." +msgstr "当 OpenXR 会话状态被更改为丢失挂起时调用。" + +msgid "" +"Called when the OpenXR session state is changed to ready. This means OpenXR " +"is ready to set up the session." +msgstr "" +"当 OpenXR 会话状态被更改为就绪时调用。这意味着 OpenXR 已准备好建立会话。" + +msgid "Called when the OpenXR session state is changed to stopping." +msgstr "当 OpenXR 会话状态被更改为停止时调用。" + +msgid "" +"Called when the OpenXR session state is changed to synchronized. OpenXR also " +"returns to this state when the application loses focus." +msgstr "" +"当 OpenXR 会话状态被更改为同步时调用。当应用程序失去焦点时,OpenXR 也会返回到" +"该状态。" + +msgid "" +"Called when the OpenXR session state is changed to visible. This means OpenXR " +"is now ready to receive frames." +msgstr "" +"当 OpenXR 会话状态被更改为可见时调用。这意味着 OpenXR 现在已准备好接收帧。" + +msgid "Adds additional data structures when the OpenXR instance is created." +msgstr "创建 OpenXR 实例时添加额外的数据结构。" + +msgid "Adds additional data structures when the OpenXR session is created." +msgstr "创建 OpenXR 会话时添加额外的数据结构。" + +msgid "Adds additional data structures when creating OpenXR swapchains." +msgstr "创建 OpenXR 交换链时添加额外的数据结构。" + +msgid "" +"Adds additional data structures when interogating OpenXR system abilities." +msgstr "在询问 OpenXR 系统功能时添加额外的数据结构。" + +msgid "" +"Returns the created [OpenXRAPIExtension], which can be used to access the " +"OpenXR API." +msgstr "返回创建的 [OpenXRAPIExtension],可用于访问 OpenXR API。" + +msgid "" +"Registers the extension. This should happen at core module initialization " +"level." +msgstr "注册扩展程序。这应该发生在核心模块初始化级别。" + msgid "Node supporting finger tracking in OpenXR." msgstr "在 OpenXR 中提供手指跟踪的节点。" @@ -71162,6 +79205,20 @@ msgstr "最大支持的运动范围。" msgid "Suggested bindings object for OpenXR." msgstr "用于 OpenXR 的建议绑定对象。" +msgid "" +"This object stores suggested bindings for an interaction profile. Interaction " +"profiles define the metadata for a tracked XR device such as an XR " +"controller.\n" +"For more information see the [url=https://www.khronos.org/registry/OpenXR/" +"specs/1.0/html/xrspec.html#semantic-path-interaction-profiles]interaction " +"profiles info in the OpenXR specification[/url]." +msgstr "" +"此对象存储用于一个交互配置的建议绑定。交互配置定义了一个被跟踪的 XR 设备(例如" +"一个 XR 控制器)的元数据。\n" +"有关更多信息,请参阅[url=https://www.khronos.org/registry/OpenXR/specs/1.0/" +"html/xrspec.html#semantic-path-interaction-profiles]《OpenXR 规范中的交互配置" +"信息》[/url]。" + msgid "Retrieve the binding at this index." msgstr "检索在该索引处的绑定。" @@ -71174,6 +79231,87 @@ msgstr "用于该交互配置的动作绑定。" msgid "The interaction profile path identifying the XR device." msgstr "标识该 XR 设备的交互配置路径。" +msgid "Meta class registering supported devices in OpenXR." +msgstr "在 OpenXR 中注册受支持设备的元类。" + +msgid "" +"This class allows OpenXR core and extensions to register metadata relating to " +"supported interaction devices such as controllers, trackers, haptic devices, " +"etc. It is primarily used by the action map editor and to sanitize any action " +"map by removing extension-dependent entries when applicable." +msgstr "" +"该类允许 OpenXR 核心和扩展注册与受支持的交互设备(例如控制器、跟踪器、触觉设备" +"等)相关的元数据。它主要由动作映射编辑器使用,并在适用时通过移除依赖于扩展的条" +"目来清理任何动作映射。" + +msgid "" +"Registers an interaction profile using its OpenXR designation (e.g. [code]/" +"interaction_profiles/khr/simple_controller[/code] is the profile for OpenXR's " +"simple controller profile).\n" +"[param display_name] is the description shown to the user. [param " +"openxr_path] is the interaction profile path being registered. [param " +"openxr_extension_name] optionally restricts this profile to the given " +"extension being enabled/available. If the extension is not available, the " +"profile and all related entries used in an action map are filtered out." +msgstr "" +"使用 OpenXR 名称注册交互配置文件(例如 [code]/interaction_profiles/khr/" +"simple_controller[/code] 是 OpenXR 简单控制器配置文件的配置文件)。\n" +"[param display_name] 是向用户显示的描述。[param openxr_path] 是正被注册的交互" +"配置文件路径。[param openxr_extension_name] 可以选择将该配置文件限制为对给定扩" +"展启用/可用。如果该扩展不可用,则动作映射中使用的配置文件和所有相关条目都会被" +"过滤掉。" + +msgid "" +"Registers an input/output path for the given [param interaction_profile]. The " +"profile should previously have been registered using [method " +"register_interaction_profile]. [param display_name] is the description shown " +"to the user. [param toplevel_path] specifies the bind path this input/output " +"can be bound to (e.g. [code]/user/hand/left[/code] or [code]/user/hand/right[/" +"code]). [param openxr_path] is the action input/output being registered (e.g. " +"[code]/user/hand/left/input/aim/pose[/code]). [param openxr_extension_name] " +"restricts this input/output to an enabled/available extension, this doesn't " +"need to repeat the extension on the profile but relates to overlapping " +"extension (e.g. [code]XR_EXT_palm_pose[/code] that introduces [code]…/input/" +"palm_ext/pose[/code] input paths). [param action_type] defines the type of " +"input or output provided by OpenXR." +msgstr "" +"为给定的 [param interaction_profile] 注册输入/输出路径。该配置文件之前应已使" +"用 [method register_interaction_profile] 注册。[param display_name] 是向用户显" +"示的描述。[param toplevel_path] 指定该输入/输出可以被绑定到的绑定路径(例如 " +"[code]/user/hand/left[/code] 或 [code]/user/hand/right[/code])。[param " +"openxr_path] 是正被注册的动作输入/输出(例如 [code]/user/hand/left/input/aim/" +"pose[/code])。[param openxr_extension_name] 将该输入/输出限制为启用的/可用的" +"扩展,这不需要在配置文件上重复该扩展,但与重叠扩展相关(例如引入 [code]…/" +"input/palm_ext/pose[/code] 输入路径的 [code]XR_EXT_palm_pose[/code])。[param " +"action_type] 定义 OpenXR 提供的输入或输出的类型。" + +msgid "" +"Allows for renaming old interaction profile paths to new paths to maintain " +"backwards compatibility with older action maps." +msgstr "" +"允许将旧的交互配置文件路径重命名为新路径,以保持与旧动作映射的向后兼容性。" + +msgid "" +"Registers a top level path to which profiles can be bound. For instance " +"[code]/user/hand/left[/code] refers to the bind point for the player's left " +"hand. Extensions can register additional top level paths, for instance a " +"haptic vest extension might register [code]/user/body/vest[/code].\n" +"[param display_name] is the name shown to the user. [param openxr_path] is " +"the top level path being registered. [param openxr_extension_name] is " +"optional and ensures the top level path is only used if the specified " +"extension is available/enabled.\n" +"When a top level path ends up being bound by OpenXR, a [XRPositionalTracker] " +"is instantiated to manage the state of the device." +msgstr "" +"注册配置文件可以被绑定到的顶级路径。例如 [code]/user/hand/left[/code] 指的是玩" +"家左手的绑定点。扩展可以注册额外的顶级路径,例如触觉背心扩展可以注册 [code]/" +"user/body/vest[/code]。\n" +"[param display_name] 是向用户显示的名称。[param openxr_path] 是正被注册的顶级" +"路径。[param openxr_extension_name] 是可选的,可确保仅在指定的扩展可用/启用时" +"才使用顶级路径。\n" +"当顶级路径最终被 OpenXR 绑定时,[XRPositionalTracker] 被实例化以管理该设备的状" +"态。" + msgid "Our OpenXR interface." msgstr "OpenXR 接口。" @@ -71210,12 +79348,99 @@ msgstr "" "返回当前 HMD 支持的显示刷新率。仅当 OpenXR 运行时支持该功能并且接口已被初始化" "后才会返回。" +msgid "" +"If handtracking is enabled, returns the angular velocity of a joint ([param " +"joint]) of a hand ([param hand]) as provided by OpenXR. This is relative to " +"[XROrigin3D]!" +msgstr "" +"如果启用了手部跟踪,则返回 OpenXR 提供的手([param hand])的关节([param " +"joint])的角速度。这是相对于 [XROrigin3D] 而言的!" + +msgid "" +"If handtracking is enabled, returns flags that inform us of the validity of " +"the tracking data." +msgstr "如果启用了手动跟踪,则返回通知我们跟踪数据有效性的标志。" + +msgid "" +"If handtracking is enabled, returns the linear velocity of a joint ([param " +"joint]) of a hand ([param hand]) as provided by OpenXR. This is relative to " +"[XROrigin3D] without worldscale applied!" +msgstr "" +"如果启用了手部跟踪,则返回 OpenXR 提供的手([param hand])的关节([param " +"joint])的线速度。这是相对于没有应用世界尺度的 [XROrigin3D] 而言的!" + +msgid "" +"If handtracking is enabled, returns the position of a joint ([param joint]) " +"of a hand ([param hand]) as provided by OpenXR. This is relative to " +"[XROrigin3D] without worldscale applied!" +msgstr "" +"如果启用了手部跟踪,则返回 OpenXR 提供的手([param hand])的关节([param " +"joint])的位置。这是相对于没有应用世界尺度的 [XROrigin3D] 而言的!" + +msgid "" +"If handtracking is enabled, returns the radius of a joint ([param joint]) of " +"a hand ([param hand]) as provided by OpenXR. This is without worldscale " +"applied!" +msgstr "" +"如果启用了手部跟踪,则返回 OpenXR 提供的手([param hand])的关节([param " +"joint])的半径。这是没有应用世界尺度的情况!" + +msgid "" +"If handtracking is enabled, returns the rotation of a joint ([param joint]) " +"of a hand ([param hand]) as provided by OpenXR." +msgstr "" +"如果启用了手部跟踪,则返回 OpenXR 提供的手([param hand])的关节([param " +"joint])的旋转。" + +msgid "" +"If handtracking is enabled and motion range is supported, gets the currently " +"configured motion range for [param hand]." +msgstr "" +"如果启用了手部跟踪并且支持运动范围,则获取 [param hand] 当前配置的运动范围。" + msgid "Returns [code]true[/code] if the given action set is active." msgstr "如果给定的动作集处于活动状态,则返回 [code]true[/code]。" +msgid "" +"Returns the capabilities of the eye gaze interaction extension.\n" +"[b]Note:[/b] This only returns a valid value after OpenXR has been " +"initialized." +msgstr "" +"返回眼睛注视交互扩展的功能。\n" +"[b]注意:[/b]这仅在 OpenXR 被初始化后返回一个有效值。" + +msgid "" +"Returns [code]true[/code] if OpenXR's foveation extension is supported, the " +"interface must be initialized before this returns a valid value.\n" +"[b]Note:[/b] This feature is only available on the compatibility renderer and " +"currently only available on some stand alone headsets. For Vulkan set [member " +"Viewport.vrs_mode] to [code]VRS_XR[/code] on desktop." +msgstr "" +"如果支持 OpenXR 的注视点扩展,则返回 [code]true[/code],在返回有效值之前必须初" +"始化该接口。\n" +"[b]注意:[/b]该功能仅在兼容性渲染器上可用,并且目前仅在某些独立头戴设备上可" +"用。对于 Vulkan,在桌面上将 [member Viewport.vrs_mode] 设置为 [code]VRS_XR[/" +"code]。" + +msgid "" +"Returns [code]true[/code] if OpenXR's hand tracking is supported and " +"enabled.\n" +"[b]Note:[/b] This only returns a valid value after OpenXR has been " +"initialized." +msgstr "" +"如果支持且已启用 OpenXR 的手部跟踪,则返回 [code]true[/code]。\n" +"[b]注意:[/b]这仅在 OpenXR 已被初始化后返回一个有效值。" + msgid "Sets the given action set as active or inactive." msgstr "将给定的动作集设置为活动或非活动。" +msgid "" +"If handtracking is enabled and motion range is supported, sets the currently " +"configured motion range for [param hand] to [param motion_range]." +msgstr "" +"如果启用了手部跟踪并且支持运动范围,请将 [param hand] 当前配置的运动范围设置" +"为 [param motion_range]。" + msgid "" "The display refresh rate for the current HMD. Only functional if this feature " "is supported by the OpenXR runtime and after the interface has been " @@ -71224,6 +79449,21 @@ msgstr "" "当前 HMD 的显示刷新率。仅当 OpenXR 运行时支持该功能并且接口已被初始化后才会有" "效。" +msgid "" +"Enable dynamic foveation adjustment, the interface must be initialized before " +"this is accessible. If enabled foveation will automatically adjusted between " +"low and [member foveation_level]." +msgstr "" +"启用动态注视点调整,必须先初始化接口才能访问该功能。如果启用,注视点将在低和 " +"[member foveation_level] 之间自动调整。" + +msgid "" +"Set foveation level from 0 (off) to 3 (high), the interface must be " +"initialized before this is accessible." +msgstr "" +"将注视点级别设置为从 0(关闭)到 3(高),必须先初始化接口,然后才能访问该接" +"口。" + msgid "" "The render size multiplier for the current HMD. Must be set before the " "interface has been initialized." @@ -71251,6 +79491,9 @@ msgstr "左手。" msgid "Right hand." msgstr "右手。" +msgid "Maximum value for the hand enum." +msgstr "手部枚举的最大值。" + msgid "Palm joint." msgstr "掌关节。" @@ -71329,6 +79572,42 @@ msgstr "小指远端关节。" msgid "Little tip joint." msgstr "小指尖端关节。" +msgid "Maximum value for the hand joint enum." +msgstr "手关节枚举的最大值。" + +msgid "No flags are set." +msgstr "没有标志被设置。" + +msgid "" +"If set, the orientation data is valid, otherwise, the orientation data is " +"unreliable and should not be used." +msgstr "如果设置,则方向数据有效;否则,方向数据不可靠,且不应被使用。" + +msgid "" +"If set, the orientation data comes from tracking data, otherwise, the " +"orientation data contains predicted data." +msgstr "如果设置,则方向数据来自跟踪数据;否则,该方向数据包含预测数据。" + +msgid "" +"If set, the positional data is valid, otherwise, the positional data is " +"unreliable and should not be used." +msgstr "如果设置,则位置数据有效;否则,该位置数据不可靠,且不应被使用。" + +msgid "" +"If set, the positional data comes from tracking data, otherwise, the " +"positional data contains predicted data." +msgstr "如果设置,则位置数据来自跟踪数据;否则,该位置数据包含预测数据。" + +msgid "" +"If set, our linear velocity data is valid, otherwise, the linear velocity " +"data is unreliable and should not be used." +msgstr "如果设置,则线速度数据有效;否则,线速度数据不可靠,且不应被使用。" + +msgid "" +"If set, our angular velocity data is valid, otherwise, the angular velocity " +"data is unreliable and should not be used." +msgstr "如果设置,则角速度数据是有效的;否则,角速度数据不可靠,且不应被使用。" + msgid "Defines a binding between an [OpenXRAction] and an XR input or output." msgstr "定义 [OpenXRAction] 和 XR 输入或输出之间的绑定。" @@ -71379,6 +79658,28 @@ msgstr "从给定的 [Translation] 资源生成并设置优化的翻译。" msgid "A button that brings up a dropdown with selectable options when pressed." msgstr "按下时弹出下拉菜单的按钮。" +msgid "" +"[OptionButton] is a type of button that brings up a dropdown with selectable " +"items when pressed. The item selected becomes the \"current\" item and is " +"displayed as the button text.\n" +"See also [BaseButton] which contains common properties and methods associated " +"with this node.\n" +"[b]Note:[/b] The ID values used for items are limited to 32 bits, not full 64 " +"bits of [int]. This has a range of [code]-2^32[/code] to [code]2^32 - 1[/" +"code], i.e. [code]-2147483648[/code] to [code]2147483647[/code].\n" +"[b]Note:[/b] The [member Button.text] and [member Button.icon] properties are " +"set automatically based on the selected item. They shouldn't be changed " +"manually." +msgstr "" +"[OptionButton] 是一种按下时弹出下拉菜单的按钮。选中的菜单项会成为“当前”菜单" +"项,作为按钮文本显示。\n" +"另见 [BaseButton],其中包含与此节点相关联的通用属性和方法。\n" +"[b]注意:[/b]菜单项的 ID 值有 32 位的限制,并不是完整的 64 位 [int]。取值范围" +"为 [code]-2^32[/code] 到 [code]2^32 - 1[/code],即 [code]-2147483648[/code] " +"到 [code]2147483647[/code]。\n" +"[b]注意:[/b][member Button.text] 和 [member Button.icon] 属性会根据当前所选菜" +"单项自动设置。不应该手动更改。" + msgid "" "Adds an item, with a [param texture] icon, text [param label] and " "(optionally) [param id]. If no [param id] is passed, the item index will be " @@ -71559,6 +79860,11 @@ msgstr "如果不为 [code]0[/code],箭头图标会与字体颜色进行调制 msgid "The arrow icon to be drawn on the right end of the button." msgstr "要绘制在按钮右侧的箭头图标。" +msgid "" +"A PBR (Physically Based Rendering) material to be used on 3D objects. Uses an " +"ORM texture." +msgstr "用于 3D 对象的 PBR(基于物理的渲染)材质。使用一个 ORM 纹理。" + msgid "" "ORMMaterial3D's properties are inherited from [BaseMaterial3D]. Unlike " "[StandardMaterial3D], ORMMaterial3D uses a single texture for ambient " @@ -72057,6 +80363,17 @@ msgstr "" "[b]注意:[/b]在 macOS 上,请始终使用 [method create_instance],不要依赖可执行" "文件的路径。" +msgid "" +"On Android devices: With this function, you can get the list of dangerous " +"permissions that have been granted.\n" +"On macOS (sandboxed applications only): This function returns the list of " +"user selected folders accessible to the application. Use native file dialog " +"to request folder access permission." +msgstr "" +"在 Android 设备上:通过该功能,你可以获取已被授予的危险权限列表。\n" +"在 macOS 上(仅限沙盒应用程序):该函数返回应用程序可访问的用户选择的文件夹列" +"表。使用原生文件对话框请求文件夹访问权限。" + msgid "" "Returns the given keycode as a string (e.g. Return values: [code]\"Escape\"[/" "code], [code]\"Shift+Escape\"[/code]).\n" @@ -72068,6 +80385,36 @@ msgstr "" "另见 [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 " +"[method get_locale_language].\n" +"[code]language[/code] - 2 or 3-letter [url=https://en.wikipedia.org/wiki/" +"List_of_ISO_639-1_codes]language code[/url], in lower case.\n" +"[code skip-lint]Script[/code] - optional, 4-letter [url=https://en.wikipedia." +"org/wiki/ISO_15924]script code[/url], in title case.\n" +"[code]COUNTRY[/code] - optional, 2 or 3-letter [url=https://en.wikipedia.org/" +"wiki/ISO_3166-1]country code[/url], in upper case.\n" +"[code]VARIANT[/code] - optional, language variant, region and sort order. " +"Variant can have any number of underscored keywords.\n" +"[code]extra[/code] - optional, semicolon separated list of additional key " +"words. Currency, calendar, sort order and numbering system information." +msgstr "" +"将主机操作系统区域设置为 [code]language_Script_COUNTRY_VARIANT@extra[/code] 形" +"式的字符串。如果你只想要语言代码而不是操作系统中完全指定的语言环境,可以使用 " +"[method get_locale_language]。\n" +"[code]language[/code] - 2 个或 3 个字母的[url=https://en.wikipedia.org/wiki/" +"List_of_ISO_639-1_codes]语言代码[/url],小写。\n" +"[code skip-lint]Script[/code] - 可选,4 个字母的[url=https://en.wikipedia.org/" +"wiki/ISO_15924]文字代码[/url],首字母大写。\n" +"[code]COUNTRY[/code] - 可选,2 个或 3 个字母的[url=https://en.wikipedia.org/" +"wiki/ISO_3166-1]国家地区代码[/url],大写。\n" +"[code]VARIANT[/code] - 可选,语言变体,地区和排序顺序。变体可以有任意数量的带" +"下划线的关键字。\n" +"[code]extra[/code] - 可选,分号分隔的附加关键字列表。货币、日历、排序顺序和编" +"号系统信息。" + msgid "" "Returns the host OS locale's 2 or 3-letter [url=https://en.wikipedia.org/wiki/" "List_of_ISO_639-1_codes]language code[/url] as a string which should be " @@ -72132,6 +80479,120 @@ msgstr "" "[b]注意:[/b]此方法仅在Android和iOS上实现。在不支持的平台上返回 " "[code]\"GenericDevice\"[/code]。" +msgid "" +"Returns the name of the host OS.\n" +"On Windows, this is [code]\"Windows\"[/code].\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\":\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" +" 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]。\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\":\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" +" 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 " @@ -72148,6 +80609,17 @@ 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 and Web, [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 上,[method get_processor_name] 返回空字符串。" + msgid "" "Returns the list of command line arguments that will be used when the project " "automatically restarts using [method set_restart_on_exit]. See also [method " @@ -72237,6 +80709,24 @@ msgstr "" "返回当前线程的 ID。这可用于日志,以简化多线程应用程序的调试。\n" "[b]注意:[/b]线程 ID 不是确定的,也许会在应用程序重新启动时被重复使用。" +msgid "" +"Returns a string that is unique to the device.\n" +"[b]Note:[/b] This string may change without notice if the user reinstalls/" +"upgrades their operating system or changes their hardware. This means it " +"should generally not be used to encrypt persistent data as the data saved " +"before an unexpected ID change would become inaccessible. The returned string " +"may also be falsified using external programs, so do not rely on the string " +"returned by [method get_unique_id] for security purposes.\n" +"[b]Note:[/b] Returns an empty string and prints an error on Web, as this " +"method cannot be implemented on this platform." +msgstr "" +"返回特定于该设备的一个字符串。\n" +"[b]注意:[/b]如果用户重新安装/升级他们的操作系统或更改他们的硬件,该字符串可能" +"会更改,恕不另行通知。这意味着它通常不应用于加密持久数据,因为在意外的 ID 更改" +"会使之前保存的数据将变得不可访问。返回的字符串也可能会被外部程序伪造,因此出于" +"安全目的,不要依赖 [method get_unique_id] 返回的字符串。\n" +"[b]注意:[/b]在 Web 上返回一个空字符串,因为该方法尚未在该平台上实现。" + msgid "" "Returns the absolute directory path where user data is written ([code]user://" "[/code]).\n" @@ -72277,6 +80767,34 @@ msgstr "" "请勿与 [method get_data_dir] 混淆,后者返回的是[i]全局[/i](非项目特定的)用户" "主目录。" +msgid "" +"Returns the exact production and build version of the operating system. This " +"is different from the branded version used in marketing. This helps to " +"distinguish between different releases of operating systems, including minor " +"versions, and insider and custom builds.\n" +"For Windows, the major and minor version are returned, as well as the build " +"number. For example, the returned string can look like [code]10.0.9926[/code] " +"for a build of Windows 10, and it can look like [code]6.1.7601[/code] for a " +"build of Windows 7 SP1.\n" +"For rolling distributions, such as Arch Linux, an empty string is returned.\n" +"For macOS and iOS, the major and minor version are returned, as well as the " +"patch number.\n" +"For Android, the SDK version and the incremental build number are returned. " +"If it's a custom ROM, it attempts to return its version instead.\n" +"[b]Note:[/b] This method is not supported on the web platform. It returns an " +"empty string." +msgstr "" +"返回操作系统的确切生产和构建版本。这与营销中使用的品牌版本不同。这有助于区分操" +"作系统的不同版本,包括次要版本、内部版本和自定义版本。\n" +"对于 Windows,返回主要和次要版本,以及构建号。例如,对于 Windows 10 版本,返回" +"的字符串可能看起来像 [code]10.0.9926[/code],对于 Windows 7 SP1 版本,它可能看" +"起来像 [code]6.1.7601[/code]。\n" +"对于滚动发行版,例如 Arch Linux,会返回一个空字符串。\n" +"对于 macOS 和 iOS,会返回主要和次要版本,以及补丁号。\n" +"对于 Android,会返回 SDK 版本和增量构建号。如果是自定义的 ROM,将会尝试返回其" +"版本。\n" +"[b]注意:[/b]该方法在 web 平台上不被支持。它将返回一个空字符串。" + msgid "" "Returns the video adapter driver name and version for the user's currently " "active graphics card. See also [method RenderingServer." @@ -72310,6 +80828,31 @@ msgstr "" "[b]注意:[/b]请仔细检查 [param variable] 的大小写。环境变量名称在除 Windows 之" "外的所有平台上都区分大小写。" +msgid "" +"Returns [code]true[/code] if the feature for the given feature tag is " +"supported in the currently running instance, depending on the platform, " +"build, etc. Can be used to check whether you're currently running a debug " +"build, on a certain platform or arch, etc. Refer to the [url=$DOCS_URL/" +"tutorials/export/feature_tags.html]Feature Tags[/url] documentation for more " +"details.\n" +"[b]Note:[/b] Tag names are case-sensitive.\n" +"[b]Note:[/b] On the web platform, one of the following additional tags is " +"defined to indicate host platform: [code]web_android[/code], [code]web_ios[/" +"code], [code]web_linuxbsd[/code], [code]web_macos[/code], or " +"[code]web_windows[/code].\n" +"[b]Note:[/b] On the iOS simulator, the additional [code]simulator[/code] tag " +"is defined." +msgstr "" +"如果当前运行的实例支持给定功能标签的功能,则返回 [code]true[/code],具体取决于" +"平台、构建等。可用于检查当前是否正在运行调试构建,是否在某个平台或架构上,等" +"等。详情见[url=$DOCS_URL/tutorials/export/feature_tags.html]《功能标签》[/url]" +"文档。\n" +"[b]注意:[/b]标签名称区分大小写。\n" +"[b]注意:[/b]在 Web 平台上,会定义 [code]web_android[/code]、[code]web_ios[/" +"code]、[code]web_linuxbsd[/code]、[code]web_macos[/code]、[code]web_windows[/" +"code] 的其中之一,表示宿主平台。\n" +"[b]注意:[/b]在 iOS 模拟器中,还会定义 [code]simulator[/code] 标签。" + msgid "" "Returns [code]true[/code] if the Godot binary used to run the project is a " "[i]debug[/i] export template, or when running in the editor.\n" @@ -72352,6 +80895,13 @@ msgstr "" "[code]false[/code]。另请参阅 [method set_restart_on_exit] 和 [method " "get_restart_on_exit_arguments]。" +msgid "" +"Returns [code]true[/code] if application is running in the sandbox.\n" +"[b]Note:[/b] This method is implemented on macOS and Linux." +msgstr "" +"如果应用程序在沙箱中运行,则返回 [code]true[/code]。\n" +"[b]注意:[/b]该方法在 macOS 和 Linux 上实现。" + msgid "" "Returns [code]true[/code] if the engine was executed with the [code]--" "verbose[/code] or [code]-v[/code] command line argument, or if [member " @@ -72460,6 +81010,13 @@ msgstr "" "装时自动授予。\n" "[b]注意:[/b]该方法仅在 Android 上实现。" +msgid "" +"On macOS (sandboxed applications only), this function clears list of user " +"selected folders accessible to the application." +msgstr "" +"在 macOS(仅限沙盒应用程序)上,该功能会清除应用程序可访问的用户选择的文件夹列" +"表。" + 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 " @@ -72798,6 +81355,29 @@ msgstr "" "返回新的 [PackedByteArray],其中的数据已解压。请将 [param buffer_size] 设置为" "数据解压后的大小。请将压缩模式设置为 [enum FileAccess.CompressionMode] 常量。" +msgid "" +"Returns a new [PackedByteArray] with the data decompressed. Set the " +"compression mode using one of [enum FileAccess.CompressionMode]'s constants. " +"[b]This method only accepts brotli, gzip, and deflate compression modes.[/b]\n" +"This method is potentially slower than [method decompress], as it may have to " +"re-allocate its output buffer multiple times while decompressing, whereas " +"[method decompress] knows it's output buffer size from the beginning.\n" +"GZIP has a maximal compression ratio of 1032:1, meaning it's very possible " +"for a small compressed payload to decompress to a potentially very large " +"output. To guard against this, you may provide a maximum size this function " +"is allowed to allocate in bytes via [param max_output_size]. Passing -1 will " +"allow for unbounded output. If any positive value is passed, and the " +"decompression exceeds that amount in bytes, then an error will be returned." +msgstr "" +"返回新的 [PackedByteArray],其中的数据已解压。请将压缩模式设置为 [enum " +"FileAccess.CompressionMode] 常量。[b]这个方法只接受 brotli、gzip 和 deflate 压" +"缩模式。[/b]\n" +"这个方法可能比 [method decompress] 慢,因为在解压时可能需要多次重新分配输出缓" +"冲区,而 [method decompress] 则在一开始就知道输出缓冲区的大小。\n" +"GZIP 的最大压缩率为 1032:1,这意味着较小的压缩后负载很有可能解压出非常巨大的输" +"出。为了防止这种情况,你可以通过 [param max_output_size] 提供允许这个函数分配" +"的最大字节数。传入 -1 则不限制输出。传入正数且解压超过该字节数时,会返回错误。" + msgid "Creates a copy of the array, and returns it." msgstr "创建该数组的副本,并将该副本返回。" @@ -73042,6 +81622,21 @@ msgstr "" 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 skip-" +"lint]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 skip-lint]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[/" @@ -73739,9 +82334,169 @@ msgstr "" 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().\n" +"var scene = ResourceLoader.Load(\"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 [method pack] 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()。\n" +"var scene = ResourceLoader.Load(\"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] 拥有,因此 [method pack] 只会保存两个节点,不会保存 [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]。" +msgid "Returns the [SceneState] representing the scene file contents." +msgstr "返回代表场景文件内容的 [SceneState]。" + msgid "" "Instantiates the scene's node hierarchy. Triggers child scene " "instantiation(s). Triggers a [constant Node.NOTIFICATION_SCENE_INSTANTIATED] " @@ -74026,6 +82781,26 @@ msgstr "" msgid "Returns a [PackedByteArray] with each vector encoded as bytes." msgstr "返回 [PackedByteArray],每个向量都被编码为字节。" +msgid "" +"Returns a new [PackedVector2Array] with all vectors in this array inversely " +"transformed (multiplied) by the given [Transform2D] transformation matrix, " +"under the assumption that the transformation basis is orthonormal (i.e. " +"rotation/reflection is fine, scaling/skew is not).\n" +"[code]array * transform[/code] is equivalent to [code]transform.inverse() * " +"array[/code]. See [method Transform2D.inverse].\n" +"For transforming by inverse of an affine transformation (e.g. with scaling) " +"[code]transform.affine_inverse() * array[/code] can be used instead. See " +"[method Transform2D.affine_inverse]." +msgstr "" +"返回一个新的 [PackedVector2Array],该数组中的所有向量都通过给定的 " +"[Transform2D] 变换矩阵进行逆变换(乘以),假设该变换的基是正交的(即旋转/反射" +"可以,缩放/倾斜则不然)。\n" +"[code]array * transform[/code] 相当于 [code]transform.inverse() * array[/" +"code]。请参阅 [method Transform2D.inverse]。\n" +"对于通过仿射变换的逆进行变换(例如缩放),可以使用 [code]transform." +"affine_inverse() * array[/code] 代替。请参阅 [method Transform2D." +"affine_inverse]。" + msgid "" "Returns a new [PackedVector2Array] with contents of [param right] added at " "the end of this array. For better performance, consider using [method " @@ -74110,6 +82885,26 @@ msgstr "" "如果 [param begin] 或 [param end] 为负,则表示相对于数组的末尾(即 [code]arr." "slice(0, -2)[/code] 是 [code]arr.slice(0, arr.size() - 2)[/code] 的简写)。" +msgid "" +"Returns a new [PackedVector3Array] with all vectors in this array inversely " +"transformed (multiplied) by the given [Transform3D] transformation matrix, " +"under the assumption that the transformation basis is orthonormal (i.e. " +"rotation/reflection is fine, scaling/skew is not).\n" +"[code]array * transform[/code] is equivalent to [code]transform.inverse() * " +"array[/code]. See [method Transform3D.inverse].\n" +"For transforming by inverse of an affine transformation (e.g. with scaling) " +"[code]transform.affine_inverse() * array[/code] can be used instead. See " +"[method Transform3D.affine_inverse]." +msgstr "" +"返回一个新的 [PackedVector3Array],该数组中的所有向量都通过给定的 " +"[Transform3D] 变换矩阵进行逆变换(乘以),假设该变换的基是正交的(即旋转/反射" +"可以,缩放/倾斜则不然)。\n" +"[code]array * transform[/code] 相当于 [code]transform.inverse() * array[/" +"code]。请参阅 [method Transform3D.inverse]。\n" +"对于通过仿射变换的逆进行变换(例如缩放),可以使用 [code]transform." +"affine_inverse() * array[/code] 代替。请参阅 [method Transform3D." +"affine_inverse]。" + msgid "" "Returns a new [PackedVector3Array] with contents of [param right] added at " "the end of this array. For better performance, consider using [method " @@ -74195,6 +82990,20 @@ msgstr "" "则允许将对象编码(其中可能包含代码)。\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 " +"used will grow automatically to the closest power of two to match the size of " +"the [Variant]. If the [Variant] is bigger than [member " +"encode_buffer_max_size], the method will error out with [constant " +"ERR_OUT_OF_MEMORY]." +msgstr "" +"编码 [Variant] 时允许的最大缓冲区大小。提高此值以支持更大的内存分配。\n" +"[method put_var] 方法在栈上分配内存,使用的缓冲区将自动增长到最接近的二次方," +"以匹配 [Variant] 的大小。如果 [Variant] 大于 [member encode_buffer_max_size]," +"则该方法将以 [constant ERR_OUT_OF_MEMORY] 出错。" + msgid "DTLS packet peer." msgstr "DTLS 数据包客户端。" @@ -74519,6 +83328,30 @@ msgstr "保证子控件在 [StyleBox] 区域内的容器。可用来为控件提 msgid "The style of [PanelContainer]'s background." msgstr "[PanelContainer] 的背景样式。" +msgid "" +"A material that provides a special texture to a [Sky], usually an HDR " +"panorama." +msgstr "为 [Sky] 提供特殊纹理的材质,通常是 HDR 全景图。" + +msgid "" +"A resource referenced in a [Sky] that is used to draw a background. " +"[PanoramaSkyMaterial] functions similar to skyboxes in other engines, except " +"it uses an equirectangular sky map instead of a [Cubemap].\n" +"Using an HDR panorama is strongly recommended for accurate, high-quality " +"reflections. Godot supports the Radiance HDR ([code].hdr[/code]) and OpenEXR " +"([code].exr[/code]) image formats for this purpose.\n" +"You can use [url=https://danilw.github.io/GLSL-howto/cubemap_to_panorama_js/" +"cubemap_to_panorama.html]this tool[/url] to convert a cubemap to an " +"equirectangular sky map." +msgstr "" +"在 [Sky] 中引用的用于绘制背景的资源。[PanoramaSkyMaterial] 的功能类似于其他引" +"擎的天空盒,区别在于它使用的是等距圆柱投影的天空贴图而不是 [Cubemap]。\n" +"强烈建议使用 HDR 全景图,能够得到准确、高质量的反射。为此,Godot 支持 " +"Radiance HDR([code].hdr[/code])和 OpenEXR([code].exr[/code])图像格式。\n" +"你可以使用[url=https://danilw.github.io/GLSL-howto/cubemap_to_panorama_js/" +"cubemap_to_panorama.html]这个工具[/url]将立方体贴图转换为等距圆柱投影的天空贴" +"图。" + msgid "" "A boolean value to determine if the background texture should be filtered or " "not." @@ -74632,6 +83465,23 @@ msgid "" "it will not scroll." msgstr "复制视差图层的运动。如果一个轴被设置为 [code]0[/code],它将不会滚动。" +msgid "" +"Holds a particle configuration for [GPUParticles2D] or [GPUParticles3D] nodes." +msgstr "保存用于 [GPUParticles2D] 或 [GPUParticles3D] 节点的粒子配置。" + +msgid "" +"[ParticleProcessMaterial] defines particle properties and behavior. It is " +"used in the [code]process_material[/code] of the [GPUParticles2D] and " +"[GPUParticles3D] nodes. Some of this material's properties are applied to " +"each particle when emitted, while others can have a [CurveTexture] or a " +"[GradientTexture1D] applied to vary numerical or color values over the " +"lifetime of the particle." +msgstr "" +"[ParticleProcessMaterial] 定义了粒子的属性和行为。[GPUParticles3D] 和 " +"[GPUParticles2D] 节点的 [code]process_material[/code] 会使用这种材质。这种材质" +"的有些属性是在粒子发射时应用的,有些则会应用 [CurveTexture] 或 " +"[GradientTexture1D] 让数值或颜色值在粒子的生命周期中不断变化。" + msgid "Returns the [Texture2D] used by the specified parameter." msgstr "返回指定参数所使用的 [Texture2D]。" @@ -74657,6 +83507,11 @@ msgid "" msgstr "" "如果为 [code]true[/code],则启用指定的粒子标志。选项见 [enum ParticleFlags]。" +msgid "" +"The alpha value of each particle's color will be multiplied by this " +"[CurveTexture] over its lifetime." +msgstr "每个粒子颜色的 alpha 值将在其生命周期内乘以该 [CurveTexture]。" + msgid "Each particle's rotation will be animated along this [CurveTexture]." msgstr "每个粒子的旋转将沿着这个 [CurveTexture] 动画。" @@ -74697,6 +83552,14 @@ msgstr "每个粒子的动画偏移将沿着这个 [CurveTexture] 变化。" msgid "Each particle's animation speed will vary along this [CurveTexture]." msgstr "每个粒子的动画速度将沿着这个 [CurveTexture] 变化。" +msgid "" +"If [code]true[/code], interaction with particle attractors is enabled. In 3D, " +"attraction only occurs within the area defined by the [GPUParticles3D] node's " +"[member GPUParticles3D.visibility_aabb]." +msgstr "" +"如果为 [code]true[/code],则启用与粒子吸引器的交互。在 3D 中,吸引力仅发生在 " +"[GPUParticles3D] 节点的 [member GPUParticles3D.visibility_aabb] 定义的区域内。" + msgid "" "The particles' bounciness. Values range from [code]0[/code] (no bounce) to " "[code]1[/code] (full bounciness). Only effective if [member collision_mode] " @@ -74712,6 +83575,34 @@ msgid "" msgstr "" "粒子的摩擦。值范围从 [code]0[/code](无摩擦)到 [code]1[/code](最大摩擦)。" +msgid "" +"The particles' collision mode.\n" +"[b]Note:[/b] 3D Particles can only collide with [GPUParticlesCollision3D] " +"nodes, not [PhysicsBody3D] nodes. To make particles collide with various " +"objects, you can add [GPUParticlesCollision3D] nodes as children of " +"[PhysicsBody3D] nodes. In 3D, collisions only occur within the area defined " +"by the [GPUParticles3D] node's [member GPUParticles3D.visibility_aabb].\n" +"[b]Note:[/b] 2D Particles can only collide with [LightOccluder2D] nodes, not " +"[PhysicsBody2D] nodes." +msgstr "" +"粒子的碰撞模式。\n" +"[b]注意:[/b]3D 粒子只能与 [GPUParticlesCollision3D] 节点碰撞,无法与 " +"[PhysicsBody3D] 节点碰撞。要使粒子与不同的物体碰撞,可以将 " +"[GPUParticlesCollision3D] 节点添加为 [PhysicsBody3D] 节点的子节点。在 3D 中," +"碰撞仅发生在 [GPUParticles3D] 节点的 [member GPUParticles3D.visibility_aabb] " +"定义的区域内。\n" +"[b]注意:[/b]2D 粒子只能与 [LightOccluder2D] 节点碰撞,无法与 [PhysicsBody2D] " +"节点碰撞。" + +msgid "" +"If [code]true[/code], [member GPUParticles3D.collision_base_size] is " +"multiplied by the particle's effective scale (see [member scale_min], [member " +"scale_max], [member scale_curve], and [member scale_over_velocity_curve])." +msgstr "" +"如果为 [code]true[/code],[member GPUParticles3D.collision_base_size] 乘以粒子" +"的有效缩放(请参阅 [member scale_min]、[member scale_max]、[member " +"scale_curve]、和 [member scale_over_velocity_curve])。" + msgid "" "Each particle's initial color. If the [GPUParticles2D]'s [code]texture[/code] " "is defined, it will be multiplied by this color.\n" @@ -74733,6 +83624,43 @@ msgstr "" msgid "Damping will vary along this [CurveTexture]." msgstr "阻尼将沿着这个 [CurveTexture] 变化。" +msgid "" +"A curve that specifies the velocity along each of the axes of the particle " +"system along its lifetime.\n" +"[b]Note:[/b] Animated velocities will not be affected by damping, use [member " +"velocity_limit_curve] instead." +msgstr "" +"一条曲线,指定粒子系统在其生命周期内沿每个轴的速度。\n" +"[b]注意:[/b]动画速度不会受到阻尼的影响,请使用 [member velocity_limit_curve] " +"代替。" + +msgid "" +"Maximum directional velocity value, which is multiplied by [member " +"directional_velocity_curve].\n" +"[b]Note:[/b] Animated velocities will not be affected by damping, use [member " +"velocity_limit_curve] instead." +msgstr "" +"最大方向速度值,乘以 [member directional_velocity_curve]。\n" +"[b]注意:[/b]动画速度不会受到阻尼的影响,请使用 [member velocity_limit_curve] " +"代替。" + +msgid "" +"Minimum directional velocity value, which is multiplied by [member " +"directional_velocity_curve].\n" +"[b]Note:[/b] Animated velocities will not be affected by damping, use [member " +"velocity_limit_curve] instead." +msgstr "" +"最小方向速度值,乘以 [member directional_velocity_curve]。\n" +"[b]注意:[/b]动画速度不会受到阻尼的影响,请使用 [member velocity_limit_curve] " +"代替。" + +msgid "" +"The box's extents if [member emission_shape] is set to [constant " +"EMISSION_SHAPE_BOX]." +msgstr "" +"[member emission_shape] 被设置为 [constant EMISSION_SHAPE_BOX] 时,该框的范" +"围。" + msgid "" "Particle color will be modulated by color determined by sampling this texture " "at the same point as the [member emission_point_texture].\n" @@ -74752,6 +83680,15 @@ msgstr "" "[code]ALBEDO *= COLOR.rgb;[/code]。否则,[member emission_color_texture] 将没" "有可见效果。" +msgid "" +"Each particle's color will be multiplied by this [CurveTexture] over its " +"lifetime.\n" +"[b]Note:[/b] This property won't have a visible effect unless the render " +"material is marked as unshaded." +msgstr "" +"每个粒子的颜色将在其生命周期内乘以该 [CurveTexture]。\n" +"[b]注意:[/b]除非渲染材质被标记为无阴影,否则该属性不会产生可见效果。" + msgid "" "Particle velocity and rotation will be set by sampling this texture at the " "same point as the [member emission_point_texture]. Used only in [constant " @@ -74763,6 +83700,13 @@ msgstr "" "行采样来设置。仅在[constant EMISSION_SHAPE_DIRECTED_POINTS]中使用。可以通过选" "择工具栏中 \"粒子 \"工具下的 \"从网格/节点创建发射点\",从网格或节点自动创建。" +msgid "" +"The number of emission points if [member emission_shape] is set to [constant " +"EMISSION_SHAPE_POINTS] or [constant EMISSION_SHAPE_DIRECTED_POINTS]." +msgstr "" +"[member emission_shape] 被设置为 [constant EMISSION_SHAPE_POINTS] 或 " +"[constant EMISSION_SHAPE_DIRECTED_POINTS] 时,发射点的数量。" + msgid "" "Particles will be emitted at positions determined by sampling this texture at " "a random position. Used with [constant EMISSION_SHAPE_POINTS] and [constant " @@ -74779,12 +83723,24 @@ msgid "" "constants for values." msgstr "粒子将在这个区域内发射。使用[enum EmissionShape]常量作为值。" +msgid "The offset for the [member emission_shape], in local space." +msgstr "[member emission_shape] 在局部空间中的偏移量。" + +msgid "The scale of the [member emission_shape], in local space." +msgstr "局部空间中 [member emission_shape] 的缩放。" + msgid "Amount of [member spread] along the Y axis." msgstr "沿 Y 轴的 [member spread] 量。" msgid "Each particle's hue will vary along this [CurveTexture]." msgstr "每个粒子的色调将沿着这个 [CurveTexture] 变化。" +msgid "" +"Percentage of the velocity of the respective [GPUParticles2D] or " +"[GPUParticles3D] inherited by each particle when spawning." +msgstr "" +"每个粒子在生成时继承的相应 [GPUParticles2D] 或 [GPUParticles3D] 的速度百分比。" + msgid "" "Particle lifetime randomness ratio. The equation for the lifetime of a " "particle is [code]lifetime * (1.0 - randf() * lifetime_randomness)[/code]. " @@ -74798,12 +83754,82 @@ msgstr "" msgid "Each particle's linear acceleration will vary along this [CurveTexture]." msgstr "每个粒子的线性加速度将沿着这个 [CurveTexture] 变化。" +msgid "" +"Each particle's orbital velocity will vary along this [CurveTexture].\n" +"[b]Note:[/b] For 3D orbital velocity, use a [CurveXYZTexture].\n" +"[b]Note:[/b] Animated velocities will not be affected by damping, use [member " +"velocity_limit_curve] instead." +msgstr "" +"每个粒子的轨道速度将沿着该 [CurveTexture] 变化。\n" +"[b]注意:[/b]对于 3D 轨道速度,请使用 [CurveXYZTexture]。\n" +"[b]注意:[/b]动画速度不会受到阻尼的影响,请使用 [member velocity_limit_curve] " +"代替。" + +msgid "" +"Maximum orbital velocity applied to each particle. Makes the particles circle " +"around origin. Specified in number of full rotations around origin per " +"second.\n" +"[b]Note:[/b] Animated velocities will not be affected by damping, use [member " +"velocity_limit_curve] instead." +msgstr "" +"应用于每个粒子的最大轨道速度。使粒子围绕原点环绕。以每秒围绕原点的完整旋转次数" +"指定。\n" +"[b]注意:[/b]动画速度不会受到阻尼的影响,请使用 [member velocity_limit_curve] " +"代替。" + +msgid "" +"Minimum equivalent of [member orbit_velocity_max].\n" +"[b]Note:[/b] Animated velocities will not be affected by damping, use [member " +"velocity_limit_curve] instead." +msgstr "" +"[member orbit_velocity_max] 的最小等效值。\n" +"[b]注意:[/b]动画速度不会受到阻尼的影响,请使用 [member velocity_limit_curve] " +"代替。" + +msgid "" +"Changes the behavior of the damping properties from a linear deceleration to " +"a deceleration based on speed percentage." +msgstr "将阻尼属性的行为从线性减速度更改为基于速度百分比的减速度。" + msgid "If [code]true[/code], particles will not move on the z axis." msgstr "如果为 [code]true[/code],则粒子将不会在 z 轴上移动。" msgid "Each particle's radial acceleration will vary along this [CurveTexture]." msgstr "每个粒子的径向加速度将沿着这个 [CurveTexture] 变化。" +msgid "" +"A [CurveTexture] that defines the velocity over the particle's lifetime away " +"(or toward) the [member velocity_pivot].\n" +"[b]Note:[/b] Animated velocities will not be affected by damping, use [member " +"velocity_limit_curve] instead." +msgstr "" +"一个 [CurveTexture],定义粒子生命周期中远离(或朝向)[member velocity_pivot] " +"的速度。\n" +"[b]注意:[/b]动画速度不会受到阻尼的影响,请使用 [member velocity_limit_curve] " +"代替。" + +msgid "" +"Maximum radial velocity applied to each particle. Makes particles move away " +"from the [member velocity_pivot], or toward it if negative.\n" +"[b]Note:[/b] Animated velocities will not be affected by damping, use [member " +"velocity_limit_curve] instead." +msgstr "" +"应用于每个粒子的最大径向速度。使粒子远离 [member velocity_pivot],如果为负则朝" +"它移动。\n" +"[b]注意:[/b]动画速度不会受到阻尼的影响,请使用 [member velocity_limit_curve] " +"代替。" + +msgid "" +"Minimum radial velocity applied to each particle. Makes particles move away " +"from the [member velocity_pivot], or toward it if negative.\n" +"[b]Note:[/b] Animated velocities will not be affected by damping, use [member " +"velocity_limit_curve] instead." +msgstr "" +"应用于每个粒子的最小径向速度。使粒子远离 [member velocity_pivot],如果为负则朝" +"它移动。\n" +"[b]注意:[/b]动画速度不会受到阻尼的影响,请使用 [member velocity_limit_curve] " +"代替。" + msgid "" "Each particle's scale will vary along this [CurveTexture]. If a " "[CurveXYZTexture] is supplied instead, the scale will be separated per-axis." @@ -74814,6 +83840,87 @@ msgstr "" msgid "Minimum equivalent of [member scale_max]." msgstr "[member scale_max] 对应的最小值。" +msgid "" +"Either a [CurveTexture] or a [CurveXYZTexture] that scales each particle " +"based on its velocity." +msgstr "根据 [CurveTexture] 或 [CurveXYZTexture] 缩放每个粒子的速度。" + +msgid "" +"Maximum velocity value reference for [member scale_over_velocity_curve].\n" +"[member scale_over_velocity_curve] will be interpolated between [member " +"scale_over_velocity_min] and [member scale_over_velocity_max]." +msgstr "" +"[member scale_over_velocity_curve] 的最大速度参考值。\n" +"[member scale_over_velocity_curve] 将在 [member scale_over_velocity_min] 和 " +"[member scale_over_velocity_max] 之间插值。" + +msgid "" +"Minimum velocity value reference for [member scale_over_velocity_curve].\n" +"[member scale_over_velocity_curve] will be interpolated between [member " +"scale_over_velocity_min] and [member scale_over_velocity_max]." +msgstr "" +"[member scale_over_velocity_curve] 的最小速度参考值。\n" +"[member scale_over_velocity_curve] 将在 [member scale_over_velocity_min] 和 " +"[member scale_over_velocity_max] 之间插值。" + +msgid "" +"The amount of particles to spawn from the subemitter node when a collision " +"occurs. When combined with [constant COLLISION_HIDE_ON_CONTACT] on the main " +"particles material, this can be used to achieve effects such as raindrops " +"hitting the ground.\n" +"[b]Note:[/b] This value shouldn't exceed [member GPUParticles2D.amount] or " +"[member GPUParticles3D.amount] defined on the [i]subemitter node[/i] (not the " +"main node), relative to the subemitter's particle lifetime. If the number of " +"particles is exceeded, no new particles will spawn from the subemitter until " +"enough particles have expired." +msgstr "" +"发生碰撞时从子发射器节点生成的粒子数量。当与主要粒子材质上的 [constant " +"COLLISION_HIDE_ON_CONTACT] 结合使用时,可以用来实现雨滴撞击地面等效果。\n" +"[b]注意:[/b]该值不应超过[i]子发射器节点[/i](不是主节点)上定义的 [member " +"GPUParticles2D.amount] 或 [member GPUParticles3D.amount],相对于子发射器的粒子" +"寿命。如果超过粒子数量,则在足够的粒子过期之前,不会从子发射器中产生新的粒子。" + +msgid "" +"The amount of particles to spawn from the subemitter node when the particle " +"expires.\n" +"[b]Note:[/b] This value shouldn't exceed [member GPUParticles2D.amount] or " +"[member GPUParticles3D.amount] defined on the [i]subemitter node[/i] (not the " +"main node), relative to the subemitter's particle lifetime. If the number of " +"particles is exceeded, no new particles will spawn from the subemitter until " +"enough particles have expired." +msgstr "" +"粒子过期时从子发射器节点生成的粒子数量。\n" +"[b]注意:[/b]该值不应超过[i]子发射器节点[/i](不是主节点)上定义的 [member " +"GPUParticles2D.amount] 或 [member GPUParticles3D.amount],相对于子发射器的粒子" +"寿命。如果超过粒子数量,则在足够的粒子过期之前,不会从子发射器中产生新的粒子。" + +msgid "" +"The frequency at which particles should be emitted from the subemitter node. " +"One particle will be spawned every [member sub_emitter_frequency] seconds.\n" +"[b]Note:[/b] This value shouldn't exceed [member GPUParticles2D.amount] or " +"[member GPUParticles3D.amount] defined on the [i]subemitter node[/i] (not the " +"main node), relative to the subemitter's particle lifetime. If the number of " +"particles is exceeded, no new particles will spawn from the subemitter until " +"enough particles have expired." +msgstr "" +"从子发射器节点发射粒子的频率。每 [member sub_emitter_frequency] 秒就会产生一个" +"粒子。\n" +"[b]注意:[/b]该值不应超过[i]子发射器节点[/i](不是主节点)上定义的 [member " +"GPUParticles2D.amount] 或 [member GPUParticles3D.amount],相对于子发射器的粒子" +"寿命。如果超过粒子数量,则在足够的粒子过期之前,不会从子发射器中产生新的粒子。" + +msgid "" +"If [code]true[/code], the subemitter inherits the parent particle's velocity " +"when it spawns." +msgstr "如果为 [code]true[/code],则子发射器在其生成时继承父粒子的速度。" + +msgid "" +"The particle subemitter mode (see [member GPUParticles2D.sub_emitter] and " +"[member GPUParticles3D.sub_emitter])." +msgstr "" +"粒子子发射器模式(参见 [member GPUParticles2D.sub_emitter] 和 [member " +"GPUParticles3D.sub_emitter])。" + msgid "" "Each particle's tangential acceleration will vary along this [CurveTexture]." msgstr "每个粒子的切向加速度将沿着这个 [CurveTexture] 变化。" @@ -74919,6 +84026,15 @@ msgid "" "more contrasting, flow pattern." msgstr "湍流噪声强度。增加此值将导致更强烈、对比度更高的噪声图案。" +msgid "" +"A [CurveTexture] that defines the maximum velocity of a particle during its " +"lifetime." +msgstr "定义粒子在其生命周期内的最大速度的 [CurveTexture]。" + +msgid "" +"A pivot point used to calculate radial and orbital velocity of particles." +msgstr "用于计算粒子的径向速度和轨道速度的轴心点。" + msgid "" "Use with [method set_param_min], [method set_param_max], and [method " "set_param_texture] to set initial velocity properties." @@ -75003,6 +84119,27 @@ msgstr "" "与 [method set_param_min]、[method set_param_max] 和 [method " "set_param_texture] 一起使用,设置动画偏移属性。" +msgid "" +"Use with [method set_param_min], [method set_param_max], and [method " +"set_param_texture] to set radial velocity properties." +msgstr "" +"与 [method set_param_min]、[method set_param_max] 和 [method " +"set_param_texture] 一起使用来设置径向速度属性。" + +msgid "" +"Use with [method set_param_min], [method set_param_max], and [method " +"set_param_texture] to set directional velocity properties." +msgstr "" +"与 [method set_param_min]、[method set_param_max] 和 [method " +"set_param_texture] 一起使用来设置定向速度属性。" + +msgid "" +"Use with [method set_param_min], [method set_param_max], and [method " +"set_param_texture] to set scale over velocity properties." +msgstr "" +"与 [method set_param_min]、[method set_param_max] 和 [method " +"set_param_texture] 一起使用来设置速度属性的缩放。" + msgid "" "Particles will be emitted at a position determined by sampling a random point " "on the [member emission_point_texture]. Particle color will be modulated by " @@ -75686,6 +84823,14 @@ msgstr "3D 物理引擎中碰撞对的数量。[i]越低越好。[/i]" msgid "Number of islands in the 3D physics engine. [i]Lower is better.[/i]" msgstr "3D 物理引擎中孤岛的数量。[i]越低越好。[/i]" +msgid "" +"Output latency of the [AudioServer]. Equivalent to calling [method " +"AudioServer.get_output_latency], it is not recommended to call this every " +"frame." +msgstr "" +"[AudioServer] 的输出延迟。相当于调用 [method AudioServer.get_output_latency]," +"不建议每帧都调用该方法。" + msgid "" "Number of active navigation maps in the [NavigationServer3D]. This also " "includes the two empty default navigation maps created by World2D and World3D." @@ -75953,6 +85098,11 @@ msgid "" "default value." msgstr "在这种模式下,物体的阻尼值将替换掉区域中设置的任何值或默认值。" +msgid "" +"A material that defines a sky for a [Sky] resource by a set of physical " +"properties." +msgstr "通过一组物理属性定义 [Sky] 资源的天空的材质。" + msgid "" "The [PhysicalSkyMaterial] uses the Preetham analytic daylight model to draw a " "sky based on physical properties. This results in a substantially more " @@ -77205,8 +86355,8 @@ msgstr "" "对其状态进行查询,获取碰撞和相交信息,并且可以修改部分仿真参数。\n" "- [i]Shape(形状)[/i]是圆形、矩形、胶囊形、多边形等几何形状。加入到实体/区域" "中就可以用来进行碰撞检测,还可以带有相对于实体/区域原点的额外变换。实体/区域中" -"可以添加多个(变换后的)形状,同一个形状可以使用不同的局部变换添加到实体/区域" -"中。\n" +"可以添加多个(变换后的)形状,并且可以使用不同的局部变换将单个形状多次添加到实" +"体/区域中。\n" "- [i]Body(实体)[/i]是物理对象,可以处于静态、运动学或刚性模式。可以对其状态" "进行查询和更新(例如位置、速度等)。可以设置力的集成回调,自定义实体的物理特" "性。\n" @@ -77306,6 +86456,11 @@ msgid "" "area's array of shapes." msgstr "返回该区域的形状数组中给定索引的形状的局部变换矩阵。" +msgid "" +"Returns the [RID] of the space assigned to the area. Returns an empty [RID] " +"if no space is assigned." +msgstr "返回分配给该区域的空间 [RID]。如果没有分配空间,则返回空 [RID]。" + msgid "Returns the transform matrix of the area." msgstr "返回该区域的变换矩阵。" @@ -77666,6 +86821,11 @@ msgstr "返回该实体形状数组中具有给定索引的形状的 [RID]。" msgid "Returns the number of shapes added to the body." msgstr "返回添加至该物体的形状的数量。" +msgid "" +"Returns the [RID] of the space assigned to the body. Returns an empty [RID] " +"if no space is assigned." +msgstr "返回分配给该实体的空间的 [RID]。如果没有分配空间,则返回空 [RID]。" + msgid "" "Returns the value of the given state of the body. See [enum BodyState] for " "the list of available states." @@ -77984,16 +87144,34 @@ msgstr "" msgid "Makes the joint a groove joint." msgstr "使关节成为凹槽关节。" +msgid "" +"Makes the joint a pin joint. If [param body_b] is an empty [RID], 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] 是一个空 [RID],则 [param body_a] 被" +"固定到点 [param anchor](在全局坐标中给出); 否则,[param body_a] 在 [param " +"anchor] 点被固定到 [param body_b](在全局坐标中给出)。要设置特定于销关节的参" +"数,请参阅 [method pin_joint_set_param]。" + msgid "" "Sets the value of the given joint parameter. See [enum JointParam] for the " "list of available parameters." msgstr "设置给定关节参数的值。可用参数的列表见 [enum JointParam]。" +msgid "Gets a pin joint flag (see [enum PinJointFlag] constants)." +msgstr "获取销关节标志(请参阅 [enum PinJointFlag] 常量)。" + msgid "" "Returns the value of a pin joint parameter. See [enum PinJointParam] for a " "list of available parameters." msgstr "返回销关节参数的值。有关可用参数列表,请参阅 [enum PinJointParam]。" +msgid "Sets a pin joint flag (see [enum PinJointFlag] constants)." +msgstr "设置销关节标志(请参阅 [enum PinJointFlag] 常量)。" + msgid "" "Sets a pin joint parameter. See [enum PinJointParam] for a list of available " "parameters." @@ -78043,6 +87221,60 @@ msgstr "" 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 [float] distance [code]d[/" +"code],\n" +"- [constant SHAPE_SEPARATION_RAY]: a dictionary containing the key " +"[code]length[/code] with a [float] value and the key [code]slide_on_slope[/" +"code] with a [bool] 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 [float] [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 [float] [code]height[/code] and a [float] [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 [float]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] 方向和 [float] 类型的距离 [code]d[/code],\n" +"- [constant SHAPE_SEPARATION_RAY]:字典,包含键 [code]length[/code] 和 " +"[float] 值、以及键 [code]slide_on_slope[/code] 和 [bool] 值,\n" +"- [constant SHAPE_SEGMENT]:[Rect2] 类型的 [code]rect[/code],以 [code]rect." +"position[/code] 表示线段中的第一个点,并以 [code]rect.size[/code] 表示线段中的" +"第二个点,\n" +"- [constant SHAPE_CIRCLE]:[float] 类型的 [code]radius[/code],\n" +"- [constant SHAPE_RECTANGLE]:[Vector2] 类型的 [code]half_extents[/code],\n" +"- [constant SHAPE_CAPSULE]:长度为 2 的数组(或一个 [Vector2]),包含一个 " +"[float] 类型的 [code]height[/code] 和一个 [float] 类型的 [code]radius[/" +"code],\n" +"- [constant SHAPE_CONVEX_POLYGON]:按逆时针顺序定义凸多边形的点的 " +"[PackedVector2Array](在内部使用由连续点形成的每个线段的顺时针向外法线计算);" +"或一个长度可被 4 整除的 [PackedFloat32Array],以便每个 4 元组的 [float] 包含一" +"个点的坐标,后跟一个向量的坐标表示,该向量是当前点和下一个点之间的线段的顺时针" +"向外法向量,\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 " @@ -78548,6 +87780,21 @@ msgstr "" "常量,用于设置/获取销关节的纽带可以弯曲多少。该参数的默认值为 [code]0.0[/" "code]。" +msgid "The maximum rotation around the pin." +msgstr "绕该销的最大旋转。" + +msgid "The minimum rotation around the pin." +msgstr "绕该销的最小旋转。" + +msgid "Target speed for the motor. In radians per second." +msgstr "马达的目标速度。单位为弧度每秒。" + +msgid "If [code]true[/code], the pin has a maximum and a minimum rotation." +msgstr "如果为 [code]true[/code],则销关节具有最大和最小旋转。" + +msgid "If [code]true[/code], a motor turns the pin." +msgstr "如果为 [code]true[/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 " @@ -78659,6 +87906,66 @@ msgstr "" msgid "A server interface for low-level 3D physics access." msgstr "用于访问低阶 3D 物理的服务器接口。" +msgid "" +"PhysicsServer3D is the server responsible for all 3D 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 shape such as a sphere, a box, a cylinder, 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 [PhysicsServer3D] 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 3D 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 "" +"PhysicsServer3D 是负责所有 3D 物理的服务器。它可以直接创建和操作所有物理对" +"象:\n" +"- [i]Space(空间)[/i]是用于物理仿真的自包含世界。它包含实体、区域和关节。可以" +"对其状态进行查询,获取碰撞和相交信息,并且可以修改部分仿真参数。\n" +"- [i]Shape(形状)[/i]是球形、盒形、圆柱形、多边形等几何形状。加入到实体/区域" +"中就可以用来进行碰撞检测,还可以带有相对于实体/区域原点的额外变换。实体/区域中" +"可以添加多个(变换后的)形状,并且可以使用不同的局部变换将单个形状多次添加到实" +"体/区域中。\n" +"- [i]Body(实体)[/i]是物理对象,可以处于静态、运动学或刚性模式。可以对其状态" +"进行查询和更新(例如位置、速度等)。可以设置力的集成回调,自定义实体的物理特" +"性。\n" +"- [i]Area(区域)[/i]是空间中的区块,可用于检测进入和离开它的实体和区域。可以" +"设置实体的监视回调,报告进入/离开的实体形状,同样可以设置区域的监视回调。通过" +"设置区域参数,可以在区域内覆盖重力和阻尼。\n" +"- [i]Joint(关节)[/i]是两个实体之间或一个实体相对于某个点的约束。可以调整关节" +"偏置和弹簧关节的放松长度等参数。\n" +"[PhysicsServer3D] 中的物理对象可以独立创建和操作;不必将它们绑定到场景树中的节" +"点。\n" +"[b]注意:[/b]所有 3D 物理节点都在内部使用这个物理服务器。将物理节点添加到场景" +"树,就会导致在物理服务器中创建相应的物理对象。刚体节点会注册回调,该回调会(在" +"每次物理更新时)使用物理服务器中相应实体对象的变换更新该节点的变换。区域节点会" +"注册回调,用来通知区域节点与物理服务器中相应区域对象的重叠。射线投射节点会查询" +"物理服务器中相关空间的直接状态。" + msgid "" "Adds a shape to the area, along with a transform matrix. Shapes are usually " "referenced by their index, so you should track which shape has a given index." @@ -78960,6 +88267,21 @@ msgstr "" "如果为 [code]true[/code],则启用连续碰撞检测模式。\n" "连续碰撞检测尝试预测运动物体碰撞的位置,而不是在碰撞时移动物体并纠正其运动。" +msgid "" +"Sets the function used to calculate physics for an object, if that object " +"allows it (see [method body_set_omit_force_integration]). The force " +"integration function takes 2 arguments:\n" +"- [code]state[/code] — [PhysicsDirectBodyState3D] used to retrieve and modify " +"the body's state.\n" +"- [code skip-lint]userdata[/code] — optional user data passed to [method " +"body_set_force_integration_callback]." +msgstr "" +"如果对象允许的话,设置用于计算该对象物理的函数(见 [method " +"body_set_omit_force_integration])。力的积分函数有 2 个参数:\n" +"[code]state[/code] — [PhysicsDirectBodyState3D] 用于检索和修改物体的状态。\n" +"[code skip-lint]userdata[/code] — 可选的用户数据,如果在调用 [method " +"body_set_force_integration_callback] 时被传递。" + msgid "" "Sets the maximum contacts to report. Bodies can keep a log of the contacts " "with other bodies. This is enabled by setting the maximum number of contacts " @@ -79592,6 +88914,45 @@ msgstr "" "用于为 [method PhysicsServer3DExtension._soft_body_update_rendering_server] 提" "供柔体渲染处理器的类。" +msgid "" +"Called by the [PhysicsServer3D] to set the bounding box for the [SoftBody3D]." +msgstr "由 [PhysicsServer3D] 调用以设置 [SoftBody3D] 的边界框。" + +msgid "" +"Called by the [PhysicsServer3D] to set the normal for the [SoftBody3D] vertex " +"at the index specified by [param vertex_id].\n" +"[b]Note:[/b] The [param normal] parameter used to be of type [code]const " +"void*[/code] prior to Godot 4.2." +msgstr "" +"由 [PhysicsServer3D] 调用,以在 [param vertex_id] 指定的索引处设置 " +"[SoftBody3D] 顶点的法线。\n" +"[b]注意:[/b]在 Godot 4.2 之前,[param normal] 参数的类型为 [code]const " +"void*[/code]。" + +msgid "" +"Called by the [PhysicsServer3D] to set the position for the [SoftBody3D] " +"vertex at the index specified by [param vertex_id].\n" +"[b]Note:[/b] The [param vertex] parameter used to be of type [code]const " +"void*[/code] prior to Godot 4.2." +msgstr "" +"由 [PhysicsServer3D] 调用,以在 [param vertex_id] 指定的索引处设置 " +"[SoftBody3D] 顶点的位置。\n" +"[b]注意:[/b]在 Godot 4.2 之前,[param vertex] 参数的类型为 [code]const " +"void*[/code]。" + +msgid "Sets the bounding box for the [SoftBody3D]." +msgstr "设置该 [SoftBody3D] 的边界框。" + +msgid "" +"Sets the normal for the [SoftBody3D] vertex at the index specified by [param " +"vertex_id]." +msgstr "在由 [param vertex_id] 指定的索引处设置该 [SoftBody3D] 顶点的法线。" + +msgid "" +"Sets the position for the [SoftBody3D] vertex at the index specified by " +"[param vertex_id]." +msgstr "在由 [param vertex_id] 指定的索引处设置该 [SoftBody3D] 顶点的位置。" + msgid "" "Provides parameters for [method PhysicsDirectSpaceState2D.intersect_shape]." msgstr "为 [method PhysicsDirectSpaceState2D.intersect_shape] 提供参数。" @@ -80034,6 +89395,30 @@ msgstr "" "将两个 2D 物理体通过单点进行连接的物理关节,能够让它们自由旋转。例如可以将 " "[RigidBody2D] 连接到 [StaticBody2D] 上,从而创建钟摆或跷跷板。" +msgid "" +"If [code]true[/code], the pin maximum and minimum rotation, defined by " +"[member angular_limit_lower] and [member angular_limit_upper] are applied." +msgstr "" +"如果为 [code]true[/code],则应用由 [member angular_limit_lower] 和 [member " +"angular_limit_upper] 定义的销的最大和最小旋转。" + +msgid "" +"The minimum rotation. Only active if [member angular_limit_enabled] is " +"[code]true[/code]." +msgstr "" +"最小的旋转量。只有在 [member angular_limit_enabled] 为 [code]true[/code] 时才" +"有效。" + +msgid "" +"The maximum rotation. Only active if [member angular_limit_enabled] is " +"[code]true[/code]." +msgstr "" +"最大的旋转量。只有在 [member angular_limit_enabled] 为 [code]true[/code] 时才" +"有效。" + +msgid "When activated, a motor turns the pin." +msgstr "激活后,马达会转动该销。" + msgid "The higher this value, the more the bond to the pinned partner can flex." msgstr "这个值越高,与被牵制的两个物体之间的的联系就越灵活。" @@ -80042,6 +89427,14 @@ msgid "" "allowing them to freely rotate." msgstr "将两个 3D 物理体通过单点进行连接的物理关节,能够让它们自由旋转。" +msgid "" +"A physics joint that attaches two 3D physics bodies at a single point, " +"allowing them to freely rotate. For example, a [RigidBody3D] can be attached " +"to a [StaticBody3D] to create a pendulum or a seesaw." +msgstr "" +"将两个 3D 物理体通过单点进行连接的物理关节,能够让它们自由旋转。例如,可以将 " +"[RigidBody3D] 连接到 [StaticBody3D] 上,从而创建钟摆或跷跷板。" + msgid "" "The force with which the pinned objects stay in positional relation to each " "other. The higher, the stronger." @@ -80060,9 +89453,41 @@ msgstr "如果大于 0,则这个值是此 Joint3D 产生的冲量的最大值 msgid "A [Cubemap] without image data." msgstr "没有图像数据的 [Cubemap] 。" +msgid "" +"This class replaces a [Cubemap] or a [Cubemap]-derived class in 2 " +"conditions:\n" +"- In dedicated server mode, where the image data shouldn't affect game logic. " +"This allows reducing the exported PCK's size significantly.\n" +"- When the [Cubemap]-derived class is missing, for example when using a " +"different engine version.\n" +"[b]Note:[/b] This class is not intended for rendering or for use in shaders. " +"Operations like calculating UV are not guaranteed to work." +msgstr "" +"该类在以下两种情况下替换 [Cubemap] 或 [Cubemap] 派生类:\n" +"- 在专用服务器模式下,图像数据不应影响游戏逻辑。这样能够显著减小导出的 PCK 的" +"大小。\n" +"- 当 [Cubemap] 派生类丢失时,例如使用不同的引擎版本时。\n" +"[b]注意:[/b]该类不适用于渲染或在着色器中使用。不保证计算 UV 之类的操作有效。" + msgid "A [CubemapArray] without image data." msgstr "没有图像数据的 [CubemapArray] 。" +msgid "" +"This class replaces a [CubemapArray] or a [CubemapArray]-derived class in 2 " +"conditions:\n" +"- In dedicated server mode, where the image data shouldn't affect game logic. " +"This allows reducing the exported PCK's size significantly.\n" +"- When the [CubemapArray]-derived class is missing, for example when using a " +"different engine version.\n" +"[b]Note:[/b] This class is not intended for rendering or for use in shaders. " +"Operations like calculating UV are not guaranteed to work." +msgstr "" +"该类在以下两种情况下替换 [CubemapArray] 或 [CubemapArray] 派生类:\n" +"- 在专用服务器模式下,图像数据不应影响游戏逻辑。这样能够显著减小导出的 PCK 的" +"大小。\n" +"- 当 [CubemapArray] 派生类丢失时,例如使用不同的引擎版本时。\n" +"[b]注意:[/b]该类不适用于渲染或在着色器中使用。不保证计算 UV 之类的操作有效。" + msgid "Placeholder class for a material." msgstr "材质的占位类。" @@ -80305,6 +89730,34 @@ msgid "" "Returns the orthogonal projection of [param point] into a point in the plane." msgstr "返回 [param point] 在该平面中的正交投影。" +msgid "" +"The distance from the origin to the plane, expressed in terms of [member " +"normal] (according to its direction and magnitude). Actual absolute distance " +"from the origin to the plane can be calculated as [code]abs(d) / normal." +"length()[/code] (if [member normal] has zero length then this [Plane] does " +"not represent a valid plane).\n" +"In the scalar equation of the plane [code]ax + by + cz = d[/code], this is " +"[code skip-lint]d[/code], while the [code](a, b, c)[/code] coordinates are " +"represented by the [member normal] property." +msgstr "" +"从原点到平面的距离,按照 [member normal] 取值(根据其方向和长度)。原点与平面" +"的实际绝对距离可以通过 [code]abs(d) / normal.length()[/code] 计算(如果 " +"[member normal] 长度为零,则该 [Plane] 表示的不是有效平面)。\n" +"在平面 [code]ax + by + cz = d[/code] 的标量方程中,这是 [code skip-lint]d[/" +"code],而 [code](a, b, c)[/code] 坐标由 [member normal] 属性表示。" + +msgid "" +"The normal of the plane, typically a unit vector. Shouldn't be a zero vector " +"as [Plane] with such [member normal] does not represent a valid plane.\n" +"In the scalar equation of the plane [code]ax + by + cz = d[/code], this is " +"the vector [code](a, b, c)[/code], where [code skip-lint]d[/code] is the " +"[member d] property." +msgstr "" +"该平面的法线,通常为单位向量。不应该为零向量,因为 [member normal] 为零的 " +"[Plane] 代表的不是有效平面。\n" +"在平面 [code]ax + by + cz = d[/code] 的标量方程中,这是向量 [code](a, b, c)[/" +"code],其中 [code skip-lint]d[/code] 是 [member d] 属性。" + msgid "The X component of the plane's [member normal] vector." msgstr "平面法向量 [member normal] 的 X 分量。" @@ -80332,6 +89785,16 @@ msgstr "" "[b]注意:[/b]由于浮点数精度误差,请考虑改用 [method is_equal_approx],会更可" "靠。" +msgid "" +"Inversely transforms (multiplies) the [Plane] by the given [Transform3D] " +"transformation matrix.\n" +"[code]plane * transform[/code] is equivalent to [code]transform." +"affine_inverse() * plane[/code]. See [method Transform3D.affine_inverse]." +msgstr "" +"将 [Plane] 逆向变换(乘以)给定的 [Transform3D] 变换矩阵。\n" +"[code]plane * transform[/code] 相当于 [code]transform.affine_inverse() * " +"plane[/code]。请参阅 [method Transform3D.affine_inverse]。" + msgid "" "Returns [code]true[/code] if the planes are exactly equal.\n" "[b]Note:[/b] Due to floating-point precision errors, consider using [method " @@ -80498,6 +89961,14 @@ msgstr "" "分配的 [member skeleton] 所使用的 [Bone2D] 节点的内部列表。使用 Polygon2D 编辑" "器编辑(顶部工具栏的“UV”按钮)。" +msgid "" +"The polygon's fill color. If [member texture] is set, it will be multiplied " +"by this color. It will also be the default color for vertices not set in " +"[member vertex_colors]." +msgstr "" +"该多边形的填充颜色。如果设置了 [member texture],它将乘以该颜色。它也将是未在 " +"[member vertex_colors] 中设置的顶点的默认颜色。" + msgid "Number of internal vertices, used for UV mapping." msgstr "内部顶点的数量,用于 UV 映射。" @@ -80547,9 +90018,43 @@ msgstr "" "指向 [Skeleton2D] 节点的路径,用于对这个多边形进行基于骨架的变形。如果为空或无" "效,则不会使用骨架变形。" +msgid "The polygon's fill texture. Use [member uv] to set texture coordinates." +msgstr "该多边形的填充纹理。使用 [member uv] 设置纹理坐标。" + +msgid "" +"Amount to offset the polygon's [member texture]. If set to [code]Vector2(0, 0)" +"[/code], the texture's origin (its top-left corner) will be placed at the " +"polygon's position." +msgstr "" +"多边形的 [member texture] 纹理的偏移量。如果设置为 [code]Vector2(0, 0)[/" +"code],则纹理的原点(其左上角)将放置在该多边形的位置。" + msgid "The texture's rotation in radians." msgstr "纹理的旋转弧度。" +msgid "" +"Amount to multiply the [member uv] coordinates when using [member texture]. " +"Larger values make the texture smaller, and vice versa." +msgstr "" +"使用 [member texture] 时乘以 [member uv] 坐标的量。值越大,纹理越小,反之亦" +"然。" + +msgid "" +"Texture coordinates for each vertex of the polygon. There should be one UV " +"value per polygon vertex. If there are fewer, undefined vertices will use " +"[code]Vector2(0, 0)[/code]." +msgstr "" +"多边形每个顶点的纹理坐标。每个多边形顶点应该有一个 UV 值。如果数量少,则未定义" +"的顶点将使用 [code]Vector2(0, 0)[/code]。" + +msgid "" +"Color for each vertex. Colors are interpolated between vertices, resulting in " +"smooth gradients. There should be one per polygon vertex. If there are fewer, " +"undefined vertices will use [member color]." +msgstr "" +"每个顶点的颜色。颜色在顶点之间插值,从而产生平滑的渐变。每个多边形顶点应该有一" +"个。如果数量较少,则未定义的顶点将使用 [member color]。" + msgid "" "Flat 2D polygon shape for use with occlusion culling in [OccluderInstance3D]." msgstr "平面 2D 多边形形状,用于 [OccluderInstance3D] 的遮挡剔除。" @@ -80648,6 +90153,21 @@ msgstr "" "[code]-2^32[/code] 到 [code]2^32 - 1[/code],即 [code]-2147483648[/code] 到 " "[code]2147483647[/code]。" +msgid "" +"Checks the provided [param event] against the [PopupMenu]'s shortcuts and " +"accelerators, and activates the first item with matching events. If [param " +"for_global_only] is [code]true[/code], only shortcuts and accelerators with " +"[code]global[/code] set to [code]true[/code] will be called.\n" +"Returns [code]true[/code] if an item was successfully activated.\n" +"[b]Note:[/b] Certain [Control]s, such as [MenuButton], will call this method " +"automatically." +msgstr "" +"根据 [PopupMenu] 的快捷键和加速器检查提供的 [param event],并激活匹配事件的第" +"一个项目。如果 [param for_global_only] 为 [code]true[/code],则仅调用 " +"[code]global[/code] 被设置为 [code]true[/code] 的快捷键和加速器。\n" +"如果项目已成功激活,则返回 [code]true[/code]。\n" +"[b]注意:[/b]某些 [Control],例如 [MenuButton],会自动调用该方法。" + msgid "" "Adds a new checkable item with text [param label].\n" "An [param id] can optionally be provided, as well as an accelerator ([param " @@ -80740,6 +90260,19 @@ msgstr "与 [method add_icon_check_item] 相同,但使用单选按钮。" 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 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" +"If [param allow_echo] is [code]true[/code], the shortcut can be activated " +"with echo events." +msgstr "" +"添加新的菜单项,并为其分配指定的 [Shortcut] 和图标 [param texture]。复选框的标" +"签会被设为 [Shortcut] 的名称。\n" +"还可以提供 [param id]。如果没有提供 [param id],则会根据索引来创建。\n" +"如果 [param allow_echo] 为 [code]true[/code],则快捷键可以被回响事件激活。" + msgid "" "Adds a new item with text [param label].\n" "An [param id] can optionally be provided, as well as an accelerator ([param " @@ -80827,6 +90360,39 @@ msgstr "" "在菜单项之间添加分隔线。分隔线也占用索引,可以使用 [param id] 参数设置。\n" "还可以提供 [param label],会在分隔线的中间位置显示。" +msgid "" +"Adds a [Shortcut].\n" +"An [param id] can optionally be provided. If no [param id] is provided, one " +"will be created from the index.\n" +"If [param allow_echo] is [code]true[/code], the shortcut can be activated " +"with echo events." +msgstr "" +"添加 [Shortcut]。\n" +"还可以提供 [param id]。如果没有提供 [param id],则会根据索引来创建。\n" +"如果 [param allow_echo] 为 [code]true[/code],则快捷键可以被回响事件激活。" + +msgid "" +"Adds an item that will act as a submenu of the parent [PopupMenu] node when " +"clicked. The [param submenu] argument must be the name of an existing " +"[PopupMenu] that has been added as a child to this node. This submenu will be " +"shown when the item is clicked, hovered for long enough, or activated using " +"the [code]ui_select[/code] or [code]ui_right[/code] input actions.\n" +"An [param id] can optionally be provided. If no [param id] is provided, one " +"will be created from the index." +msgstr "" +"添加菜单项,点击时会作为父级 [PopupMenu] 节点的子菜单。[param submenu] 参数必" +"须是已作为子节点添加到此节点的现有 [PopupMenu] 的名称。当点击该项目、悬停足够" +"长的时间、或使用 [code]ui_select[/code] 或 [code]ui_right[/code] 输入操作激活" +"该子菜单时,将显示该子菜单。\n" +"还可以提供 [param id]。如果没有提供 [param id],则会根据索引来创建。" + +msgid "" +"Removes all items from the [PopupMenu]. If [param free_submenus] is " +"[code]true[/code], the submenu nodes are automatically freed." +msgstr "" +"移除 [PopupMenu] 中的所有项目。如果 [param free_submenus] 为 [code]true[/" +"code],则自动释放子菜单节点。" + msgid "" "Returns the index of the currently focused item. Returns [code]-1[/code] if " "no item is focused." @@ -81421,6 +90987,39 @@ msgstr "沿 Y 轴添加的边循环数。" msgid "Number of added edge loops along the X axis." msgstr "沿 X 轴添加的边循环数。" +msgid "A material that defines a simple sky for a [Sky] resource." +msgstr "一种材质,可为 [Sky] 资源定义简单天空。" + +msgid "" +"[ProceduralSkyMaterial] provides a way to create an effective background " +"quickly by defining procedural parameters for the sun, the sky and the " +"ground. The sky and ground are defined by a main color, a color at the " +"horizon, and an easing curve to interpolate between them. Suns are described " +"by a position in the sky, a color, and a max angle from the sun at which the " +"easing curve ends. The max angle therefore defines the size of the sun in the " +"sky.\n" +"[ProceduralSkyMaterial] supports up to 4 suns, using the color, and energy, " +"direction, and angular distance of the first four [DirectionalLight3D] nodes " +"in the scene. This means that the suns are defined individually by the " +"properties of their corresponding [DirectionalLight3D]s and globally by " +"[member sun_angle_max] and [member sun_curve].\n" +"[ProceduralSkyMaterial] uses a lightweight shader to draw the sky and is " +"therefore suited for real time updates. This makes it a great option for a " +"sky that is simple and computationally cheap, but unrealistic. If you need a " +"more realistic procedural option, use [PhysicalSkyMaterial]." +msgstr "" +"[ProceduralSkyMaterial] 提供了一种通过为太阳、天空、和地面定义程序参数,来快速" +"创建一个有效背景的方法。天空和地面由主颜色、地平线颜色、以及在它们之间插值的缓" +"动曲线定义。太阳通过天空中的位置、颜色、以及缓动曲线结束时距太阳的最大角度来描" +"述。因此,最大角度定义了天空中太阳的大小。\n" +"[ProceduralSkyMaterial] 支持最多 4 个太阳,它们使用场景中前四个 " +"[DirectionalLight3D] 节点的颜色、能量、方向、和角距离。这意味着太阳由其相应的 " +"[DirectionalLight3D] 的属性单独定义,并由 [member sun_angle_max] 和 [member " +"sun_curve] 全局定义。\n" +"[ProceduralSkyMaterial] 使用轻量级着色器来绘制天空,因此适合实时更新。这使得它" +"成为简单、低计算成本且不切实际的天空的绝佳选择。如果你需要更真实的程序化选项," +"请使用 [PhysicalSkyMaterial]。" + msgid "" "Color of the ground at the bottom. Blends with [member ground_horizon_color]." msgstr "地面底部的颜色。会与 [member ground_horizon_color] 混合。" @@ -82493,13 +92092,6 @@ msgstr "" "能不那么重要。\n" "仅在重新启动应用程序时才会应用此设置的更改。" -msgid "" -"Forces a delay between frames in the main loop (in milliseconds). This may be " -"useful if you plan to disable vertical synchronization." -msgstr "" -"强制主循环中帧之间的延迟(以毫秒为单位)。如果你计划禁用垂直同步,这可能很有" -"用。" - msgid "" "If [code]true[/code], enables low-processor usage mode. This setting only " "works on desktop platforms. The screen is not redrawn if nothing changes " @@ -82521,6 +92113,55 @@ msgstr "实现引擎主循环的类型名称。" msgid "Path to the main scene file that will be loaded when the project runs." msgstr "项目运行时将加载的主场景文件的路径。" +msgid "" +"Maximum number of frames per second allowed. A value of [code]0[/code] means " +"\"no limit\". The actual number of frames per second may still be below this " +"value if the CPU or GPU cannot keep up with the project logic and rendering.\n" +"Limiting the FPS can be useful to reduce system power consumption, which " +"reduces heat and noise emissions (and improves battery life on mobile " +"devices).\n" +"If [member display/window/vsync/vsync_mode] is set to [code]Enabled[/code] or " +"[code]Adaptive[/code], it takes precedence and the forced FPS number cannot " +"exceed the monitor's refresh rate.\n" +"If [member display/window/vsync/vsync_mode] is [code]Enabled[/code], on " +"monitors with variable refresh rate enabled (G-Sync/FreeSync), using a FPS " +"limit a few frames lower than the monitor's refresh rate will [url=https://" +"blurbusters.com/howto-low-lag-vsync-on/]reduce input lag while avoiding " +"tearing[/url].\n" +"If [member display/window/vsync/vsync_mode] is [code]Disabled[/code], " +"limiting the FPS to a high value that can be consistently reached on the " +"system can reduce input lag compared to an uncapped framerate. Since this " +"works by ensuring the GPU load is lower than 100%, this latency reduction is " +"only effective in GPU-bottlenecked scenarios, not CPU-bottlenecked " +"scenarios.\n" +"See also [member physics/common/physics_ticks_per_second].\n" +"This setting can be overridden using the [code]--max-fps [/code] command " +"line argument (including with a value of [code]0[/code] for unlimited " +"framerate).\n" +"[b]Note:[/b] This property is only read when the project starts. To change " +"the rendering FPS cap at runtime, set [member Engine.max_fps] instead." +msgstr "" +"每秒允许的最大帧数。[code]0[/code] 表示“不限制”。如果 CPU 或 GPU 无法满足项目" +"逻辑和渲染,则实际每秒的帧数可能仍然比这个值小。\n" +"限制 FPS 可以降低系统对电源的消耗,能够降低发热、减少噪音(延长移动设备的电池" +"寿命)。\n" +"[member display/window/vsync/vsync_mode] 为 [code]Enabled[/code] 或 " +"[code]Adaptive[/code] 时,该设置优先生效,强制的 FPS 数无法超过显示器的刷新" +"率。\n" +"[member display/window/vsync/vsync_mode] 为 [code]Enabled[/code] 时,在启用了" +"可变刷新率(G-Sync/FreeSync)的显示器上使用比显示器刷新率略低几帧的 FPS 限制会" +"[url=https://blurbusters.com/howto-low-lag-vsync-on/]降低输入延迟,避免画面撕" +"裂[/url]。\n" +"[member display/window/vsync/vsync_mode] 为 [code]Disabled[/code] 时,与不限制" +"帧率相比,将 FPS 限制设为系统所能达到的较高值能够降低输入延迟。因为原理是确保 " +"GPU 负载低于 100%,所以只有在 GPU 为瓶颈时才会降低延迟,无法缓解 CPU 瓶颈导致" +"的延迟。\n" +"另见 [member physics/common/physics_ticks_per_second]。\n" +"这个设置可以使用 [code]--max-fps [/code] 命令行参数覆盖(设为 [code]0[/" +"code] 则是不限制帧率)。\n" +"[b]注意:[/b]这个属性仅在项目启动时读取。要在运行时修改渲染 FPS 上限,请改为设" +"置 [member Engine.max_fps]。" + msgid "" "Audio buses will disable automatically when sound goes below a given dB " "threshold for a given time. This saves CPU as effects assigned to that bus " @@ -82649,6 +92290,30 @@ msgstr "" "[code]0.5[/code] 的默认值是针对耳机进行调谐的。当使用扬声器时,可能会发现较低" "的值效果更好,因为与耳机相比,扬声器的立体声分离度较低。" +msgid "" +"Sets the [url=https://developer.apple.com/documentation/avfaudio/" +"avaudiosession/categoryoptions/1616611-mixwithothers]mixWithOthers[/url] " +"option for the AVAudioSession on iOS. This will override the mix behavior, if " +"the category is set to [code]Play and Record[/code], [code]Playback[/code], " +"or [code]Multi Route[/code].\n" +"[code]Ambient[/code] always has this set per default." +msgstr "" +"设置 iOS 的 AVAudioSession 的 [url=https://developer.apple.com/documentation/" +"avfaudio/avaudiosession/categoryoptions/1616611-mixwithothers]mixWithOthers[/" +"url] 选项。当类别为 [code]Play and Record[/code]、[code]Playback[/code]、" +"[code]Multi Route[/code] 时会覆盖混音行为。\n" +"[code]Ambient[/code] 默认会设置这个选项。" + +msgid "" +"Sets the [url=https://developer.apple.com/documentation/avfaudio/" +"avaudiosessioncategory]AVAudioSessionCategory[/url] on iOS. Use the " +"[code]Playback[/code] category to get sound output, even if the phone is in " +"silent mode." +msgstr "" +"设置 iOS 的 [url=https://developer.apple.com/documentation/avfaudio/" +"avaudiosessioncategory]AVAudioSessionCategory[/url]。如果需要让手机在静音模式" +"时也进行声音输出,请使用 [code]Playback[/code] 类别。" + msgid "" "If [code]true[/code], text-to-speech support is enabled, see [method " "DisplayServer.tts_get_voices] and [method DisplayServer.tts_speak].\n" @@ -82720,6 +92385,17 @@ msgstr "" "使用 Zstandard 的长距离匹配进行压缩时,允许的最大大小限制(2 的幂)。更高的值" "可以产生更好的压缩,但是在压缩和解压缩时需要更多的内存。" +msgid "" +"If canvas item redraw debugging is active, this color will be flashed on " +"canvas items when they redraw." +msgstr "如果画布项重绘调试处于活动状态,则画布项重绘时会使用这个颜色进行闪光。" + +msgid "" +"If canvas item redraw debugging is active, this will be the time the flash " +"will last each time they redraw." +msgstr "" +"如果画布项重绘调试处于活动状态,则这个选项表示画布项每次重绘时闪光的持续时间。" + msgid "If [code]true[/code], logs all output to files." msgstr "如果为 [code]true[/code],将所有输出记录到文件中。" @@ -82760,6 +92436,22 @@ 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 identifier declared in the nested block has the " +"same name as an identifier declared below in the parent block." +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 identifier that will be shadowed below in the " +"block is 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 constant is used as a function." @@ -82831,6 +92523,23 @@ msgstr "" "[Variant] 作为初始值时,这使得静态类型也成为 Variant,会分别产生一个警告或一个" "错误。" +msgid "" +"When set to [code]warn[/code] or [code]error[/code], produces a warning or an " +"error respectively when a variable, constant, or parameter has an implicitly " +"inferred static type.\n" +"[b]Note:[/b] This warning is recommended [i]in addition[/i] to [member debug/" +"gdscript/warnings/untyped_declaration] if you want to always specify the type " +"explicitly. Having [code]INFERRED_DECLARATION[/code] warning level higher " +"than [code]UNTYPED_DECLARATION[/code] warning level makes little sense and is " +"not recommended." +msgstr "" +"设置为 [code]warn[/code] 或 [code]error[/code] 时,当变量、常量、或参数具有隐" +"式推断的静态类型时,分别产生警告或错误。\n" +"[b]注意:[/b]如果你希望始终显式指定类型,则推荐该警告,[i]除了[/i] [member " +"debug/gdscript/warnings/untyped_declaration]。使 [code]INFERRED_DECLARATION[/" +"code] 警告级别高于 [code]UNTYPED_DECLARATION[/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 without an " @@ -83044,6 +92753,18 @@ msgstr "" "返回一个调用,且无法保证该调用也是 [code]void[/code] 时,会分别产生一个警告或" "一个错误。" +msgid "" +"When set to [code]warn[/code] or [code]error[/code], produces a warning or an " +"error respectively when a variable or parameter has no static type, or if a " +"function has no static return type.\n" +"[b]Note:[/b] This warning is recommended together with [member EditorSettings." +"text_editor/completion/add_type_hints] to help achieve type safety." +msgstr "" +"设置为 [code]warn[/code] 或 [code]error[/code] 时,当变量或参数没有静态类型," +"或函数没有静态返回类型时,会分别产生一个警告或一个错误。\n" +"[b]注意:[/b]建议将该警告与 [member EditorSettings.text_editor/completion/" +"add_type_hints] 一起使用,以帮助实现类型安全。" + 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." @@ -83619,6 +93340,21 @@ msgstr "" "[member display/window/size/viewport_height]。在 iOS、Android 和 Web 上会忽略" "这个设置。" +msgid "" +"On desktop platforms, overrides the game's initial window width. See also " +"[member display/window/size/window_height_override], [member display/window/" +"size/viewport_width] and [member display/window/size/viewport_height].\n" +"[b]Note:[/b] By default, or when set to [code]0[/code], the initial window " +"width is the [member display/window/size/viewport_width]. This setting is " +"ignored on iOS, Android, and Web." +msgstr "" +"在桌面平台上,覆盖游戏的初始窗口宽度。另见 [member display/window/size/" +"window_height_override]、[member display/window/size/viewport_width] 和 " +"[member display/window/size/viewport_height]。\n" +"[b]注意:[/b]默认情况下,或者当设置为 [code]0[/code] 时,初始窗口宽度为 " +"[member display/window/size/viewport_width]。在 iOS、Android 和 Web 上会忽略该" +"设置。" + msgid "" "Defines how the base size is stretched to fit the resolution of the window or " "screen.\n" @@ -83662,6 +93398,31 @@ msgstr "" "定的最终缩放系数相乘。如果使用的是 [b]Disabled[/b] 拉伸模式,那么这个缩放系数" "是原样使用的。可以通过调节这个数值来让 UI 则某些屏幕上更易于阅读。" +msgid "" +"The policy to use to determine the final scale factor for 2D elements. This " +"affects how [member display/window/stretch/scale] is applied, in addition to " +"the automatic scale factor determined by [member display/window/stretch/" +"mode].\n" +"[b]\"fractional\"[/b]: The scale factor will not be modified.\n" +"[b]\"integer\"[/b]: The scale factor will be floored to an integer value, " +"which means that the screen size will always be an integer multiple of the " +"base viewport size. This provides a crisp pixel art appearance.\n" +"[b]Note:[/b] When using integer scaling with a stretch mode, resizing the " +"window to be smaller than the base viewport size will clip the contents. " +"Consider preventing that by setting [member Window.min_size] to the same " +"value as the base viewport size defined in [member display/window/size/" +"viewport_width] and [member display/window/size/viewport_height]." +msgstr "" +"决定 2D 元素最终缩放系数的策略。会影响 [member display/window/stretch/scale] " +"的使用,与 [member display/window/stretch/mode] 决定的自动缩放系数共同生效。\n" +"[b]\"fractional\"[/b]:小数。不改变缩放系数。\n" +"[b]\"integer\"[/b]:整数。将缩放系数向下取整,屏幕大小始终为基础视口大小的整数" +"倍。能够显示锐利的像素风画面。\n" +"[b]注意:[/b]使用整数缩放并设置拉伸模式时,将窗口大小调整得比基础视口大小更小" +"会将内容进行裁剪。请考虑将 [member Window.min_size] 设为与 [member display/" +"window/size/viewport_width] 和 [member display/window/size/viewport_height] 定" +"义的基础视口大小一致,避免这种情况的发生。" + msgid "If [code]true[/code] subwindows are embedded in the main window." msgstr "如果为 [code]true[/code] 则子窗口是嵌入到主窗口中的。" @@ -83697,6 +93458,14 @@ msgstr "" "文件的名称。默认情况下,它被设置为项目的名称([member application/config/" "name]),这样将来进行修改时就不会影响 .NET 程序集。" +msgid "" +"Number of times to attempt assembly reloading after rebuilding .NET " +"assemblies. Effectively also the timeout in seconds to wait for unloading of " +"script assemblies to finish." +msgstr "" +"重新构建 .NET 程序集后尝试重新加载程序集的次数。实际也是等待脚本程序集卸载完成" +"的超时秒数。" + msgid "" "Directory that contains the [code].sln[/code] file. By default, the [code]." "sln[/code] files is in the root of the project directory, next to the " @@ -84898,6 +94667,18 @@ msgstr "" msgid "Override for [member input_devices/pen_tablet/driver] on Windows." msgstr "[member input_devices/pen_tablet/driver] 针对 Windows 的覆盖项。" +msgid "" +"If [code]true[/code], long press events on an Android touchscreen are " +"transformed into right click events." +msgstr "" +"如果为 [code]true[/code],则在 Android 触摸屏上的长按事件会被转换为右键单击事" +"件。" + +msgid "" +"If [code]true[/code], multi-touch pan and scale gestures are enabled on " +"Android devices." +msgstr "如果为 [code]true[/code],则会在 Android 设备上启用多点平移和缩放手势。" + msgid "" "If [code]true[/code], sends mouse input events when tapping or swiping on the " "touchscreen." @@ -86611,6 +96392,31 @@ msgstr "" "[b]注意:[/b]这个属性只在项目启动时读取。要在运行时改变每帧模拟的最大物理步骤" "数,请改为设置 [member Engine.max_physics_steps_per_frame]。" +msgid "" +"Controls how much physics ticks are synchronized with real time. For 0 or " +"less, the ticks are synchronized. Such values are recommended for network " +"games, where clock synchronization matters. Higher values cause higher " +"deviation of in-game clock and real clock, but allows smoothing out framerate " +"jitters. The default value of 0.5 should be fine for most; values above 2 " +"could cause the game to react to dropped frames with a noticeable delay and " +"are not recommended.\n" +"[b]Note:[/b] For best results, when using a custom physics interpolation " +"solution, the physics jitter fix should be disabled by setting [member " +"physics/common/physics_jitter_fix] to [code]0[/code].\n" +"[b]Note:[/b] This property is only read when the project starts. To change " +"the physics jitter fix at runtime, set [member Engine.physics_jitter_fix] " +"instead." +msgstr "" +"控制物理周期与真实时间的同步程度。小于等于 0 时,周期是同步的。对时钟同步有要" +"求的网络游戏建议使用此类值。较高的值会导致游戏内时钟和真实时钟的较大偏差,但可" +"以平滑帧率抖动。大多数情况下,默认值 0.5 应该没问题;大于 2 的值可能导致游戏对" +"丢帧作出明显延迟的反应,因此不推荐使用。\n" +"[b]注意:[/b]为了获得最佳的结果,使用自定义物理插值解决方案时,应通过将 " +"[member physics/common/physics_jitter_fix] 设置为 [code]0[/code] 来禁用物理抖" +"动修复。\n" +"[b]注意:[/b]该属性仅在项目启动时读取。 要在运行时更改物理抖动修复,请改为设" +"置 [member Engine.physics_jitter_fix]。" + msgid "" "The number of fixed iterations per second. This controls how often physics " "simulation and [method Node._physics_process] methods are run. See also " @@ -87176,6 +96982,48 @@ msgstr "[member rendering/gl_compatibility/driver] 在 Web 的覆盖项。" msgid "Windows override for [member rendering/gl_compatibility/driver]." msgstr "[member rendering/gl_compatibility/driver] 在 Windows 的覆盖项。" +msgid "" +"If [code]true[/code], the compatibility renderer will fall back to ANGLE if " +"native OpenGL is not supported or the device is listed in [member rendering/" +"gl_compatibility/force_angle_on_devices].\n" +"[b]Note:[/b] This setting is implemented only on Windows." +msgstr "" +"为 [code]true[/code] 时,如果原生 OpenGL 不受支持或设备被列在 [member " +"rendering/gl_compatibility/force_angle_on_devices] 中,则兼容性渲染器将回退到 " +"ANGLE。\n" +"[b]注意:[/b]该设置仅在 Windows 上实现。" + +msgid "" +"If [code]true[/code], the compatibility renderer will fall back to OpenGLES " +"if desktop OpenGL is not supported.\n" +"[b]Note:[/b] This setting is implemented only on Linux/X11." +msgstr "" +"为 [code]true[/code] 时,如果桌面 OpenGL 不被支持,则兼容性渲染器将回退到 " +"OpenGLES。\n" +"[b]注意:[/b]该设置仅在 Linux/X11 上实现。" + +msgid "" +"If [code]true[/code], the compatibility renderer will fall back to native " +"OpenGL if ANGLE over Metal is not supported.\n" +"[b]Note:[/b] This setting is implemented only on macOS." +msgstr "" +"如果为 [code]true[/code],如果 ANGLE 乃至 Metal 不被支持,则兼容性渲染器将回退" +"到原生 OpenGL。\n" +"[b]注意:[/b]该设置仅在 macOS 上实现。" + +msgid "" +"An [Array] of devices which should always use the ANGLE renderer.\n" +"Each entry is a [Dictionary] with the following keys: [code]vendor[/code] and " +"[code]name[/code]. [code]name[/code] can be set to [code]*[/code] to add all " +"devices with the specified [code]vendor[/code].\n" +"[b]Note:[/b] This setting is implemented only on Windows." +msgstr "" +"应始终使用 ANGLE 渲染器的设备的 [Array]。\n" +"每个条目都是一个带有以下键的 [Dictionary]:[code]vendor[/code] 和 [code]name[/" +"code]。[code]name[/code] 可以被设置为 [code]*[/code] 以添加所有带有指定 " +"[code]vendor[/code] 的设备。\n" +"[b]注意:[/b]该设置仅在 Windows 上实现。" + msgid "" "Maximum number of canvas items commands that can be drawn in a single " "viewport update. If more render commands are issued they will be ignored. " @@ -87377,6 +97225,38 @@ msgstr "" "当 [member LightmapGI.quality] 为 [constant LightmapGI.BAKE_QUALITY_ULTRA] " "时,用于使用 [LightmapGI] 烘焙光照贴图的光线数。" +msgid "" +"Denoiser tool used for denoising lightmaps.\n" +"Using [url=https://www.openimagedenoise.org/]OpenImageDenoise[/url] (OIDN) " +"requires configuring a path to an OIDN executable in the editor settings at " +"[member EditorSettings.filesystem/tools/oidn/oidn_denoise_path]. OIDN can be " +"downloaded from [url=https://www.openimagedenoise.org/downloads." +"html]OpenImageDenoise's downloads page[/url].\n" +"OIDN will use GPU acceleration when available. Unlike JNLM which uses compute " +"shaders for acceleration, OIDN uses vendor-specific acceleration methods. For " +"GPU acceleration to be available, the following libraries must be installed " +"on the system depending on your GPU:\n" +"- NVIDIA GPUs: CUDA libraries\n" +"- AMD GPUs: HIP libraries\n" +"- Intel GPUs: SYCL libraries\n" +"If no GPU acceleration is configured on the system, multi-threaded CPU-based " +"denoising will be performed instead. This CPU-based denoising is " +"significantly slower than the JNLM denoiser in most cases." +msgstr "" +"用于对光照贴图进行降噪的降噪器工具。\n" +"使用 [url=https://www.openimagedenoise.org/]OpenImageDenoise[/url](OIDN)需要" +"在 [member EditorSettings.filesystem/tools/oidn/oidn_denoise_path] 的编辑器设" +"置中配置 OIDN 可执行文件的路径。OIDN 可以从 [url=https://www.openimagedenoise." +"org/downloads.html]OpenImageDenoise 的下载页面[/url]下载。\n" +"OIDN 将在可用时使用 GPU 加速。与使用计算着色器进行加速的 JNLM 不同,OIDN 使用" +"特定于供应商的加速方法。要使 GPU 加速可用,必须根据你的 GPU 在系统上安装以下" +"库:\n" +"- NVIDIA GPU:CUDA 库\n" +"- AMD GPU:HIP 库\n" +"- Intel GPU:SYCL 库\n" +"如果系统上没有配置 GPU 加速,则会执行基于 CPU 的多线程去噪。在大多数情况下,这" +"种基于 CPU 的降噪明显慢于 JNLM 降噪器。" + msgid "" "The texel_size that is used to calculate the [member Mesh.lightmap_size_hint] " "on [PrimitiveMesh] resources if [member PrimitiveMesh.add_uv2] is enabled." @@ -87963,6 +97843,35 @@ msgstr "" "不实用,因此在 2D 中只有在它产生有意义的视觉差异时才对纹理启用它。\n" "[b]注意:[/b]只有在项目启动时该属性才会被读取。目前无法在运行时更改该设置。" +msgid "" +"Affects the final texture sharpness by reading from a lower or higher mipmap " +"(also called \"texture LOD bias\"). Negative values make mipmapped textures " +"sharper but grainier when viewed at a distance, while positive values make " +"mipmapped textures blurrier (even when up close).\n" +"Enabling temporal antialiasing ([member rendering/anti_aliasing/quality/" +"use_taa]) will automatically apply a [code]-0.5[/code] offset to this value, " +"while enabling FXAA ([member rendering/anti_aliasing/quality/" +"screen_space_aa]) will automatically apply a [code]-0.25[/code] offset to " +"this value. If both TAA and FXAA are enabled at the same time, an offset of " +"[code]-0.75[/code] is applied to this value.\n" +"[b]Note:[/b] If [member rendering/scaling_3d/scale] is lower than [code]1.0[/" +"code] (exclusive), [member rendering/textures/default_filters/" +"texture_mipmap_bias] is used to adjust the automatic mipmap bias which is " +"calculated internally based on the scale factor. The formula for this is " +"[code]log2(scaling_3d_scale) + mipmap_bias[/code]." +msgstr "" +"通过从更低或更高的 mipmap 中读取数据影响最终纹理的锐度(也叫“纹理 LOD 偏" +"置”)。负值会让 mipmap 纹理更锐利,但从较远处观察时颗粒更明显,而正值会让 " +"mipmap 纹理更模糊(即便凑近看也一样)。\n" +"启用时间抗锯齿([member rendering/anti_aliasing/quality/use_taa])会对这个值应" +"用 [code]-0.5[/code] 的偏移量,而启用 FXAA([member rendering/anti_aliasing/" +"quality/screen_space_aa])则会对这个值应用 [code]-0.25[/code] 的偏移量。如果同" +"时启用 TAA 和 FXAA,则会对这个值应用 [code]-0.75[/code] 的偏移量。\n" +"[b]注意:[/b]如果 [member rendering/scaling_3d/scale] 比 [code]1.0[/code] 小" +"(包含),则会使用 [member rendering/textures/default_filters/" +"texture_mipmap_bias] 自动调整 mipmap 偏置,内部会根据缩放系数进行计算。公式为 " +"[code]log2(scaling_3d_scale) + mipmap_bias[/code]。" + msgid "" "If [code]true[/code], uses nearest-neighbor mipmap filtering when using " "mipmaps (also called \"bilinear filtering\"), which will result in visible " @@ -88145,10 +98054,29 @@ msgstr "" "指定 OpenXR 应如何混合环境。针对的是部分 AR 和穿透设备,XR 合成器会混合相机图" "像。" +msgid "" +"Specify whether to enable eye tracking for this project. Depending on the " +"platform, additional export configuration may be needed." +msgstr "指定是否为该项目启用眼动追踪。根据平台的不同,可能需要额外的导出配置。" + +msgid "If true we enable the hand tracking extension if available." +msgstr "如果为 true,则将启用手部跟踪扩展(如果可用)。" + msgid "" "Specify whether OpenXR should be configured for an HMD or a hand held device." msgstr "指定是否应为 HMD 或手持设备配置 OpenXR。" +msgid "" +"If true and foveation is supported, will automatically adjust foveation level " +"based on framerate up to the level set on [member xr/openxr/foveation_level]." +msgstr "" +"如果为 true 并且支持注视点,将根据帧速率自动调整注视点级别,直至达到 [member " +"xr/openxr/foveation_level] 上设置的级别。" + +msgid "" +"Applied foveation level if supported: 0 = off, 1 = low, 2 = medium, 3 = high." +msgstr "应用的注视点级别(如果支持):0 = 关闭、1 = 低、2 = 中、3 = 高。" + msgid "Specify the default reference space." msgstr "指定默认参照空间。" @@ -88420,6 +98348,17 @@ msgstr "" "在四元数 [param pre_a]、这个向量、[param b] 以及 [param post_b] 之间按照给定" "的 [param weight] 进行球面三次插值。" +msgid "" +"Performs a spherical cubic interpolation between quaternions [param pre_a], " +"this vector, [param b], and [param post_b], by the given amount [param " +"weight].\n" +"It can perform smoother interpolation than [method " +"spherical_cubic_interpolate] by the time values." +msgstr "" +"在四元数 [param pre_a]、该向量、[param b] 和 [param post_b] 之间,按给定量 " +"[param weight] 执行三次球面插值。\n" +"它可以根据时间值执行比 [method spherical_cubic_interpolate] 更平滑的插值。" + msgid "" "W component of the quaternion (real part).\n" "Quaternion components should usually not be manipulated directly." @@ -88595,6 +98534,14 @@ msgid "" msgstr "" "返回在 [param from] 和 [param to] 之间(含端点)的伪随机 32 位无符号整数。" +msgid "" +"Sets up a time-based seed for this [RandomNumberGenerator] instance. Unlike " +"the [@GlobalScope] random number generation functions, different " +"[RandomNumberGenerator] instances can use different seeds." +msgstr "" +"为这个 [RandomNumberGenerator] 实例设置基于时间的种子。与 [@GlobalScope] 随机" +"数生成函数不同,不同的 [RandomNumberGenerator] 实例可以使用不同的种子。" + msgid "" "Initializes the random number generator state based on the given seed value. " "A given seed will give a reproducible sequence of pseudo-random numbers.\n" @@ -88957,6 +98904,14 @@ msgid "" "specified [CollisionObject3D] node." msgstr "添加碰撞例外,这样射线就不会报告与指定 [CollisionObject3D] 节点的碰撞。" +msgid "" +"Returns the collision object's face index at the collision point, or " +"[code]-1[/code] if the shape intersecting the ray is not a " +"[ConcavePolygonShape3D]." +msgstr "" +"返回碰撞点处碰撞对象的面索引,如果与射线相交的形状不是 " +"[ConcavePolygonShape3D],则返回 [code]-1[/code]。" + msgid "" "Returns the normal of the intersecting object's shape at the collision point, " "or [code]Vector3(0, 0, 0)[/code] if the ray starts inside the shape and " @@ -89006,6 +98961,13 @@ msgid "" "immediate parent." msgstr "如果为 [code]true[/code],则该 RayCast3D 的直接父级的碰撞将被忽略。" +msgid "" +"If [code]true[/code], the ray will hit back faces with concave polygon shapes " +"with back face enabled or heightmap shapes." +msgstr "" +"如果为 [code]true[/code],射线将命中背部面,这些背部面是启用了背面的凹多边形形" +"状,或高度图形状。" + msgid "" "If [code]true[/code], the ray will detect a hit when starting inside shapes. " "In this case the collision normal will be [code]Vector3(0, 0, 0)[/code]. Does " @@ -89668,6 +99630,23 @@ msgid "" msgstr "" "SPIR-V 中间表示,是 [RDShaderFile] 的一部分(由 [RenderingDevice] 使用)。" +msgid "" +"[RDShaderSPIRV] represents a [RDShaderFile]'s [url=https://www.khronos.org/" +"spir/]SPIR-V[/url] code for various shader stages, as well as possible " +"compilation error messages. SPIR-V is a low-level intermediate shader " +"representation. This intermediate representation is not used directly by GPUs " +"for rendering, but it can be compiled into binary shaders that GPUs can " +"understand. Unlike compiled shaders, SPIR-V is portable across GPU models and " +"driver versions.\n" +"This object is used by [RenderingDevice]." +msgstr "" +"[RDShaderSPIRV] 代表 [RDShaderFile] 不同着色器阶段的 [url=https://www.khronos." +"org/spir/]SPIR-V[/url] 代码,以及可能的编译错误消息。SPIR-V 是一种低阶着色器中" +"间表示。这种中间表示无法直接用于 GPU 渲染,但可以被编译为 GPU 能够理解的二进制" +"着色器。与编译后的着色器不同,SPIR-V 可以在不同 GPU 型号以及驱动版本之间移" +"植。\n" +"这个对象由 [RenderingDevice] 使用。" + msgid "" "Equivalent to getting one of [member bytecode_compute], [member " "bytecode_fragment], [member bytecode_tesselation_control], [member " @@ -89837,6 +99816,32 @@ msgstr "顶点属性(由 [RenderingDevice] 使用)。" msgid "A 2D axis-aligned bounding box using floating-point coordinates." msgstr "使用浮点数坐标的 2D 轴对齐边界框。" +msgid "" +"The [Rect2] built-in [Variant] type represents an axis-aligned rectangle in a " +"2D space. It is defined by its [member position] and [member size], which are " +"[Vector2]. It is frequently used for fast overlap tests (see [method " +"intersects]). Although [Rect2] itself is axis-aligned, it can be combined " +"with [Transform2D] to represent a rotated or skewed rectangle.\n" +"For integer coordinates, use [Rect2i]. The 3D equivalent to [Rect2] is " +"[AABB].\n" +"[b]Note:[/b] Negative values for [member size] are not supported. With " +"negative size, most [Rect2] methods do not work correctly. Use [method abs] " +"to get an equivalent [Rect2] with a non-negative size.\n" +"[b]Note:[/b] In a boolean context, a [Rect2] evaluates to [code]false[/code] " +"if both [member position] and [member size] are zero (equal to [constant " +"Vector2.ZERO]). Otherwise, it always evaluates to [code]true[/code]." +msgstr "" +"[Rect2] 内置 [Variant] 类型表示 2D 空间中的轴对齐矩形。它由其 [member " +"position] 和 [member size] 定义,皆为 [Vector2] 类型。它经常被用于快速重叠测试" +"(参见 [method intersects])。虽然 [Rect2] 本身是轴对齐的,但它可以与 " +"[Transform2D] 组合来表示旋转或倾斜的矩形。\n" +"对于整数坐标,请使用 [Rect2i]。[Rect2] 的 3D 等效体是 [AABB]。\n" +"[b]注意:[/b]不支持负的 [member size]。对于负大小,大多数 [Rect2] 方法都无法正" +"常工作。使用 [method abs] 获取具有非负大小的等效 [Rect2]。\n" +"[b]注意:[/b]在布尔上下文中,如果 [member position] 和 [member size] 均为零" +"(等于 [constant Vector2.ZERO]),则 [Rect2] 的计算结果为 [code]false[/code]。" +"否则,它的计算结果始终为 [code]true[/code]。" + msgid "" "Constructs a [Rect2] with its [member position] and [member size] set to " "[constant Vector2.ZERO]." @@ -89860,9 +99865,311 @@ msgstr "" "构造 [Rect2],将 [member position] 设置为 ([param x], [param y]),将 [member " "size] 设置为 ([param width], [param height])。" +msgid "" +"Returns a [Rect2] equivalent to this rectangle, with its width and height " +"modified to be non-negative values, and with its [member position] being the " +"top-left corner of the rectangle.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var rect = Rect2(25, 25, -100, -50)\n" +"var absolute = rect.abs() # absolute is Rect2(-75, -25, 100, 50)\n" +"[/gdscript]\n" +"[csharp]\n" +"var rect = new Rect2(25, 25, -100, -50);\n" +"var absolute = rect.Abs(); // absolute is Rect2(-75, -25, 100, 50)\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Note:[/b] It's recommended to use this method when [member size] is " +"negative, as most other methods in Godot assume that the [member position] is " +"the top-left corner, and the [member end] is the bottom-right corner." +msgstr "" +"返回一个与该矩形等效的 [Rect2],其宽度和高度被修改为非负值,其 [member " +"position] 为矩形的左上角。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var rect = Rect2(25, 25, -100, -50)\n" +"var absolute = rect.abs() # 绝对值为 Rect2(-75, -25, 100, 50)\n" +"[/gdscript]\n" +"[csharp]\n" +"var rect = new Rect2(25, 25, -100, -50);\n" +"var absolute = rect.Abs(); // 绝对值为 Rect2(-75, -25, 100, 50)\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]注意:[/b]当 [member size] 为负时,建议使用该方法,因为 Godot 中的大多数其" +"他方法都假设 [member position] 是左上角,[member end] 是右下角。" + +msgid "" +"Returns [code]true[/code] if this rectangle [i]completely[/i] encloses the " +"[param b] rectangle." +msgstr "如果该矩形[i]完全[/i]包含 [param b] 矩形,则返回 [code]true[/code]。" + +msgid "" +"Returns a copy of this rectangle expanded to align the edges with the given " +"[param to] point, if necessary.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var rect = Rect2(0, 0, 5, 2)\n" +"\n" +"rect = rect.expand(Vector2(10, 0)) # rect is Rect2(0, 0, 10, 2)\n" +"rect = rect.expand(Vector2(-5, 5)) # rect is Rect2(-5, 0, 10, 5)\n" +"[/gdscript]\n" +"[csharp]\n" +"var rect = new Rect2(0, 0, 5, 2);\n" +"\n" +"rect = rect.Expand(new Vector2(10, 0)); // rect is Rect2(0, 0, 10, 2)\n" +"rect = rect.Expand(new Vector2(-5, 5)); // rect is Rect2(-5, 0, 10, 5)\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回该矩形的副本,如有必要,该矩形被扩展为将边缘与给定的 [param to] 点对齐。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var rect = Rect2(0, 0, 5, 2)\n" +"\n" +"rect = rect.expand(Vector2(10, 0)) # rect 为 Rect2(0, 0, 10, 2)\n" +"rect = rect.expand(Vector2(-5, 5)) # rect 为 Rect2(-5, 0, 10, 5)\n" +"[/gdscript]\n" +"[csharp]\n" +"var rect = new Rect2(0, 0, 5, 2);\n" +"\n" +"rect = rect.Expand(new Vector2(10, 0)); // rect 为 Rect2(0, 0, 10, 2)\n" +"rect = rect.Expand(new Vector2(-5, 5)); // rect 为 Rect2(-5, 0, 10, 5)\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Returns the rectangle's area. This is equivalent to [code]size.x * size.y[/" +"code]. See also [method has_area]." +msgstr "" +"返回该矩形的面积。这相当于 [code]size.x * size.y[/code]。另请参阅 [method " +"has_area]。" + +msgid "" +"Returns the center point of the rectangle. This is the same as [code]position " +"+ (size / 2.0)[/code]." +msgstr "返回该矩形的中心点。这与 [code]position + (size / 2.0)[/code] 相同。" + +msgid "" +"Returns a copy of this rectangle extended on all sides by the given [param " +"amount]. A negative [param amount] shrinks the rectangle instead. See also " +"[method grow_individual] and [method grow_side].\n" +"[codeblocks]\n" +"[gdscript]\n" +"var a = Rect2(4, 4, 8, 8).grow(4) # a is Rect2(0, 0, 16, 16)\n" +"var b = Rect2(0, 0, 8, 4).grow(2) # b is Rect2(-2, -2, 12, 8)\n" +"[/gdscript]\n" +"[csharp]\n" +"var a = new Rect2(4, 4, 8, 8).Grow(4); // a is Rect2(0, 0, 16, 16)\n" +"var b = new Rect2(0, 0, 8, 4).Grow(2); // b is Rect2(-2, -2, 12, 8)\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回该矩形的副本,该矩形在所有边上扩展给定的 [param amount]。负的 [param " +"amount] 会缩小该矩形。另见 [method grow_individual] and [method grow_side]。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var a = Rect2(4, 4, 8, 8).grow(4) # a 为 Rect2(0, 0, 16, 16)\n" +"var b = Rect2(0, 0, 8, 4).grow(2) # b 为 Rect2(-2, -2, 12, 8)\n" +"[/gdscript]\n" +"[csharp]\n" +"var a = new Rect2(4, 4, 8, 8).Grow(4); // a 为 Rect2(0, 0, 16, 16)\n" +"var b = new Rect2(0, 0, 8, 4).Grow(2); // b 为 Rect2(-2, -2, 12, 8)\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Returns a copy of this rectangle with its [param left], [param top], [param " +"right], and [param bottom] sides extended by the given amounts. Negative " +"values shrink the sides, instead. See also [method grow] and [method " +"grow_side]." +msgstr "" +"返回该矩形的副本,其 [param left]、[param top]、[param right]、和 [param " +"bottom] 边扩展了给定的量。相反,负值会缩小边。另见 [method grow] and [method " +"grow_side]。" + +msgid "" +"Returns a copy of this rectangle with its [param side] extended by the given " +"[param amount] (see [enum Side] constants). A negative [param amount] shrinks " +"the rectangle, instead. See also [method grow] and [method grow_individual]." +msgstr "" +"返回该矩形的副本,其 [param side] 按给定的 [param amount] 扩展(请参阅 [enum " +"Side] 常量)。相反,负的 [param amount] 会缩小该矩形。另见 [method grow] 和 " +"[method grow_individual]。" + +msgid "" +"Returns [code]true[/code] if this rectangle has positive width and height. " +"See also [method get_area]." +msgstr "" +"如果该矩形具有正的宽度和高度,则返回 [code]true[/code]。另见 [method " +"get_area]。" + +msgid "" +"Returns [code]true[/code] if the rectangle contains the given [param point]. " +"By convention, points on the right and bottom edges are [b]not[/b] included.\n" +"[b]Note:[/b] This method is not reliable for [Rect2] with a [i]negative[/i] " +"[member size]. Use [method abs] first to get a valid rectangle." +msgstr "" +"如果该矩形包含给定的 [param point],则返回 [code]true[/code]。依照惯例,[b]不" +"[/b]包括右侧和底部边缘上的点。\n" +"[b]注意:[/b]对于[i]大小为负[/i]的 [Rect2],该方法并不可靠。请首先使用 " +"[method abs] 获取一个有效的矩形。" + +msgid "" +"Returns the intersection between this rectangle and [param b]. If the " +"rectangles do not intersect, returns an empty [Rect2].\n" +"[codeblocks]\n" +"[gdscript]\n" +"var rect1 = Rect2(0, 0, 5, 10)\n" +"var rect2 = Rect2(2, 0, 8, 4)\n" +"\n" +"var a = rect1.intersection(rect2) # a is Rect2(2, 0, 3, 4)\n" +"[/gdscript]\n" +"[csharp]\n" +"var rect1 = new Rect2(0, 0, 5, 10);\n" +"var rect2 = new Rect2(2, 0, 8, 4);\n" +"\n" +"var a = rect1.Intersection(rect2); // a is Rect2(2, 0, 3, 4)\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Note:[/b] If you only need to know whether two rectangles are overlapping, " +"use [method intersects], instead." +msgstr "" +"返回该矩形与 [param b] 之间的交集。如果该矩形不相交,则返回空的 [Rect2]。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var rect1 = Rect2(0, 0, 5, 10)\n" +"var rect2 = Rect2(2, 0, 8, 4)\n" +"\n" +"var a = rect1.intersection(rect2) # a 为 Rect2(2, 0, 3, 4)\n" +"[/gdscript]\n" +"[csharp]\n" +"var rect1 = new Rect2(0, 0, 5, 10);\n" +"var rect2 = new Rect2(2, 0, 8, 4);\n" +"\n" +"var a = rect1.Intersection(rect2); // a 为 Rect2(2, 0, 3, 4)\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]注意:[/b]如果你只需要知道两个矩形是否重叠,请改用 [method intersects]。" + +msgid "" +"Returns [code]true[/code] if this rectangle overlaps with the [param b] " +"rectangle. The edges of both rectangles are excluded, unless [param " +"include_borders] is [code]true[/code]." +msgstr "" +"如果该矩形与 [param b] 矩形重叠,则返回 [code]true[/code]。除非 [param " +"include_borders] 为 [code]true[/code],否则两个矩形的边缘均被排除。" + +msgid "" +"Returns [code]true[/code] if this rectangle and [param rect] are " +"approximately equal, by calling [method Vector2.is_equal_approx] on the " +"[member position] and the [member size]." +msgstr "" +"如果该矩形和 [param rect] 近似相等,判断方法是通过在 [member position] 和 " +"[member size] 上调用 [method Vector2.is_equal_approx],则返回 [code]true[/" +"code]。" + +msgid "" +"Returns [code]true[/code] if this rectangle's values are finite, by calling " +"[method Vector2.is_finite] on the [member position] and the [member size]." +msgstr "" +"如果该矩形是有限的,则返回 [code]true[/code],判断方法是对 [member position] " +"和 [member size] 调用 [method Vector2.is_finite]。" + +msgid "" +"Returns a [Rect2] that encloses both this rectangle and [param b] around the " +"edges. See also [method encloses]." +msgstr "返回边界包围该矩形和 [param b] 的 [Rect2]。另见 [method encloses]。" + +msgid "" +"The ending point. This is usually the bottom-right corner of the rectangle, " +"and is equivalent to [code]position + size[/code]. Setting this point affects " +"the [member size]." +msgstr "" +"终点。通常为矩形的右下角,等价于 [code]position + size[/code]。设置该点会影响 " +"[member size]。" + +msgid "The origin point. This is usually the top-left corner of the rectangle." +msgstr "原点。通常为矩形的左上角。" + +msgid "" +"The rectangle's width and height, starting from [member position]. Setting " +"this value also affects the [member end] point.\n" +"[b]Note:[/b] It's recommended setting the width and height to non-negative " +"values, as most methods in Godot assume that the [member position] is the top-" +"left corner, and the [member end] is the bottom-right corner. To get an " +"equivalent rectangle with non-negative size, use [method abs]." +msgstr "" +"矩形的宽和高,相对于 [member position]。设置该值会影响终点 [member end]。\n" +"[b]注意:[/b]建议将宽和高设置为非负数,因为 Godot 中的大多数方法假设 [member " +"position] 为左上角、[member end] 为右下角。要获取等价且大小非负的矩形,请使用 " +"[method abs]。" + +msgid "" +"Returns [code]true[/code] if the [member position] or [member size] of both " +"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 "" +"如果两个矩形的 [member position] 不相等或 [member size] 不相等,则返回 " +"[code]true[/code]。\n" +"[b]注意:[/b]由于浮点数精度误差,请考虑改用 [method is_equal_approx],会更可" +"靠。" + +msgid "" +"Inversely transforms (multiplies) the [Rect2] by the given [Transform2D] " +"transformation matrix, under the assumption that the transformation basis is " +"orthonormal (i.e. rotation/reflection is fine, scaling/skew is not).\n" +"[code]rect * transform[/code] is equivalent to [code]transform.inverse() * " +"rect[/code]. See [method Transform2D.inverse].\n" +"For transforming by inverse of an affine transformation (e.g. with scaling) " +"[code]transform.affine_inverse() * rect[/code] can be used instead. See " +"[method Transform2D.affine_inverse]." +msgstr "" +"假设该变换的基是正交的(即旋转/反射可以,缩放/倾斜则不然),将 [Rect2] 逆向变" +"换(乘以)给定的 [Transform2D] 变换矩阵。\n" +"[code]rect * transform[/code] 相当于 [code]transform.inverse() * rect[/code]。" +"请参阅 [method Transform2D.inverse]。\n" +"对于通过仿射变换的逆变换(例如,通过缩放)进行变换,可以使用 [code]transform." +"affine_inverse() * rect[/code] 来代替。请参阅 [method Transform2D." +"affine_inverse]。" + +msgid "" +"Returns [code]true[/code] if both [member position] and [member size] of the " +"rectangles are exactly equal, respectively.\n" +"[b]Note:[/b] Due to floating-point precision errors, consider using [method " +"is_equal_approx] instead, which is more reliable." +msgstr "" +"如果两个矩形的 [member position] 完全相等且 [member size] 完全相等,则返回 " +"[code]true[/code]。\n" +"[b]注意:[/b]由于浮点数精度误差,请考虑改用 [method is_equal_approx],会更可" +"靠。" + msgid "A 2D axis-aligned bounding box using integer coordinates." msgstr "使用整数坐标的 2D 轴对齐边界框。" +msgid "" +"The [Rect2i] built-in [Variant] type represents an axis-aligned rectangle in " +"a 2D space, using integer coordinates. It is defined by its [member position] " +"and [member size], which are [Vector2i]. Because it does not rotate, it is " +"frequently used for fast overlap tests (see [method intersects]).\n" +"For floating-point coordinates, see [Rect2].\n" +"[b]Note:[/b] Negative values for [member size] are not supported. With " +"negative size, most [Rect2i] methods do not work correctly. Use [method abs] " +"to get an equivalent [Rect2i] with a non-negative size.\n" +"[b]Note:[/b] In a boolean context, a [Rect2i] evaluates to [code]false[/code] " +"if both [member position] and [member size] are zero (equal to [constant " +"Vector2i.ZERO]). Otherwise, it always evaluates to [code]true[/code]." +msgstr "" +"[Rect2i] 是内置的 [Variant] 类型,代表 2D 空间中与轴对齐的矩形,使用整数坐标。" +"由 [member position] 和 [member size] 定义,它们都是 [Vector2i]。因为这个矩形" +"不会旋转,所以可以进行快速的重合检查(见 [method intersects])。\n" +"浮点数坐标的版本见 [Rect2]。\n" +"[b]注意:[/b]不支持负数的 [member size]。如果大小为负数,[Rect2i] 的大多数方法" +"都无法正常工作。请使用 [method abs] 获取等价且大小非负的 [Rect2i]。\n" +"[b]注意:[/b]在布尔值上下文中,[member position] 和 [member size] 均为零(等" +"于 [constant Vector2i.ZERO])的 [Rect2i] 会得到 [code]false[/code]。否则得到 " +"[code]true[/code]。" + msgid "" "Constructs a [Rect2i] with its [member position] and [member size] set to " "[constant Vector2i.ZERO]." @@ -89888,10 +100195,189 @@ msgstr "" "构造 [Rect2i],将 [member position] 设置为 ([param x], [param y]),将 [member " "size] 设置为 ([param width], [param height])。" +msgid "" +"Returns a [Rect2i] equivalent to this rectangle, with its width and height " +"modified to be non-negative values, and with its [member position] being the " +"top-left corner of the rectangle.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var rect = Rect2i(25, 25, -100, -50)\n" +"var absolute = rect.abs() # absolute is Rect2i(-75, -25, 100, 50)\n" +"[/gdscript]\n" +"[csharp]\n" +"var rect = new Rect2I(25, 25, -100, -50);\n" +"var absolute = rect.Abs(); // absolute is Rect2I(-75, -25, 100, 50)\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Note:[/b] It's recommended to use this method when [member size] is " +"negative, as most other methods in Godot assume that the [member position] is " +"the top-left corner, and the [member end] is the bottom-right corner." +msgstr "" +"返回一个与该矩形等效的 [Rect2i],其宽度和高度被修改为非负值,其 [member " +"position] 为该矩形的左上角。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var rect = Rect2i(25, 25, -100, -50)\n" +"var absolute = rect.abs() # 绝对值为 Rect2i(-75, -25, 100, 50)\n" +"[/gdscript]\n" +"[csharp]\n" +"var rect = new Rect2I(25, 25, -100, -50);\n" +"var absolute = rect.Abs(); // 绝对值为 Rect2I(-75, -25, 100, 50)\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]注意:[/b]当 [member size] 为负时,建议使用该方法,因为 Godot 中的大多数其" +"他方法都假设 [member position] 是左上角,[member end] 是右下角。" + msgid "" "Returns [code]true[/code] if this [Rect2i] completely encloses another one." msgstr "如果该 [Rect2i] 完全包含另一个,则返回 [code]true[/code]。" +msgid "" +"Returns a copy of this rectangle expanded to align the edges with the given " +"[param to] point, if necessary.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var rect = Rect2i(0, 0, 5, 2)\n" +"\n" +"rect = rect.expand(Vector2i(10, 0)) # rect is Rect2i(0, 0, 10, 2)\n" +"rect = rect.expand(Vector2i(-5, 5)) # rect is Rect2i(-5, 0, 10, 5)\n" +"[/gdscript]\n" +"[csharp]\n" +"var rect = new Rect2I(0, 0, 5, 2);\n" +"\n" +"rect = rect.Expand(new Vector2I(10, 0)); // rect is Rect2I(0, 0, 10, 2)\n" +"rect = rect.Expand(new Vector2I(-5, 5)); // rect is Rect2I(-5, 0, 10, 5)\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回该矩形的副本,如有必要,该矩形被扩展为将边缘与给定的 [param to] 点对齐。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var rect = Rect2i(0, 0, 5, 2)\n" +"\n" +"rect = rect.expand(Vector2i(10, 0)) # rect 为 Rect2i(0, 0, 10, 2)\n" +"rect = rect.expand(Vector2i(-5, 5)) # rect 为 Rect2i(-5, 0, 10, 5)\n" +"[/gdscript]\n" +"[csharp]\n" +"var rect = new Rect2I(0, 0, 5, 2);\n" +"\n" +"rect = rect.Expand(new Vector2I(10, 0)); // rect 为 Rect2I(0, 0, 10, 2)\n" +"rect = rect.Expand(new Vector2I(-5, 5)); // rect 为 Rect2I(-5, 0, 10, 5)\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Returns the center point of the rectangle. This is the same as [code]position " +"+ (size / 2)[/code].\n" +"[b]Note:[/b] If the [member size] is odd, the result will be rounded towards " +"[member position]." +msgstr "" +"返回该矩形的中心点。这与 [code]position + (size / 2)[/code] 相同。\n" +"[b]注意:[/b]如果 [member size] 为奇数,则结果将向 [member position] 舍入。" + +msgid "" +"Returns a copy of this rectangle extended on all sides by the given [param " +"amount]. A negative [param amount] shrinks the rectangle instead. See also " +"[method grow_individual] and [method grow_side].\n" +"[codeblocks]\n" +"[gdscript]\n" +"var a = Rect2i(4, 4, 8, 8).grow(4) # a is Rect2i(0, 0, 16, 16)\n" +"var b = Rect2i(0, 0, 8, 4).grow(2) # b is Rect2i(-2, -2, 12, 8)\n" +"[/gdscript]\n" +"[csharp]\n" +"var a = new Rect2I(4, 4, 8, 8).Grow(4); // a is Rect2I(0, 0, 16, 16)\n" +"var b = new Rect2I(0, 0, 8, 4).Grow(2); // b is Rect2I(-2, -2, 12, 8)\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回该矩形的副本,该矩形在所有边上扩展给定的 [param amount]。负的 [param " +"amount] 会缩小该矩形。另见 [method grow_individual] 和 [method grow_side]。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var a = Rect2i(4, 4, 8, 8).grow(4) # a 为 Rect2i(0, 0, 16, 16)\n" +"var b = Rect2i(0, 0, 8, 4).grow(2) # b 为 Rect2i(-2, -2, 12, 8)\n" +"[/gdscript]\n" +"[csharp]\n" +"var a = new Rect2I(4, 4, 8, 8).Grow(4); // a 为 Rect2I(0, 0, 16, 16)\n" +"var b = new Rect2I(0, 0, 8, 4).Grow(2); // b 为 Rect2I(-2, -2, 12, 8)\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Returns [code]true[/code] if the rectangle contains the given [param point]. " +"By convention, points on the right and bottom edges are [b]not[/b] included.\n" +"[b]Note:[/b] This method is not reliable for [Rect2i] with a [i]negative[/i] " +"[member size]. Use [method abs] first to get a valid rectangle." +msgstr "" +"如果该矩形包含给定的 [param point],则返回 [code]true[/code]。依照惯例,[b]不" +"[/b]包括右侧和底部边缘上的点。\n" +"[b]注意:[/b]对于[i]大小为负[/i]的 [Rect2i],该方法并不可靠。请首先使用 " +"[method abs] 获取一个有效的矩形。" + +msgid "" +"Returns the intersection between this rectangle and [param b]. If the " +"rectangles do not intersect, returns an empty [Rect2i].\n" +"[codeblocks]\n" +"[gdscript]\n" +"var a = Rect2i(0, 0, 5, 10)\n" +"var b = Rect2i(2, 0, 8, 4)\n" +"\n" +"var c = a.intersection(b) # c is Rect2i(2, 0, 3, 4)\n" +"[/gdscript]\n" +"[csharp]\n" +"var a = new Rect2I(0, 0, 5, 10);\n" +"var b = new Rect2I(2, 0, 8, 4);\n" +"\n" +"var c = rect1.Intersection(rect2); // c is Rect2I(2, 0, 3, 4)\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Note:[/b] If you only need to know whether two rectangles are overlapping, " +"use [method intersects], instead." +msgstr "" +"返回该矩形与 [param b] 之间的交集。如果矩形不相交,则返回空的 [Rect2i]。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var a = Rect2i(0, 0, 5, 10)\n" +"var b = Rect2i(2, 0, 8, 4)\n" +"\n" +"var c = a.intersection(b) # c 为 Rect2i(2, 0, 3, 4)\n" +"[/gdscript]\n" +"[csharp]\n" +"var a = new Rect2I(0, 0, 5, 10);\n" +"var b = new Rect2I(2, 0, 8, 4);\n" +"\n" +"var c = rect1.Intersection(rect2); // c 为 Rect2I(2, 0, 3, 4)\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]注意:[/b]如果你只需要知道两个矩形是否重叠,请改用 [method intersects]。" + +msgid "" +"Returns [code]true[/code] if this rectangle overlaps with the [param b] " +"rectangle. The edges of both rectangles are excluded." +msgstr "" +"如果该矩形与 [param b] 矩形重叠,则返回 [code]true[/code]。两个矩形的边缘均被" +"排除。" + +msgid "" +"Returns a [Rect2i] that encloses both this rectangle and [param b] around the " +"edges. See also [method encloses]." +msgstr "" +"返回一个包含该矩形和边缘周围的 [param b] 的 [Rect2i]。另见 [method encloses]。" + +msgid "" +"Returns [code]true[/code] if the [member position] or [member size] of both " +"rectangles are not equal." +msgstr "" +"如果两个矩形的 [member position] 或 [member size] 不相等,则返回 [code]true[/" +"code]。" + +msgid "" +"Returns [code]true[/code] if both [member position] and [member size] of the " +"rectangles are equal, respectively." +msgstr "" +"如果该矩形的 [member position] 和 [member size] 分别相等,则返回 [code]true[/" +"code]。" + msgid "A 2D rectangle shape used for physics collision." msgstr "2D 矩形,旨在用于物理学。" @@ -89911,32 +100397,6 @@ msgstr "该矩形的宽度和高度。" msgid "Base class for reference-counted objects." msgstr "引用计数对象的基类。" -msgid "" -"Base class for any object that keeps a reference count. [Resource] and many " -"other helper objects inherit this class.\n" -"Unlike other [Object] types, [RefCounted]s keep an internal reference counter " -"so that they are automatically released when no longer in use, and only then. " -"[RefCounted]s therefore do not need to be freed manually with [method Object." -"free].\n" -"In the vast majority of use cases, instantiating and using [RefCounted]-" -"derived types is all you need to do. The methods provided in this class are " -"only for advanced users, and can cause issues if misused.\n" -"[b]Note:[/b] In C#, reference-counted objects will not be freed instantly " -"after they are no longer in use. Instead, garbage collection will run " -"periodically and will free reference-counted objects that are no longer in " -"use. This means that unused ones will linger on for a while before being " -"removed." -msgstr "" -"所有保持引用计数的对象的基类。[Resource] 和许多其他辅助对象继承该类。\n" -"与其他 [Object] 类型不同,[RefCounted] 保留一个内部引用计数器,以便它们在不再" -"使用时自动释放,并且仅在那时才会如此。因此,[RefCounted] 不需要使用 [method " -"Object.free] 手动释放。\n" -"在绝大多数用例中,只需实例化和使用 [RefCounted] 派生类型即可。该类中提供的方法" -"仅适用于高级用户,如果使用不当可能会导致问题。\n" -"[b]注意:[/b]在 C# 中,引用计数的对象在不再使用后不会立即被释放。相反,垃圾收" -"集将定期运行,并释放不再使用的引用计数对象。这意味着未使用的引用计数对象会在被" -"移除之前停留一段时间。" - msgid "Returns the current reference count." msgstr "返回当前的引用计数。" @@ -89957,6 +100417,16 @@ msgstr "" "内部引用增量计数器。只有在你真的知道你在做什么的时候才使用这个。\n" "如果增量成功,返回 [code]true[/code],否则返回 [code]false[/code]。" +msgid "" +"Decrements the internal reference counter. Use this only if you really know " +"what you are doing.\n" +"Returns [code]true[/code] if the object should be freed after the decrement, " +"[code]false[/code] otherwise." +msgstr "" +"内部引用减量计数器。只有在你真的知道你在做什么的时候才使用这个。\n" +"如果该对象在递减后应被释放,则返回 [code]true[/code],否则返回 [code]false[/" +"code]。" + msgid "A rectangle hint for designing UIs." msgstr "设计 UI 使用的矩形提示。" @@ -90214,6 +100684,133 @@ msgstr "" msgid "Class for searching text for patterns using regular expressions." msgstr "使用正则表达式搜索文本的类。" +msgid "" +"A regular expression (or regex) is a compact language that can be used to " +"recognize strings that follow a specific pattern, such as URLs, email " +"addresses, complete sentences, etc. For example, a regex of [code]ab[0-9][/" +"code] would find any string that is [code]ab[/code] followed by any number " +"from [code]0[/code] to [code]9[/code]. For a more in-depth look, you can " +"easily find various tutorials and detailed explanations on the Internet.\n" +"To begin, the RegEx object needs to be compiled with the search pattern using " +"[method compile] before it can be used.\n" +"[codeblock]\n" +"var regex = RegEx.new()\n" +"regex.compile(\"\\\\w-(\\\\d+)\")\n" +"[/codeblock]\n" +"The search pattern must be escaped first for GDScript before it is escaped " +"for the expression. For example, [code]compile(\"\\\\d+\")[/code] would be " +"read by RegEx as [code]\\d+[/code]. Similarly, [code]compile(\"\\\"(?:\\\\\\" +"\\.|[^\\\"])*\\\"\")[/code] would be read as [code]\"(?:\\\\.|[^\"])*\"[/" +"code]. In GDScript, you can also use raw string literals (r-strings). For " +"example, [code]compile(r'\"(?:\\\\.|[^\"])*\"')[/code] would be read the " +"same.\n" +"Using [method search], you can find the pattern within the given text. If a " +"pattern is found, [RegExMatch] is returned and you can retrieve details of " +"the results using methods such as [method RegExMatch.get_string] and [method " +"RegExMatch.get_start].\n" +"[codeblock]\n" +"var regex = RegEx.new()\n" +"regex.compile(\"\\\\w-(\\\\d+)\")\n" +"var result = regex.search(\"abc n-0123\")\n" +"if result:\n" +" print(result.get_string()) # Would print n-0123\n" +"[/codeblock]\n" +"The results of capturing groups [code]()[/code] can be retrieved by passing " +"the group number to the various methods in [RegExMatch]. Group 0 is the " +"default and will always refer to the entire pattern. In the above example, " +"calling [code]result.get_string(1)[/code] would give you [code]0123[/code].\n" +"This version of RegEx also supports named capturing groups, and the names can " +"be used to retrieve the results. If two or more groups have the same name, " +"the name would only refer to the first one with a match.\n" +"[codeblock]\n" +"var regex = RegEx.new()\n" +"regex.compile(\"d(?[0-9]+)|x(?[0-9a-f]+)\")\n" +"var result = regex.search(\"the number is x2f\")\n" +"if result:\n" +" print(result.get_string(\"digit\")) # Would print 2f\n" +"[/codeblock]\n" +"If you need to process multiple results, [method search_all] generates a list " +"of all non-overlapping results. This can be combined with a [code]for[/code] " +"loop for convenience.\n" +"[codeblock]\n" +"for result in regex.search_all(\"d01, d03, d0c, x3f and x42\"):\n" +" print(result.get_string(\"digit\"))\n" +"# Would print 01 03 0 3f 42\n" +"[/codeblock]\n" +"[b]Example of splitting a string using a RegEx:[/b]\n" +"[codeblock]\n" +"var regex = RegEx.new()\n" +"regex.compile(\"\\\\S+\") # Negated whitespace character class.\n" +"var results = []\n" +"for result in regex.search_all(\"One Two \\n\\tThree\"):\n" +" results.push_back(result.get_string())\n" +"# The `results` array now contains \"One\", \"Two\", \"Three\".\n" +"[/codeblock]\n" +"[b]Note:[/b] Godot's regex implementation is based on the [url=https://www." +"pcre.org/]PCRE2[/url] library. You can view the full pattern reference " +"[url=https://www.pcre.org/current/doc/html/pcre2pattern.html]here[/url].\n" +"[b]Tip:[/b] You can use [url=https://regexr.com/]Regexr[/url] to test regular " +"expressions online." +msgstr "" +"正则表达式(或称 regex)是一种紧凑的语言,可用于识别遵循特定模式的字符串,如 " +"URL、电子邮件地址、完整句子等。例如正则表达式 [code]ab[0-9][/code] 可以找到 " +"[code]ab[/code] 后面跟着 [code]0[/code] 到 [code]9[/code] 的任何数字的字符串。" +"要想更深入地了解,你可以很容易地在互联网上找到各种教程和详细解释。\n" +"首先,在使用 RegEx 对象之前,需要用 [method compile] 对其进行搜索模式的编" +"译。\n" +"[codeblock]\n" +"var regex = RegEx.new()\n" +"regex.compile(\"\\\\w-(\\\\d+)\")\n" +"[/codeblock]\n" +"在为表达式转义之前,必须先为 GDScript 转义搜索模式。例如,[code]compile(\"\\" +"\\d+\")[/code] 会被 RegEx 读成 [code]\\d+[/code]。同样,[code]compile(\"\\" +"\"(?:\\\\\\\\.|[^\\\"])*\\\")[/code] 会被读作 [code]\"(?:\\.|[^\"])*\"[/" +"code]。在 GDScript 中,你还可以使用原始字符串文字(r-字符串)。例如," +"[code]compile(r'\"(?:\\\\.|[^\"])*\"')[/code] 将被读取为相同的。\n" +"使用 [method search],你可以在给定的文本中匹配模式。如果匹配到一个模式,将返" +"回 [RegExMatch],你可以使用 [method RegExMatch.get_string] 和 [method " +"RegExMatch.get_start] 等方法检索结果的细节。\n" +"[codeblock]\n" +"var regex = RegEx.new()\n" +"regex.compile(\"\\\\w-(\\\\d+)\")\n" +"var result = regex.search(\"abc n-0123\")\n" +"if result:\n" +" print(result.get_string()) # 会输出 n-0123\n" +"[/codeblock]\n" +"捕获组的结果 [code]()[/code] 可以通过向 [RegExMatch] 中的各种方法传递组号来检" +"索。默认是组 0,并且将总是指整个模式。在上面的例子中,调用 [code]result." +"get_string(1)[/code] 会得到 [code]0123[/code]。\n" +"这个版本的 RegEx 也支持命名的捕获组,名称可以用来检索结果。如果两个或更多的组" +"有相同的名称,那么这个名称将只指第一个有匹配的组。\n" +"[codeblock]\n" +"var regex = RegEx.new()\n" +"regex.compile(\"d(?[0-9]+)|x(?[0-9a-f]+)\")\n" +"var result = regex.search(\"数字是 x2f\")\n" +"if result:\n" +" print(result.get_string(\"digit\")) # 会输出 2f\n" +"[/codeblock]\n" +"如果你需要处理多个结果,[method search_all] 会生成一个所有不重叠的结果列表。为" +"了方便起见,这可以和一个 [code]for[/code] 循环结合起来。\n" +"[codeblock]\n" +"for result in regex.search_all(\"d01, d03, d0c, x3f and x42\"):\n" +" print(result.get_string(\"digit\"))\n" +"# 会输出 01 03 0 3f 42\n" +"[/codeblock]\n" +"[b]使用 RegEx 分割字符串的例子:[/b]\n" +"[codeblock]\n" +"var regex = RegEx.new()\n" +"regex.compile(\"\\\\S+\") # 非空白字符类。\n" +"var results = []\n" +"for result in regex.search_all(\"One Two \\n\\tThree\"):\n" +" results.push_back(result.get_string())\n" +"# `results` 数组包含 \"One\"、\"Two\"、\"Three\"。\n" +"[/codeblock]\n" +"[b]注意:[/b]Godot 的 regex 实现基于的是 [url=https://www.pcre.org/]PCRE2[/" +"url]。你可以查看完整的模式参考[url=https://www.pcre.org/current/doc/html/" +"pcre2pattern.html]这里[/url]。\n" +"[b]提示:[/b]你可以使用 [url=https://regexr.com/]Regexr[/url] 来在线测试正则表" +"达式。" + msgid "" "This method resets the state of the object, as if it was freshly created. " "Namely, it unassigns the regular expression of this object." @@ -90509,6 +101106,24 @@ msgstr "" "原地放置一个内存屏障。内存屏障可用于进行同步,避免数据竞争。另见 [method " "full_barrier],可能更适合调试。" +msgid "" +"Clears the contents of the [param buffer], clearing [param size_bytes] bytes, " +"starting at [param offset]. Always raises a memory barrier.\n" +"Prints an error if:\n" +"- the size isn't a multiple of four\n" +"- the region specified by [param offset] + [param size_bytes] exceeds the " +"buffer\n" +"- a draw list is currently active (created by [method draw_list_begin])\n" +"- a compute list is currently active (created by [method compute_list_begin])" +msgstr "" +"清除 [param buffer] 的内容,清除 [param size_bytes] 字节,从 [param offset] 开" +"始。总是会造成内存障碍。\n" +"如果出现以下情况,则打印错误:\n" +"- 大小不是四的倍数\n" +"- [param offset] + [param size_bytes] 指定的区域超出缓冲区\n" +"- 绘制列表当前处于活动状态(由 [method draw_list_begin] 创建)\n" +"- 计算列表当前处于活动状态(由 [method compute_list_begin] 创建)" + msgid "" "Returns a copy of the data of the specified [param buffer], optionally [param " "offset_bytes] and [param size_bytes] can be set to copy only a portion of the " @@ -90517,6 +101132,24 @@ msgstr "" "返回指定 [param buffer] 中数据的副本,还可以设置 [param offset_bytes] 和 " "[param size_bytes],仅复制缓冲区的某一部分。" +msgid "" +"Updates a region of [param size_bytes] bytes, starting at [param offset], in " +"the buffer, with the specified [param data]. Raises a memory barrier except " +"when [param post_barrier] is set to [constant BARRIER_MASK_NO_BARRIER].\n" +"Prints an error if:\n" +"- the region specified by [param offset] + [param size_bytes] exceeds the " +"buffer\n" +"- a draw list is currently active (created by [method draw_list_begin])\n" +"- a compute list is currently active (created by [method compute_list_begin])" +msgstr "" +"使用指定的 [param data] 更新缓冲区中从 [param offset] 开始的 [param " +"size_bytes] 字节区块。引发一个内存屏障,除非 [param post_barrier] 被设置为 " +"[constant BARRIER_MASK_NO_BARRIER]。\n" +"如果出现以下情况,则打印错误:\n" +"- [param offset] + [param size_bytes] 指定的区块超出该缓冲区\n" +"- 绘制列表当前处于活动状态(由 [method draw_list_begin] 创建)\n" +"- 计算列表当前处于活动状态(由 [method compute_list_begin] 创建)" + msgid "" "Creates a timestamp marker with the specified [param name]. This is used for " "performance reporting with the [method get_captured_timestamp_cpu_time], " @@ -90527,6 +101160,9 @@ msgstr "" "get_captured_timestamp_cpu_time]、[method get_captured_timestamp_gpu_time]、" "[method get_captured_timestamp_name] 等方法的性能汇报。" +msgid "Raises a Vulkan compute barrier in the specified [param compute_list]." +msgstr "在指定的 [param compute_list] 中引发 Vulkan 计算屏障。" + msgid "" "Starts a list of compute commands created with the [code]compute_*[/code] " "methods. The returned value should be passed to other [code]compute_list_*[/" @@ -90581,6 +101217,26 @@ msgstr "" "rd.compute_list_end()\n" "[/codeblock]" +msgid "" +"Tells the GPU what compute pipeline to use when processing the compute list. " +"If the shader has changed since the last time this function was called, Godot " +"will unbind all descriptor sets and will re-bind them inside [method " +"compute_list_dispatch]." +msgstr "" +"告诉 GPU 在处理计算列表时使用什么计算管道。如果自上次调用该函数以来着色器发生" +"了更改,Godot 将取消绑定所有描述符集,并在 [method compute_list_dispatch] 中重" +"新绑定它们。" + +msgid "" +"Binds the [param uniform_set] to this [param compute_list]. Godot ensures " +"that all textures in the uniform set have the correct Vulkan access masks. If " +"Godot had to change access masks of textures, it will raise a Vulkan image " +"memory barrier." +msgstr "" +"将 [param uniform_set] 绑定到该 [param compute_list]。Godot 确保统一集中的所有" +"纹理都具有正确的 Vulkan 访问蒙版。如果 Godot 必须更改纹理的访问蒙版,则会引发 " +"Vulkan 图像内存障碍。" + msgid "" "Submits the compute list for processing on the GPU. This is the compute " "equivalent to [method draw_list_draw]." @@ -90721,6 +101377,20 @@ msgstr "" "rd.draw_list_end()\n" "[/codeblock]" +msgid "" +"High-level variant of [method draw_list_begin], with the parameters " +"automatically being adjusted for drawing onto the window specified by the " +"[param screen] ID.\n" +"[b]Note:[/b] Cannot be used with local RenderingDevices, as these don't have " +"a screen. If called on a local RenderingDevice, [method " +"draw_list_begin_for_screen] returns [constant INVALID_ID]." +msgstr "" +"[method draw_list_begin] 的高阶变体,会针对绘制到 [param screen] ID 指定的窗口" +"上自动调整参数。\n" +"[b]注意:[/b]局部 RenderingDevice 没有屏幕,所以无法使用。如果在局部 " +"RenderingDevice 上调用,[method draw_list_begin_for_screen] 会返回 [constant " +"INVALID_ID]。" + msgid "" "Variant of [method draw_list_begin] with support for multiple splits. The " "[param splits] parameter determines how many splits are created." @@ -91190,6 +101860,25 @@ msgstr "" "见 [method shader_compile_spirv_from_source] 和 [method " "shader_create_from_bytecode]。" +msgid "" +"Create a placeholder RID by allocating an RID without initializing it for use " +"in [method shader_create_from_bytecode]. This allows you to create an RID for " +"a shader and pass it around, but defer compiling the shader to a later time." +msgstr "" +"通过分配 RID 来创建占位符 RID,而不对其进行初始化以供在 [method " +"shader_create_from_bytecode] 中使用。这允许你为着色器创建 RID 并传递它,但将着" +"色器的编译推迟到以后的时间。" + +msgid "" +"Returns the internal vertex input mask. Internally, the vertex input mask is " +"an unsigned integer consisting of the locations (specified in GLSL via. " +"[code]layout(location = ...)[/code]) of the input variables (specified in " +"GLSL by the [code]in[/code] keyword)." +msgstr "" +"返回内部顶点输入掩码。在内部,顶点输入掩码是一个无符号整数,由输入变量(在 " +"GLSL 中通过 [code]in[/code] 关键字指定)的位置(在 GLSL 中通过 " +"[code]layout(location = ...)[/code] 指定)组成。" + msgid "" "Creates a [url=https://vkguide.dev/docs/chapter-4/storage_buffers/]storage " "buffer[/url] with the specified [param data] and [param usage]. It can be " @@ -91232,6 +101921,29 @@ msgstr "" "新建纹理缓冲。可以通过返回的 RID 进行访问。\n" "RID 使用结束后,应该使用 RenderingServer 的 [method free_rid] 方法进行释放。" +msgid "" +"Clears the specified [param texture] by replacing all of its pixels with the " +"specified [param color]. [param base_mipmap] and [param mipmap_count] " +"determine which mipmaps of the texture are affected by this clear operation, " +"while [param base_layer] and [param layer_count] determine which layers of a " +"3D texture (or texture array) are affected by this clear operation. For 2D " +"textures (which only have one layer by design), [param base_layer] must be " +"[code]0[/code] and [param layer_count] must be [code]1[/code].\n" +"[b]Note:[/b] [param texture] can't be cleared while a draw list that uses it " +"as part of a framebuffer is being created. Ensure the draw list is finalized " +"(and that the color/depth texture using it is not set to [constant " +"FINAL_ACTION_CONTINUE]) to clear this texture." +msgstr "" +"将指定的 [param texture] 清屏,将所有像素替换为指定的颜色 [param color]。" +"[param base_mipmap] 和 [param mipmap_count] 决定该清屏操作影响纹理的哪些 " +"mipmap,而 [param base_layer] 和 [param layer_count] 决定该清屏操作影响 3D 纹" +"理(或纹理数组)的哪几层。如果是 2D 纹理(本来就只有一层),则 [param " +"base_layer] 必须为 [code]0[/code],[param layer_count] 必须为 [code]1[/" +"code]。\n" +"[b]注意:[/b]如果使用 [param texture] 的绘图列表是创建的帧缓冲的一部分,则该纹" +"理不能被清屏。确保绘图列表释放后(并且使用它的颜色和深度纹理没有被设为 " +"[constant FINAL_ACTION_CONTINUE])才能对该纹理做清屏操作。" + msgid "" "Copies the [param from_texture] to [param to_texture] with the specified " "[param from_pos], [param to_pos] and [param size] coordinates. The Z axis of " @@ -91288,6 +102000,17 @@ msgstr "" "[b]注意:[/b]请勿与 [method RenderingServer.texture_2d_create] 混淆,后者创建" "的是 Godot 专属的 [Texture2D] 资源,不是图形 API 自己的纹理类型。" +msgid "" +"Returns an RID for an existing [param image] ([code]VkImage[/code]) with the " +"given [param type], [param format], [param samples], [param usage_flags], " +"[param width], [param height], [param depth], and [param layers]. This can be " +"used to allow Godot to render onto foreign images." +msgstr "" +"使用给定的 [param type]、[param format]、[param samples]、[param " +"usage_flags]、[param width]、[param height]、[param depth]、和 [param layers] " +"返回已有 [param image]([code]VkImage[/code])的 RID。这可被用于允许 Godot 渲" +"染到外部图像上。" + msgid "" "Creates a shared texture using the specified [param view] and the texture " "information from [param with_texture]." @@ -91335,6 +102058,9 @@ msgstr "" "[b]注意:[/b][param texture] 纹理需要获取 [constant " "TEXTURE_USAGE_CAN_COPY_FROM_BIT]。否则会输出错误并返回空的 [PackedByteArray]。" +msgid "Returns the data format used to create this texture." +msgstr "返回用于创建该纹理的数据格式。" + msgid "" "Returns the internal graphics handle for this texture object. For use when " "communicating with third-party APIs mostly with GDExtension.\n" @@ -94522,6 +105248,18 @@ msgstr "" "质数据,烘焙为一组大小为 [param image_size] 的 [Image]。返回包含 [enum " "BakeChannels] 中指定的材质属性的 [Image] 数组。" +msgid "" +"As the RenderingServer actual logic may run on an separate thread, accessing " +"its internals from the main (or any other) thread will result in errors. To " +"make it easier to run code that can safely access the rendering internals " +"(such as [RenderingDevice] and similar RD classes), push a callable via this " +"function so it will be executed on the render thread." +msgstr "" +"由于 RenderingServer 实际逻辑可能在单独的线程上运行,因此从主(或任何其他)线" +"程访问其内部将导致错误。为了更轻松地运行可以安全访问渲染内部的代码(例如 " +"[RenderingDevice] 和类似的 RD 类),请通过该函数推送一个可调用对象,以便它将在" +"渲染线程上执行。" + msgid "" "Creates a camera attributes object and adds it to the RenderingServer. It can " "be accessed with the RID that is returned. This RID will be used in all " @@ -95704,6 +106442,20 @@ msgstr "" "get_video_adapter_driver_info]。\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 " +"an empty string.\n" +"[b]Note:[/b] On the web platform, some browsers such as Firefox may report a " +"different, fixed GPU name such as \"GeForce GTX 980\" (regardless of the " +"user's actual GPU model). This is done to make fingerprinting more difficult." +msgstr "" +"返回视频适配器的名称(例如“GeForce GTX 1080/PCIe/SSE2”)。\n" +"[b]注意:[/b]运行无头或服务器二进制文件时,该函数返回空字符串。\n" +"[b]注意:[/b]在 web 平台上,某些浏览器(例如 Firefox)可能会报告不同的固定 " +"GPU 名称,例如“GeForce GTX 980”(无论用户的实际 GPU 型号如何)。这样做是为了使" +"指纹识别更加困难。" + msgid "" "Returns the type of the video adapter. Since dedicated graphics cards from a " "given generation will [i]usually[/i] be significantly faster than integrated " @@ -96370,6 +107122,39 @@ msgstr "返回网格表面的缓冲区数组。" msgid "Returns a mesh's surface's arrays for blend shapes." msgstr "返回网格表面的混合形状数组。" +msgid "" +"Returns the stride of the attribute buffer for a mesh with given [param " +"format]." +msgstr "返回具有给定 [param format] 的网格的属性缓冲区的步幅。" + +msgid "" +"Returns the stride of the combined normals and tangents for a mesh with given " +"[param format]. Note importantly that, while normals and tangents are in the " +"vertex buffer with vertices, they are only interleaved with each other and so " +"have a different stride than vertex positions." +msgstr "" +"返回具有给定 [param format] 的网格的组合法线和切线的步幅。重要的是请注意,虽然" +"法线和切线位于带有顶点的顶点缓冲区中,但它们仅彼此交错,因此具有与顶点位置不同" +"的步幅。" + +msgid "" +"Returns the offset of a given attribute by [param array_index] in the start " +"of its respective buffer." +msgstr "返回由 [param array_index] 给定属性在其各自缓冲区开头的偏移量。" + +msgid "" +"Returns the stride of the skin buffer for a mesh with given [param format]." +msgstr "返回具有给定 [param format] 的网格的皮肤缓冲区的步幅。" + +msgid "" +"Returns the stride of the vertex positions for a mesh with given [param " +"format]. Note importantly that vertex positions are stored consecutively and " +"are not interleaved with the other attributes in the vertex buffer (normals " +"and tangents)." +msgstr "" +"返回具有给定 [param format] 的网格的顶点位置的步幅。请注意,重要的是,顶点位置" +"是连续存储的,并且不与顶点缓冲区中的其他属性(法线和切线)交错。" + msgid "Returns a mesh's surface's material." msgstr "返回网格表面的材质。" @@ -96743,6 +107528,12 @@ msgstr "" "设置要绘制的粒子的数量,并为其分配内存。相当于 [member GPUParticles3D." "amount]。" +msgid "" +"Sets the amount ratio for particles to be emitted. Equivalent to [member " +"GPUParticles3D.amount_ratio]." +msgstr "" +"设置要被发射的粒子的数量比率。相当于 [member GPUParticles3D.amount_ratio]。" + msgid "" "Sets a custom axis-aligned bounding box for the particle system. Equivalent " "to [member GPUParticles3D.visibility_aabb]." @@ -96778,6 +107569,13 @@ msgid "" "emit." msgstr "设置粒子首次发射时使用的 [Transform3D]。" +msgid "" +"Sets the velocity of a particle node, that will be used by [member " +"ParticleProcessMaterial.inherit_velocity_ratio]." +msgstr "" +"设置粒子节点的速度,将由 [member ParticleProcessMaterial." +"inherit_velocity_ratio] 使用。" + msgid "" "If [code]true[/code], particles will emit over time. Setting to false does " "not reset the particles, but only stops their emission. Equivalent to [member " @@ -96803,6 +107601,11 @@ msgstr "" "如果为 [code]true[/code],则使用分数增量来平滑粒子的运动。相当于 [member " "GPUParticles3D.fract_delta]。" +msgid "" +"Sets the value that informs a [ParticleProcessMaterial] to rush all particles " +"towards the end of their lifetime." +msgstr "设置通知 [ParticleProcessMaterial] 将所有粒子冲向其生命周期终点的值。" + msgid "" "Sets the lifetime of each particle in the system. Equivalent to [member " "GPUParticles3D.lifetime]." @@ -97383,6 +108186,9 @@ msgstr "" "会输出错误,不会修改原始纹理。如果你需要使用不同的宽度、高度或格式,请改用 " "[method texture_replace]。" +msgid "Returns the [enum Image.Format] for the texture." +msgstr "返回该纹理的 [enum Image.Format]。" + msgid "Returns a texture [RID] that can be used with [RenderingDevice]." msgstr "返回可用于 [RenderingDevice] 的纹理 [RID]。" @@ -97399,6 +108205,14 @@ msgid "" msgstr "" "[i]已废弃。[/i]ProxyTexture 已在 Godot 4 中移除,所以这个方法无法再使用。" +msgid "" +"Creates a new texture object based on a texture created directly on the " +"[RenderingDevice]. If the texture contains layers, [param layer_type] is used " +"to define the layer type." +msgstr "" +"基于直接在 [RenderingDevice] 上创建的纹理创建新的纹理对象。如果该纹理包含图" +"层,则 [param layer_type] 被用于定义图层类型。" + msgid "" "Replaces [param texture]'s texture data by the texture specified by the " "[param by_texture] RID, without changing [param texture]'s RID." @@ -97870,6 +108684,35 @@ msgstr "" "如果为 [code]true[/code],则在指定的视口上启用去条带。等价于 [member " "ProjectSettings.rendering/anti_aliasing/quality/use_debanding]。" +msgid "" +"If [code]true[/code], 2D rendering will use a high dynamic range (HDR) format " +"framebuffer matching the bit depth of the 3D framebuffer. When using the " +"Forward+ renderer this will be a [code]RGBA16[/code] framebuffer, while when " +"using the Mobile renderer it will be a [code]RGB10_A2[/code] framebuffer. " +"Additionally, 2D rendering will take place in linear color space and will be " +"converted to sRGB space immediately before blitting to the screen (if the " +"Viewport is attached to the screen). Practically speaking, this means that " +"the end result of the Viewport will not be clamped into the [code]0-1[/code] " +"range and can be used in 3D rendering without color space adjustments. This " +"allows 2D rendering to take advantage of effects requiring high dynamic range " +"(e.g. 2D glow) as well as substantially improves the appearance of effects " +"requiring highly detailed gradients. This setting has the same effect as " +"[member Viewport.use_hdr_2d].\n" +"[b]Note:[/b] This setting will have no effect when using the GL Compatibility " +"renderer as the GL Compatibility renderer always renders in low dynamic range " +"for performance reasons." +msgstr "" +"如果为 [code]true[/code],2D 渲染将使用与 3D 帧缓冲区的位深度匹配的高动态范围" +"(HDR)格式帧缓冲区。当使用 Forward+ 渲染器时,这将是一个 [code]RGBA16[/code] " +"帧缓冲区,而当使用 Mobile 渲染器时,它将是一个 [code]RGB10_A2[/code] 帧缓冲" +"区。此外,2D 渲染将在线性色彩空间中进行,并在位块传输到屏幕之前(如果视口被连" +"接到屏幕)立即转换为 sRGB 空间。实际上,这意味着视口的最终结果不会被钳制在 " +"[code]0-1[/code] 范围内,并且可以在不进行色彩空间调整的情况下被用于 3D 渲染。" +"这使得 2D 渲染能够利用需要高动态范围的效果(例如 2D 辉光),并显著改善需要高度" +"详细渐变的效果的外观。该设置与 [member Viewport.use_hdr_2d] 效果相同。\n" +"[b]注意:[/b]使用 GL 兼容渲染器时,该设置无效,因为出于性能原因,GL 兼容渲染器" +"始终在低动态范围内渲染。" + msgid "" "If [code]true[/code], enables occlusion culling on the specified viewport. " "Equivalent to [member ProjectSettings.rendering/occlusion_culling/" @@ -98242,6 +109085,52 @@ msgstr "用于标记重量数组的标记。" msgid "Flag used to mark an index array." msgstr "用于标记索引数组的标志。" +msgid "Flag used to mark that the array uses 8 bone weights instead of 4." +msgstr "用于标记数组使用 8 个骨骼权重而不是 4 个的标志。" + +msgid "" +"Flag used to mark that the mesh does not have a vertex array and instead will " +"infer vertex positions in the shader using indices and other information." +msgstr "" +"用于标记网格没有顶点数组,而是使用索引和其他信息推断着色器中的顶点位置的标志。" + +msgid "Flag used to mark the start of the bits used to store the mesh version." +msgstr "用于标记被用于存储网格版本的位的起始的标志。" + +msgid "" +"Flag used to shift a mesh format int to bring the version into the lowest " +"digits." +msgstr "用于移动网格格式 int,以将版本带入最低位的标志。" + +msgid "" +"Flag used to record the format used by prior mesh versions before the " +"introduction of a version." +msgstr "用于记录版本引入之前先前网格版本所使用的格式的标志。" + +msgid "" +"Flag used to record the second iteration of the mesh version flag. The " +"primary difference between this and [constant ARRAY_FLAG_FORMAT_VERSION_1] is " +"that this version supports [constant ARRAY_FLAG_COMPRESS_ATTRIBUTES] and in " +"this version vertex positions are de-interleaved from normals and tangents." +msgstr "" +"用于记录第二次迭代的网格版本标志的标志。该版本与 [constant " +"ARRAY_FLAG_FORMAT_VERSION_1] 之间的主要区别在于,该版本支持 [constant " +"ARRAY_FLAG_COMPRESS_ATTRIBUTES],并且在该版本中,顶点位置与法线和切线去交错。" + +msgid "" +"Flag used to record the current version that the engine expects. Currently " +"this is the same as [constant ARRAY_FLAG_FORMAT_VERSION_2]." +msgstr "" +"用于记录引擎期望的当前版本的标志。目前这与 [constant " +"ARRAY_FLAG_FORMAT_VERSION_2] 相同。" + +msgid "" +"Flag used to isolate the bits used for mesh version after using [constant " +"ARRAY_FLAG_FORMAT_VERSION_SHIFT] to shift them into place." +msgstr "" +"使用 [constant ARRAY_FLAG_FORMAT_VERSION_SHIFT] 将用于网格版本的位转移到位后," +"用于隔离这些位的标志。" + msgid "Primitive to draw consists of points." msgstr "绘制的图元由点组成。" @@ -98680,9 +109569,6 @@ msgstr "3D 粒子。" msgid "Draw particles in the order that they appear in the particles array." msgstr "按照粒子数组中出现的顺序绘制粒子。" -msgid "Sort particles based on their lifetime." -msgstr "根据粒子的寿命对其进行分类。" - msgid "Sort particles based on their distance to the camera." msgstr "根据粒子与相机的距离对其进行排序。" @@ -98749,6 +109635,19 @@ msgstr "" "FSR 放大视口。不支持大于 [code]1.0[/code] 的值,将改用双线性降采样。" "[code]1.0[/code] 的值将禁用缩放。" +msgid "" +"Use AMD FidelityFX Super Resolution 2.2 upscaling for the viewport's 3D " +"buffer. The amount of scaling can be set using [member Viewport." +"scaling_3d_scale]. Values less than [code]1.0[/code] will be result in the " +"viewport being upscaled using FSR2. Values greater than [code]1.0[/code] are " +"not supported and bilinear downsampling will be used instead. A value of " +"[code]1.0[/code] will use FSR2 at native resolution as a TAA solution." +msgstr "" +"对视口的 3D 缓冲区使用 AMD FidelityFX 超分辨率 2.2 放大。可以使用 [member " +"Viewport.scaling_3d_scale] 设置缩放量。小于 [code]1.0[/code] 的值将导致使用 " +"FSR2 放大视口。不支持大于 [code]1.0[/code] 的值,将改用双线性降采样。" +"[code]1.0[/code] 的值将使用原生分辨率下的 FSR2 作为 TAA 解决方案。" + msgid "Represents the size of the [enum ViewportScaling3DMode] enum." msgstr "代表 [enum ViewportScaling3DMode] 枚举的大小。" @@ -98982,6 +109881,24 @@ msgstr "" "在 [Viewport] 的左上象限中绘制存储来自 [OmniLight3D] 和 [SpotLight3D] 的阴影的" "阴影图集。" +msgid "" +"Draws the shadow atlas that stores shadows from [DirectionalLight3D]s in the " +"upper left quadrant of the [Viewport].\n" +"The slice of the camera frustum related to the shadow map cascade is " +"superimposed to visualize coverage. The color of each slice matches the " +"colors used for [constant VIEWPORT_DEBUG_DRAW_PSSM_SPLITS]. When shadow " +"cascades are blended the overlap is taken into account when drawing the " +"frustum slices.\n" +"The last cascade shows all frustum slices to illustrate the coverage of all " +"slices." +msgstr "" +"绘制阴影图集,该阴影图集存储 [Viewport] 左上象限中 [DirectionalLight3D] 的阴" +"影。\n" +"与阴影贴图级联相关的相机视锥体切片被叠加以可视化覆盖范围。每个切片的颜色与 " +"[constant VIEWPORT_DEBUG_DRAW_PSSM_SPLITS] 使用的颜色匹配。当混合阴影级联时," +"绘制视锥体切片时会考虑重叠。\n" +"最后一个级联显示了所有视锥体切片,以说明所有切片的覆盖范围。" + msgid "" "Draws the estimated scene luminance. This is a 1×1 texture that is generated " "when autoexposure is enabled to control the scene's exposure." @@ -99084,6 +110001,12 @@ msgid "" "correct for motion that occurs during gameplay." msgstr "绘制运动向量缓冲。由时间抗锯齿使用,能够修正在游戏过程中发生的运动。" +msgid "" +"Internal buffer is drawn instead of regular scene so you can see the per-" +"pixel output that will be used by post-processing effects." +msgstr "" +"绘制内部缓冲区而不是常规场景,因此可以看到将被后处理效果使用的每像素输出。" + msgid "Variable rate shading is disabled." msgstr "可变速率着色已禁用。" @@ -99879,6 +110802,59 @@ msgid "" "Hardware supports multithreading. This enum is currently unused in Godot 3.x." msgstr "硬件支持多线程。这个枚举目前在 Godot 3.x 中没有使用。" +msgid "" +"Abstract scene buffers object, created for each viewport for which 3D " +"rendering is done." +msgstr "抽象场景缓冲对象,为完成 3D 渲染的每个视口创建。" + +msgid "" +"Abstract scene buffers object, created for each viewport for which 3D " +"rendering is done. It manages any additional buffers used during rendering " +"and will discard buffers when the viewport is resized.\n" +"[b]Note:[/b] this is an internal rendering server object only exposed for " +"GDExtension plugins." +msgstr "" +"抽象场景缓冲对象,为完成 3D 渲染的每个视口创建。它管理渲染期间使用的任何额外缓" +"冲区,并在调整视口大小时丢弃缓冲区。\n" +"[b]注意:[/b]这是一个仅为 GDExtension 插件公开的内部渲染服务器对象。" + +msgid "" +"This method is called by the rendering server when the associated viewports " +"configuration is changed. It will discard the old buffers and recreate the " +"internal buffers used." +msgstr "" +"当关联的视口配置更改时,渲染服务器会调用该方法。它将丢弃旧的缓冲区并重新创建使" +"用的内部缓冲区。" + +msgid "Configuration object used to setup a [RenderSceneBuffers] object." +msgstr "用于设置 [RenderSceneBuffers] 对象的配置对象。" + +msgid "" +"This configuration object is created and populated by the render engine on a " +"viewport change and used to (re)configure a [RenderSceneBuffers] object." +msgstr "" +"该配置对象由渲染引擎在视口更改时创建和填充,并用于(重新)配置 " +"[RenderSceneBuffers] 对象。" + +msgid "FSR Sharpness applicable if FSR upscaling is used." +msgstr "如果使用 FSR 放大,则 FSR 锐度适用。" + +msgid "The size of the 3D render buffer used for rendering." +msgstr "用于渲染的 3D 渲染缓冲区的大小。" + +msgid "The MSAA mode we're using for 3D rendering." +msgstr "用于 3D 渲染的 MSAA 模式。" + +msgid "The render target associated with these buffer." +msgstr "与这些缓冲区关联的渲染目标。" + +msgid "" +"The requested scaling mode with which we upscale/downscale if [member " +"internal_size] and [member target_size] are not equal." +msgstr "" +"如果 [member internal_size] 和 [member target_size] 不相等,则将使用所请求的缩" +"放模式进行放大/缩小。" + msgid "The requested screen space AA applied in post processing." msgstr "请求在后期处理中应用的屏幕空间抗锯齿。" @@ -99891,12 +110867,111 @@ msgstr "应用于 mipmap 的偏置。" msgid "The number of views we're rendering." msgstr "渲染的视图数。" +msgid "" +"This class allows for a RenderSceneBuffer implementation to be made in " +"GDExtension." +msgstr "该类允许在 GDExtension 中实现 RenderSceneBuffer。" + +msgid "Implement this in GDExtension to handle the (re)sizing of a viewport." +msgstr "在 GDExtension 中实现它来处理视口的(重新)大小调整。" + +msgid "Implement this in GDExtension to record a new FSR sharpness value." +msgstr "在 GDExtension 中实现该功能以记录新的 FSR 锐度值。" + +msgid "Implement this in GDExtension to change the texture mipmap bias." +msgstr "在 GDExtension 中实现该功能以更改纹理多级渐远纹理偏置。" + +msgid "Implement this in GDExtension to react to the debanding flag changing." +msgstr "在 GDExtension 中实现该功能以对去色带标志的更改做出反应。" + +msgid "" +"Abstract render scene buffer implementation for the RenderingDevice based " +"renderers." +msgstr "RenderingDevice 基于的渲染器的抽象渲染场景缓冲区实现。" + +msgid "" +"This object manages all 3D rendering buffers for the rendering device based " +"renderers. An instance of this object is created for every viewport that has " +"3D rendering enabled.\n" +"All buffers are organized in [b]contexts[/b]. The default context is called " +"[b]render_buffers[/b] and can contain amongst others the color buffer, depth " +"buffer, velocity buffers, VRS density map and MSAA variants of these " +"buffers.\n" +"Buffers are only guaranteed to exist during rendering of the viewport.\n" +"[b]Note:[/b] this is an internal rendering server object only exposed for " +"GDExtension plugins." +msgstr "" +"该对象管理基于渲染设备的渲染器的所有 3D 渲染缓冲区。为每个启用 3D 渲染的视口创" +"建该对象的实例。\n" +"所有缓冲区都被组织在[b]上下文[/b]中。默认上下文被称为 [b]render_buffers[/b]," +"可以包含颜色缓冲区、深度缓冲区、速度缓冲区、VRS 密度图和这些缓冲区的 MSAA 变体" +"等。\n" +"缓冲区仅保证在视口渲染期间存在。\n" +"[b]注意:[/b]这是一个仅为 GDExtension 插件公开的内部渲染服务器对象。" + msgid "Frees all buffers related to this context." msgstr "释放与这个上下文相关的所有缓冲。" +msgid "" +"Create a new texture with the given definition and cache this under the given " +"name. Will return the existing texture if it already exists." +msgstr "" +"使用给定的定义创建一个新纹理,并将其缓存在给定的名称下。如果已有纹理已经存在," +"则返回该已有纹理。" + +msgid "" +"Create a new texture using the given format and view and cache this under the " +"given name. Will return the existing texture if it already exists." +msgstr "" +"使用给定的格式创建一个新纹理,并在给定的名称下查看和缓存它。如果已有纹理已经存" +"在,则返回该已有纹理。" + +msgid "" +"Create a new texture view for an existing texture and cache this under the " +"given view_name. Will return the existing teture view if it already exists. " +"Will error if the source texture doesn't exist." +msgstr "" +"为已有纹理创建一个新的纹理视图,并将其缓存在给定的 view_name 下。如果已有的纹" +"理视图已经存在,则返回该视图。如果源纹理不存在,将会出错。" + +msgid "" +"Returns the specified layer from the color texture we are rendering 3D " +"content to." +msgstr "从渲染 3D 内容的颜色纹理返回指定的图层。" + +msgid "" +"Returns the color texture we are rendering 3D content to. If multiview is " +"used this will be a texture array with all views." +msgstr "" +"返回渲染 3D 内容的颜色纹理。如果使用多视图,这将是一个包含所有视图的纹理数组。" + +msgid "" +"Returns the specified layer from the depth texture we are rendering 3D " +"content to." +msgstr "从渲染 3D 内容的深度纹理返回指定的图层。" + +msgid "" +"Returns the depth texture we are rendering 3D content to. If multiview is " +"used this will be a texture array with all views." +msgstr "" +"返回渲染 3D 内容的深度纹理。如果使用多视图,这将是一个包含所有视图的纹理数组。" + +msgid "" +"Returns the internal size of the render buffer (size before upscaling) with " +"which textures are created by default." +msgstr "返回默认情况下创建纹理的渲染缓冲区的内部大小(放大之前的大小)。" + +msgid "Returns the render target associated with this buffers object." +msgstr "返回与该缓冲区对象关联的渲染目标。" + msgid "Returns a cached texture with this name." msgstr "返回具有该名称的缓存纹理。" +msgid "" +"Returns the texture format information with which a cached texture was " +"created." +msgstr "返回用于创建缓存纹理的纹理格式信息。" + msgid "Returns a specific slice (layer or mipmap) for a cached texture." msgstr "返回缓存纹理的指定切片(层或 mipmap)。" @@ -99910,6 +110985,17 @@ msgstr "返回缓存纹理的指定切片视图(层或 mipmap)。" msgid "Returns [code]true[/code] if TAA is enabled." msgstr "如果启用 TAA,则返回 [code]true[/code]。" +msgid "" +"Returns the specified layer from the velocity texture we are rendering 3D " +"content to." +msgstr "从渲染 3D 内容的速度纹理返回指定的图层。" + +msgid "" +"Returns the velocity texture we are rendering 3D content to. If multiview is " +"used this will be a texture array with all views." +msgstr "" +"返回渲染 3D 内容的速度纹理。如果使用多视图,这将是一个包含所有视图的纹理数组。" + msgid "Returns the view count for the associated viewport." msgstr "返回关联视口的视图数。" @@ -99952,6 +111038,33 @@ msgid "" "Override this method to return a custom [RID] when [method get_rid] is called." msgstr "可以覆盖此方法,从而在调用 [method get_rid] 时返回自定义 [RID]。" +msgid "" +"Override this method to customize the newly duplicated resource created from " +"[method PackedScene.instantiate], if the original's [member " +"resource_local_to_scene] is set to [code]true[/code].\n" +"[b]Example:[/b] Set a random [code]damage[/code] value to every local " +"resource from an instantiated scene.\n" +"[codeblock]\n" +"extends Resource\n" +"\n" +"var damage = 0\n" +"\n" +"func _setup_local_to_scene():\n" +" damage = randi_range(10, 40)\n" +"[/codeblock]" +msgstr "" +"如果原始资源的 [member resource_local_to_scene] 被设置为 [code]true[/code],则" +"覆盖该方法以自定义从 [method PackedScene.instantiate] 创建的新复制的资源。\n" +"[b]示例:[/b]为实例化场景中的每个本地资源设置随机 [code]damage[/code] 值。\n" +"[codeblock]\n" +"extends Resource\n" +"\n" +"var damage = 0\n" +"\n" +"func _setup_local_to_scene():\n" +" damage = randi_range(10, 40)\n" +"[/codeblock]" + msgid "" "Duplicates this resource, returning a new resource with its [code]export[/" "code]ed or [constant PROPERTY_USAGE_STORAGE] properties copied from the " @@ -99980,6 +111093,32 @@ msgstr "" "[b]注意:[/b]对于自定义资源,如果定义 [method Object._init] 时使用了必填的参" "数,则此方法会失败。" +msgid "" +"Emits the [signal changed] signal. This method is called automatically for " +"some built-in resources.\n" +"[b]Note:[/b] For custom resources, it's recommended to call this method " +"whenever a meaningful change occurs, such as a modified property. This " +"ensures that custom [Object]s depending on the resource are properly " +"updated.\n" +"[codeblock]\n" +"var damage:\n" +" set(new_value):\n" +" if damage != new_value:\n" +" damage = new_value\n" +" emit_changed()\n" +"[/codeblock]" +msgstr "" +"发出 [signal changed] 更改信号。某些内置资源会自动调用此方法。\n" +"[b]注意:[/b]对于自定义资源,推荐在发生任何有意义的变化时都调用此方法,例如修" +"改属性时。这样能够保证依赖于此资源的自定义 [Object] 能够正确更新其属性。\n" +"[codeblock]\n" +"var damage:\n" +" set(new_value):\n" +" if damage != new_value:\n" +" damage = new_value\n" +" emit_changed()\n" +"[/codeblock]" + msgid "" "If [member resource_local_to_scene] is set to [code]true[/code] and the " "resource has been loaded from a [PackedScene] instantiation, returns the root " @@ -100000,6 +111139,20 @@ msgstr "" "储在服务器([DisplayServer]、[RenderingServer] 等)中的资源的高级抽象,所以这" "个函数将返回原始的 [RID]。" +msgid "" +"Calls [method _setup_local_to_scene]. If [member resource_local_to_scene] is " +"set to [code]true[/code], this method is automatically called from [method " +"PackedScene.instantiate] by the newly duplicated resource within the scene " +"instance.\n" +"[i]Deprecated.[/i] This method should only be called internally. Override " +"[method _setup_local_to_scene] instead." +msgstr "" +"调用 [method _setup_local_to_scene]。如果 [member resource_local_to_scene] 被" +"设置为 [code]true[/code],则场景实例中新复制的资源会自动从 [method " +"PackedScene.instantiate] 中调用该方法。\n" +"[i]已弃用。[/i]该方法只能被内部调用。使用覆盖 [method _setup_local_to_scene] " +"代替。" + msgid "" "Sets the [member resource_path] to [param path], potentially overriding an " "existing cache entry for this path. Further attempts to load an overridden " @@ -100020,6 +111173,21 @@ msgstr "" "instantiate])。\n" "[b]注意:[/b]运行时,在已创建副本的资源上修改该属性不会有效果。" +msgid "" +"An optional name for this resource. When defined, its value is displayed to " +"represent the resource in the Inspector dock. For built-in scripts, the name " +"is displayed as part of the tab name in the script editor.\n" +"[b]Note:[/b] Some resource formats do not support resource names. You can " +"still set the name in the editor or via code, but it will be lost when the " +"resource is reloaded. For example, only built-in scripts can have a resource " +"name, while scripts stored in separate files cannot." +msgstr "" +"这个资源的可选名称。定义后会在“检查器”面板中显示这个值来代表该资源。对于内置脚" +"本,该名称会在脚本编辑器中作为选项卡名称的一部分显示。\n" +"[b]注意:[/b]某些资源格式不支持资源名称。仍然可以在编辑器中或通过代码设置名" +"称,但重新加载资源时该名称将会丢失。例如,只有内置的脚本可以有资源名称,而存储" +"在单独文件中的脚本则不能。" + msgid "" "The unique path to this resource. If it has been saved to disk, the value " "will be its filepath. If the resource is exclusively contained within a " @@ -100046,6 +111214,17 @@ msgstr "" "[b]注意:[/b]自定义资源的属性不会自动发出此信号。如有必要,需要创建一个 " "setter 来触发。" +msgid "" +"Emitted by a newly duplicated resource with [member resource_local_to_scene] " +"set to [code]true[/code]. \n" +"[i]Deprecated.[/i] This signal is only emitted when the resource is created. " +"Override [method _setup_local_to_scene] instead." +msgstr "" +"由新复制的资源发出,并将 [member resource_local_to_scene] 设置为 [code]true[/" +"code]。\n" +"[i]已弃用。[/i]该信号仅在创建资源时发出。改为覆盖 [method " +"_setup_local_to_scene]。" + msgid "Loads a specific resource type from a file." msgstr "从文件中加载特定资源类型。" @@ -100247,18 +111426,263 @@ msgstr "" "导入器的导入顺序一般应低于[code]100[/code],以避免导入依赖自定义资源的场景时出" "现问题。" +msgid "Imports a [BitMap] resource (2D array of boolean values)." +msgstr "导入 [BitMap] 资源(布尔值的 2D 数组)。" + +msgid "" +"[BitMap] resources are typically used as click masks in [TextureButton] and " +"[TouchScreenButton]." +msgstr "" +"[BitMap] 资源通常被用作 [TextureButton] 和 [TouchScreenButton] 的点击遮罩。" + +msgid "" +"The data source to use for generating the bitmap.\n" +"[b]Black & White:[/b] Pixels whose HSV value is greater than the [member " +"threshold] will be considered as \"enabled\" (bit is [code]true[/code]). If " +"the pixel is lower than or equal to the threshold, it will be considered as " +"\"disabled\" (bit is [code]false[/code]).\n" +"[b]Alpha:[/b] Pixels whose alpha value is greater than the [member threshold] " +"will be considered as \"enabled\" (bit is [code]true[/code]). If the pixel is " +"lower than or equal to the threshold, it will be considered as " +"\"disabled\" (bit is [code]false[/code])." +msgstr "" +"用于生成位图的数据源。\n" +"[b]黑白:[/b]HSV 值大于 [member threshold] 的像素将被视为“启用”(位为 " +"[code]true[/code])。如果像素低于或等于阈值,则将被视为“禁用”(位为 " +"[code]false[/code])。\n" +"[b]Alpha:[/b]Alpha值大于 [member threshold] 的像素将被视为“启用”(位为 " +"[code]true[/code])。如果像素低于或等于阈值,则将被视为“禁用”(位为 " +"[code]false[/code])。" + +msgid "" +"The threshold to use to determine which bits should be considered enabled or " +"disabled. See also [member create_from]." +msgstr "用于确定哪些位应被视为启用或禁用的阈值。另见 [member create_from]。" + +msgid "Imports a bitmap font in the BMFont ([code].fnt[/code]) format." +msgstr "导入 BMFont([code].fnt[/code])格式的位图字体。" + +msgid "" +"The BMFont format is a format created by the [url=https://www.angelcode.com/" +"products/bmfont/]BMFont[/url] program. Many BMFont-compatible programs also " +"exist, like [url=https://www.bmglyph.com/]BMGlyph[/url].\n" +"Compared to [ResourceImporterImageFont], [ResourceImporterBMFont] supports " +"bitmap fonts with varying glyph widths/heights.\n" +"See also [ResourceImporterDynamicFont]." +msgstr "" +"BMFont 格式是由 [url=https://www.angelcode.com/products/bmfont/]BMFont[/url] " +"程序创建的格式。也存在许多与 BMFont 兼容的程序,例如 [url=https://www.bmglyph." +"com/]BMGlyph[/url]。\n" +"与 [ResourceImporterImageFont] 相比,[ResourceImporterBMFont] 能够支持不同字形" +"宽高的位图字体。\n" +"另见 [ResourceImporterDynamicFont]。" + msgid "Bitmap fonts - Using fonts" msgstr "位图字体——使用字体" +msgid "If [code]true[/code], uses lossless compression for the resulting font." +msgstr "如果为 [code]true[/code],则会对得到的字体使用无损压缩。" + +msgid "" +"List of font fallbacks to use if a glyph isn't found in this bitmap font. " +"Fonts at the beginning of the array are attempted first." +msgstr "" +"回退字体列表,在这个位图字体中未找到某个字形时使用。优先尝试靠前的字体。" + +msgid "Font scaling mode." +msgstr "字体缩放模式。" + msgid "Imports comma-separated values" msgstr "导入 CSV" +msgid "" +"Comma-separated values are a plain text table storage format. The format's " +"simplicity makes it easy to edit in any text editor or spreadsheet software. " +"This makes it a common choice for game localization.\n" +"[b]Example CSV file:[/b]\n" +"[codeblock]\n" +"keys,en,es,ja\n" +"GREET,\"Hello, friend!\",\"Hola, amigo!\",こんにちは\n" +"ASK,How are you?,Cómo está?,元気ですか\n" +"BYE,Goodbye,Adiós,さようなら\n" +"QUOTE,\"\"\"Hello\"\" said the man.\",\"\"\"Hola\"\" dijo el hombre.\",「こん" +"にちは」男は言いました\n" +"[/codeblock]" +msgstr "" +"逗号分隔值是纯文本表格存储格式。该格式的简单性使其可以轻松地在任何文本编辑器或" +"电子表格软件中进行编辑。这使其成为游戏本地化的常见选择。\n" +"[b]示例 CSV 文件:[/b]\n" +"[codeblock]\n" +"keys,en,es,ja\n" +"GREET,\"Hello, friend!\",\"Hola, amigo!\",こんにちは\n" +"ASK,How are you?,Cómo está?,元気ですか\n" +"BYE,Goodbye,Adiós,さようなら\n" +"QUOTE,\"\"\"Hello\"\" said the man.\",\"\"\"Hola\"\" dijo el hombre.\",「こん" +"にちは」男は言いました\n" +"[/codeblock]" + msgid "Importing translations" msgstr "导入翻译" +msgid "" +"If [code]true[/code], creates an [OptimizedTranslation] instead of a " +"[Translation]. This makes the resulting file smaller at the cost of a small " +"CPU overhead." +msgstr "" +"如果为 [code]true[/code],则会创建 [OptimizedTranslation] 而不是 " +"[Translation]。这样得到的文件会更小,但代价是 CPU 会消耗得稍多一些。" + +msgid "" +"The delimiter to use in the CSV file. The default value matches the common " +"CSV convention. Tab-separated values are sometimes called TSV files." +msgstr "" +"在 CSV 文件中使用的分隔符。该默认值符合常见的 CSV 约定。制表符分隔值有时被称" +"为 TSV 文件。" + +msgid "" +"Imports a TTF, TTC, OTF, OTC, WOFF or WOFF2 font file for font rendering that " +"adapts to any size." +msgstr "" +"导入 TTF、TTC、OTF、OTC、WOFF、WOFF2 字体文件,用于能够适配任何大小的字体渲" +"染。" + +msgid "" +"Unlike bitmap fonts, dynamic fonts can be resized to any size and still look " +"crisp. Dynamic fonts also optionally support MSDF font rendering, which " +"allows for run-time scale changes with no re-rasterization cost.\n" +"While WOFF and especially WOFF2 tend to result in smaller file sizes, there " +"is no universally \"better\" font format. In most situations, it's " +"recommended to use the font format that was shipped on the font developer's " +"website.\n" +"See also [ResourceImporterBMFont] and [ResourceImporterImageFont]." +msgstr "" +"与位图字体不同,动态字体可以被调整为任意大小,并且看起来仍然清晰。动态字体还可" +"以选择支持 MSDF 字体渲染,从而允许运行时缩放更改,且没有重新光栅化成本。\n" +"虽然 WOFF(尤其是 WOFF2)往往会产生较小的文件大小,但不存在普遍“更好”的字体格" +"式。在大多数情况下,建议使用字体开发人员网站上提供的字体格式。\n" +"另请参见 [ResourceImporterBMFont] 和 [ResourceImporterImageFont]。" + msgid "Dynamic fonts - Using fonts" msgstr "动态字体——使用字体" +msgid "" +"If [code]true[/code], automatically use system fonts as a fallback if a glyph " +"isn't found in this dynamic font. This makes supporting CJK characters or " +"emoji more straightforward, as you don't need to include a CJK/emoji font in " +"your project. See also [member fallbacks].\n" +"[b]Note:[/b] The appearance of system fonts varies across platforms. Loading " +"system fonts is only supported on Windows, macOS, Linux, Android and iOS." +msgstr "" +"为 [code]true[/code] 时,如果在该动态字体中找不到字形,则自动使用系统字体作为" +"后备。这使得支持 CJK 字符或表情符号更加简单,因为你不需要在项目中包含 CJK/表情" +"符号字体。另请参阅 [member fallbacks]。\n" +"[b]注意:[/b]系统字体的外观因平台而异。仅 Windows、macOS、Linux、Android 和 " +"iOS 支持加载系统字体。" + +msgid "" +"The font antialiasing method to use.\n" +"[b]Disabled:[/b] Most suited for pixel art fonts, although you do not " +"[i]have[/i] to change the antialiasing from the default [b]Grayscale[/b] if " +"the font file was well-created and the font is used at an integer multiple of " +"its intended size. If pixel art fonts have a bad appearance at their intended " +"size, try setting [member subpixel_positioning] to [b]Disabled[/b] instead.\n" +"[b]Grayscale:[/b] Use grayscale antialiasing. This is the approach used by " +"the operating system on macOS, Android and iOS.\n" +"[b]LCD Subpixel:[/b] Use antialiasing with subpixel patterns to make fonts " +"sharper on LCD displays. This is the approach used by the operating system on " +"Windows and most Linux distributions. The downside is that this can introduce " +"\"fringing\" on edges, especially on display technologies that don't use " +"standard RGB subpixels (such as OLED displays). The LCD subpixel layout is " +"globally controlled by [member ProjectSettings.gui/theme/" +"lcd_subpixel_layout], which also allows falling back to grayscale " +"antialiasing." +msgstr "" +"要使用的字体抗锯齿方法。\n" +"[b]禁用:[/b]最适合像素艺术字体,如果字体文件创建良好并且字体以其预期大小的整" +"数倍使用,则你不[i]必[/i]更改默认的[b]灰度[/b]抗锯齿。如果像素艺术字体在其预期" +"大小下外观不佳,请尝试将 [member subpixel_positioning] 设置为 [b]Disabled[/" +"b]。\n" +"[b]灰度:[/b]使用灰度抗锯齿。这是 macOS、Android 和 iOS 上的操作系统使用的方" +"法。\n" +"[b]LCD 子像素:[/b]使用子像素模式的抗锯齿,使 LCD 显示器上的字体更加清晰。这" +"是 Windows 和大多数 Linux 发行版上的操作系统使用的方法。缺点是这可能会在边缘产" +"生“边缘”,尤其是在不使用标准 RGB 子像素的显示技术上(例如 OLED 显示器)。LCD " +"子像素布局由 [member ProjectSettings.gui/theme/lcd_subpixel_layout] 全局控制," +"这也允许回退到灰度抗锯齿。" + +msgid "" +"List of font fallbacks to use if a glyph isn't found in this dynamic font. " +"Fonts at the beginning of the array are attempted first, but fallback fonts " +"that don't support the glyph's language and script are attempted last (see " +"[member language_support] and [member script_support]). See also [member " +"allow_system_fallback]." +msgstr "" +"如果在该动态字体中找不到字形,则要使用的字体后备列表。首先尝试位于数组开头的字" +"体,最后尝试不支持字形语言和脚本的后备字体(请参阅 [member language_support] " +"和 [member script_support])。另请参阅 [member allow_system_fallback]。" + +msgid "" +"If [code]true[/code], forces generation of hinting data for the font using " +"[url=https://freetype.org/]FreeType[/url]'s autohinter. This will make " +"[member hinting] effective with fonts that don't include hinting data." +msgstr "" +"如果为 [code]true[/code],则使用 [url=https://freetype.org/]FreeType[/url] 的" +"自动提示器强制生成字体的提示数据。这将使 [member hinting] 对不包含提示数据的字" +"体有效。" + +msgid "" +"If [code]true[/code], this font will have mipmaps generated. This prevents " +"text from looking grainy when a [Control] is scaled down, or when a [Label3D] " +"is viewed from a long distance (if [member Label3D.texture_filter] is set to " +"a mode that displays mipmaps).\n" +"Enabling [member generate_mipmaps] increases font generation time and memory " +"usage. Only enable this setting if you actually need it." +msgstr "" +"如果为 [code]true[/code],则该字体将生成 mipmap。这样可以防止文本在 [Control] " +"被按比例缩小或从远距离查看 [Label3D] 时看起来有颗粒感(如果 [member Label3D." +"texture_filter] 被设置为显示 mipmap 的模式)。\n" +"启用 [member generate_mipmaps] 会增加字体生成时间和内存使用量。请只在你确实需" +"要时才启用此设置。" + +msgid "" +"The hinting mode to use. This controls how aggressively glyph edges should be " +"snapped to pixels when rasterizing the font. Depending on personal " +"preference, you may prefer using one hinting mode over the other. Hinting " +"modes other than [b]None[/b] are only effective if the font contains hinting " +"data (see [member force_autohinter]).\n" +"[b]None:[/b] Smoothest appearance, which can make the font look blurry at " +"small sizes.\n" +"[b]Light:[/b] Sharp result by snapping glyph edges to pixels on the Y axis " +"only.\n" +"[b]Full:[/b] Sharpest by snapping glyph edges to pixels on both X and Y axes." +msgstr "" +"要使用的提示模式。这控制在光栅化字体时应如何积极地将字形边缘吸附到像素。根据个" +"人喜好,你可能更喜欢使用一种提示模式而不是另一种。除 [b]None[/b] 之外的提示模" +"式仅在字体包含提示数据时才有效(请参阅 [member force_autohinter])。\n" +"[b]None:[/b]最平滑的外观,这会使字体在小尺寸下看起来模糊。\n" +"[b]Light:[/b]通过仅将字形边缘吸附到 Y 轴上的像素来获得清晰的结果。\n" +"[b]Full:[/b]通过将字形边缘吸附到 X 轴和 Y 轴上的像素获得最清晰的结果。" + +msgid "" +"Override the list of languages supported by this font. If left empty, this is " +"supplied by the font metadata. There is usually no need to change this. See " +"also [member script_support]." +msgstr "" +"覆盖该字体支持的语言列表。如果留空,则由字体元数据提供。通常无需更改该设置。另" +"见 [member script_support]。" + +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]8[/" +"code] allows outline sizes up to [code]4[/code] to look correct." +msgstr "" +"最小和最大可表示的有符号距离之间的形状周围的范围宽度。如果使用字体轮廓," +"[member msdf_pixel_range] 必须至少设置为最大字体轮廓大小的[i]两倍[/i]。" +"[member msdf_pixel_range] 的默认值为 [code]8[/code],允许大小最大到 [code]4[/" +"code] 的轮廓看起来正确。" + msgid "" "Source font size used to generate MSDF textures. Higher values allow for more " "precision, but are slower to render and require more memory. Only increase " @@ -100305,12 +111729,994 @@ msgstr "" "体物理大小的前提下,使用比原计划更高或更低的分辨率渲染。大多数情况下应该保持" "为 [code]0.0[/code]。" +msgid "" +"The glyph ranges to prerender. This can avoid stuttering during gameplay when " +"new characters need to be rendered, especially if [member " +"subpixel_positioning] is enabled. The downside of using preloading is that " +"initial project load times will increase, as well as memory usage." +msgstr "" +"要预渲染的字形范围。这可以避免在游戏过程中需要渲染新角色时出现卡顿,特别是在启" +"用 [member subpixel_positioning] 的情况下。使用预加载的缺点是初始项目加载时间" +"会增加,内存使用量也会增加。" + +msgid "" +"Override the list of language scripts supported by this font. If left empty, " +"this is supplied by the font metadata. There is usually no need to change " +"this. See also [member language_support]." +msgstr "" +"覆盖该字体支持的语言脚本列表。如果留空,则由字体元数据提供。通常无需更改该设" +"置。另见 [member language_support]。" + +msgid "" +"Subpixel positioning improves font rendering appearance, especially at " +"smaller font sizes. The downside is that it takes more time to initially " +"render the font, which can cause stuttering during gameplay, especially if " +"used with large font sizes. This should be set to [b]Disabled[/b] for fonts " +"with a pixel art appearance.\n" +"[b]Disabled:[/b] No subpixel positioning. Lowest quality, fastest rendering.\n" +"[b]Auto:[/b] Use subpixel positioning at small font sizes (the chosen quality " +"varies depending on font size). Large fonts will not use subpixel " +"positioning. This is a good tradeoff between performance and quality.\n" +"[b]One Half of a Pixel:[/b] Always perform intermediate subpixel positioning " +"regardless of font size. High quality, slow rendering.\n" +"[b]One Quarter of a Pixel:[/b] Always perform precise subpixel positioning " +"regardless of font size. Highest quality, slowest rendering." +msgstr "" +"子像素定位可改善字体渲染外观,尤其是在较小的字体大小下。缺点是初始渲染字体需要" +"更多时间,这可能会导致游戏过程中出现卡顿,特别是在使用大字体时。对于具有像素艺" +"术外观的字体,应将其设置为[b]禁用[/b]。\n" +"[b]禁用:[/b]无子像素定位。质量最低,渲染最快。\n" +"[b]自动:[/b]在小字体大小下使用子像素定位(所选质量根据字体大小而变化)。大字" +"体不会使用子像素定位。这是性能和质量之间的良好权衡。\n" +"[b]半像素:[/b]无论字体大小如何,始终执行中间子像素定位。质量高,渲染速度" +"慢。\n" +"[b]四分之一像素:[/b]无论字体大小如何,始终执行精确的子像素定位。质量最高,渲" +"染最慢。" + +msgid "Imports a image for use in scripting, with no rendering capabilities." +msgstr "导入图像以用于脚本编写,但不具有渲染功能。" + +msgid "" +"This importer imports [Image] resources, as opposed to [CompressedTexture2D]. " +"If you need to render the image in 2D or 3D, use [ResourceImporterTexture] " +"instead." +msgstr "" +"该导入器导入 [Image] 资源,而不是 [CompressedTexture2D]。如果你需要以 2D 或 " +"3D 方式渲染图像,请改用 [ResourceImporterTexture]。" + +msgid "" +"Imports a fixed-width bitmap font where all glyphs have the same width and " +"height." +msgstr "导入等宽位图字体,所有字形使用的都是相同的宽高。" + +msgid "" +"This image-based workflow can be easier to use than [ResourceImporterBMFont], " +"but it requires all glyphs to have the same width and height. This makes " +"[ResourceImporterImageFont] most suited to fixed-width fonts.\n" +"See also [ResourceImporterDynamicFont]." +msgstr "" +"这种基于图像的工作流程比 [ResourceImporterBMFont] 更易于使用,但它要求所有字形" +"具有相同的宽度和高度。这使得 [ResourceImporterImageFont] 最适合固定宽度字" +"体。\n" +"另请参见 [ResourceImporterDynamicFont]。" + +msgid "" +"Margin applied around every imported glyph. If your font image contains " +"guides (in the form of lines between glyphs) or if spacing between characters " +"appears incorrect, try adjusting [member character_margin]." +msgstr "" +"在每个导入的字形周围应用边距。如果你的字体图像包含参考线(以字形之间的线的形" +"式)或者字符之间的间距看起来不正确,请尝试调整 [member character_margin]。" + +msgid "" +"The character ranges to import from the font image. This is an array that " +"maps each position on the image (in tile coordinates, not pixels). The font " +"atlas is traversed from left to right and top to bottom. Characters can be " +"specified with decimal numbers (127), hexadecimal numbers ([code]0x007f[/" +"code]) or between single quotes ([code]'~'[/code]). Ranges can be specified " +"with a hyphen between characters.\n" +"For instance, [code]0-127[/code] (or [code]0x0000-0x007f[/code]) denotes the " +"full ASCII range. As another example, [code]' '-'~'[/code] is equivalent to " +"[code]32-127[/code] and denotes the range of printable (visible) ASCII " +"characters.\n" +"Make sure [member character_ranges] doesn't exceed the number of [member " +"columns] * [member rows] defined. Otherwise, the font will fail to import." +msgstr "" +"从字体图像导入的字符范围。这是一个映射图像上每个位置的数组(以图块坐标,而不是" +"像素映射)。字体图集是从左到右、从上到下遍历的。可以使用十进制数字(127)、十" +"六进制数字([code]0x007f[/code])、或单引号之间([code]'~'[/code])指定字符。" +"可以使用字符之间的连字符指定范围。\n" +"例如,[code]0-127[/code](或 [code]0x0000-0x007f[/code])表示完整的 ASCII 范" +"围。再比如,[code]' '-'~'[/code] 等价于 [code]32-127[/code],表示可打印(可" +"见)ASCII 字符的范围。\n" +"确保 [member character_ranges] 不超过定义的 [member columns] * [member rows] " +"的数量。否则,该字体将无法导入。" + +msgid "Number of columns in the font image. See also [member rows]." +msgstr "字体图像中的列数。另见 [member rows]。" + +msgid "" +"Margin to cut on the sides of the entire image. This can be used to cut parts " +"of the image that contain attribution information or similar." +msgstr "" +"整个图像两侧的裁减边距。这可被用于裁减该图像包含属性信息或类似信息的部分。" + +msgid "Number of rows in the font image. See also [member columns]." +msgstr "字体图像中的行数。另见 [member columns]。" + +msgid "" +"Imports a 3-dimensional texture ([Texture3D]), a [Texture2DArray], a " +"[Cubemap] or a [CubemapArray]." +msgstr "" +"导入 3 维纹理([Texture3D])、[Texture2DArray]、[Cubemap] 或 [CubemapArray]。" + +msgid "" +"This imports a 3-dimensional texture, which can then be used in custom " +"shaders, as a [FogMaterial] density map or as a " +"[GPUParticlesAttractorVectorField3D]. See also [ResourceImporterTexture] and " +"[ResourceImporterTextureAtlas]." +msgstr "" +"这会导入一个三维纹理,然后可以在自定义着色器中将其用作 [FogMaterial] 密度图或 " +"[GPUParticlesAttractorVectorField3D]。另请参见 [ResourceImporterTexture] 和 " +"[ResourceImporterTextureAtlas]。" + +msgid "" +"Controls how color channels should be used in the imported texture.\n" +"[b]sRGB Friendly:[/b], prevents the RG color format from being used, as it " +"does not support sRGB color.\n" +"[b]Optimized:[/b], allows the RG color format to be used if the texture does " +"not use the blue channel. This reduces memory usage if the texture's blue " +"channel can be discarded (all pixels must have a blue value of [code]0[/" +"code]).\n" +"[b]Normal Map (RG Channels):[/b] This forces all layers from the texture to " +"be imported with the RG color format to reduce memory usage, with only the " +"red and green channels preserved. This only has an effect on textures with " +"the VRAM Compressed or Basis Universal compression modes. This mode is only " +"available in layered textures ([Cubemap], [CubemapArray], [Texture2DArray] " +"and [Texture3D])." +msgstr "" +"控制在导入的纹理中应如何使用颜色通道。\n" +"[b]sRGB 友好:[/b]阻止使用 RG 颜色格式,因为它不支持 sRGB 颜色。\n" +"[b]优化:[/b]如果纹理不使用蓝色通道,则允许使用 RG 颜色格式。如果可以丢弃纹理" +"的蓝色通道(所有像素的蓝色值必须为 [code]0[/code]),则可以减少内存使用量。\n" +"[b]法线贴图(RG 通道):[/b]这会强制使用 RG 颜色格式导入纹理中的所有图层,以减" +"少内存使用量,仅保留红色和绿色通道。这仅对具有 VRAM 压缩或 Basis Universal 压" +"缩模式的纹理有影响。该模式仅适用于分层纹理([Cubemap]、[CubemapArray]、" +"[Texture2DArray] 和 [Texture3D])。" + +msgid "" +"Controls how VRAM compression should be performed for HDR images.\n" +"[b]Disabled:[/b] Never use VRAM compression for HDR textures, regardless of " +"whether they're opaque or transparent. Instead, the texture is converted to " +"RGBE9995 (9-bits per channel + 5-bit exponent = 32 bits per pixel) to reduce " +"memory usage compared to a half-float or single-precision float image " +"format.\n" +"[b]Opaque Only:[/b] Only uses VRAM compression for opaque HDR textures. This " +"is due to a limitation of HDR formats, as there is no VRAM-compressed HDR " +"format that supports transparency at the same time.\n" +"[b]Always:[/b] Force VRAM compression even for HDR textures with an alpha " +"channel. To perform this, the alpha channel is discarded on import.\n" +"[b]Note:[/b] Only effective on Radiance HDR ([code].hdr[/code]) and OpenEXR " +"([code].exr[/code]) images." +msgstr "" +"控制如何对 HDR 图像执行 VRAM 压缩。\n" +"[b]禁用:[/b]永远不要对 HDR 纹理使用 VRAM 压缩,无论它们是否透明。相反,该纹理" +"会被转换为 RGBE9995(每通道 9 位 + 5 位指数 = 每像素 32 位),与半浮点或单精度" +"浮点图像格式相比,会减少内存使用量。\n" +"[b]仅不透明:[/b]仅对不透明 HDR 纹理使用 VRAM 压缩。这是由于 HDR 格式的限制," +"因为没有支持 VRAM 压缩且同时支持透明度的 HDR 格式。\n" +"[b]始终:[/b]强制 VRAM 压缩,即使对于具有 Alpha 通道的 HDR 纹理也是如此。为" +"此,在导入时将丢弃 Alpha 通道。\n" +"[b]注意:[/b]仅对 Radiance HDR([code].hdr[/code])和 OpenEXR([code].exr[/" +"code])图像有效。" + +msgid "" +"If [code]true[/code], uses BPTC compression on desktop platforms and ASTC " +"compression on mobile platforms. When using BPTC, BC7 is used for SDR " +"textures and BC6H is used for HDR textures.\n" +"If [code]false[/code], uses the faster but lower-quality S3TC compression on " +"desktop platforms and ETC2 on mobile/web platforms. When using S3TC, DXT1 " +"(BC1) is used for opaque textures and DXT5 (BC3) is used for transparent or " +"normal map (RGTC) textures.\n" +"BPTC and ASTC support VRAM compression for HDR textures, but S3TC and ETC2 do " +"not (see [member compress/hdr_compression])." +msgstr "" +"如果为 [code]true[/code],则在桌面平台上使用 BPTC 压缩,在移动平台上使用 ASTC " +"压缩。使用 BPTC 时,BC7 被用于 SDR 纹理,BC6H 被用于 HDR 纹理。\n" +"如果为 [code]false[/code],则在桌面平台上使用速度更快但质量较低的 S3TC 压缩," +"在移动/Web 平台上使用 ETC2。使用 S3TC 时,DXT1 (BC1) 被用于不透明纹理,DXT5 " +"(BC3) 被用于透明或法线贴图(RGTC)纹理。\n" +"BPTC 和 ASTC 支持 HDR 纹理的 VRAM 压缩,但 S3TC 和 ETC2 不支持(请参阅 " +"[member compress/hdr_compression])。" + +msgid "" +"The quality to use when using the [b]Lossy[/b] compression mode. Higher " +"values result in better quality, at the cost of larger file sizes. Lossy " +"quality does not affect memory usage of the imported texture, only its file " +"size on disk." +msgstr "" +"使用[b]有损[/b]压缩模式时使用的质量。值越高,质量越好,但文件大小越大。有损质" +"量不会影响导入纹理的内存使用情况,只会影响它在磁盘上的文件大小。" + +msgid "" +"The compression mode to use. Each compression mode provides a different " +"tradeoff:\n" +"[b]Lossless[/b]: Original quality, high memory usage, high size on disk, fast " +"import.\n" +"[b]Lossy:[/b] Reduced quality, high memory usage, low size on disk, fast " +"import.\n" +"[b]VRAM Compressed:[/b] Reduced quality, low memory usage, low size on disk, " +"slowest import. Only use for textures in 3D scenes, not for 2D elements.\n" +"[b]VRAM Uncompressed:[/b] Original quality, high memory usage, highest size " +"on disk, fastest import.\n" +"[b]Basis Universal:[/b] Reduced quality, low memory usage, lowest size on " +"disk, slow import. Only use for textures in 3D scenes, not for 2D elements.\n" +"See [url=$DOCS_URL/tutorials/assets_pipeline/importing_images.html#compress-" +"mode]Compress mode[/url] in the manual for more details." +msgstr "" +"要使用的压缩模式。每种压缩模式都提供不同的权衡:\n" +"[b]无损:[/b]原始质量、高内存占用、高磁盘占用、导入速度快。\n" +"[b]有损:[/b]质量降低、高内存占用、低磁盘占用、导入速度快。\n" +"[b]VRAM 压缩:[/b]质量降低、低内存占用、低磁盘占用、导入速度最慢。仅适用于 3D " +"场景中的纹理,不适用于 2D 元素。\n" +"[b]VRAM 未压缩:[/b]原始质量、高内存占用、最高磁盘占用、导入速度最快。\n" +"[b]Basis Universal:[/b]质量降低、低内存占用、最低磁盘占用、导入速度慢。仅适用" +"于 3D 场景中的纹理,不适用于 2D 元素。\n" +"有关更多详细信息,请参阅手册中的 [url=$DOCS_URL/tutorials/assets_pipeline/" +"importing_images.html#compress-mode]压缩模式[/url]。" + +msgid "" +"If [code]true[/code], smaller versions of the texture are generated on " +"import. For example, a 64×64 texture will generate 6 mipmaps (32×32, 16×16, " +"8×8, 4×4, 2×2, 1×1). This has several benefits:\n" +"- Textures will not become grainy in the distance (in 3D), or if scaled down " +"due to [Camera2D] zoom or [CanvasItem] scale (in 2D).\n" +"- Performance will improve if the texture is displayed in the distance, since " +"sampling smaller versions of the original texture is faster and requires less " +"memory bandwidth.\n" +"The downside of mipmaps is that they increase memory usage by roughly 33% " +"(for [Texture2DArray], [Cubemap] and [CubemapArray]) or 14% (for " +"[Texture3D]).\n" +"It's recommended to enable mipmaps in 3D. However, in 2D, this should only be " +"enabled if your project visibly benefits from having mipmaps enabled. If the " +"camera never zooms out significantly, there won't be a benefit to enabling " +"mipmaps but memory usage will increase." +msgstr "" +"如果为 [code]true[/code],则在导入时生成较小版本的纹理。例如,64×64 纹理将生" +"成 6 个多级渐远纹理(32×32、16×16、8×8、4×4、2×2、1×1)。这样做有几个好处:\n" +"- 纹理在远处(3D 中)或由于 [Camera2D] 缩放或 [CanvasItem] 缩放(2D 中)而缩小" +"时不会变得具有颗粒感。\n" +"- 如果纹理显示在远处,性能将会提高,因为对原始纹理的较小版本进行采样速度更快并" +"且需要更少的内存带宽。\n" +"多级渐远纹理的缺点是它们使内存占用增加大约 33%(对于 [Texture2DArray]、" +"[Cubemap] 和 [CubemapArray])或 14%(对于 [Texture3D])。\n" +"建议在 3D 中启用多级渐远纹理。但是,在 2D 中,仅当你的项目明显受益于启用多级渐" +"远纹理 时才应启用该功能。如果相机从不大幅缩小,启用多级渐远纹理不会有任何好" +"处,但内存占用会增加。" + +msgid "Unimplemented. This currently has no effect when changed." +msgstr "未实现。目前,更改后没有效果。" + +msgid "" +"Controls how the cubemap's texture is internally laid out. When using high-" +"resolution cubemaps, [b]2×3[/b] and [b]3×2[/b] are less prone to exceeding " +"hardware texture size limits compared to [b]1×6[/b] and [b]6×1[/b]." +msgstr "" +"控制立方体贴图纹理的内部布局方式。使用高分辨率立方体贴图时,与 [b]1×6[/b] 和 " +"[b]6×1[/b] 相比,[b]2×3[/b] and [b]3×2[/b] 不太容易超出硬件纹理大小限制。" + +msgid "Imports a MP3 audio file for playback." +msgstr "导入 MP3 音频文件进行播放。" + +msgid "" +"MP3 is a lossy audio format, with worse audio quality compared to " +"[ResourceImporterOggVorbis] at a given bitrate.\n" +"In most cases, it's recommended to use Ogg Vorbis over MP3. However, if " +"you're using a MP3 sound source with no higher quality source available, then " +"it's recommended to use the MP3 file directly to avoid double lossy " +"compression.\n" +"MP3 requires more CPU to decode than [ResourceImporterWAV]. If you need to " +"play a lot of simultaneous sounds, it's recommended to use WAV for those " +"sounds instead, especially if targeting low-end devices." +msgstr "" +"MP3 是一种有损音频格式,在给定比特率下,与 [ResourceImporterOggVorbis] 相比," +"音频质量较差。\n" +"在大多数情况下,建议使用 Ogg Vorbis 而不是 MP3。但是,如果你使用的 MP3 音源没" +"有更高质量的可用源,则建议直接使用 MP3 文件以避免两次有损压缩。\n" +"MP3 比 [ResourceImporterWAV] 需要更多的 CPU 来解码。如果你需要同时播放很多声" +"音,建议对这些声音使用 WAV,特别是针对低端设备。" + msgid "Importing audio samples" msgstr "导入音频样本" +msgid "" +"The number of bars within a single beat in the audio track. This is only " +"relevant for music that wishes to make use of interactive music functionality " +"(not implemented yet), not sound effects.\n" +"A more convenient editor for [member bar_beats] is provided in the " +"[b]Advanced Import Settings[/b] dialog, as it lets you preview your changes " +"without having to reimport the audio." +msgstr "" +"音轨中单个节拍内的小节数。这仅与希望利用交互式音乐功能(尚未实现)的音乐相关," +"与声音效果无关。\n" +"[b]高级导入设置[/b]对话框中为 [member bar_beats] 提供了更方便的编辑器,因为它" +"可以让你预览更改,且无需重新导入音频。" + +msgid "" +"The beat count of the audio track. This is only relevant for music that " +"wishes to make use of interactive music functionality (not implemented yet), " +"not sound effects.\n" +"A more convenient editor for [member beat_count] is provided in the " +"[b]Advanced Import Settings[/b] dialog, as it lets you preview your changes " +"without having to reimport the audio." +msgstr "" +"该音轨的节拍数。这仅与希望利用交互式音乐功能(尚未实现)的音乐相关,与声音效果" +"无关。\n" +"[b]高级导入设置[/b]对话框中为 [member beat_count] 提供了更方便的编辑器,因为它" +"可以让你预览更改,且无需重新导入音频。" + +msgid "" +"The Beats Per Minute of the audio track. This should match the BPM measure " +"that was used to compose the track. This is only relevant for music that " +"wishes to make use of interactive music functionality (not implemented yet), " +"not sound effects.\n" +"A more convenient editor for [member bpm] is provided in the [b]Advanced " +"Import Settings[/b] dialog, as it lets you preview your changes without " +"having to reimport the audio." +msgstr "" +"音轨的每分钟节拍数。这应该与用于创作曲目的 BPM 测量相匹配。这仅与希望利用交互" +"式音乐功能(尚未实现)的音乐相关,与声音效果无关。\n" +"[b]高级导入设置[/b]对话框中为 [member bpm] 提供了更方便的编辑器,因为它可以让" +"你预览更改,且无需重新导入音频。" + +msgid "" +"If enabled, the audio will begin playing at the beginning after playback ends " +"by reaching the end of the audio.\n" +"[b]Note:[/b] In [AudioStreamPlayer], the [signal AudioStreamPlayer.finished] " +"signal won't be emitted for looping audio when it reaches the end of the " +"audio file, as the audio will keep playing indefinitely." +msgstr "" +"如果启用,音频将在播放因到达音频末尾而结束后从头开始播放。\n" +"[b]注意:[/b]在 [AudioStreamPlayer] 中,当循环音频到达音频文件末尾时,不会发" +"出 [signal AudioStreamPlayer.finished] 信号,因为音频将无限期地继续播放。" + +msgid "" +"Determines where audio will start to loop after playback reaches the end of " +"the audio. This can be used to only loop a part of the audio file, which is " +"useful for some ambient sounds or music. The value is determined in seconds " +"relative to the beginning of the audio. A value of [code]0.0[/code] will loop " +"the entire audio file.\n" +"Only has an effect if [member loop] is [code]true[/code].\n" +"A more convenient editor for [member loop_offset] is provided in the " +"[b]Advanced Import Settings[/b] dialog, as it lets you preview your changes " +"without having to reimport the audio." +msgstr "" +"确定播放到达音频结尾后音频将开始循环的位置。这可用于仅循环音频文件的一部分,这" +"对于某些环境音或音乐很有用。该值以相对于音频开头的秒数确定。值为 [code]0.0[/" +"code] 将循环整个音频文件。\n" +"仅当 [member loop] 为 [code]true[/code] 时才有效。\n" +"[b]高级导入设置[/b]对话框中为 [member loop_offset] 提供了更方便的编辑器,因为" +"它可以让你预览更改,且无需重新导入音频。" + +msgid "Imports an OBJ 3D model as a standalone [Mesh] or scene." +msgstr "将 OBJ 3D 模型导入为独立 [Mesh] 或场景。" + +msgid "" +"Unlike [ResourceImporterScene], [ResourceImporterOBJ] will import a single " +"[Mesh] resource by default instead of importing a [PackedScene]. This makes " +"it easier to use the [Mesh] resource in nodes that expect direct [Mesh] " +"resources, such as [GridMap], [GPUParticles3D] or [CPUParticles3D]. Note that " +"it is still possible to save mesh resources from 3D scenes using the " +"[b]Advanced Import Settings[/b] dialog, regardless of the source format.\n" +"See also [ResourceImporterScene], which is used for more advanced 3D formats " +"such as glTF." +msgstr "" +"与 [ResourceImporterScene] 不同,[ResourceImporterOBJ] 默认情况下会导入单个 " +"[Mesh] 资源,而不是导入一个 [PackedScene]。这使得在需要直接 [Mesh] 资源的节点" +"(例如 [GridMap]、[GPUParticles3D] 或 [CPUParticles3D])中使用 [Mesh] 资源变得" +"更加容易。请注意,无论源格式如何,仍然可以使用[b]高级导入设置[/b]对话框保存 " +"3D 场景中的网格资源。\n" +"另请参见 [ResourceImporterScene],它被用于更高级的 3D 格式,例如 glTF。" + msgid "Importing 3D scenes" msgstr "导入 3D 场景" +msgid "" +"If [code]true[/code], mesh compression will not be used. Consider enabling if " +"you notice blocky artifacts in your mesh normals or UVs, or if you have " +"meshes that are larger than a few thousand meters in each direction." +msgstr "" +"如果为 [code]true[/code],则不会使用网格压缩。如果你在网格法线或 UV 中发现块状" +"伪影,或者如果你的网格在每个方向都大于几千米,请考虑启用。" + +msgid "" +"If [code]true[/code], generate vertex tangents using [url=http://www." +"mikktspace.com/]Mikktspace[/url] if the source mesh doesn't have tangent " +"data. When possible, it's recommended to let the 3D modeling software " +"generate tangents on export instead on relying on this option. Tangents are " +"required for correct display of normal and height maps, along with any " +"material/shader features that require tangents.\n" +"If you don't need material features that require tangents, disabling this can " +"reduce output file size and speed up importing if the source 3D file doesn't " +"contain tangents." +msgstr "" +"如果为 [code]true[/code],如果源网格没有切线数据,则使用 [url=http://www." +"mikktspace.com/]Mikktspace[/url] 生成顶点切线。如果可能,建议让 3D 建模软件在" +"导出时生成切线,而不是依赖该选项。正确显示法线和高度贴图,以及任何需要切线的材" +"质/着色器功能都需要切线。\n" +"如果你不需要那些需要切线的材质特性,则禁用该功能可以减少输出文件大小,并在源 " +"3D 文件不包含切线的情况下加快导入速度。" + +msgid "" +"Offsets the mesh's data by the specified value. This can be used to work " +"around misaligned meshes without having to modify the source file." +msgstr "将网格数据偏移指定值。这可被用于解决未对齐的网格,而无需修改源文件。" + +msgid "Unused parameter. This currently has no effect." +msgstr "未使用的参数。这目前没有效果。" + +msgid "" +"Scales the mesh's data by the specified value. This can be used to work " +"around misscaled meshes without having to modify the source file." +msgstr "按指定值缩放网格数据。这可被用于解决缩放错误的网格,而无需修改源文件。" + +msgid "Imports an Ogg Vorbis audio file for playback." +msgstr "导入 Ogg Vorbis 音频文件进行播放。" + +msgid "" +"Ogg Vorbis is a lossy audio format, with better audio quality compared to " +"[ResourceImporterMP3] at a given bitrate.\n" +"In most cases, it's recommended to use Ogg Vorbis over MP3. However, if " +"you're using a MP3 sound source with no higher quality source available, then " +"it's recommended to use the MP3 file directly to avoid double lossy " +"compression.\n" +"Ogg Vorbis requires more CPU to decode than [ResourceImporterWAV]. If you " +"need to play a lot of simultaneous sounds, it's recommended to use WAV for " +"those sounds instead, especially if targeting low-end devices." +msgstr "" +"Ogg Vorbis 是一种有损音频格式,在给定比特率下,与 [ResourceImporterMP3] 相比具" +"有更好的音频质量。\n" +"在大多数情况下,建议使用 Ogg Vorbis 而不是 MP3。但是,如果你使用的 MP3 音源没" +"有更高质量的可用音源,则建议直接使用 MP3 文件以避免两次有损压缩。\n" +"Ogg Vorbis 比 [ResourceImporterWAV] 需要更多的 CPU 来解码。如果你需要同时播放" +"很多声音,建议对这些声音使用 WAV,特别是针对低端设备。" + +msgid "" +"This method loads audio data from a PackedByteArray buffer into an " +"AudioStreamOggVorbis object." +msgstr "" +"该方法将音频数据从 PackedByteArray 缓冲区加载到 AudioStreamOggVorbis 对象中。" + +msgid "" +"This method loads audio data from a file into an AudioStreamOggVorbis object. " +"The file path is provided as a string." +msgstr "" +"该方法将音频数据从文件加载到 AudioStreamOggVorbis 对象中。文件路径以字符串形式" +"提供。" + +msgid "Imports a glTF, FBX, Collada or Blender 3D scene." +msgstr "导入 glTF、FBX、Collada 或 Blender 3D 场景。" + +msgid "" +"See also [ResourceImporterOBJ], which is used for OBJ models that can be " +"imported as a standalone [Mesh] or a scene.\n" +"Additional options (such as extracting individual meshes or materials to " +"files) are available in the [b]Advanced Import Settings[/b] dialog. This " +"dialog can be accessed by double-clicking a 3D scene in the FileSystem dock " +"or by selecting a 3D scene in the FileSystem dock, going to the Import dock " +"and choosing [b]Advanced[/b].\n" +"[b]Note:[/b] [ResourceImporterScene] is [i]not[/i] used for [PackedScene]s, " +"such as [code].tscn[/code] and [code].scn[/code] files." +msgstr "" +"另请参见 [ResourceImporterOBJ],它被用于可作为独立 [Mesh] 或场景导入的 OBJ 模" +"型。\n" +"[b]高级导入设置[/b] 对话框中提供了其他选项(例如将单个网格或材质提取到文件)。" +"可以通过双击文件系统停靠面板中的 3D 场景或通过选择文件系统停靠面板中的 3D 场" +"景,转至导入停靠面板并选择[b]高级[/b]来访问该对话框。\n" +"[b]注意:[/b][ResourceImporterScene] [i]未[/i]被用于 [PackedScene],例如 " +"[code].tscn[/code] 和 [code].scn[/code] 文件 。" + +msgid "" +"Contains properties for the scene's subresources. This is an internal option " +"which is not visible in the Import dock." +msgstr "包含场景子资源的属性。这是一个内部选项,在导入停靠面板中不可见。" + +msgid "" +"The number of frames per second to use for baking animation curves to a " +"series of points with linear interpolation. It's recommended to configure " +"this value to match the value you're using as a baseline in your 3D modeling " +"software. Higher values result in more precise animation with fast movement " +"changes, at the cost of higher file sizes and memory usage. Thanks to " +"interpolation, there is usually not much benefit in going above 30 FPS (as " +"the animation will still appear smooth at higher rendering framerates)." +msgstr "" +"用于通过线性插值将动画曲线烘焙为一系列点的每秒帧数。建议配置该值以匹配你在 3D " +"建模软件中用作基线的值。较高的值会导致更精确的快速运动变化的动画,但代价是文件" +"大小和内存占用更大。由于插值,超过 30 FPS 通常不会有太大好处(因为动画在更高的" +"渲染帧速率下仍然会显得平滑)。" + +msgid "If [code]true[/code], import animations from the 3D scene." +msgstr "如果为 [code]true[/code],则从 3D 场景导入动画。" + +msgid "" +"If [code]true[/code], remove animation tracks that only contain default " +"values. This can reduce output file size and memory usage with certain 3D " +"scenes, depending on the contents of their animation tracks." +msgstr "" +"如果为 [code]true[/code],则移除仅包含默认值的动画轨道。这可以减少某些 3D 场景" +"的输出文件大小和内存占用,具体取决于其动画轨道的内容。" + +msgid "" +"If [code]true[/code], trim the beginning and end of animations if there are " +"no keyframe changes. This can reduce output file size and memory usage with " +"certain 3D scenes, depending on the contents of their animation tracks." +msgstr "" +"如果为 [code]true[/code],如果没有关键帧更改,则修剪动画的开头和结尾。这可以减" +"少某些 3D 场景的输出文件大小和内存占用,具体取决于其动画轨道的内容。" + +msgid "" +"Path to an import script, which can run code after the import process has " +"completed for custom processing. See [url=$DOCS_URL/tutorials/assets_pipeline/" +"importing_3d_scenes/import_configuration.html#using-import-scripts-for-" +"automation]Using import scripts for automation[/url] for more information." +msgstr "" +"导入脚本的路径,该脚本可以在导入过程完成后运行代码以进行自定义处理。有关详细信" +"息,请参阅 [url=$DOCS_URL/tutorials/assets_pipeline/importing_3d_scenes/" +"import_configuration.html#using-import-scripts-for-automation]使用导入脚本进行" +"自动化[/url]。" + +msgid "" +"If [code]true[/code], enables the generation of shadow meshes on import. This " +"optimizes shadow rendering without reducing quality by welding vertices " +"together when possible. This in turn reduces the memory bandwidth required to " +"render shadows. Shadow mesh generation currently doesn't support using a " +"lower detail level than the source mesh (but shadow rendering will make use " +"of LODs when relevant)." +msgstr "" +"如果为 [code]true[/code],则在导入时启用阴影网格体的生成。这可以通过在可能的情" +"况下将顶点焊接在一起来优化阴影渲染,且不会降低质量。这反过来又减少了渲染阴影所" +"需的内存带宽。阴影网格生成当前不支持使用比源网格更低的细节级别(但阴影渲染将在" +"相关时使用 LOD)。" + +msgid "" +"If [code]true[/code], generate vertex tangents using [url=http://www." +"mikktspace.com/]Mikktspace[/url] if the input meshes don't have tangent data. " +"When possible, it's recommended to let the 3D modeling software generate " +"tangents on export instead on relying on this option. Tangents are required " +"for correct display of normal and height maps, along with any material/shader " +"features that require tangents.\n" +"If you don't need material features that require tangents, disabling this can " +"reduce output file size and speed up importing if the source 3D file doesn't " +"contain tangents." +msgstr "" +"如果为 [code]true[/code],如果输入网格没有切线数据,则使用 [url=http://www." +"mikktspace.com/]Mikktspace[/url] 生成顶点切线。如果可能,建议让 3D 建模软件在" +"导出时生成切线,而不是依赖于该选项。正确显示法线和高度贴图,以及任何需要切线的" +"材质/着色器功能都需要切线。\n" +"如果你不需要那些需要切线的材质特性,则禁用该功能可以减少输出文件大小,并在源 " +"3D 文件不包含切线的情况下加快导入速度。" + +msgid "" +"If [code]true[/code], generates lower detail variants of the mesh which will " +"be displayed in the distance to improve rendering performance. Not all meshes " +"benefit from LOD, especially if they are never rendered from far away. " +"Disabling this can reduce output file size and speed up importing. See " +"[url=$DOCS_URL/tutorials/3d/mesh_lod.html#doc-mesh-lod]Mesh level of detail " +"(LOD)[/url] for more information." +msgstr "" +"如果为 [code]true[/code],则生成网格的较低细节变体,这些变体将显示在远处以提高" +"渲染性能。并非所有网格体都受益于 LOD,特别是如果它们从未从远处渲染。禁用该功能" +"可以减少输出文件大小并加快导入速度。有关详细信息,请参阅 [url=$DOCS_URL/" +"tutorials/3d/mesh_lod.html#doc-mesh-lod]网格细节级别(LOD)[/url]。" + +msgid "" +"Configures the meshes' [member GeometryInstance3D.gi_mode] in the 3D scene. " +"If set to [b]Static Lightmaps[/b], sets the meshes' GI mode to Static and " +"generates UV2 on import for [LightmapGI] baking." +msgstr "" +"在 3D 场景中配置网格体的 [member GeometryInstance3D.gi_mode]。如果被设置为[b]" +"静态光照贴图[/b],则将网格体的 GI 模式设置为静态并在导入时生成 UV2 以进行 " +"[LightmapGI] 烘焙。" + +msgid "" +"Controls the size of each texel on the baked lightmap. A smaller value " +"results in more precise lightmaps, at the cost of larger lightmap sizes and " +"longer bake times.\n" +"[b]Note:[/b] Only effective if [member meshes/light_baking] is set to " +"[b]Static Lightmaps[/b]." +msgstr "" +"控制烘焙光照贴图上每个纹素的大小。较小的值会产生更精确的光照贴图,但代价是更大" +"的光照贴图大小和更长的烘焙时间。\n" +"[b]注意:[/b]仅当 [member meshes/light_baking] 被设置为[b]静态光照贴图[/b]时有" +"效。" + +msgid "" +"If [code]true[/code], [member nodes/root_scale] will be applied to the " +"descendant nodes, meshes, animations, bones, etc. This means that if you add " +"a child node later on within the imported scene, it won't be scaled. If " +"[code]false[/code], [member nodes/root_scale] will multiply the scale of the " +"root node instead." +msgstr "" +"如果为 [code]true[/code],[member nodes/root_scale] 将被应用于后代节点、网格、" +"动画、骨骼等。这意味着,如果你稍后在导入的场景中添加子节点,它将不会被缩放。如" +"果为 [code]false[/code],[member nodes/root_scale] 将乘以该根节点的缩放。" + +msgid "" +"Override for the root node name. If empty, the root node will use what the " +"scene specifies, or the file name if the scene does not specify a root name." +msgstr "" +"覆盖根节点名称。如果为空,则根节点将使用场景指定的内容;如果场景未指定根名称," +"则根节点将使用该文件名。" + +msgid "" +"The uniform scale to use for the scene root. The default value of [code]1.0[/" +"code] will not perform any rescaling. See [member nodes/apply_root_scale] for " +"details of how this scale is applied." +msgstr "" +"用于场景根的统一缩放。默认值 [code]1.0[/code] 不会执行任何重新缩放。有关如何应" +"用该缩放的详细信息,请参阅 [member nodes/apply_root_scale]。" + +msgid "" +"Override for the root node type. If empty, the root node will use what the " +"scene specifies, or [Node3D] if the scene does not specify a root type. Using " +"a node type that inherits from [Node3D] is recommended. Otherwise, you'll " +"lose the ability to position the node directly in the 3D editor." +msgstr "" +"覆盖该根节点类型。如果为空,则根节点将使用场景指定的内容,如果场景未指定根类" +"型,则根节点将使用 [Node3D]。建议使用继承自 [Node3D] 的节点类型。否则,你将无" +"法直接在 3D 编辑器中定位节点。" + +msgid "" +"If checked, use named [Skin]s for animation. The [MeshInstance3D] node " +"contains 3 properties of relevance here: a skeleton [NodePath] pointing to " +"the [Skeleton3D] node (usually [code]..[/code]), a mesh, and a skin:\n" +"- The [Skeleton3D] node contains a list of bones with names, their pose and " +"rest, a name and a parent bone.\n" +"- The mesh is all of the raw vertex data needed to display a mesh. In terms " +"of the mesh, it knows how vertices are weight-painted and uses some internal " +"numbering often imported from 3D modeling software.\n" +"- The skin contains the information necessary to bind this mesh onto this " +"Skeleton3D. For every one of the internal bone IDs chosen by the 3D modeling " +"software, it contains two things. Firstly, a matrix known as the Bind Pose " +"Matrix, Inverse Bind Matrix, or IBM for short. Secondly, the [Skin] contains " +"each bone's name (if [member skins/use_named_skins] is [code]true[/code]), or " +"the bone's index within the [Skeleton3D] list (if [member skins/" +"use_named_skins] is [code]false[/code]).\n" +"Together, this information is enough to tell Godot how to use the bone poses " +"in the [Skeleton3D] node to render the mesh from each [MeshInstance3D]. Note " +"that each [MeshInstance3D] may share binds, as is common in models exported " +"from Blender, or each [MeshInstance3D] may use a separate [Skin] object, as " +"is common in models exported from other tools such as Maya." +msgstr "" +"如果勾选,则为动画使用命名的 [Skin]。[MeshInstance3D] 节点包含 3 个相关属性:" +"指向 [Skeleton3D] 节点的骨架 [NodePath](通常为 [code]..[/code])、网格、和皮" +"肤:\n" +"- [Skeleton3D] 节点包含骨骼列表,其中包含名称、姿势和休息、名称和父骨骼。\n" +"- 网格是显示网格所需的所有原始顶点数据。就网格而言,它知道如何对顶点进行权重绘" +"制,并使用通常从 3D 建模软件导入的某些内部编号。\n" +"- 皮肤包含将该网格绑定到该 Skeleton3D 上所必需的信息。对于 3D 建模软件选择的每" +"一个内部骨骼 ID,它都包含两件事。首先是一个名为绑定姿势矩阵、逆绑定矩阵、或简" +"称为 IBM 的矩阵。其次,该 [Skin] 包含每个骨骼的名称(如果 [member skins/" +"use_named_skins] 为 [code]true[/code]),或者骨骼在 [Skeleton3D] 列表中的索引" +"(如果 [member skins/use_named_skins] 为 [code]false[/code])。\n" +"总之,这些信息足以告诉 Godot 如何使用 [Skeleton3D] 节点中的骨骼姿势来渲染每个 " +"[MeshInstance3D] 的网格。请注意,每个 [MeshInstance3D] 可以共享绑定,这在从 " +"Blender 导出的模型中很常见;或者每个 [MeshInstance3D] 可以使用单独的 [Skin] 对" +"象,这在从其他工具(例如 Maya)导出的模型中很常见。" + +msgid "Imports native GLSL shaders (not Godot shaders) as a [RDShaderFile]." +msgstr "将原生 GLSL 着色器(不是 Godot 着色器)导入为 [RDShaderFile]。" + +msgid "" +"This imports native GLSL shaders as [RDShaderFile] resources, for use with " +"low-level [RenderingDevice] operations. This importer does [i]not[/i] handle " +"[code].gdshader[/code] files." +msgstr "" +"这会将原生 GLSL 着色器导入为 [RDShaderFile] 资源,以与低级 [RenderingDevice] " +"操作一起使用。该导入器[i]不[/i]处理 [code].gdshader[/code] 文件。" + +msgid "Imports an image for use in 2D or 3D rendering." +msgstr "导入图像以用于 2D 或 3D 渲染。" + +msgid "" +"This importer imports [CompressedTexture2D] resources. If you need to process " +"the image in scripts in a more convenient way, use [ResourceImporterImage] " +"instead. See also [ResourceImporterLayeredTexture]." +msgstr "" +"该导入器导入 [CompressedTexture2D] 资源。如果你需要以更方便的方式处理脚本中的" +"图像,请改用 [ResourceImporterImage]。另见 [ResourceImporterLayeredTexture]。" + +msgid "" +"Controls how color channels should be used in the imported texture.\n" +"[b]sRGB Friendly:[/b] Prevents the RG color format from being used, as it " +"does not support sRGB color.\n" +"[b]Optimized:[/b] Allows the RG color format to be used if the texture does " +"not use the blue channel. This reduces memory usage if the texture's blue " +"channel can be discarded (all pixels must have a blue value of [code]0[/" +"code])." +msgstr "" +"控制在导入的纹理中应如何使用颜色通道。\n" +"[b]sRGB 友好:[/b]阻止使用 RG 颜色格式,因为它不支持 sRGB 颜色。\n" +"[b]优化:[/b]如果纹理不使用蓝色通道,则允许使用 RG 颜色格式。如果可以丢弃纹理" +"的蓝色通道(所有像素的蓝色值必须为 [code]0[/code]),则可以减少内存占用。" + +msgid "" +"When using a texture as normal map, only the red and green channels are " +"required. Given regular texture compression algorithms produce artifacts that " +"don't look that nice in normal maps, the RGTC compression format is the best " +"fit for this data. Forcing this option to Enable will make Godot import the " +"image as RGTC compressed. By default, it's set to Detect. This means that if " +"the texture is ever detected to be used as a normal map, it will be changed " +"to Enable and reimported automatically.\n" +"Note that RGTC compression affects the resulting normal map image. You will " +"have to adjust custom shaders that use the normal map's blue channel to take " +"this into account. Built-in material shaders already ignore the blue channel " +"in a normal map (regardless of the actual normal map's contents)." +msgstr "" +"当使用纹理作为法线贴图时,仅需要红色和绿色通道。鉴于常规纹理压缩算法会产生在法" +"线贴图中看起来不太好的伪像,因此 RGTC 压缩格式最适合该数据。 强制该选项启用将" +"使 Godot 以 RGTC 压缩形式导入图像。默认情况下,它被设置为“检测”。这意味着,如" +"果纹理被检测到用作法线贴图,它将被更改为“启用”并自动重新导入。\n" +"请注意,RGTC 压缩会影响生成的法线贴图图像。你必须调整使用法线贴图的蓝色通道的" +"自定义着色器才能考虑到这一点。内置材质着色器已经忽略法线贴图中的蓝色通道(无论" +"实际法线贴图的内容如何)。" + +msgid "" +"This changes the [member compress/mode] option that is used when a texture is " +"detected as being used in 3D.\n" +"Changing this import option only has an effect if a texture is detected as " +"being used in 3D. Changing this to [b]Disabled[/b] then reimporting will not " +"change the existing compress mode on a texture (if it's detected to be used " +"in 3D), but choosing [b]VRAM Compressed[/b] or [b]Basis Universal[/b] will." +msgstr "" +"这会更改检测到纹理在 3D 中使用时使用的 [member compress/mode] 选项。\n" +"仅当检测到纹理正在 3D 中使用时,更改该导入选项才会生效。将其更改为[b]禁用[/" +"b],然后重新导入不会更改纹理上的已有压缩模式(如果被检测到在 3D 中使用),但选" +"择 [b]VRAM 压缩[/b]或 [b]Basis Universal[/b] 却会。" + +msgid "" +"If [code]true[/code], converts the imported image's colors to match [member " +"EditorSettings.interface/theme/icon_and_font_color]. This assumes the image " +"uses the exact same colors as [url=$DOCS_URL/contributing/development/editor/" +"creating_icons.html]Godot's own color palette for editor icons[/url], with " +"the source file designed for a dark editor theme. This should be enabled for " +"editor plugin icons and custom class icons, but should be left disabled " +"otherwise.\n" +"[b]Note:[/b] Only available for SVG images." +msgstr "" +"如果为 [code]true[/code],则转换导入图像的颜色以匹配 [member EditorSettings." +"interface/theme/icon_and_font_color]。这假设该图像使用与 [url=$DOCS_URL/" +"contributing/development/editor/creating_icons.html]Godot 自己的编辑器图标调色" +"板[/url]完全相同的颜色,源文件是为深色编辑器主题设计的。应该为编辑器插件图标和" +"自定义类图标启用该功能,否则应保持禁用状态。\n" +"[b]注意:[/b]仅适用于 SVG 图像。" + +msgid "" +"If [code]true[/code], scales the imported image to match [member " +"EditorSettings.interface/editor/custom_display_scale]. This should be enabled " +"for editor plugin icons and custom class icons, but should be left disabled " +"otherwise.\n" +"[b]Note:[/b] Only available for SVG images." +msgstr "" +"如果为 [code]true[/code],则缩放导入的图像以匹配 [member EditorSettings." +"interface/editor/custom_display_scale]。应该为编辑器插件图标和自定义类图标启用" +"该功能,否则应保持禁用状态。\n" +"[b]注意:[/b]仅适用于 SVG 图像。" + +msgid "" +"If [code]true[/code], smaller versions of the texture are generated on " +"import. For example, a 64×64 texture will generate 6 mipmaps (32×32, 16×16, " +"8×8, 4×4, 2×2, 1×1). This has several benefits:\n" +"- Textures will not become grainy in the distance (in 3D), or if scaled down " +"due to [Camera2D] zoom or [CanvasItem] scale (in 2D).\n" +"- Performance will improve if the texture is displayed in the distance, since " +"sampling smaller versions of the original texture is faster and requires less " +"memory bandwidth.\n" +"The downside of mipmaps is that they increase memory usage by roughly 33%.\n" +"It's recommended to enable mipmaps in 3D. However, in 2D, this should only be " +"enabled if your project visibly benefits from having mipmaps enabled. If the " +"camera never zooms out significantly, there won't be a benefit to enabling " +"mipmaps but memory usage will increase." +msgstr "" +"如果为 [code]true[/code],则在导入时生成较小版本的纹理。例如,64×64 纹理将生" +"成 6 个多级渐远纹理(32×32、16×16、8×8、4×4、2×2、1×1)。这样做有几个好处:\n" +"- 纹理在远处(在 3D 中)或由于 [Camera2D] 缩放或 [CanvasItem] 缩放(在 2D 中)" +"而缩小时不会变得具有颗粒感。\n" +"- 如果纹理显示在远处,性能将会提高,因为对原始纹理的较小版本进行采样速度更快并" +"且需要更少的内存带宽。\n" +"多级渐远纹理的缺点是它们会增加大约 33% 的内存占用。\n" +"建议在 3D 中启用多级渐远纹理。但是,在 2D 中,仅当你的项目明显受益于启用多级渐" +"远纹理时才应启用该功能。如果相机从不大幅缩小,启用多级渐远纹理不会有任何好处," +"但内存占用会增加。" + +msgid "" +"If [code]true[/code], puts pixels of the same surrounding color in transition " +"from transparent to opaque areas. For textures displayed with bilinear " +"filtering, this helps mitigate the outline effect when exporting images from " +"an image editor.\n" +"It's recommended to leave this enabled (as it is by default), unless this " +"causes issues for a particular image." +msgstr "" +"如果为 [code]true[/code],则将相同周围颜色的像素置于从透明区域到不透明区域的过" +"渡中。对于使用双线性过滤显示的纹理,这有助于减轻从图像编辑器导出图像时的轮廓效" +"果。\n" +"建议启用该功能(默认情况下),除非这会导致特定图像出现问题。" + +msgid "" +"Some HDR images you can find online may be broken and contain sRGB color data " +"(instead of linear color data). It is advised not to use those files. If you " +"absolutely have to, enabling [member process/hdr_as_srgb] will make them look " +"correct.\n" +"[b]Warning:[/b] Enabling [member process/hdr_as_srgb] on well-formatted HDR " +"images will cause the resulting image to look too dark, so leave this on " +"[code]false[/code] if unsure." +msgstr "" +"你在网上可以找到的一些 HDR 图像可能已损坏并包含 sRGB 颜色数据(而不是线性颜色" +"数据)。建议不要使用这些文件。 如果你一定要这样做,启用 [member process/" +"hdr_as_srgb] 将使它们看起来正确。\n" +"[b]警告:[/b]在格式良好的 HDR 图像上启用 [member process/hdr_as_srgb] 将导致生" +"成的图像看起来太暗,因此如果不确定,请将其保留为 [code]false[/code]。" + +msgid "" +"If [code]true[/code], clamps exposure in the imported high dynamic range " +"images using a smart clamping formula (without introducing [i]visible[/i] " +"clipping).\n" +"Some HDR panorama images you can find online may contain extremely bright " +"pixels, due to being taken from real life sources without any clipping.\n" +"While these HDR panorama images are accurate to real life, this can cause the " +"radiance map generated by Godot to contain sparkles when used as a background " +"sky. This can be seen in material reflections (even on rough materials in " +"extreme cases). Enabling [member process/hdr_clamp_exposure] can resolve this." +msgstr "" +"如果为 [code]true[/code],则使用智能钳制公式钳制导入的高动态范围图像中的曝光" +"(而不引入[i]可见的[/i]裁剪)。\n" +"你在网上可以找到的一些 HDR 全景图像可能包含非常明亮的像素,因为这些图像取自现" +"实生活来源,没有任何裁剪。\n" +"虽然这些 HDR 全景图像准确反映现实生活,但这可能会导致 Godot 生成的辐射图在用作" +"背景天空时包含闪光。这可以在材质反射中看到(即使在极端情况下的粗糙材质上)。启" +"用 [member process/hdr_clamp_exposure] 可以解决该问题。" + +msgid "" +"If [code]true[/code], convert the normal map from Y- (DirectX-style) to Y+ " +"(OpenGL-style) by inverting its green color channel. This is the normal map " +"convention expected by Godot.\n" +"More information about normal maps (including a coordinate order table for " +"popular engines) can be found [url=http://wiki.polycount.com/wiki/" +"Normal_Map_Technical_Details]here[/url]." +msgstr "" +"如果为 [code]true[/code],则通过反转其绿色通道将法线贴图从 Y-(DirectX 风格)" +"转换为 Y+(OpenGL 风格)。这是 Godot 所期望的法线贴图约定。\n" +"有关法线贴图(包括流行引擎的坐标顺序表)的更多信息,可以在[url=http://wiki." +"polycount.com/wiki/Normal_Map_Technical_Details]这里[/url]找到。" + +msgid "" +"An alternative to fixing darkened borders with [member process/" +"fix_alpha_border] is to use premultiplied alpha. By enabling this option, the " +"texture will be converted to this format. A premultiplied alpha texture " +"requires specific materials to be displayed correctly:\n" +"- In 2D, a [CanvasItemMaterial] will need to be created and configured to use " +"the [constant CanvasItemMaterial.BLEND_MODE_PREMULT_ALPHA] blend mode on " +"[CanvasItem]s that use this texture.\n" +"- In 3D, there is no support for premultiplied alpha blend mode yet, so this " +"option is only suited for 2D." +msgstr "" +"使用 [member process/fix_alpha_border] 修复黑色边框的另一种方法是使用预乘 " +"Alpha。通过启用该选项,纹理将被转换为该格式。预乘 Alpha 纹理需要特定材质才能正" +"确显示:\n" +"- 在 2D 中,需要创建并配置 [CanvasItemMaterial],以便在使用该纹理的 " +"[CanvasItem] 上使用 [constant CanvasItemMaterial.BLEND_MODE_PREMULT_ALPHA] 混" +"合模式。\n" +"- 在 3D 中,尚不支持预乘 Alpha 混合模式,因此该选项仅适用于 2D。" + +msgid "" +"If set to a value greater than [code]0[/code], the size of the texture is " +"limited on import to a value smaller than or equal to the value specified " +"here. For non-square textures, the size limit affects the longer dimension, " +"with the shorter dimension scaled to preserve aspect ratio. Resizing is " +"performed using cubic interpolation.\n" +"This can be used to reduce memory usage without affecting the source images, " +"or avoid issues with textures not displaying on mobile/web platforms (as " +"these usually can't display textures larger than 4096×4096)." +msgstr "" +"如果被设置为大于 [code]0[/code] 的值,则导入时纹理的大小将被限制为小于或等于此" +"处指定的值。对于非方形纹理,大小限制会影响较长的尺寸,而较短的尺寸会被缩放以保" +"持纵横比。调整大小是使用三次插值来执行的。\n" +"这可被用于减少内存占用而不影响源图像,或避免纹理在移动/Web 平台上不显示的问题" +"(因为这些平台通常无法显示大于 4096×4096 的纹理)。" + +msgid "" +"The color channel to consider as a roughness map in this texture. Only " +"effective if Roughness > Src Normal is not empty." +msgstr "" +"将该纹理视为粗糙度贴图的颜色通道。仅当粗糙度 > Src Normal 不为空时才有效。" + +msgid "" +"The path to the texture to consider as a normal map for roughness filtering " +"on import. Specifying this can help decrease specular aliasing slightly in " +"3D.\n" +"Roughness filtering on import is only used in 3D rendering, not 2D." +msgstr "" +"纹理的路径被视为导入时粗糙度过滤的法线贴图。指定该项有助于稍微减少 3D 中的镜面" +"锯齿。\n" +"导入时的粗糙度过滤仅被用于 3D 渲染,不适用于 2D。" + +msgid "" +"The scale the SVG should be rendered at, with [code]1.0[/code] being the " +"original design size. Higher values result in a larger image. Note that " +"unlike font oversampling, this affects the size the SVG is rendered at in 2D. " +"See also [member editor/scale_with_editor_scale].\n" +"[b]Note:[/b] Only available for SVG images." +msgstr "" +"SVG 应渲染的比例,[code]1.0[/code] 是原始设计尺寸。值越高,图像越大。请注意," +"与字体过采样不同,这会影响 SVG 在 2D 中渲染的大小。另请参阅 [member editor/" +"scale_with_editor_scale]。\n" +"[b]注意:[/b]仅适用于 SVG 图像。" + +msgid "" +"Imports a collection of textures from a PNG image into an optimized " +"[AtlasTexture] for 2D rendering." +msgstr "将 PNG 图像中的纹理集合导入到优化的 [AtlasTexture] 中以进行 2D 渲染。" + +msgid "" +"This imports a collection of textures from a PNG image into an [AtlasTexture] " +"or 2D [ArrayMesh]. This can be used to save memory when importing 2D " +"animations from spritesheets. Texture atlases are only supported in 2D " +"rendering, not 3D. See also [ResourceImporterTexture] and " +"[ResourceImporterLayeredTexture].\n" +"[b]Note:[/b] [ResourceImporterTextureAtlas] does not handle importing " +"[TileSetAtlasSource], which is created using the [TileSet] editor instead." +msgstr "" +"这会将 PNG 图像中的纹理集合导入到 [AtlasTexture] 或 2D [ArrayMesh] 中。从精灵" +"表导入 2D 动画时,这可被用于节省内存。纹理图集仅支持在 2D 中渲染,不支持 3D。" +"另请参见 [ResourceImporterTexture] 和 [ResourceImporterLayeredTexture]。\n" +"[b]注意:[/b][ResourceImporterTextureAtlas] 不处理导入 [TileSetAtlasSource]," +"它是使用 [TileSet] 编辑器创建的。" + +msgid "" +"Path to the atlas spritesheet. This [i]must[/i] be set to valid path to a PNG " +"image. Otherwise, the atlas will fail to import." +msgstr "" +"图集精灵表的路径。该属性[i]必须[/i]被设置为 PNG 图像的有效路径。否则,图集将无" +"法导入。" + +msgid "" +"If [code]true[/code], discards empty areas from the atlas. This only affects " +"final sprite positioning, not storage. See also [member " +"trim_alpha_border_from_region].\n" +"[b]Note:[/b] Only effective if [member import_mode] is [b]Region[/b]." +msgstr "" +"如果为 [code]true[/code],则丢弃图集中的空白区域。这仅影响最终的精灵定位,而不" +"影响存储。另请参见 [member trim_alpha_border_from_region]。\n" +"[b]注意:[/b]仅当 [member import_mode] 为[b]区块[/b]时有效。" + +msgid "" +"[b]Region:[/b] Imports the atlas in an [AtlasTexture] resource, which is " +"rendered as a rectangle. This is fast to render, but transparent areas still " +"have to be rendered if they can't be trimmed effectively by [member " +"trim_alpha_border_from_region]. This can reduce performance when rendering " +"large sprites on screen.\n" +"[b]Mesh:[/b] Imports the atlas as an [ArrayMesh] resource, keeping the " +"original bitmap visible (but rendered as a polygon). This can be used to " +"reduce fill rate when rendering large transparent sprites, at the cost of " +"slower rendering if there are little to no transparent areas in the sprite." +msgstr "" +"[b]区块:[/b]将图集导入到 [AtlasTexture] 资源中,该资源被渲染为矩形。这渲染速" +"度很快,但如果 [member trim_alpha_border_from_region] 无法有效修剪透明区域,则" +"仍然必须渲染透明区域。 在屏幕上渲染大型精灵时,这会降低性能。\n" +"[b]网格:[/b]将图集导入为 [ArrayMesh] 资源,保持原始位图可见(但被渲染为多边" +"形)。这可被用于在渲染大型透明精灵时降低填充率,但代价是如果精灵中几乎没有透明" +"区域,则渲染速度会变慢。" + +msgid "" +"If [code]true[/code], trims the region to exclude fully transparent pixels " +"using a clipping rectangle (which is never rotated). This can be used to save " +"memory. See also [member crop_to_region].\n" +"[b]Note:[/b] Only effective if [member import_mode] is [b]Region[/b]." +msgstr "" +"如果为 [code]true[/code],则使用裁剪矩形(从不旋转)修剪区块以排除完全透明的像" +"素。这可以被用来节省内存。另请参见 [member crop_to_region]。\n" +"[b]注意:[/b]仅当 [member import_mode] 为[b]区块[/b]时有效。" + msgid "Imports a WAV audio file for playback." msgstr "导入 WAV 音频文件,用于播放。" @@ -100703,6 +113109,24 @@ msgstr "返回可用于保存给定类型的资源的扩展列表。" msgid "Unregisters the given [ResourceFormatSaver]." msgstr "取消注册给定的 [ResourceFormatSaver]。" +msgid "" +"Saves a resource to disk to the given path, using a [ResourceFormatSaver] " +"that recognizes the resource object. If [param path] is empty, " +"[ResourceSaver] will try to use [member Resource.resource_path].\n" +"The [param flags] bitmask can be specified to customize the save behavior " +"using [enum SaverFlags] flags.\n" +"Returns [constant OK] on success.\n" +"[b]Note:[/b] When the project is running, any generated UID associated with " +"the resource will not be saved as the required code is only executed in " +"editor mode." +msgstr "" +"使用识别资源对象的 [ResourceFormatSaver] 将资源保存到给定路径。如果 [param " +"path] 为空,则 [ResourceSaver] 将尝试使用 [member Resource.resource_path]。\n" +"可以指定 [param flags] 位掩码以使用 [enum SaverFlags] 标志自定义保存行为。\n" +"成功时返回 [constant OK]。\n" +"[b]注意:[/b]项目正运行时,任何生成的与资源关联的 UID 都不会被保存,因为所需的" +"代码仅在编辑器模式下执行。" + msgid "No resource saving option." msgstr "没有资源保存选项。" @@ -100880,6 +113304,42 @@ msgstr "将网格指定为两个互相垂直的面,形成十字形。" msgid "A custom effect for a [RichTextLabel]." msgstr "[RichTextLabel] 的自定义效果。" +msgid "" +"A custom effect for a [RichTextLabel].\n" +"[b]Note:[/b] For a [RichTextEffect] to be usable, a BBCode tag must be " +"defined as a member variable called [code]bbcode[/code] in the script.\n" +"[codeblocks]\n" +"[gdscript skip-lint]\n" +"# The RichTextEffect will be usable like this: `[example]Some text[/" +"example]`\n" +"var bbcode = \"example\"\n" +"[/gdscript]\n" +"[csharp skip-lint]\n" +"// The RichTextEffect will be usable like this: `[example]Some text[/" +"example]`\n" +"string bbcode = \"example\";\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Note:[/b] As soon as a [RichTextLabel] contains at least one " +"[RichTextEffect], it will continuously process the effect unless the project " +"is paused. This may impact battery life negatively." +msgstr "" +"[RichTextLabel] 的自定义效果。\n" +"[b]注意:[/b]要使用 [RichTextEffect],必须在脚本中定义名为 [code]bbcode[/" +"code] 的成员变量作为 BBCode 标签。\n" +"[codeblocks]\n" +"[gdscript skip-lint]\n" +"# 使用 RichTextEffect 的方式是这样的:`[example]Some text[/example]`\n" +"var bbcode = \"example\"\n" +"[/gdscript]\n" +"[csharp skip-lint]\n" +"// 使用 RichTextEffect 的方式是这样的:`[example]Some text[/example]`\n" +"string bbcode = \"example\";\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]注意:[/b]只要 [RichTextLabel] 包含至少一个 [RichTextEffect],它就会持续处" +"理效果,除非项目暂停。这可能会对电池寿命产生负面影响。" + 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. " @@ -100895,9 +113355,74 @@ msgid "" "and basic formatting." msgstr "用于显示文本的控件,文本中能够包含不同的字体样式、图片以及基础格式。" +msgid "" +"A control for displaying text that can contain custom fonts, images, and " +"basic formatting. [RichTextLabel] 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 skip-lint][b]bold[i]bold italic[/b]italic[/i]" +"[/code], use [code skip-lint][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 skip-lint][center][/code] " +"tag as follows: [code skip-lint][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 "" +"用于显示文本的控件,文本中能够包含自定义字体、图片以及基础格式。" +"[RichTextLabel] 使用内部标签栈管理这些内容。它还可以适应给定的宽度和高度。\n" +"[b]注意:[/b]对 [member text] 赋值会将标签栈清空并根据该属性的内容重建。对 " +"[member text] 所做的任何编辑都将擦除之前从 [method append_text] 和 " +"[code]push_*[/code] / [method pop] 方法等其他手动来源所做的编辑。\n" +"[b]注意:[/b]RichTextLabel 不支持纠缠的 BBCode 标签。例如,请不要使用 [code " +"skip-lint][b]加粗[i]加粗斜体[/b]斜体[/i][/code],请改为 [code skip-lint][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 skip-lint][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.\n" +"[param key] is an optional identifier, that can be used to modify the image " +"via [method update_image].\n" +"If [param pad] is set, and the image is smaller than the size specified by " +"[param width] and [param height], the image padding is added to match the " +"size instead of upscaling.\n" +"If [param size_in_percent] is set, [param width] and [param height] values " +"are percentages of the control width instead of pixels." +msgstr "" +"将图像的开始和结束标签添加到标签栈中,可选择提供 [param width] 和 [param " +"height] 来调整图像大小,提供 [param color] 来给图像混色, [param region] 只使" +"用图像的一部分。\n" +"如果 [param width] 或 [param height] 被设置为 0,图像的大小将被调整以保持原始" +"长宽比。\n" +"如果未设置 [param width] 和 [param height],但设置了 [param region],则将使用" +"该区域的矩形。\n" +"[param key] 是一个可选标识符,可用于通过 [method update_image] 修改图像。\n" +"如果设置了 [param pad],并且该图像小于 [param width] 和 [param height] 指定的" +"大小,则添加图像填充以匹配大小而不是放大图像。\n" +"如果设置了 [param size_in_percent],则 [param width] 和 [param height] 值是控" +"件宽度的百分比而不是像素。" + msgid "Adds raw non-BBCode-parsed text to the tag stack." msgstr "将非 BBCode 解析的原始文本添加到标签栈中。" @@ -101171,6 +113696,46 @@ msgstr "" "终止当前标签。使用 [code]push_*[/code] 方法之后手动关闭 BBCodes。不需要遵循 " "[code]add_*[/code] 方法。" +msgid "Terminates all tags opened by [code]push_*[/code] methods." +msgstr "终止由 [code]push_*[/code] 方法打开的所有标签。" + +msgid "" +"Terminates tags opened after the last [method push_context] call (including " +"context marker), or all tags if there's no context marker on the stack." +msgstr "" +"终止上一次 [method push_context] 调用后打开的标签(包括上下文标记);或者如果" +"堆栈上没有上下文标记,则终止所有标签。" + +msgid "Adds a [code skip-lint][bgcolor][/code] tag to the tag stack." +msgstr "向标签栈中添加 [code skip-lint][bgcolor][/code] 标签。" + +msgid "" +"Adds a [code skip-lint][font][/code] tag with a bold font to the tag stack. " +"This is the same as adding a [code skip-lint][b][/code] tag if not currently " +"in a [code skip-lint][i][/code] tag." +msgstr "" +"在标签栈中添加 [code skip-lint][font][/code] 标签,字体为黑体。如果当前没有 " +"[code skip-lint][i][/code] 标签,则与添加 [code skip-lint][b][/code] 标签相" +"同。" + +msgid "" +"Adds a [code skip-lint][font][/code] tag with a bold italics font to the tag " +"stack." +msgstr "在标签栈中添加 [code skip-lint][font][/code] 标签,字体为粗斜体。" + +msgid "" +"Adds a [code skip-lint][cell][/code] tag to the tag stack. Must be inside a " +"[code skip-lint][table][/code] tag. See [method push_table] for details." +msgstr "" +"在标签栈中添加 [code skip-lint][cell][/code] 标签。必须位于 [code skip-lint]" +"[table][/code] 标签内。详见 [method push_table]。" + +msgid "Adds a [code skip-lint][color][/code] tag to the tag stack." +msgstr "在标签栈中添加 [code skip-lint][color][/code] 标签。" + +msgid "Adds a context marker to the tag stack. See [method pop_context]." +msgstr "将上下文标记添加到标记堆栈。请参阅 [method pop_context]。" + 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." @@ -101178,6 +113743,115 @@ msgstr "" "将一个自定义效果标签添加到标签栈。效果不需要在 [member custom_effects] 中。环" "境被直接传入给效果。" +msgid "" +"Adds a [code skip-lint][dropcap][/code] tag to the tag stack. Drop cap " +"(dropped capital) is a decorative element at the beginning of a paragraph " +"that is larger than the rest of the text." +msgstr "" +"将 [code skip-lint][dropcap][/code] 标签添加到标签堆栈中。首字下沉是一种装饰性" +"元素,位于段落开头,比其余文本要大。" + +msgid "Adds a [code skip-lint][fgcolor][/code] tag to the tag stack." +msgstr "向标签栈中添加 [code skip-lint][fgcolor][/code] 标签。" + +msgid "" +"Adds a [code skip-lint][font][/code] tag to the tag stack. Overrides default " +"fonts for its duration.\n" +"Passing [code]0[/code] to [param font_size] will use the existing default " +"font size." +msgstr "" +"在标签栈中添加 [code skip-lint][font][/code] 标签。在其有效期内覆盖默认字" +"体。\n" +"将 [param font_size] 设置为 [code]0[/code] 会使用默认字体大小。" + +msgid "" +"Adds a [code skip-lint][font_size][/code] tag to the tag stack. Overrides " +"default font size for its duration." +msgstr "" +"在标签栈中添加 [code skip-lint][font_size][/code] 标签。在其有效期内覆盖默认字" +"体大小。" + +msgid "" +"Adds a [code skip-lint][hint][/code] tag to the tag stack. Same as BBCode " +"[code skip-lint][hint=something]{text}[/hint][/code]." +msgstr "" +"向标签栈中添加 [code skip-lint][hint][/code] 标签。类似于 BBCode 的 [code " +"skip-lint][hint=something]{text}[/hint][/code]。" + +msgid "" +"Adds an [code skip-lint][indent][/code] tag to the tag stack. Multiplies " +"[param level] by current [member tab_size] to determine new margin length." +msgstr "" +"添加一个 [code skip-lint][indent][/code] 标签到标签栈。将 [param level] 乘以当" +"前 [member tab_size] 以确定新的边距长度。" + +msgid "" +"Adds a [code skip-lint][font][/code] tag with an italics font to the tag " +"stack. This is the same as adding an [code skip-lint][i][/code] tag if not " +"currently in a [code skip-lint][b][/code] tag." +msgstr "" +"在标签栈中添加 [code skip-lint][font][/code] 标签,字体为斜体。如果当前不在 " +"[code skip-lint][b][/code] 标签中,则与添加 [code skip-lint][i][/code] 标签相" +"同。" + +msgid "" +"Adds language code used for text shaping algorithm and Open-Type font " +"features." +msgstr "添加用于文本塑形算法和 Open-Type 字体功能的语言代码。" + +msgid "" +"Adds [code skip-lint][ol][/code] or [code skip-lint][ul][/code] tag to the " +"tag stack. Multiplies [param level] by current [member tab_size] to determine " +"new margin length." +msgstr "" +"将 [code skip-lint][ol][/code] 或 [code skip-lint][ul][/code] 标签添加到标签堆" +"栈中。将 [param level] 乘以当前 [member tab_size] 来确定新的边距长度。" + +msgid "" +"Adds a meta tag to the tag stack. Similar to the BBCode [code skip-lint]" +"[url=something]{text}[/url][/code], but supports non-[String] metadata types." +msgstr "" +"在标签栈中添加元标签。类似于 BBCode 的 [code skip-lint][url=something]{text}[/" +"url][/code],但支持非 [String] 元数据类型。" + +msgid "" +"Adds a [code skip-lint][font][/code] tag with a monospace font to the tag " +"stack." +msgstr "在标签栈中添加 [code skip-lint][font][/code] 标签,该标签为等宽字体。" + +msgid "" +"Adds a [code skip-lint][font][/code] tag with a normal font to the tag stack." +msgstr "在标签栈中添加具有正常字体的 [code skip-lint][font][/code] 标签。" + +msgid "" +"Adds a [code skip-lint][outline_color][/code] tag to the tag stack. Adds text " +"outline for its duration." +msgstr "" +"在标签栈中添加 [code skip-lint][outline_color][/code] 标签。在其有效期内为文本" +"添加轮廓。" + +msgid "" +"Adds a [code skip-lint][outline_size][/code] tag to the tag stack. Overrides " +"default text outline size for its duration." +msgstr "" +"在标签栈中添加 [code skip-lint][outline_size][/code] 标签。在其有效期内覆盖默" +"认的文本轮廓大小。" + +msgid "Adds a [code skip-lint][p][/code] tag to the tag stack." +msgstr "向标签栈中添加 [code skip-lint][p][/code] 标签。" + +msgid "Adds a [code skip-lint][s][/code] tag to the tag stack." +msgstr "向标签栈中添加 [code skip-lint][s][/code] 标签。" + +msgid "" +"Adds a [code skip-lint][table=columns,inline_align][/code] tag to the tag " +"stack." +msgstr "" +"向标签栈中添加 [code skip-lint][table=columns,inline_align][/code] 标签。" + +msgid "Adds a [code skip-lint][u][/code] tag to the tag stack." +msgstr "向标签栈中添加 [code skip-lint][u][/code] 标签。" + msgid "" "Removes a paragraph of content from the label. Returns [code]true[/code] if " "the paragraph exists.\n" @@ -101234,6 +113908,13 @@ msgstr "" "素。\n" "如果 [param expand] 为 [code]false[/code],则该列将不会对总比率产生影响。" +msgid "" +"Updates the existing images with the key [param key]. Only properties " +"specified by [param mask] bits are updated. See [method add_image]." +msgstr "" +"使用键 [param key] 更新已有图像。仅更新 [param mask] 位指定的属性。请参阅 " +"[method add_image]。" + msgid "" "If set to something other than [constant TextServer.AUTOWRAP_OFF], the text " "gets wrapped inside the node's bounding rectangle. To see how each mode " @@ -101263,6 +113944,20 @@ msgstr "" "如果为 [code]true[/code],该标签的最小尺寸会自动更新,适应其内容,与 [Label] " "的行为相匹配。" +msgid "" +"If [code]true[/code], the label underlines hint tags such as [code skip-lint]" +"[hint=description]{text}[/hint][/code]." +msgstr "" +"如果为 [code]true[/code],则该标签节点会在 hint 标记下,加下划线,例如 [code " +"skip-lint][hint=description]{text}[/hint][/code]。" + +msgid "" +"If [code]true[/code], the label underlines meta tags such as [code skip-lint]" +"[url]{text}[/url][/code]." +msgstr "" +"如果为 [code]true[/code],则会在元标签下划线,例如 [code skip-lint][url]{text}" +"[/url][/code]。" + msgid "" "The delay after which the loading progress bar is displayed, in milliseconds. " "Set to [code]-1[/code] to disable progress bar entirely.\n" @@ -101301,12 +113996,44 @@ msgstr "" "与单个制表符长度关联的空格数。不影响文本标签中的 [code]\\t[/code],只影响缩进" "标签。" +msgid "" +"The label's text in BBCode format. Is not representative of manual " +"modifications to the internal tag stack. Erases changes made by other methods " +"when edited.\n" +"[b]Note:[/b] If [member bbcode_enabled] is [code]true[/code], it is unadvised " +"to use the [code]+=[/code] operator with [member text] (e.g. [code]text += " +"\"some string\"[/code]) as it replaces the whole text and can cause " +"slowdowns. It will also erase all BBCode that was added to stack using " +"[code]push_*[/code] methods. Use [method append_text] for adding text " +"instead, unless you absolutely need to close a tag that was opened in an " +"earlier method call." +msgstr "" +"该标签的在 BBCode 格式中的文本。不代表对内部标签堆栈的手动修改。编辑时擦除通过" +"其他方法所做的更改。\n" +"[b]注意:[/b]如果 [member bbcode_enabled] 为 [code]true[/code],则不建议将 " +"[code]+=[/code] 运算符与 [member text] 一起使用(例如 [code]text += \"some " +"string\"[/code])因为它会替换整个文本并可能导致速度变慢。它还将擦除使用 " +"[code]push_*[/code] 方法添加到堆栈中的所有 BBCode。请改用 [method " +"append_text] 添加文本,除非你绝对需要关闭在之前的方法调用中打开的标签。" + msgid "If [code]true[/code], text processing is done in a background thread." msgstr "如果为 [code]true[/code],则文本处理在后台线程中完成。" msgid "Triggered when the document is fully loaded." msgstr "当文档完全加载时触发。" +msgid "" +"Triggered when the user clicks on content between meta tags. If the meta is " +"defined in text, e.g. [code skip-lint][url={\"data\"=\"hi\"}]hi[/url][/code], " +"then the parameter for this signal will be a [String] type. If a particular " +"type or an object is desired, the [method push_meta] method must be used to " +"manually insert the data into the tag stack." +msgstr "" +"当用户点击元标记之间的内容时触发。如果元是在文本中定义的,例如 [code skip-" +"lint][url={\"data\"=\"hi\"}]hi[/url][/code],则该信号的参数为 [String] 类型。" +"如果需要特定类型或对象,则必须使用 [method push_meta] 方法将数据手动插入标签" +"栈。" + msgid "Triggers when the mouse exits a meta tag." msgstr "当鼠标退出元标签时触发。" @@ -101328,6 +114055,33 @@ msgstr "每个列表项都有实心圆标记。" msgid "Selects the whole [RichTextLabel] text." msgstr "全选 [TextEdit] 文本。" +msgid "If this bit is set, [method update_image] changes image texture." +msgstr "如果设置了该位,[method update_image] 会更改图像纹理。" + +msgid "If this bit is set, [method update_image] changes image size." +msgstr "如果设置了该位,[method update_image] 会更改图像大小。" + +msgid "If this bit is set, [method update_image] changes image color." +msgstr "如果设置了该位,[method update_image] 会更改图像颜色。" + +msgid "" +"If this bit is set, [method update_image] changes image inline alignment." +msgstr "如果设置了该位,[method update_image] 会更改图像内联对齐方式。" + +msgid "If this bit is set, [method update_image] changes image texture region." +msgstr "如果设置了该位,[method update_image] 会更改图像纹理区块。" + +msgid "If this bit is set, [method update_image] changes image padding." +msgstr "如果设置了该位,[method update_image] 会更改图像填充。" + +msgid "If this bit is set, [method update_image] changes image tooltip." +msgstr "如果设置了该位,[method update_image] 会更改图像工具提示。" + +msgid "" +"If this bit is set, [method update_image] changes image width from/to " +"percents." +msgstr "如果设置了该位,[method update_image] 会将图像宽度更改自/为百分比。" + msgid "The default text color." msgstr "默认文本颜色。" @@ -101372,6 +114126,22 @@ msgstr "表中元素的水平间距。" msgid "The vertical separation of elements in a table." msgstr "表中元素的垂直间距。" +msgid "" +"The horizontal padding around boxes drawn by the [code][fgcolor][/code] and " +"[code][bgcolor][/code] tags. This does not affect the appearance of text " +"selection." +msgstr "" +"由 [code][fgcolor][/code] 和 [code][bgcolor][/code] 标记绘制的框周围的水平填" +"充。这不会影响文本选择的外观。" + +msgid "" +"The vertical padding around boxes drawn by the [code][fgcolor][/code] and " +"[code][bgcolor][/code] tags. This does not affect the appearance of text " +"selection." +msgstr "" +"由 [code][fgcolor][/code] 和 [code][bgcolor][/code] 标记绘制的框周围的垂直填" +"充。这不会影响文本选择的外观。" + msgid "The font used for bold text." msgstr "用于粗体字的字体。" @@ -101402,6 +114172,22 @@ msgstr "用于等宽文本的字体大小。" msgid "The default text font size." msgstr "默认文本字体大小。" +msgid "" +"The background used when the [RichTextLabel] is focused. The [theme_item " +"focus] [StyleBox] is displayed [i]over[/i] the base [StyleBox], so a " +"partially transparent [StyleBox] should be used to ensure the base [StyleBox] " +"remains visible. A [StyleBox] that represents an outline or an underline " +"works well for this purpose. To disable the focus visual effect, assign a " +"[StyleBoxEmpty] resource. Note that disabling the focus visual effect will " +"harm keyboard/controller navigation usability, so this is not recommended for " +"accessibility reasons." +msgstr "" +"该 [RichTextLabel] 处于聚焦状态时使用的背景。[theme_item focus] [StyleBox] 显" +"示在基础 [StyleBox] [i]之上[/i],所以应该使用部分透明的 [StyleBox],确保基础 " +"[StyleBox] 仍然可见。代表轮廓或下划线的 [StyleBox] 可以很好地实现这个目的。要" +"禁用聚焦的视觉效果,请指定 [StyleBoxEmpty] 资源。请注意,禁用聚焦的视觉效果会" +"影响使用键盘/手柄进行导航的可用性,所以出于可访问性的原因,不建议这样做。" + msgid "The normal background for the [RichTextLabel]." msgstr "[RichTextLabel] 的正常背景。" @@ -102114,6 +114900,69 @@ msgstr "" "生 RigidBody3D 的重力。例如,值为 1 表示正常重力,值为 2 将施加双倍重力,而值" "为 0.5 将施加一半重力到该对象。" +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 [constant Vector3.ZERO], 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(\"Ball\");\n" +"}\n" +"\n" +"private Vector3 GetBallInertia()\n" +"{\n" +" return PhysicsServer3D.BodyGetDirectState(_ball.GetRid()).InverseInertia." +"Inverse();\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"该物体的惯性力矩。与质量类似,但适用于旋转:用于确定各个轴上需要施加多少扭矩才" +"能让该物体旋转。通常会自动根据质量和形状计算惯性力矩,但这个属性能够让你设置自" +"定义的值。\n" +"设置为 [constant Vector3.ZERO] 时,会自动计算惯性(默认值)。\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(\"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 " @@ -102212,9 +115061,31 @@ msgstr "" "[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 [AnimationMixer]." +msgstr "仅限编辑器的帮助程序,用于在 [AnimationMixer] 中设置根运动。" + +msgid "" +"[i]Root motion[/i] refers to an animation technique where a mesh's skeleton " +"is used to give impulse to a character. When working with 3D animations, a " +"popular technique is for animators to use the root skeleton bone to give " +"motion to the rest of the skeleton. This allows animating characters in a way " +"where steps actually match the floor below. It also allows precise " +"interaction with objects during cinematics. See also [AnimationMixer].\n" +"[b]Note:[/b] [RootMotionView] is only visible in the editor. It will be " +"hidden automatically in the running project." +msgstr "" +"[i]根运动[/i]是指一种动画技术,通过使用网格的骨架为角色提供冲量。在处理 3D 动" +"画时,动画师的一种流行技术是使用根骨架骨骼为骨架的其余部分提供运动。这允许以脚" +"步实际与下面的地板匹配的方式对角色进行动画处理。它还允许在过场动画期间与对象进" +"行精确交互。另请参阅 [AnimationMixer]。\n" +"[b]注意:[/b][RootMotionView] 仅在编辑器中可见。在运行的项目中将自动隐藏。" + msgid "Using AnimationTree - Root motion" msgstr "使用 AnimationTree - 根运动" +msgid "Path to an [AnimationMixer] node to use as a basis for root motion." +msgstr "用作根运动的基的 [AnimationMixer] 节点的路径。" + msgid "The grid's cell size in 3D units." msgstr "以 3D 单位表示的网格单元大小。" @@ -102467,11 +115338,34 @@ msgstr "返回给定的 [param path] 是否配置为同步。" msgid "Finds the index of the given [param path]." msgstr "查找给定 [param path] 的索引。" +msgid "" +"Returns the replication mode for the property identified by the given [param " +"path]. See [enum ReplicationMode]." +msgstr "" +"返回给定 [param path] 标识的属性的复制模式。请参阅 [enum ReplicationMode]。" + msgid "" "Returns whether the property identified by the given [param path] is " "configured to be synchronized on spawn." msgstr "返回属性是否配置为在出生时同步,该属性由 [param path] 指定。" +msgid "" +"Returns whether the property identified by the given [param path] is " +"configured to be synchronized on process.\n" +"[i]Deprecated.[/i] Use [method property_get_replication_mode] instead." +msgstr "" +"返回属性是否配置为在处理时同步,该属性由[param path] 指定。\n" +"[i]已废弃。[/i]请改用 [method property_get_replication_mode]。" + +msgid "" +"Returns whether the property identified by the given [param path] is " +"configured to be reliably synchronized when changes are detected on process.\n" +"[i]Deprecated.[/i] Use [method property_get_replication_mode] instead." +msgstr "" +"返回属性是否配置为在处理中检测到变化时进行可靠同步,该属性由 [param path] 指" +"定。\n" +"[i]已废弃。[/i]请改用 [method property_get_replication_mode]。" + msgid "" "Sets the synchronization mode for the property identified by the given [param " "path]. See [enum ReplicationMode]." @@ -102898,6 +115792,16 @@ msgid "" "application started." msgstr "返回当前的帧数,即自应用程序启动以来的总帧数。" +msgid "" +"Searches for the [MultiplayerAPI] configured for the given path, if one does " +"not exist it searches the parent paths until one is found. If the path is " +"empty, or none is found, the default one is returned. See [method " +"set_multiplayer]." +msgstr "" +"搜索为给定路径配置的 [MultiplayerAPI],如果不存在,则会搜索父路径,直到找到为" +"止。如果路径为空,或者没有找到,则返回默认路径。参见 [method " +"set_multiplayer]。" + msgid "Returns the number of nodes in this [SceneTree]." msgstr "返回此 [SceneTree] 中的节点数。" @@ -103011,6 +115915,21 @@ msgstr "" "[constant GROUP_CALL_DEFERRED] 标志,则属性将在该帧的末尾再设置,类似于 " "[method Object.call_deferred]。" +msgid "" +"Sets a custom [MultiplayerAPI] with the given [param root_path] (controlling " +"also the relative subpaths), or override the default one if [param root_path] " +"is empty.\n" +"[b]Note:[/b] No [MultiplayerAPI] must be configured for the subpath " +"containing [param root_path], nested custom multiplayers are not allowed. I." +"e. if one is configured for [code]\"/root/Foo\"[/code] setting one for " +"[code]\"/root/Foo/Bar\"[/code] will cause an error." +msgstr "" +"用给定的 [param root_path] 设置自定义的 [MultiplayerAPI](同时控制相对的子路" +"径),如果 [param root_path] 为空,则会覆盖默认值。\n" +"[b]注意:[/b][MultiplayerAPI] 不能为包含 [param root_path] 的子路径配置,嵌套" +"的自定义多人游戏是不被允许的。例如,如果为 [code]\"/root/Foo\"[/code] 配置了一" +"项,则为 [code]\"/root/Foo/Bar\"[/code] 设置一项将导致错误。" + msgid "If a current scene is loaded, calling this method will unload it." msgstr "如果当前场景已加载,调用此方法将进行卸载。" @@ -103514,12 +116433,26 @@ msgstr "" msgid "Emitted when the scrollbar is being scrolled." msgstr "当滚动条滚动时发出。" +msgid "" +"Icon used as a button to scroll the [ScrollBar] left/up. Supports custom step " +"using the [member ScrollBar.custom_step] property." +msgstr "" +"用作向左/向上滚动 [ScrollBar] 的按钮的图标。使用 [member ScrollBar." +"custom_step] 属性支持自定义步长。" + msgid "Displayed when the mouse cursor hovers over the decrement button." msgstr "当鼠标指针悬停在递减按钮上时显示。" msgid "Displayed when the decrement button is being pressed." msgstr "在按下递减按钮时显示。" +msgid "" +"Icon used as a button to scroll the [ScrollBar] right/down. Supports custom " +"step using the [member ScrollBar.custom_step] property." +msgstr "" +"用作向右/向下滚动 [ScrollBar] 的按钮的图标。使用 [member ScrollBar." +"custom_step] 属性支持自定义步长。" + msgid "Displayed when the mouse cursor hovers over the increment button." msgstr "当鼠标指针悬停在增量按钮上时显示。" @@ -103619,6 +116552,26 @@ msgid "" "sensitive." msgstr "触摸滚动的死区。较低的死区使滚动更加敏感。" +msgid "" +"The current horizontal scroll value.\n" +"[b]Note:[/b] If you are setting this value in the [method Node._ready] " +"function or earlier, it needs to be wrapped with [method Object." +"set_deferred], since scroll bar's [member Range.max_value] is not initialized " +"yet.\n" +"[codeblock]\n" +"func _ready():\n" +" set_deferred(\"scroll_horizontal\", 600)\n" +"[/codeblock]" +msgstr "" +"当前的水平滚动值。\n" +"[b]注意:[/b]如果在 [method Node._ready] 函数或更早的函数中设置该值,则需要用 " +"[method Object.set_deferred] 包装,因为滚动条的 [member Range.max_value] 此时" +"尚未初始化。\n" +"[codeblock]\n" +"func _ready():\n" +" set_deferred(\"scroll_horizontal\", 600)\n" +"[/codeblock]" + msgid "" "Overrides the [member ScrollBar.custom_step] used when clicking the internal " "scroll bar's horizontal increment and decrement buttons or when using arrow " @@ -103656,6 +116609,34 @@ msgid "" "visible. See [enum ScrollMode] for options." msgstr "控制垂直滚动条是否可用、应该何时可见。选项见 [enum ScrollMode]。" +msgid "" +"Emitted when scrolling stops when dragging the scrollable area [i]with a " +"touch event[/i]. This signal is [i]not[/i] emitted when scrolling by dragging " +"the scrollbar, scrolling with the mouse wheel or scrolling with keyboard/" +"gamepad events.\n" +"[b]Note:[/b] This signal is only emitted on Android or iOS, or on desktop/web " +"platforms when [member ProjectSettings.input_devices/pointing/" +"emulate_touch_from_mouse] is enabled." +msgstr "" +"当[i]通过触摸事件[/i]拖动可滚动区域而导致滚动停止时发出。当通过拖动滚动条滚" +"动、使用鼠标滚轮滚动、或使用键盘/游戏手柄事件滚动时,[i]不[/i]会发出该信号。\n" +"[b]注意:[/b]该信号仅在 Android 或 iOS 上,或在启用 [member ProjectSettings." +"input_devices/pointing/emulate_touch_from_mouse] 时的桌面/Web 平台上发出。" + +msgid "" +"Emitted when scrolling starts when dragging the scrollable area w[i]ith a " +"touch event[/i]. This signal is [i]not[/i] emitted when scrolling by dragging " +"the scrollbar, scrolling with the mouse wheel or scrolling with keyboard/" +"gamepad events.\n" +"[b]Note:[/b] This signal is only emitted on Android or iOS, or on desktop/web " +"platforms when [member ProjectSettings.input_devices/pointing/" +"emulate_touch_from_mouse] is enabled." +msgstr "" +"当[i]通过触摸事件[/i]拖动可滚动区域而导致滚动开始时发出。当通过拖动滚动条滚" +"动、使用鼠标滚轮滚动、或使用键盘/游戏手柄事件滚动时,[i]不[/i]会发出该信号。\n" +"[b]注意:[/b]该信号仅在 Android 或 iOS 上,或在启用 [member ProjectSettings." +"input_devices/pointing/emulate_touch_from_mouse] 时的桌面/Web 平台上发出。" + msgid "Scrolling disabled, scrollbar will be invisible." msgstr "禁用滚动,滚动条不可见。" @@ -103731,6 +116712,18 @@ msgid "" "any collider." msgstr "用于物理碰撞的 2D 射线形状,会尝试将自己与其他碰撞体分开。" +msgid "" +"A 2D ray shape, intended for use in physics. Usually used to provide a shape " +"for a [CollisionShape2D]. When a [SeparationRayShape2D] collides with an " +"object, it tries to separate itself from it by moving its endpoint to the " +"collision point. For example, a [SeparationRayShape2D] next to a character " +"can allow it to instantly move up when touching stairs." +msgstr "" +"2D 射线形状,旨在用于物理。通常用来为 [CollisionShape2D] 提供形状。" +"[SeparationRayShape2D] 与某个对象发生碰撞时,会尝试将其端点移动至碰撞点,来将" +"自己与该对象分离。例如,角色旁边的 [SeparationRayShape2D] 可以让角色在接触楼梯" +"时立即向上移动。" + msgid "The ray's length." msgstr "射线的长度。" @@ -103750,6 +116743,18 @@ msgid "" "any collider." msgstr "用于物理碰撞的 3D 射线形状,会尝试将自己与其他碰撞体分开。" +msgid "" +"A 3D ray shape, intended for use in physics. Usually used to provide a shape " +"for a [CollisionShape3D]. When a [SeparationRayShape3D] collides with an " +"object, it tries to separate itself from it by moving its endpoint to the " +"collision point. For example, a [SeparationRayShape3D] next to a character " +"can allow it to instantly move up when touching stairs." +msgstr "" +"3D 射线形状,旨在用于物理。通常用来为 [CollisionShape3D] 提供形状。" +"[SeparationRayShape3D] 与某个对象发生碰撞时,会尝试将其端点移动至碰撞点,来将" +"自己与该对象分离。例如,角色旁边的 [SeparationRayShape3D] 可以让角色在接触楼梯" +"时立即向上移动。" + msgid "Abstract base class for separators." msgstr "分隔线的抽象基类。" @@ -103760,6 +116765,18 @@ msgstr "" "分隔线的抽象基类,用于分隔其他控件。[Separator] 只提供视觉上的分隔,通常用 " "[StyleBoxLine] 绘制。" +msgid "" +"The size of the area covered by the separator. Effectively works like a " +"minimum width/height." +msgstr "分隔器所覆盖区域的大小。其作用类似于最小宽度/高度。" + +msgid "" +"The style for the separator line. Works best with [StyleBoxLine] (remember to " +"enable [member StyleBoxLine.vertical] for [VSeparator])." +msgstr "" +"分隔线的样式。与 [StyleBoxLine] 一起使用效果最好(请记住为 [VSeparator] 启用 " +"[member StyleBoxLine.vertical])。" + msgid "A shader implemented in the Godot shading language." msgstr "用 Godot 着色语言实现的着色器。" @@ -103905,6 +116922,30 @@ msgstr "" "返回着色器头文件的代码。返回的文本是用户所编写的内容,不是内部使用的完整生成的" "代码。" +msgid "" +"A material defined by a custom [Shader] program and the values of its shader " +"parameters." +msgstr "由自定义 [Shader] 程序定义的材质及其着色器参数的值。" + +msgid "" +"A material that uses a custom [Shader] program to render visual items (canvas " +"items, meshes, skies, fog), or to process particles. Compared to other " +"materials, [ShaderMaterial] gives deeper control over the generated shader " +"code. For more information, see the shaders documentation index below.\n" +"Multiple [ShaderMaterial]s can use the same shader and configure different " +"values for the shader uniforms.\n" +"[b]Note:[/b] For performance reasons, the [signal Resource.changed] signal is " +"only emitted when the [member Resource.resource_name] changes. Only in " +"editor, it is also emitted for [member shader] changes." +msgstr "" +"使用自定义 [Shader] 程序来渲染可见项目(画布项目、网格、天空、雾)或处理粒子的" +"材质。与其他材质相比,[ShaderMaterial] 可以更深入地控制生成的着色器代码。有关" +"更多信息,请参阅下面的着色器文档索引。\n" +"多个 [ShaderMaterial] 可以使用相同的着色器并为着色器 uniform 配置不同的值。\n" +"[b]注意:[/b]出于性能原因,仅当 [member Resource.resource_name] 更改时才会发" +"出 [signal Resource.changed] 信号。仅在编辑器中,它也会针对 [member shader] 更" +"改而发出。" + msgid "" "Returns the current value set for this material of a uniform in the shader." msgstr "返回在着色器中此 uniform 材质的当前值。" @@ -104126,6 +117167,16 @@ msgstr "添加碰撞例外,使该形状不汇报与指定 [RID] 节点的碰 msgid "Removes all collision exceptions for this shape." msgstr "移除该形状的所有碰撞例外。" +msgid "" +"Updates the collision information for the shape immediately, without waiting " +"for the next [code]_physics_process[/code] call. Use this method, for " +"example, when the shape or its parent has changed state.\n" +"[b]Note:[/b] [code]enabled == true[/code] is not required for this to work." +msgstr "" +"立即更新形状的碰撞信息,不等待下一次的 [code]_physics_process[/code] 调用。例" +"如,请在形状或其父级更改状态后使用该方法。\n" +"[b]注意:[/b]不需要 [code]enabled == true[/code] 即可生效。" + msgid "" "The fraction from the [ShapeCast2D]'s origin to its [member target_position] " "(between 0 and 1) of how far the shape can move without triggering a " @@ -106037,6 +119088,16 @@ msgstr "" "针对人体优化的 [SkeletonProfile] 预设。存在的意义是进行标准化,所以所有参数都" "是只读的。" +msgid "Defines a 3D environment's background by using a [Material]." +msgstr "使用 [Material] 定义 3D 环境的背景。" + +msgid "" +"The [Sky] class uses a [Material] to render a 3D environment's background and " +"the light it emits by updating the reflection/radiance cubemaps." +msgstr "" +"[Sky] 类使用 [Material] 来渲染 3D 环境的背景及其通过更新反射/辐射立方体贴图发" +"出的光。" + msgid "" "Sets the method for generating the radiance map from the sky. The radiance " "map is a cubemap with increasingly blurry versions of the sky corresponding " @@ -106198,6 +119259,9 @@ msgstr "" "布尔常量。如果为 [code]1[/code],则会忽略抓取器纹理的大小,根据其中心位置将其" "缩放到滚动条的边界。" +msgid "Vertical or horizontal offset of the grabber." +msgstr "抓取器的垂直或水平偏移量。" + msgid "The texture for the grabber (the draggable element)." msgstr "用作拖动条的纹理(可拖动的元素)。" @@ -106212,6 +119276,19 @@ msgid "" "than 0." msgstr "刻度的纹理。当 [member Slider.tick_count] 大于 0 时可见。" +msgid "The background of the area to the left or bottom of the grabber." +msgstr "抓取器左侧或底部区域的背景。" + +msgid "" +"The background of the area to the left or bottom of the grabber that displays " +"when it's being hovered or focused." +msgstr "抓取器被悬停或聚焦时,显示的左侧或底部区域的背景。" + +msgid "" +"The background for the whole slider. Affects the height or width of the " +"[theme_item grabber_area]." +msgstr "整个滑动条的背景。影响 [theme_item grabber_area] 的高度或宽度。" + msgid "" "A physics joint that restricts the movement of a 3D physics body along an " "axis relative to another physics body." @@ -106325,6 +119402,14 @@ msgstr "" "象 B 的接触。有关更多信息,请参阅文档中的[url=$DOCS_URL/tutorials/physics/" "physics_introduction.html#collision-layers-and-masks]《碰撞层与掩码》[/url]。" +msgid "" +"Higher values will result in a stiffer body, while lower values will increase " +"the body's ability to bend. The value can be between [code]0.0[/code] and " +"[code]1.0[/code] (inclusive)." +msgstr "" +"值越大得到的物体约坚硬,较低的值会提高物体的弯曲能力。取值范围为 [code]0.0[/" +"code] 到 [code]1.0[/code] 之间(含端点)。" + msgid "" "[NodePath] to a [CollisionObject3D] this SoftBody3D should avoid clipping." msgstr "" @@ -106409,6 +119494,65 @@ msgstr "球体的半径。形状的直径是半径的两倍。" msgid "An input field for numbers." msgstr "数字的输入字段。" +msgid "" +"[SpinBox] is a numerical input text field. It allows entering integers and " +"floating point numbers.\n" +"[b]Example:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"var spin_box = SpinBox.new()\n" +"add_child(spin_box)\n" +"var line_edit = spin_box.get_line_edit()\n" +"line_edit.context_menu_enabled = false\n" +"spin_box.horizontal_alignment = LineEdit.HORIZONTAL_ALIGNMENT_RIGHT\n" +"[/gdscript]\n" +"[csharp]\n" +"var spinBox = new SpinBox();\n" +"AddChild(spinBox);\n" +"var lineEdit = spinBox.GetLineEdit();\n" +"lineEdit.ContextMenuEnabled = false;\n" +"spinBox.AlignHorizontal = LineEdit.HorizontalAlignEnum.Right;\n" +"[/csharp]\n" +"[/codeblocks]\n" +"The above code will create a [SpinBox], disable context menu on it and set " +"the text alignment to right.\n" +"See [Range] class for more options over the [SpinBox].\n" +"[b]Note:[/b] With the [SpinBox]'s context menu disabled, you can right-click " +"the bottom half of the spinbox to set the value to its minimum, while right-" +"clicking the top half sets the value to its maximum.\n" +"[b]Note:[/b] [SpinBox] relies on an underlying [LineEdit] node. To theme a " +"[SpinBox]'s background, add theme items for [LineEdit] and customize them.\n" +"[b]Note:[/b] If you want to implement drag and drop for the underlying " +"[LineEdit], you can use [method Control.set_drag_forwarding] on the node " +"returned by [method get_line_edit]." +msgstr "" +"[SpinBox] 是一种用于输入数值的文本字段,允许输入整数和浮点数。\n" +"[b]示例:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"var spin_box = SpinBox.new()\n" +"add_child(spin_box)\n" +"var line_edit = spin_box.get_line_edit()\n" +"line_edit.context_menu_enabled = false\n" +"spin_box.horizontal_alignment = LineEdit.HORIZONTAL_ALIGNMENT_RIGHT\n" +"[/gdscript]\n" +"[csharp]\n" +"var spinBox = new SpinBox();\n" +"AddChild(spinBox);\n" +"var lineEdit = spinBox.GetLineEdit();\n" +"lineEdit.ContextMenuEnabled = false;\n" +"spinBox.AlignHorizontal = LineEdit.HorizontalAlignEnum.Right;\n" +"[/csharp]\n" +"[/codeblocks]\n" +"上面的代码会创建一个 [SpinBox],禁用其中的上下文菜单,并将文本设置为右对齐。\n" +"[SpinBox] 的更多选项见 [Range] 类。\n" +"[b]注意:[/b][SpinBox] 的上下文菜单被禁用时,右键单击微调框的下半部分可以将取" +"值设置最小值,右键单击上半部分可以将取值设置最大值。\n" +"[b]注意:[/b][SpinBox] 依赖底层的 [LineEdit] 节点。要为 [SpinBox] 的背景设置主" +"题,请为 [LineEdit] 添加主题项目并进行自定义。\n" +"[b]注意:[/b]如果你想要为底层的 [LineEdit] 实现拖放,可以对 [method " +"get_line_edit] 所返回的节点使用 [method Control.set_drag_forwarding]。" + msgid "Applies the current value of this [SpinBox]." msgstr "应用此 [SpinBox] 的当前值。" @@ -106427,12 +119571,24 @@ msgstr "" msgid "Changes the alignment of the underlying [LineEdit]." msgstr "更改底层 [LineEdit] 的对齐方式。" +msgid "" +"If not [code]0[/code], [member Range.value] will always be rounded to a " +"multiple of [member custom_arrow_step] when interacting with the arrow " +"buttons of the [SpinBox]." +msgstr "" +"如果不是 [code]0[/code],则在与 [SpinBox] 的箭头按钮交互时,[member Range." +"value] 将始终四舍五入为 [member custom_arrow_step] 的倍数。" + msgid "" "If [code]true[/code], the [SpinBox] will be editable. Otherwise, it will be " "read only." msgstr "" "如果为 [code]true[/code],则 [SpinBox] 将是可编辑的。否则,它将是只读的。" +msgid "" +"Adds the specified prefix string before the numerical value of the [SpinBox]." +msgstr "在 [SpinBox] 的数值前添加指定的前缀字符串。" + msgid "" "If [code]true[/code], the [SpinBox] will select the whole text when the " "[LineEdit] gains focus. Clicking the up and down arrows won't trigger this " @@ -106441,6 +119597,10 @@ msgstr "" "如果为 [code]true[/code],则该 [SpinBox] 会在 [LineEdit] 获得焦点时选中整个文" "本。点击上下箭头不会触发这种行为。" +msgid "" +"Adds the specified suffix string after the numerical value of the [SpinBox]." +msgstr "在 [SpinBox] 的数值后添加指定的后缀字符串。" + msgid "" "Sets the value of the [Range] for this [SpinBox] when the [LineEdit] text is " "[i]changed[/i] instead of [i]submitted[/i]. See [signal LineEdit." @@ -107104,6 +120264,9 @@ msgstr "" "设置 [param anim] 动画中索引为 [param idx] 的帧的纹理 [param texture] 和持续时" "间 [param duration]。" +msgid "A PBR (Physically Based Rendering) material to be used on 3D objects." +msgstr "用于 3D 对象的 PBR(基于物理的渲染)材质。" + msgid "" "[StandardMaterial3D]'s properties are inherited from [BaseMaterial3D]. " "[StandardMaterial3D] uses separate textures for ambient occlusion, roughness " @@ -107119,6 +120282,30 @@ msgid "" "manually, it doesn't affect other bodies in its path." msgstr "无法被外力移动的 2D 物理物体。手动移动时不会影响路径上的其他物体。" +msgid "" +"A static 2D physics body. It can't be moved by external forces or contacts, " +"but can be moved manually by other means such as code, [AnimationMixer]s " +"(with [member AnimationMixer.callback_mode_process] set to [constant " +"AnimationMixer.ANIMATION_CALLBACK_MODE_PROCESS_PHYSICS]), and " +"[RemoteTransform2D].\n" +"When [StaticBody2D] is moved, it is teleported to its new position without " +"affecting other physics bodies in its path. If this is not desired, use " +"[AnimatableBody2D] instead.\n" +"[StaticBody2D] is useful for completely static objects like floors and walls, " +"as well as moving surfaces like conveyor belts and circular revolving " +"platforms (by using [member constant_linear_velocity] and [member " +"constant_angular_velocity])." +msgstr "" +"静态 2D 物理体。无法因外力或接触而移动,但可以通过代码、[AnimationMixer]" +"([member AnimationMixer.callback_mode_process] 设为 [constant AnimationMixer." +"ANIMATION_CALLBACK_MODE_PROCESS_PHYSICS])、[RemoteTransform2D] 等方法手动移" +"动。\n" +"[StaticBody2D] 发生移动时,是传送到新位置上的,不会影响路径上的其他物理体。如" +"果不想要这样的行为,请改用 [AnimatableBody2D]。\n" +"[StaticBody2D] 常用于完全静态的地板、墙壁等对象,也可以用于传送带、圆形回转平" +"台等移动的表面(使用 [member constant_linear_velocity] 和 [member " +"constant_angular_velocity])。" + msgid "" "The body's constant angular velocity. This does not rotate the body, but " "affects touching bodies, as if it were rotating." @@ -107138,6 +120325,30 @@ msgid "" "manually, it doesn't affect other bodies in its path." msgstr "无法被外力移动的 3D 物理物体。手动移动时不会影响路径上的其他物体。" +msgid "" +"A static 3D physics body. It can't be moved by external forces or contacts, " +"but can be moved manually by other means such as code, [AnimationMixer]s " +"(with [member AnimationMixer.callback_mode_process] set to [constant " +"AnimationMixer.ANIMATION_CALLBACK_MODE_PROCESS_PHYSICS]), and " +"[RemoteTransform3D].\n" +"When [StaticBody3D] is moved, it is teleported to its new position without " +"affecting other physics bodies in its path. If this is not desired, use " +"[AnimatableBody3D] instead.\n" +"[StaticBody3D] is useful for completely static objects like floors and walls, " +"as well as moving surfaces like conveyor belts and circular revolving " +"platforms (by using [member constant_linear_velocity] and [member " +"constant_angular_velocity])." +msgstr "" +"静态 3D 物理体。无法因外力或接触而移动,但可以通过代码、[AnimationMixer]" +"([member AnimationMixer.callback_mode_process] 设为 [constant AnimationMixer." +"ANIMATION_CALLBACK_MODE_PROCESS_PHYSICS])、[RemoteTransform3D] 等方法手动移" +"动。\n" +"[StaticBody3D] 发生移动时,是传送到新位置上的,不会影响路径上的其他物理体。如" +"果不想要这样的行为,请改用 [AnimatableBody3D]。\n" +"[StaticBody3D] 常用于完全静态的地板、墙壁等对象,也可以用于传送带、圆形回转平" +"台等移动的表面(使用 [member constant_linear_velocity] 和 [member " +"constant_angular_velocity])。" + msgid "Abstract base class for interacting with streams." msgstr "与流交互的抽象基类。" @@ -109745,6 +122956,35 @@ msgstr "将所有边的默认边距设置为 [param offset] 像素。" msgid "Test a position in a rectangle, return whether it passes the mask test." msgstr "测试矩形中的一个位置,返回它是否通过掩码测试。" +msgid "" +"The bottom margin for the contents of this style box. Increasing this value " +"reduces the space available to the contents from the bottom.\n" +"If this value is negative, it is ignored and a child-specific margin is used " +"instead. For example, for [StyleBoxFlat], the border thickness (if any) is " +"used instead.\n" +"It is up to the code using this style box to decide what these contents are: " +"for example, a [Button] respects this content margin for the textual contents " +"of the button.\n" +"[method get_margin] should be used to fetch this value as consumer instead of " +"reading these properties directly. This is because it correctly respects " +"negative values and the fallback mentioned above." +msgstr "" +"该样式盒内容的底边距。增加该值会从底部减少内容的可用空间。\n" +"如果该值为负,则忽略该值并使用特定于子项的边距。例如,对于 [StyleBoxFlat]," +"(如果有厚度的话)将使用边框厚度。\n" +"内容是什么由使用该样式盒的代码决定:例如,[Button] 会为其文本内容设置该内容边" +"距。\n" +"应使用 [method get_margin] 作为消费者获取该值,而不是直接读取这些属性。这是因" +"为它能够正确地尊重负值和上面提到的后备值。" + +msgid "" +"The left margin for the contents of this style box. Increasing this value " +"reduces the space available to the contents from the left.\n" +"Refer to [member content_margin_bottom] for extra considerations." +msgstr "" +"该样式盒内容的左边距。增加该值会从左侧减少内容的可用空间。\n" +"额外的注意事项请参阅 [member content_margin_bottom]。" + msgid "" "The right margin for the contents of this style box. Increasing this value " "reduces the space available to the contents from the right.\n" @@ -110322,6 +123562,16 @@ msgstr "" "[b]注意:[/b]该 [SubViewportContainer] 会将鼠标进入和鼠标退出通知转发到子视" "口。" +msgid "" +"Virtual method to be implemented by the user. If it returns [code]true[/" +"code], the [param event] is propagated to [SubViewport] children. Propagation " +"doesn't happen if it returns [code]false[/code]. If the function is not " +"implemented, all events are propagated to SubViewports." +msgstr "" +"由用户实现的虚方法。如果它返回 [code]true[/code],则 [param event] 将被传播到 " +"[SubViewport] 子级。如果返回 [code]false[/code],则传播不会发生。如果未实现该" +"功能,则所有事件都会被传播到子视口。" + msgid "" "If [code]true[/code], the sub-viewport will be automatically resized to the " "control's size.\n" @@ -111002,6 +124252,20 @@ msgstr "将选项卡从 [param from] 移动到 [param to]。" msgid "Removes the tab at index [param tab_idx]." msgstr "删除索引 [param tab_idx] 处的选项卡。" +msgid "" +"Selects the first available tab with greater index than the currently " +"selected. Returns [code]true[/code] if tab selection changed." +msgstr "" +"选择索引大于当前所选选项卡索引的第一个可用选项卡。如果选项卡选择发生改变,则返" +"回 [code]true[/code]。" + +msgid "" +"Selects the first available tab with lower index than the currently selected. " +"Returns [code]true[/code] if tab selection changed." +msgstr "" +"选择索引低于当前所选选项卡索引的第一个可用选项卡。如果选项卡选择发生改变,则返" +"回 [code]true[/code]。" + msgid "" "Sets an [param icon] for the button of the tab at index [param tab_idx] " "(located to the right, before the close button), making it visible and " @@ -111165,6 +124429,13 @@ msgid "" "Emitted when a tab is right-clicked. [member select_with_rmb] must be enabled." msgstr "右键单击选项卡时发出。必须启用 [member select_with_rmb]。" +msgid "" +"Emitted when a tab is selected via click, directional input, or script, even " +"if it is the current tab." +msgstr "" +"通过点击、定向输入、或脚本选中某个选项卡时发出,即便该选项卡本来就是当前选项" +"卡。" + msgid "Places tabs to the left." msgstr "将选项卡置于左侧。" @@ -111290,6 +124561,31 @@ msgstr "选项卡和关闭按钮的背景,处于按下状态时使用。" msgid "The style of disabled tabs." msgstr "选项卡处于禁用状态时的样式。" +msgid "" +"[StyleBox] used when the [TabBar] is focused. The [theme_item tab_focus] " +"[StyleBox] is displayed [i]over[/i] the base [StyleBox] of the selected tab, " +"so a partially transparent [StyleBox] should be used to ensure the base " +"[StyleBox] remains visible. A [StyleBox] that represents an outline or an " +"underline works well for this purpose. To disable the focus visual effect, " +"assign a [StyleBoxEmpty] resource. Note that disabling the focus visual " +"effect will harm keyboard/controller navigation usability, so this is not " +"recommended for accessibility reasons." +msgstr "" +"该 [TabBar] 处于聚焦状态时使用的 [StyleBox]。[theme_item tab_focus] " +"[StyleBox] 显示在基础 [StyleBox] [i]之上[/i],所以应该使用部分透明的 " +"[StyleBox],确保基础 [StyleBox] 仍然可见。代表轮廓或下划线的 [StyleBox] 可以很" +"好地实现这个目的。要禁用聚焦的视觉效果,请指定 [StyleBoxEmpty] 资源。请注意," +"禁用聚焦的视觉效果会影响使用键盘/手柄进行导航的可用性,所以出于可访问性的原" +"因,不建议这样做。" + +msgid "" +"The style of the currently hovered tab. Does not apply to the selected tab.\n" +"[b]Note:[/b] This style will be drawn with the same width as [theme_item " +"tab_unselected] at minimum." +msgstr "" +"当前悬停选项卡的样式。不适用于选择的选项卡。\n" +"[b]注意:[/b]该样式将以至少与 [theme_item tab_unselected] 相同的宽度绘制。" + msgid "The style of the currently selected tab." msgstr "当前选中的选项卡的样式。" @@ -111487,6 +124783,14 @@ msgstr "当光标悬停时菜单按钮的图标(见 [method set_popup])。" msgid "The style for the background fill." msgstr "背景填充的样式。" +msgid "" +"The style of the currently hovered tab.\n" +"[b]Note:[/b] This style will be drawn with the same width as [theme_item " +"tab_unselected] at minimum." +msgstr "" +"当前悬停的选项卡的样式。\n" +"[b]注意:[/b]该样式将至少以与 [theme_item tab_unselected] 相同的宽度绘制。" + msgid "The style for the background fill of the [TabBar] area." msgstr "[TabBar] 区域的背景填充样式。" @@ -112403,6 +125707,9 @@ msgstr "如果有一个水平滚动条,这决定了当前的水平滚动值, msgid "Allow scrolling past the last line into \"virtual\" space." msgstr "允许滚动过最后一行,进入“虚拟”空间。" +msgid "Scroll smoothly over the text rather than jumping to the next location." +msgstr "在文本上平滑滚动,而不是跳到下一个位置。" + msgid "" "Sets the scroll speed with the minimap or when [member scroll_smooth] is " "enabled." @@ -112600,6 +125907,22 @@ msgstr "为空格文本字符,设置一个自定义 [Texture2D]。" msgid "Sets a custom [Texture2D] for tab text characters." msgstr "为制表符文本字符,设置一个自定义 [Texture2D]。" +msgid "" +"Sets the [StyleBox] when in focus. The [theme_item focus] [StyleBox] is " +"displayed [i]over[/i] the base [StyleBox], so a partially transparent " +"[StyleBox] should be used to ensure the base [StyleBox] remains visible. A " +"[StyleBox] that represents an outline or an underline works well for this " +"purpose. To disable the focus visual effect, assign a [StyleBoxEmpty] " +"resource. Note that disabling the focus visual effect will harm keyboard/" +"controller navigation usability, so this is not recommended for accessibility " +"reasons." +msgstr "" +"设置当获得焦点时的 [StyleBox]。该 [theme_item focus] [StyleBox] 显示在基础 " +"[StyleBox] [i]之上[/i],因此应使用部分透明的 [StyleBox] 以确保基础 [StyleBox] " +"保持可见。表示轮廓或下划线的 [StyleBox] 非常适合此目的。要禁用焦点视觉效果,请" +"指定一个 [StyleBoxEmpty] 资源。请注意,禁用焦点视觉效果会破坏键盘 / 控制器导航" +"的可用性,出于可访问性原因,不建议这样做。" + msgid "Sets the [StyleBox] of this [TextEdit]." msgstr "设置这个 [TextEdit] 的 [StyleBox]。" @@ -112923,6 +126246,14 @@ msgid "" msgstr "" "新建空的字体缓存条目资源。要释放生成的资源,请使用 [method free_rid] 方法。" +msgid "" +"Creates a new variation existing font which is reusing the same glyph cache " +"and font data. To free the resulting resource, use the [method free_rid] " +"method." +msgstr "" +"创建一个新的已有的字体变体,该字体重用相同的字形缓存和字体数据。要释放生成的资" +"源,请使用 [method free_rid] 方法。" + msgid "" "Creates new buffer for complex text layout, with the given [param direction] " "and [param orientation]. To free the resulting buffer, use [method free_rid] " @@ -113006,9 +126337,6 @@ msgstr "" msgid "Returns font embolden strength." msgstr "返回字体的加粗力度。" -msgid "Recturns an active face index in the TrueType / OpenType collection." -msgstr "返回 TrueType / OpenType 集合中的活动字体索引。" - msgid "Returns bitmap font fixed size." msgstr "返回位图字体的固定大小。" @@ -113019,6 +126347,32 @@ msgid "" "Returns the font oversampling factor, shared by all fonts in the TextServer." msgstr "返回字体过采样系数,由 TextServer 中的所有字体共享。" +msgid "" +"Returns outline contours of the glyph as a [Dictionary] with the following " +"contents:\n" +"[code]points[/code] - [PackedVector3Array], containing outline " +"points. [code]x[/code] and [code]y[/code] are point coordinates. [code]z[/" +"code] is the type of the point, using the [enum ContourPointTag] values.\n" +"[code]contours[/code] - [PackedInt32Array], containing indices the end " +"points of each contour.\n" +"[code]orientation[/code] - [bool], contour orientation. If [code]true[/" +"code], clockwise contours must be filled." +msgstr "" +"将字形的轮廓线轮廓返回为具有以下内容的 [Dictionary]:\n" +"[code]points[/code] - [PackedVector3Array],包含轮廓点。[code]x[/" +"code] 和 [code]y[/code] 是点坐标。[code]z[/code] 是点的类型,使用 [enum " +"ContourPointTag] 值。\n" +"[code]contours[/code] - [PackedInt32Array],包含每个轮廓端点的索引。\n" +"[code]orientation[/code] - [bool],轮廓方向。如果为 [code]true[/code],则顺" +"时针轮廓必须被填充。" + +msgid "" +"Returns the glyph index of a [param char], optionally modified by the [param " +"variation_selector]. See [method font_get_char_from_glyph_index]." +msgstr "" +"返回 [param char] 的字形索引,可以选择由 [param variation_selector] 进行修改。" +"见 [method font_get_char_from_glyph_index]。" + msgid "Returns size of the glyph." msgstr "返回该字形的大小。" @@ -113152,6 +126506,12 @@ msgstr "" "设置位图字体的固定大小。如果设置为大于零的值,则会为所有字体大小使用相同的缓存" "条目。" +msgid "" +"Sets bitmap font scaling mode. This property is used only if " +"[code]fixed_size[/code] is greater than zero." +msgstr "" +"设置位图字体缩放模式。仅当 [code]fixed_size[/code] 大于零时才使用该属性。" + msgid "" "If set to [code]true[/code] auto-hinting is preferred over font built-in " "hinting." @@ -114176,12 +127536,30 @@ msgstr "文件路径的 BiDi 覆盖。" msgid "BiDi override for email." msgstr "电子邮件的 BiDi 覆盖。" +msgid "" +"BiDi override for lists. Structured text options: list separator [String]." +msgstr "列表的 BiDi 覆盖。结构化文本选项:列表分隔符 [String]。" + msgid "BiDi override for GDScript." msgstr "GDScript 的 BiDi 覆盖。" msgid "User defined structured text BiDi override function." msgstr "用户定义的结构化文本 BiDi 覆盖函数。" +msgid "Bitmap font is not scaled." +msgstr "位图字体未被缩放。" + +msgid "" +"Bitmap font is scaled to the closest integer multiple of the font's fixed " +"size. This is the recommended option for pixel art fonts." +msgstr "" +"位图字体被缩放至字体固定大小的最接近整数倍。这是像素艺术字体的推荐选项。" + +msgid "" +"Bitmap font is scaled to an arbitrary (fractional) size. This is the " +"recommended option for non-pixel art fonts." +msgstr "位图字体被缩放为任意(分数)大小。这是非像素艺术字体的推荐选项。" + msgid "" "An advanced text server with support for BiDi, complex text layout, and " "contextual OpenType features. Used in Godot by default." @@ -114476,10 +127854,24 @@ msgid "" "[RenderingDevice]." msgstr "用于 2D 的纹理数组,与 [RenderingDevice] 上创建的纹理绑定。" +msgid "" +"This texture array class allows you to use a 2D array texture created " +"directly on the [RenderingDevice] as a texture for materials, meshes, etc." +msgstr "" +"该纹理数组类允许你使用直接在 [RenderingDevice] 上创建的 2D 数组纹理作为材质、" +"网格等的纹理。" + msgid "" "Texture for 2D that is bound to a texture created on the [RenderingDevice]." msgstr "用于 2D 的纹理,与 [RenderingDevice] 上创建的纹理绑定。" +msgid "" +"This texture class allows you to use a 2D texture created directly on the " +"[RenderingDevice] as a texture for materials, meshes, etc." +msgstr "" +"该纹理类允许你使用直接在 [RenderingDevice] 上创建的 2D 纹理作为材质、网格等的" +"纹理。" + msgid "The RID of the texture object created on the [RenderingDevice]." msgstr "[RenderingDevice] 上创建的纹理对象的 RID。" @@ -114555,6 +127947,17 @@ msgstr "返回该 [Texture3D] 的宽度,单位为像素。宽度通常由 X msgid "Returns [code]true[/code] if the [Texture3D] has generated mipmaps." msgstr "如果该 [Texture3D] 已生成 mipmap,则返回 [code]true[/code]。" +msgid "" +"Texture for 3D that is bound to a texture created on the [RenderingDevice]." +msgstr "被绑定到在 [RenderingDevice] 上创建的纹理的 3D 的纹理。" + +msgid "" +"This texture class allows you to use a 3D texture created directly on the " +"[RenderingDevice] as a texture for materials, meshes, etc." +msgstr "" +"该纹理类允许你使用直接在 [RenderingDevice] 上创建的 3D 纹理作为材质、网格等的" +"纹理。" + msgid "" "Texture-based button. Supports Pressed, Hover, Disabled and Focused states." msgstr "基于纹理的按钮。支持按下、悬停、停用和焦点状态。" @@ -114666,6 +128069,30 @@ msgid "" "other side clips to the node's limits." msgstr "缩放纹理,使较短的一边适应边界矩形。另一边则裁剪到节点的界限内。" +msgid "" +"Texture Array for Cubemaps that is bound to a texture created on the " +"[RenderingDevice]." +msgstr "立方体贴图的纹理数组,被绑定到在 [RenderingDevice] 上创建的纹理。" + +msgid "" +"This texture class allows you to use a cubemap array texture created directly " +"on the [RenderingDevice] as a texture for materials, meshes, etc." +msgstr "" +"该纹理类允许你使用直接在 [RenderingDevice] 上创建的立方体贴图数组纹理作为材" +"质、网格等的纹理。" + +msgid "" +"Texture for Cubemap that is bound to a texture created on the " +"[RenderingDevice]." +msgstr "被绑定到在 [RenderingDevice] 上创建的纹理的立方体贴图的纹理。" + +msgid "" +"This texture class allows you to use a cubemap texture created directly on " +"the [RenderingDevice] as a texture for materials, meshes, etc." +msgstr "" +"该纹理类允许你使用直接在 [RenderingDevice] 上创建的立方体贴图纹理作为材质、网" +"格等的纹理。" + msgid "" "Base class for texture types which contain the data of multiple [Image]s. " "Each image is of the same size and format." @@ -114746,6 +128173,17 @@ msgstr "纹理为 [Cubemap],每一面都有自己的层(共 6 层)。" msgid "Texture is a [CubemapArray], with each cubemap being made of 6 layers." msgstr "纹理为 [CubemapArray],每个立方体贴图都由 6 层组成。" +msgid "Abstract base class for layered texture RD types." +msgstr "分层纹理 RD 类型的抽象基类。" + +msgid "" +"Base class for [Texture2DArrayRD], [TextureCubemapRD] and " +"[TextureCubemapArrayRD]. Cannot be used directly, but contains all the " +"functions necessary for accessing the derived resource types." +msgstr "" +"[Texture2DArrayRD]、[TextureCubemapRD] 和 [TextureCubemapArrayRD] 的基类。不能" +"直接使用,但包含了访问派生资源类型所需的所有函数。" + msgid "" "Texture-based progress bar. Useful for loading screens and life or stamina " "bars." @@ -114861,6 +128299,20 @@ msgstr "" msgid "[Texture2D] that draws under the progress bar. The bar's background." msgstr "在进度条下绘制的 [Texture2D]。该进度条的背景。" +msgid "" +"Multiplies the color of the bar's [member texture_over] texture. The effect " +"is similar to [member CanvasItem.modulate], except it only affects this " +"specific texture instead of the entire node." +msgstr "" +"将与该进度条的 [member texture_over] 纹理的颜色相乘。其效果类似于 [member " +"CanvasItem.modulate] ,只是它只影响这个特定的纹理,而不是整个节点。" + +msgid "Multiplies the color of the bar's [member texture_progress] texture." +msgstr "将与该进度条的 [member texture_progress] 纹理的颜色相乘。" + +msgid "Multiplies the color of the bar's [member texture_under] texture." +msgstr "将与该进度条的 [member texture_under] 纹理的颜色相乘。" + msgid "The [member texture_progress] fills from left to right." msgstr "[member texture_progress] 从左到右填充。" @@ -115747,6 +129199,27 @@ msgstr "任意回退值发生改变时发出。可用于刷新依赖于回退主 msgid "A unit of execution in a process." msgstr "进程中的执行单元。" +msgid "" +"A unit of execution in a process. Can run methods on [Object]s " +"simultaneously. The use of synchronization via [Mutex] or [Semaphore] is " +"advised if working with shared objects.\n" +"[b]Warning:[/b]\n" +"To ensure proper cleanup without crashes or deadlocks, when a [Thread]'s " +"reference count reaches zero and it is therefore destroyed, the following " +"conditions must be met:\n" +"- It must not have any [Mutex] objects locked.\n" +"- It must not be waiting on any [Semaphore] objects.\n" +"- [method wait_to_finish] should have been called on it." +msgstr "" +"进程中的执行单元。可以让任意 [Object] 上的任意方法同时运行。如果使用共享对象," +"建议通过 [Mutex] 或 [Semaphore] 进行同步。\n" +"[b]警告:[/b]\n" +"为了确保能够正确清理,避免崩溃和死锁,[Thread] 的引用计数变为零进行销毁时,必" +"须满足以下条件:\n" +"- 必须没有任何上锁的 [Mutex] 对象。\n" +"- 必须没有在任何 [Semaphore] 对象上等待。\n" +"- 必须已调用过它的 [method wait_to_finish]。" + msgid "" "Returns the current [Thread]'s ID, uniquely identifying it among all threads. " "If the [Thread] has not started running or if [method wait_to_finish] has " @@ -116038,12 +129511,65 @@ msgstr "任何属性发生变化时发出。" msgid "Node for 2D tile-based maps." msgstr "基于 2D 图块的地图节点。" +msgid "" +"Node for 2D tile-based maps. Tilemaps use a [TileSet] which contain a list of " +"tiles which are used to create grid-based maps. A TileMap may have several " +"layers, layouting tiles on top of each other.\n" +"For performance reasons, all TileMap updates are batched at the end of a " +"frame. Notably, this means that scene tiles from a " +"[TileSetScenesCollectionSource] may be initialized after their parent.\n" +"To force an update earlier on, call [method update_internals]." +msgstr "" +"基于 2D 图块的地图节点。Tilemap(图块地图)使用 [TileSet],其中包含了图块的列" +"表,用于创建基于栅格的地图。TileMap 可以有若干图层,可以将图块布局在彼此之" +"上。\n" +"出于性能原因,所有 TileMap 更新都会在一帧结束时进行批处理。值得注意的是,这意" +"味着 [TileSetScenesCollectionSource] 中的场景图块可能会在其父级之后初始化。\n" +"要提前强制更新,请调用 [method update_internals]。" + msgid "Using Tilemaps" msgstr "使用 Tilemap" msgid "2D Hexagonal Demo" msgstr "2D 六边形演示" +msgid "" +"Called with a TileData object about to be used internally by the TileMap, " +"allowing its modification at runtime.\n" +"This method is only called if [method _use_tile_data_runtime_update] is " +"implemented and returns [code]true[/code] for the given tile [param coords] " +"and [param layer].\n" +"[b]Warning:[/b] The [param tile_data] object's sub-resources are the same as " +"the one in the TileSet. Modifying them might impact the whole TileSet. " +"Instead, make sure to duplicate those resources.\n" +"[b]Note:[/b] If the properties of [param tile_data] object should change over " +"time, use [method notify_runtime_tile_data_update] to notify the TileMap it " +"needs an update." +msgstr "" +"会使用 TileMap 内部即将使用的 TileData 对象来调用,从而实现运行时修改。\n" +"这个方法被调用的前提是:实现了 [method _use_tile_data_runtime_update],并且对" +"给定的图块坐标 [param coords] 和层 [param layer] 返回 [code]true[/code] 。\n" +"[b]警告:[/b]该 [param tile_data] 对象的子资源和 TileSet 中的子资源是一样的。" +"对它们进行修改可能会影响整个 TileSet。请确保制作这些资源的副本再进行修改。\n" +"[b]注意:[/b]如果 [param tile_data] 对象的属性要随时间变化,请使用 [method " +"notify_runtime_tile_data_update] 来通知该 TileMap 它需要更新。" + +msgid "" +"Should return [code]true[/code] if the tile at coordinates [param coords] on " +"layer [param layer] requires a runtime update.\n" +"[b]Warning:[/b] Make sure this function only return [code]true[/code] when " +"needed. Any tile processed at runtime without a need for it will imply a " +"significant performance penalty.\n" +"[b]Note:[/b] If the result of this function should changed, use [method " +"notify_runtime_tile_data_update] to notify the TileMap it needs an update." +msgstr "" +"如果位于层 [param layer] 坐标 [param coords] 的图块需要运行时更新,则应返回 " +"[code]true[/code]。\n" +"[b]警告:[/b]请确保这个函数只在需要时返回 [code]true[/code]。任何在没有需要的" +"情况下在运行时处理的图块都将导致显著的性能损失。\n" +"[b]注意:[/b]如果该函数的结果发生变化,请使用 [method " +"notify_runtime_tile_data_update] 通知 TileMap 它需要更新。" + msgid "" "Adds a layer at the given position [param to_position] in the array. If " "[param to_position] is negative, the position is counted from the end, with " @@ -116286,6 +129812,9 @@ msgstr "" "返回某个图层是否已启用。\n" "如果 [param layer] 为负,则从最后一个图层开始访问。" +msgid "Returns if a layer's built-in navigation regions generation is enabled." +msgstr "返回是否启用图层的内置导航区块生成。" + msgid "" "Returns if a layer Y-sorts its tiles.\n" "If [param layer] is negative, the layers are accessed from the last one." @@ -116333,6 +129862,29 @@ msgid "" msgstr "" "将索引 [param layer] 处的图层移动到数组中给定的位置 [param to_position]。" +msgid "" +"Notifies the TileMap node that calls to [method " +"_use_tile_data_runtime_update] or [method _tile_data_runtime_update] will " +"lead to different results. This will thus trigger a TileMap update.\n" +"If [param layer] is provided, only notifies changes for the given layer. " +"Providing the [param layer] argument (when applicable) is usually preferred " +"for performance reasons.\n" +"[b]Warning:[/b] Updating the TileMap is computationally expensive and may " +"impact performance. Try to limit the number of calls to this function to " +"avoid unnecessary update.\n" +"[b]Note:[/b] This does not trigger a direct update of the TileMap, the update " +"will be done at the end of the frame as usual (unless you call [method " +"update_internals])." +msgstr "" +"通知 TileMap 节点调用 [method _use_tile_data_runtime_update] 或 [method " +"_tile_data_runtime_update] 将导致不同的结果。这将因此触发 TileMap 更新。\n" +"如果提供了 [param layer],则仅通知给定层的更改。出于性能原因,通常首选提供 " +"[param layer] 参数(如果适用)。\n" +"[b]警告:[/b]更新 TileMap 的计算成本很高,并且可能会影响性能。尝试限制该函数的" +"调用次数,以避免不必要的更新。\n" +"[b]注意:[/b]这不会触发 TileMap 的直接更新,该更新将照常在帧结束时完成(除非你" +"调用 [method update_internals])。" + msgid "Removes the layer at index [param layer]." msgstr "移除索引为 [param layer] 的层。" @@ -116440,6 +129992,14 @@ msgstr "" "设置图层的名称。主要在编辑器中使用。\n" "如果 [param layer] 为负,则逆序访问图层。" +msgid "" +"Enables or disables a layer's built-in navigation regions generation. Disable " +"this if you need to bake navigation regions from a TileMap using a " +"[NavigationRegion2D] node." +msgstr "" +"启用或禁用图层的内置导航区块生成。如果你需要使用 [NavigationRegion2D] 节点根" +"据 TileMap 烘焙导航区块,请禁用此项。" + msgid "" "Assigns a [NavigationServer2D] navigation map [RID] to the specified TileMap " "[param layer].\n" @@ -116788,6 +130348,13 @@ msgstr "返回给定 TileSet 导航层的(导航服务器中的)导航层。 msgid "Returns the navigation layers count." msgstr "返回导航层的数量。" +msgid "" +"Returns a new unused source ID. This generated ID is the same that a call to " +"[method add_source] would return." +msgstr "" +"返回新的未使用的源 ID。这个生成的 ID 与调用 [method add_source] 将返回的 ID 相" +"同。" + msgid "Returns the light mask of the occlusion layer." msgstr "返回遮挡层的光照掩码。" @@ -117271,6 +130838,15 @@ msgid "" "size]." msgstr "在坐标 [param atlas_coords] 处新建给定大小 [param size] 的图块。" +msgid "" +"Returns the atlas grid size, which depends on how many tiles can fit in the " +"texture. It thus depends on the [member texture]'s size, the atlas [member " +"margins], and the tiles' [member texture_region_size]." +msgstr "" +"返回图集栅格大小,这取决于纹理中可以容纳多少个图块。因此,它取决于 [member " +"texture] 的大小,该图集的 [member margins]、和该图块的 [member " +"texture_region_size]。" + msgid "" "Returns the alternative ID a following call to [method " "create_alternative_tile] would return." @@ -117748,6 +131324,23 @@ msgid "" "Converts the given Unix timestamp to an ISO 8601 date string (YYYY-MM-DD)." msgstr "将给定的 Unix 时间戳转换为 ISO 8601 日期字符串(YYYY-MM-DD)。" +msgid "" +"Converts the given ISO 8601 date and time string (YYYY-MM-DDTHH:MM:SS) to a " +"dictionary of keys: [code]year[/code], [code]month[/code], [code]day[/code], " +"[code skip-lint]weekday[/code], [code]hour[/code], [code]minute[/code], and " +"[code]second[/code].\n" +"If [param weekday] is [code]false[/code], then the [code skip-lint]weekday[/" +"code] entry is excluded (the calculation is relatively expensive).\n" +"[b]Note:[/b] Any decimal fraction in the time string will be ignored silently." +msgstr "" +"将给定的 ISO 8601 日期和时间字符串(YYYY-MM-DDTHH:MM:SS)转换为字典,包含的键" +"为:[code]year[/code]、[code]month[/code]、[code]day[/code]、[code skip-" +"lint]weekday[/code]、[code]hour[/code]、[code]minute[/code]、[code]second[/" +"code]。\n" +"当 [param weekday] 为 [code]false[/code] 时,不包含 [code skip-lint]weekday[/" +"code] 记录(计算花费相对较大)。\n" +"[b]注意:[/b]时间字符串中的小数会被静默忽略。" + msgid "" "Returns the current date as a dictionary of keys: [code]year[/code], " "[code]month[/code], [code]day[/code], [code]weekday[/code], [code]hour[/" @@ -117873,6 +131466,20 @@ msgstr "" msgid "Converts the given Unix timestamp to an ISO 8601 time string (HH:MM:SS)." msgstr "将给定的 Unix 时间戳转换为 ISO 8601 时间字符串(HH:MM:SS)。" +msgid "" +"Returns the current time zone as a dictionary of keys: [code]bias[/code] and " +"[code]name[/code]. \n" +"- [code]bias[/code] is the offset from UTC in minutes, since not all time " +"zones are multiples of an hour from UTC.\n" +"- [code]name[/code] is the localized name of the time zone, according to the " +"OS locale settings of the current user." +msgstr "" +"以字典的形式返回当前时区,包含的键为:[code]bias[/code] 和 [code]name[/" +"code]。\n" +"- [code]bias[/code] 是相对于 UTC 的偏移量,单位为分钟,因为并不是所有时区与 " +"UTC 的时间差都是整数倍小时。\n" +"- [code]name[/code] 是时区的本地化名称,取决于当前用户的操作系统区域设置。" + msgid "" "Converts a dictionary of time values to a Unix timestamp.\n" "The given dictionary can be populated with the following keys: [code]year[/" @@ -118124,6 +131731,23 @@ msgstr "" "[/gdscript]\n" "[/codeblocks]" +msgid "" +"Creates a TLS client configuration which validates certificates and their " +"common names (fully qualified domain names).\n" +"You can specify a custom [param trusted_chain] of certification authorities " +"(the default CA list will be used if [code]null[/code]), and optionally " +"provide a [param common_name_override] if you expect the certificate to have " +"a common name other than the server FQDN.\n" +"[b]Note:[/b] On the Web platform, TLS verification is always enforced against " +"the CA list of the web browser. This is considered a security feature." +msgstr "" +"创建 TLS 客户端配置,验证证书及其通用名称(完整域名)。\n" +"你可以指定自定义的证书颁发机构信任链 [param trusted_chain](如果为 " +"[code]null[/code] 则使用默认 CA 列表)。如果你希望证书拥有服务器 FQDN 之外的通" +"用名称,还可以提供通用名称覆盖 [param common_name_override]。\n" +"[b]注意:[/b]在 Web 平台上,TLS 验证始终强制使用 Web 浏览器的 CA 列表。这是一" +"种安全特性。" + msgid "" "Creates an [b]unsafe[/b] TLS client configuration where certificate " "validation is optional. You can optionally provide a valid [param " @@ -118268,6 +131892,37 @@ msgstr "" "从表示 [member x]、[member y]、[member origin] 的 3 个 [Vector2](三个列向量)" "构建变换。" +msgid "" +"Returns the inverse of the transform, under the assumption that the basis is " +"invertible (must have non-zero determinant)." +msgstr "假设该基可逆(必须具有非零行列式),返回该变换的逆。" + +msgid "" +"Returns a vector transformed (multiplied) by the basis matrix.\n" +"This method does not account for translation (the [member origin] vector)." +msgstr "" +"返回经过基矩阵变换(相乘)的向量。\n" +"该方法不考虑平移([member origin] 向量)。" + +msgid "" +"Returns a vector transformed (multiplied) by the inverse basis matrix, under " +"the assumption that the basis is orthonormal (i.e. rotation/reflection is " +"fine, scaling/skew is not).\n" +"This method does not account for translation (the [member origin] vector).\n" +"[code]transform.basis_xform_inv(vector)[/code] is equivalent to " +"[code]transform.inverse().basis_xform(vector)[/code]. See [method inverse].\n" +"For non-orthonormal transforms (e.g. with scaling) [code]transform." +"affine_inverse().basis_xform(vector)[/code] can be used instead. See [method " +"affine_inverse]." +msgstr "" +"返回一个由逆基矩阵变换(乘以)的向量,假设该基是正交的(即旋转/反射可以,缩放/" +"倾斜不行)。\n" +"该方法不考虑翻译([member origin] 向量)。\n" +"[code]transform.basis_xform_inv(vector)[/code] 性当于 [code]transform." +"inverse().basis_xform(vector)[/code]。请参阅 [method inverse]。\n" +"对于非正交变换(例如缩放),可以使用 [code]transform.affine_inverse()." +"basis_xform(vector)[/code] 代替。请参阅 [method affine_inverse]。" + msgid "" "Returns the determinant of the basis matrix. If the basis is uniformly " "scaled, then its determinant equals the square of the scale factor.\n" @@ -118298,6 +131953,36 @@ msgstr "" "返回将该变换与其他变换使用给定权重 [param weight] 进行插值的结果(权重范围为 " "0.0 到 1.0)。" +msgid "" +"Returns the inverse of the transform, under the assumption that the " +"transformation basis is orthonormal (i.e. rotation/reflection is fine, " +"scaling/skew is not). Use [method affine_inverse] for non-orthonormal " +"transforms (e.g. with scaling)." +msgstr "" +"返回变换的逆,假设该变换的基是正交的(即旋转/反射可以,缩放/倾斜不行)。使用 " +"[method affine_inverse] 进行非正交变换(例如缩放)。" + +msgid "" +"Returns [code]true[/code] if the transform's basis is conformal, meaning it " +"preserves angles and distance ratios, and may only be composed of rotation " +"and uniform scale. Returns [code]false[/code] if the transform's basis has " +"non-uniform scale or shear/skew. This can be used to validate if the " +"transform is non-distorted, which is important for physics and other use " +"cases." +msgstr "" +"如果该变换的基是共形的,则返回 [code]true[/code],这意味着它保留角度和距离比" +"率,并且只能由旋转和统一缩放组成。如果该变换的基具有不均匀的缩放或剪切/倾斜," +"则返回 [code]false[/code]。这可被用于验证该变换是否失真,这对于物理和其他用例" +"很重要。" + +msgid "" +"Returns [code]true[/code] if this transform and [param xform] are " +"approximately equal, by running [method @GlobalScope.is_equal_approx] on each " +"component." +msgstr "" +"如果通过在每个分量上运行 [method @GlobalScope.is_equal_approx],该变换和 " +"[param xform] 近似相等,则返回 [code]true[/code]。" + msgid "" "Returns [code]true[/code] if this transform is finite, by calling [method " "@GlobalScope.is_finite] on each component." @@ -118444,6 +132129,13 @@ msgstr "" msgid "Transforms (multiplies) the [Vector2] by the given [Transform2D] matrix." msgstr "使用给定的 [Transform2D] 矩阵将该 [Vector2] 进行变换(相乘)。" +msgid "" +"This operator multiplies all components of the [Transform2D], including the " +"[member origin] vector, which scales it uniformly." +msgstr "" +"该运算符将 [Transform2D] 的所有分量相乘,包括 [member origin] 向量,从而对其进" +"行统一缩放。" + msgid "" "Returns [code]true[/code] if the transforms are exactly equal.\n" "[b]Note:[/b] Due to floating-point precision errors, consider using [method " @@ -118603,6 +132295,13 @@ msgstr "使用给定的 [Transform3D] 矩阵对 [Plane] 进行变换(相乘) msgid "Transforms (multiplies) the [Vector3] by the given [Transform3D] matrix." msgstr "使用给定的 [Transform3D] 矩阵对 [Vector3] 进行变换(相乘)。" +msgid "" +"This operator multiplies all components of the [Transform3D], including the " +"[member origin] vector, which scales it uniformly." +msgstr "" +"该运算符将 [Transform3D] 的所有分量相乘,包括 [member origin] 向量,从而对其进" +"行统一缩放。" + msgid "" "A language translation that maps a collection of strings to their individual " "translations." @@ -119289,6 +132988,13 @@ msgstr "使用鼠标按钮选中某一项时发出。" msgid "Emitted when an item is selected." msgstr "选中某一项时发出。" +msgid "" +"Emitted instead of [signal item_selected] if [member select_mode] is set to " +"[constant SELECT_MULTI]." +msgstr "" +"如果 [member select_mode] 被设置为 [constant SELECT_MULTI],则代替 [signal " +"item_selected] 发出。" + msgid "Emitted when a left mouse button click does not select any item." msgstr "鼠标左键未选中任一项时发出。" @@ -119487,6 +133193,11 @@ msgid "" "right margin." msgstr "滚动条的右侧边距。为负数时会使用 [theme_item panel] 的右侧边距。" +msgid "" +"The top margin of the vertical scrollbar. When negative, uses [theme_item " +"panel] top margin." +msgstr "垂直滚动条的顶部边距。为负数时会使用 [theme_item panel] 的顶部边距。" + msgid "The vertical separation of tree content and scrollbar." msgstr "树中内容与滚动条的垂直间距。" @@ -119498,6 +133209,9 @@ msgstr "每个项内的垂直填充,即项内容与上或下边框之间的距 msgid "[Font] of the title button's text." msgstr "标题按钮文本的 [Font] 字体。" +msgid "Font size of the title button's text." +msgstr "标题按钮文本的字体大小。" + msgid "The arrow icon used when a foldable item is not collapsed." msgstr "箭头图标,可折叠项未折叠时使用。" @@ -119835,6 +133549,14 @@ msgstr "返回给定列的文本。" msgid "Returns the given column's text alignment." msgstr "返回给定列的文本对齐方式。" +msgid "" +"Returns the clipping behavior when the text exceeds the item's bounding " +"rectangle in the given [param column]. By default it is [constant TextServer." +"OVERRUN_TRIM_ELLIPSIS]." +msgstr "" +"返回当给定 [param column] 中文本超出项目的边界矩形时的裁剪行为。默认情况下它" +"是 [constant TextServer.OVERRUN_TRIM_ELLIPSIS]。" + msgid "Returns the given column's tooltip text." msgstr "设置给定列的工具提示文本。" @@ -119950,6 +133672,12 @@ msgstr "" "如果为 [code]true[/code],则禁用给定列 [param column] 中索引为 [param " "button_index] 的按钮。" +msgid "" +"Sets the tooltip text for the button at index [param button_index] in the " +"given [param column]." +msgstr "" +"设置给定 [param column] 中索引 [param button_index] 处按钮的工具提示文本。" + msgid "" "Sets the given column's cell mode to [param mode]. See [enum TreeCellMode] " "constants." @@ -120083,6 +133811,11 @@ msgid "" "possible values." msgstr "设置给定列的文本对齐方式。可能的值见 [enum HorizontalAlignment]。" +msgid "" +"Sets the clipping behavior when the text exceeds the item's bounding " +"rectangle in the given [param column]." +msgstr "设置当文本超出给定 [param column] 中项目的边界矩形时的裁剪行为。" + msgid "Sets the given column's tooltip text." msgstr "设置给定列的工具提示文本。" @@ -120199,6 +133932,264 @@ msgid "" "[Tweener]s." msgstr "通过脚本进行通用动画的轻量级对象,使用 [Tweener]。" +msgid "" +"Tweens are mostly useful for animations requiring a numerical property to be " +"interpolated over a range of values. The name [i]tween[/i] comes from [i]in-" +"betweening[/i], an animation technique where you specify [i]keyframes[/i] and " +"the computer interpolates the frames that appear between them. Animating " +"something with a [Tween] is called tweening.\n" +"[Tween] is more suited than [AnimationPlayer] for animations where you don't " +"know the final values in advance. For example, interpolating a dynamically-" +"chosen camera zoom value is best done with a [Tween]; it would be difficult " +"to do the same thing with an [AnimationPlayer] node. Tweens are also more " +"light-weight than [AnimationPlayer], so they are very much suited for simple " +"animations or general tasks that don't require visual tweaking provided by " +"the editor. They can be used in a fire-and-forget manner for some logic that " +"normally would be done by code. You can e.g. make something shoot " +"periodically by using a looped [CallbackTweener] with a delay.\n" +"A [Tween] can be created by using either [method SceneTree.create_tween] or " +"[method Node.create_tween]. [Tween]s created manually (i.e. by using " +"[code]Tween.new()[/code]) are invalid and can't be used for tweening values.\n" +"A tween animation is created by adding [Tweener]s to the [Tween] object, " +"using [method tween_property], [method tween_interval], [method " +"tween_callback] or [method tween_method]:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var tween = get_tree().create_tween()\n" +"tween.tween_property($Sprite, \"modulate\", Color.RED, 1)\n" +"tween.tween_property($Sprite, \"scale\", Vector2(), 1)\n" +"tween.tween_callback($Sprite.queue_free)\n" +"[/gdscript]\n" +"[csharp]\n" +"Tween tween = GetTree().CreateTween();\n" +"tween.TweenProperty(GetNode(\"Sprite\"), \"modulate\", Colors.Red, 1.0f);\n" +"tween.TweenProperty(GetNode(\"Sprite\"), \"scale\", Vector2.Zero, 1.0f);\n" +"tween.TweenCallback(Callable.From(GetNode(\"Sprite\").QueueFree));\n" +"[/csharp]\n" +"[/codeblocks]\n" +"This sequence will make the [code]$Sprite[/code] node turn red, then shrink, " +"before finally calling [method Node.queue_free] to free the sprite. " +"[Tweener]s are executed one after another by default. This behavior can be " +"changed using [method parallel] and [method set_parallel].\n" +"When a [Tweener] is created with one of the [code]tween_*[/code] methods, a " +"chained method call can be used to tweak the properties of this [Tweener]. " +"For example, if you want to set a different transition type in the above " +"example, you can use [method set_trans]:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var tween = get_tree().create_tween()\n" +"tween.tween_property($Sprite, \"modulate\", Color.RED, 1).set_trans(Tween." +"TRANS_SINE)\n" +"tween.tween_property($Sprite, \"scale\", Vector2(), 1).set_trans(Tween." +"TRANS_BOUNCE)\n" +"tween.tween_callback($Sprite.queue_free)\n" +"[/gdscript]\n" +"[csharp]\n" +"Tween tween = GetTree().CreateTween();\n" +"tween.TweenProperty(GetNode(\"Sprite\"), \"modulate\", Colors.Red, 1.0f)." +"SetTrans(Tween.TransitionType.Sine);\n" +"tween.TweenProperty(GetNode(\"Sprite\"), \"scale\", Vector2.Zero, 1.0f)." +"SetTrans(Tween.TransitionType.Bounce);\n" +"tween.TweenCallback(Callable.From(GetNode(\"Sprite\").QueueFree));\n" +"[/csharp]\n" +"[/codeblocks]\n" +"Most of the [Tween] methods can be chained this way too. In the following " +"example the [Tween] is bound to the running script's node and a default " +"transition is set for its [Tweener]s:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var tween = get_tree().create_tween().bind_node(self).set_trans(Tween." +"TRANS_ELASTIC)\n" +"tween.tween_property($Sprite, \"modulate\", Color.RED, 1)\n" +"tween.tween_property($Sprite, \"scale\", Vector2(), 1)\n" +"tween.tween_callback($Sprite.queue_free)\n" +"[/gdscript]\n" +"[csharp]\n" +"var tween = GetTree().CreateTween().BindNode(this).SetTrans(Tween." +"TransitionType.Elastic);\n" +"tween.TweenProperty(GetNode(\"Sprite\"), \"modulate\", Colors.Red, 1.0f);\n" +"tween.TweenProperty(GetNode(\"Sprite\"), \"scale\", Vector2.Zero, 1.0f);\n" +"tween.TweenCallback(Callable.From(GetNode(\"Sprite\").QueueFree));\n" +"[/csharp]\n" +"[/codeblocks]\n" +"Another interesting use for [Tween]s is animating arbitrary sets of objects:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var tween = create_tween()\n" +"for sprite in get_children():\n" +" tween.tween_property(sprite, \"position\", Vector2(0, 0), 1)\n" +"[/gdscript]\n" +"[csharp]\n" +"Tween tween = CreateTween();\n" +"foreach (Node sprite in GetChildren())\n" +" tween.TweenProperty(sprite, \"position\", Vector2.Zero, 1.0f);\n" +"[/csharp]\n" +"[/codeblocks]\n" +"In the example above, all children of a node are moved one after another to " +"position (0, 0).\n" +"You should avoid using more than one [Tween] per object's property. If two or " +"more tweens animate one property at the same time, the last one created will " +"take priority and assign the final value. If you want to interrupt and " +"restart an animation, consider assigning the [Tween] to a variable:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var tween\n" +"func animate():\n" +" if tween:\n" +" tween.kill() # Abort the previous animation.\n" +" tween = create_tween()\n" +"[/gdscript]\n" +"[csharp]\n" +"private Tween _tween;\n" +"\n" +"public void Animate()\n" +"{\n" +" if (_tween != null)\n" +" _tween.Kill(); // Abort the previous animation\n" +" _tween = CreateTween();\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"Some [Tweener]s use transitions and eases. The first accepts a [enum " +"TransitionType] constant, and refers to the way the timing of the animation " +"is handled (see [url=https://easings.net/]easings.net[/url] for some " +"examples). The second accepts an [enum EaseType] constant, and controls where " +"the [code]trans_type[/code] is applied to the interpolation (in the " +"beginning, the end, or both). If you don't know which transition and easing " +"to pick, you can try different [enum TransitionType] constants with [constant " +"EASE_IN_OUT], and use the one that looks best.\n" +"[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/" +"tween_cheatsheet.webp]Tween easing and transition types cheatsheet[/url]\n" +"[b]Note:[/b] Tweens are not designed to be re-used and trying to do so " +"results in an undefined behavior. Create a new Tween for each animation and " +"every time you replay an animation from start. Keep in mind that Tweens start " +"immediately, so only create a Tween when you want to start animating.\n" +"[b]Note:[/b] The tween is processed after all of the nodes in the current " +"frame, i.e. node's [method Node._process] method would be called before the " +"tween (or [method Node._physics_process] depending on the value passed to " +"[method set_process_mode])." +msgstr "" +"Tween 主要用于需要将一个数值属性插值到一系列值的动画。[i]tween[/i] 这个名字来" +"自 [i]in-betweening[/i],这是一种动画技术,可以在其中指定 [i]关键帧[/i],然后" +"计算机会插入出现在它们之间的帧。使用 [Tween] 制作动画被称为补间动画。\n" +"[Tween] 比 [AnimationPlayer] 更适合事先不知道最终值的动画。例如,插入动态选择" +"的相机缩放值最好使用 [Tween] 完成;很难使用 [AnimationPlayer] 节点做同样的事" +"情。Tween 也比 [AnimationPlayer] 更轻量级,因此它们非常适合简单的动画,或不需" +"要编辑器提供的视觉调整的通用任务。对于通常由代码完成的某些逻辑,它们可以以即用" +"即弃的方式使用。例如,可以使用带延迟的循环 [CallbackTweener] 定期射击。\n" +"可以使用 [method SceneTree.create_tween] 或 [method Node.create_tween] 创建 " +"[Tween]。手动创建的 [Tween](即使用 [code]Tween.new()[/code])无效,不能用于对" +"值进行补间。\n" +"通过使用 [method tween_property]、[method tween_interval]、[method " +"tween_callback]、或 [method tween_method],可将 [Tweener] 添加到 [Tween] 对象" +"来创建一个补间动画:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var tween = get_tree().create_tween()\n" +"tween.tween_property($Sprite, \"modulate\", Color.RED, 1)\n" +"tween.tween_property($Sprite, \"scale\", Vector2(), 1)\n" +"tween.tween_callback($Sprite.queue_free)\n" +"[/gdscript]\n" +"[csharp]\n" +"Tween tween = GetTree().CreateTween();\n" +"tween.TweenProperty(GetNode(\"Sprite\"), \"modulate\", Colors.Red, 1.0f);\n" +"tween.TweenProperty(GetNode(\"Sprite\"), \"scale\", Vector2.Zero, 1.0f);\n" +"tween.TweenCallback(Callable.From(GetNode(\"Sprite\").QueueFree));\n" +"[/csharp]\n" +"[/codeblocks]\n" +"该序列将使 [code]$Sprite[/code] 节点变红,然后缩小,最后调用 [method Node." +"queue_free] 来释放该精灵。默认情况下,[Tweener] 一个接一个地执行。这种行为可以" +"使用 [method parallel] 和 [method set_parallel] 来更改。\n" +"当使用 [code]tween_*[/code] 方法之一创建 [Tweener] 时,可以使用链式方法调用来" +"调整该 [Tweener] 的属性。例如,如果想在上面的例子中设置一个不同的过渡类型,可" +"以使用 [method set_trans]:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var tween = get_tree().create_tween()\n" +"tween.tween_property($Sprite, \"modulate\", Color.RED, 1).set_trans(Tween." +"TRANS_SINE)\n" +"tween.tween_property($Sprite, \"scale\", Vector2(), 1).set_trans(Tween." +"TRANS_BOUNCE)\n" +"tween.tween_callback($Sprite.queue_free)\n" +"[/gdscript]\n" +"[csharp]\n" +"Tween tween = GetTree().CreateTween();\n" +"tween.TweenProperty(GetNode(\"Sprite\"), \"modulate\", Colors.Red, 1.0f)." +"SetTrans(Tween.TransitionType.Sine);\n" +"tween.TweenProperty(GetNode(\"Sprite\"), \"scale\", Vector2.Zero, 1.0f)." +"SetTrans(Tween.TransitionType.Bounce);\n" +"tween.TweenCallback(Callable.From(GetNode(\"Sprite\").QueueFree));\n" +"[/csharp]\n" +"[/codeblocks]\n" +"大多数 [Tween] 方法也可以这样链式调用。在下面的示例中,[Tween] 被绑定到运行脚" +"本的节点,并为其 [Tweener] 设置了默认过渡:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var tween = get_tree().create_tween().bind_node(self).set_trans(Tween." +"TRANS_ELASTIC)\n" +"tween.tween_property($Sprite, \"modulate\", Color.RED, 1)\n" +"tween.tween_property($Sprite, \"scale\", Vector2(), 1)\n" +"tween.tween_callback($Sprite.queue_free)\n" +"[/gdscript]\n" +"[csharp]\n" +"var tween = GetTree().CreateTween().BindNode(this).SetTrans(Tween." +"TransitionType.Elastic);\n" +"tween.TweenProperty(GetNode(\"Sprite\"), \"modulate\", Colors.Red, 1.0f);\n" +"tween.TweenProperty(GetNode(\"Sprite\"), \"scale\", Vector2.Zero, 1.0f);\n" +"tween.TweenCallback(Callable.From(GetNode(\"Sprite\").QueueFree));\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[Tween] 的另一个有趣用途是动画化任意对象集:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var tween = create_tween()\n" +"for sprite in get_children():\n" +" tween.tween_property(sprite, \"position\", Vector2(0, 0), 1)\n" +"[/gdscript]\n" +"[csharp]\n" +"Tween tween = CreateTween();\n" +"foreach (Node sprite in GetChildren())\n" +" tween.TweenProperty(sprite, \"position\", Vector2.Zero, 1.0f);\n" +"[/csharp]\n" +"[/codeblocks]\n" +"在上面的示例中,一个节点的所有子节点都被依次移动到位置 (0, 0)。\n" +"应该避免为对象的同一属性使用多个 [Tween]。如果两个或多个补间同时为同一个属性设" +"置动画,则最后创建的补间将优先使用,并分配最终值。如果要中断并重新启动动画,请" +"考虑将 [Tween] 赋给变量:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var tween\n" +"func animate():\n" +" if tween:\n" +" tween.kill() # 终止之前的补间动画。\n" +" tween = create_tween()\n" +"[/gdscript]\n" +"[csharp]\n" +"private Tween _tween;\n" +"\n" +"public void Animate()\n" +"{\n" +" if (_tween != null)\n" +" _tween.Kill(); // 终止之前的补间动画。\n" +" _tween = CreateTween();\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"一些 [Tweener] 会使用过渡和缓动。第一个接受一个 [enum TransitionType] 常量,指" +"的是处理动画时间的方式(相关示例见 [url=https://easings.net/]easings.net[/" +"url])。第二个接受一个 [enum EaseType] 常量,并控制 [code]trans_type[/code] 应" +"用于插值的位置(在开头、结尾、或两者)。如果不知道该选择哪种过渡和缓动,可以尝" +"试使用 [constant EASE_IN_OUT] 并配合不同 [enum TransitionType] 常量,并使用看" +"起来最好的那个。\n" +"[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/" +"tween_cheatsheet.webp]补间缓动与过渡类型速查表[/url]\n" +"[b]注意:[/b]Tween 并不是针对重用设计的,尝试重用会造成未定义行为。每次从头开" +"始重新播放每个动画都请新建一个 Tween。请记住,Tween 是会立即开始的,所以请只在" +"需要开始动画时创建 Tween。\n" +"[b]注意:[/b]该补间在当前帧中的所有节点之后进行处理,即节点的 [method Node." +"_process] 方法(或 [method Node._physicals_process],具体取决于传递给 [method " +"set_process_mode] 的值)会在补间之前被调用。" + msgid "" "Binds this [Tween] with the given [param node]. [Tween]s are processed " "directly by the [SceneTree], so they run independently of the animated nodes. " @@ -120374,6 +134365,18 @@ msgstr "" "该示例中的所有 [Tweener] 都会同时执行。\n" "你可以通过使用 [method set_parallel] 让该 [Tween] 默认并行。" +msgid "" +"Pauses the tweening. The animation can be resumed by using [method play].\n" +"[b]Note:[/b] If a Tween is paused and not bound to any node, it will exist " +"indefinitely until manually started or invalidated. If you lose a reference " +"to such Tween, you can retrieve it using [method SceneTree." +"get_processed_tweens]." +msgstr "" +"暂停该补间。可以使用 [method play] 恢复动画。\n" +"[b]注意:[/b]如果一个 Tween 被暂停并且没有被绑定到任何节点,它将无限期地存在," +"直到手动启动或失效。如果丢失了对这种 Tween 的引用,可以使用 [method SceneTree." +"get_processed_tweens] 检索它。" + msgid "Resumes a paused or stopped [Tween]." msgstr "恢复已暂停或已停止的 [Tween]。" @@ -120446,6 +134449,19 @@ msgstr "" "型。\n" "如果未指定,则默认值为 [constant TRANS_LINEAR]。" +msgid "" +"Stops the tweening and resets the [Tween] to its initial state. This will not " +"remove any appended [Tweener]s.\n" +"[b]Note:[/b] If a Tween is stopped and not bound to any node, it will exist " +"indefinitely until manually started or invalidated. If you lose a reference " +"to such Tween, you can retrieve it using [method SceneTree." +"get_processed_tweens]." +msgstr "" +"停止该补间并将该 [Tween] 重置为其初始状态。这不会移除任何附加的 [Tweener]。\n" +"[b]注意:[/b]如果一个 Tween 被停止并且没有被绑定到任何节点,它将无限期地存在," +"直到手动启动或失效。如果丢失了对这种 Tween 的引用,可以使用 [method SceneTree." +"get_processed_tweens]。" + msgid "" "Creates and appends a [CallbackTweener]. This method can be used to call an " "arbitrary method in any object. Use [method Callable.bind] to bind additional " @@ -120593,6 +134609,104 @@ msgstr "" "[/csharp]\n" "[/codeblocks]" +msgid "" +"Creates and appends a [MethodTweener]. This method is similar to a " +"combination of [method tween_callback] and [method tween_property]. It calls " +"a method over time with a tweened value provided as an argument. The value is " +"tweened between [param from] and [param to] over the time specified by [param " +"duration], in seconds. Use [method Callable.bind] to bind additional " +"arguments for the call. You can use [method MethodTweener.set_ease] and " +"[method MethodTweener.set_trans] to tweak the easing and transition of the " +"value or [method MethodTweener.set_delay] to delay the tweening.\n" +"[b]Example:[/b] Making a 3D object look from one point to another point:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var tween = create_tween()\n" +"tween.tween_method(look_at.bind(Vector3.UP), Vector3(-1, 0, -1), Vector3(1, " +"0, -1), 1) # The look_at() method takes up vector as second argument.\n" +"[/gdscript]\n" +"[csharp]\n" +"Tween tween = CreateTween();\n" +"tween.TweenMethod(Callable.From((Vector3 target) => LookAt(target, Vector3." +"Up)), new Vector3(-1.0f, 0.0f, -1.0f), new Vector3(1.0f, 0.0f, -1.0f), " +"1.0f); // Use lambdas to bind additional arguments for the call.\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Example:[/b] Setting the text of a [Label], using an intermediate method " +"and after a delay:\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _ready():\n" +" var tween = create_tween()\n" +" tween.tween_method(set_label_text, 0, 10, 1).set_delay(1)\n" +"\n" +"func set_label_text(value: int):\n" +" $Label.text = \"Counting \" + str(value)\n" +"[/gdscript]\n" +"[csharp]\n" +"public override void _Ready()\n" +"{\n" +" base._Ready();\n" +"\n" +" Tween tween = CreateTween();\n" +" tween.TweenMethod(Callable.From(SetLabelText), 0.0f, 10.0f, 1.0f)." +"SetDelay(1.0f);\n" +"}\n" +"\n" +"private void SetLabelText(int value)\n" +"{\n" +" GetNode